From ea74271a69d3bf571a2882818d71b7685d8cb1af Mon Sep 17 00:00:00 2001 From: whyzxhnd Date: Fri, 1 Aug 2025 17:19:52 +0800 Subject: [PATCH] init --- web/.editorconfig | 12 + web/.env | 20 + web/.env.dev | 27 + web/.env.prod | 27 + web/.env.test | 27 + web/.eslintignore | 8 + web/.eslintrc-auto-import.json | 259 + web/.eslintrc.js | 75 + web/.gitignore | 9 + web/.prettierignore | 11 + web/.stylelintignore | 6 + web/.vscode/extensions.json | 18 + web/.vscode/launch.json | 16 + web/.vscode/settings.json | 146 + web/build/vite/index.ts | 99 + web/build/vite/optimize.ts | 123 + web/index.html | 143 + web/package-lock.json | 13962 +++++++++++++++ web/package.json | 155 + web/pnpm-lock.yaml | 10526 ++++++++++++ web/postcss.config.js | 5 + web/prettier.config.js | 22 + web/public/favicon.ico | Bin 0 -> 4286 bytes web/public/logo.gif | Bin 0 -> 6334 bytes web/src/App.vue | 57 + web/src/api/bpm/category/index.ts | 53 + web/src/api/bpm/definition/index.ts | 28 + web/src/api/bpm/form/index.ts | 56 + web/src/api/bpm/leave/index.ts | 27 + web/src/api/bpm/model/index.ts | 78 + web/src/api/bpm/processExpression/index.ts | 42 + web/src/api/bpm/processInstance/index.ts | 109 + web/src/api/bpm/processListener/index.ts | 40 + web/src/api/bpm/simple/index.ts | 15 + web/src/api/bpm/task/index.ts | 113 + web/src/api/bpm/userGroup/index.ts | 47 + web/src/api/infra/apiAccessLog/index.ts | 34 + web/src/api/infra/apiErrorLog/index.ts | 48 + web/src/api/infra/codegen/index.ts | 112 + web/src/api/infra/config/index.ts | 53 + web/src/api/infra/dataSourceConfig/index.ts | 40 + web/src/api/infra/demo/demo01/index.ts | 50 + web/src/api/infra/demo/demo02/index.ts | 37 + web/src/api/infra/demo/demo03/erp/index.ts | 127 + web/src/api/infra/demo/demo03/inner/index.ts | 81 + web/src/api/infra/demo/demo03/normal/index.ts | 81 + web/src/api/infra/file/index.ts | 46 + web/src/api/infra/fileConfig/index.ts | 67 + web/src/api/infra/job/index.ts | 68 + web/src/api/infra/jobLog/index.ts | 34 + web/src/api/infra/redis/index.ts | 8 + web/src/api/infra/redis/types.ts | 176 + web/src/api/iot/device/device/index.ts | 169 + web/src/api/iot/device/group/index.ts | 43 + web/src/api/iot/plugin/index.ts | 51 + web/src/api/iot/product/category/index.ts | 43 + web/src/api/iot/product/product/index.ts | 82 + web/src/api/iot/rule/databridge/index.ts | 127 + web/src/api/iot/statistics/index.ts | 41 + web/src/api/iot/thingmodel/index.ts | 88 + web/src/api/login/index.ts | 66 + web/src/api/login/oauth2/index.ts | 41 + web/src/api/login/types.ts | 35 + web/src/api/system/area/index.ts | 11 + web/src/api/system/dept/index.ts | 53 + web/src/api/system/dict/dict.data.ts | 59 + web/src/api/system/dict/dict.type.ts | 53 + web/src/api/system/loginLog/index.ts | 25 + web/src/api/system/mail/account/index.ts | 47 + web/src/api/system/mail/log/index.ts | 30 + web/src/api/system/mail/template/index.ts | 55 + web/src/api/system/menu/index.ts | 49 + web/src/api/system/notice/index.ts | 47 + web/src/api/system/notify/message/index.ts | 49 + web/src/api/system/notify/template/index.ts | 54 + web/src/api/system/oauth2/client.ts | 52 + web/src/api/system/oauth2/token.ts | 22 + web/src/api/system/operatelog/index.ts | 30 + web/src/api/system/permission/index.ts | 42 + web/src/api/system/post/index.ts | 51 + web/src/api/system/role/index.ts | 66 + web/src/api/system/sms/smsChannel/index.ts | 48 + web/src/api/system/sms/smsLog/index.ts | 37 + web/src/api/system/sms/smsTemplate/index.ts | 65 + web/src/api/system/tenant/index.ts | 72 + web/src/api/system/tenantPackage/index.ts | 48 + web/src/api/system/user/index.ts | 81 + web/src/api/system/user/profile.ts | 57 + web/src/assets/audio/response.mp3 | Bin 0 -> 1736109 bytes web/src/assets/imgs/avatar.gif | Bin 0 -> 6334 bytes web/src/assets/imgs/avatar.jpg | Bin 0 -> 6264 bytes web/src/assets/imgs/iot/device.png | Bin 0 -> 10007 bytes web/src/assets/imgs/logo.png | Bin 0 -> 2801 bytes web/src/assets/imgs/profile.jpg | Bin 0 -> 7885 bytes web/src/assets/imgs/wechat.png | Bin 0 -> 1881 bytes web/src/assets/map/json/china.json | 856 + web/src/assets/svgs/403.svg | 1 + web/src/assets/svgs/404.svg | 1 + web/src/assets/svgs/500.svg | 1 + web/src/assets/svgs/bpm/add-user.svg | 1 + web/src/assets/svgs/bpm/approve.svg | 1 + web/src/assets/svgs/bpm/auditor.svg | 1 + web/src/assets/svgs/bpm/cancel.svg | 1 + web/src/assets/svgs/bpm/child-process.svg | 1 + web/src/assets/svgs/bpm/condition.svg | 1 + web/src/assets/svgs/bpm/copy.svg | 1 + web/src/assets/svgs/bpm/delay.svg | 1 + web/src/assets/svgs/bpm/finish.svg | 1 + web/src/assets/svgs/bpm/parallel.svg | 1 + web/src/assets/svgs/bpm/reject.svg | 1 + web/src/assets/svgs/bpm/running.svg | 1 + web/src/assets/svgs/bpm/simple-process-bg.svg | 1 + web/src/assets/svgs/bpm/starter.svg | 1 + web/src/assets/svgs/bpm/transactor.svg | 1 + web/src/assets/svgs/icon.svg | 1 + web/src/assets/svgs/iot/card-fill.svg | 1 + web/src/assets/svgs/iot/cube.svg | 1 + web/src/assets/svgs/login-bg.svg | 1 + web/src/assets/svgs/login-box-bg.svg | 1 + web/src/assets/svgs/message.svg | 1 + web/src/assets/svgs/peoples.svg | 1 + web/src/assets/svgs/send.svg | 1 + .../AppLinkInput/AppLinkSelectDialog.vue | 207 + web/src/components/AppLinkInput/data.ts | 236 + web/src/components/AppLinkInput/index.vue | 43 + web/src/components/Backtop/index.ts | 3 + web/src/components/Backtop/src/Backtop.vue | 17 + web/src/components/Card/index.ts | 3 + web/src/components/Card/src/CardTitle.vue | 37 + web/src/components/ColorInput/index.vue | 34 + web/src/components/ConfigGlobal/index.ts | 3 + .../components/ConfigGlobal/src/ConfigGlobal.vue | 62 + web/src/components/ContentDetailWrap/index.ts | 3 + .../ContentDetailWrap/src/ContentDetailWrap.vue | 58 + web/src/components/ContentWrap/index.ts | 3 + web/src/components/ContentWrap/src/ContentWrap.vue | 36 + web/src/components/CountTo/index.ts | 3 + web/src/components/CountTo/src/CountTo.vue | 182 + web/src/components/Crontab/index.ts | 2 + web/src/components/Crontab/src/Crontab.vue | 1015 ++ web/src/components/Cropper/index.ts | 4 + web/src/components/Cropper/src/CopperModal.vue | 261 + web/src/components/Cropper/src/Cropper.vue | 183 + web/src/components/Cropper/src/CropperAvatar.vue | 142 + web/src/components/Cropper/src/types.ts | 8 + web/src/components/DeptSelectForm/index.vue | 122 + web/src/components/Descriptions/index.ts | 4 + .../components/Descriptions/src/Descriptions.vue | 167 + .../Descriptions/src/DescriptionsItemLabel.vue | 29 + web/src/components/Dialog/index.ts | 3 + web/src/components/Dialog/src/Dialog.vue | 157 + web/src/components/DictTag/index.ts | 3 + web/src/components/DictTag/src/DictTag.vue | 90 + .../DiyEditor/components/ComponentContainer.vue | 239 + .../components/ComponentContainerProperty.vue | 168 + .../DiyEditor/components/ComponentLibrary.vue | 211 + .../DiyEditor/components/mobile/Carousel/config.ts | 53 + .../DiyEditor/components/mobile/Carousel/index.vue | 43 + .../components/mobile/Carousel/property.vue | 109 + .../components/mobile/CouponCard/component.tsx | 73 + .../components/mobile/CouponCard/config.ts | 47 + .../components/mobile/CouponCard/index.vue | 149 + .../components/mobile/CouponCard/property.vue | 119 + .../DiyEditor/components/mobile/Divider/config.ts | 29 + .../DiyEditor/components/mobile/Divider/index.vue | 29 + .../components/mobile/Divider/property.vue | 80 + .../mobile/FloatingActionButton/config.ts | 36 + .../mobile/FloatingActionButton/index.vue | 74 + .../mobile/FloatingActionButton/property.vue | 44 + .../components/HotZoneEditDialog/controller.ts | 143 + .../HotZone/components/HotZoneEditDialog/index.vue | 236 + .../DiyEditor/components/mobile/HotZone/config.ts | 43 + .../DiyEditor/components/mobile/HotZone/index.vue | 42 + .../components/mobile/HotZone/property.vue | 63 + .../DiyEditor/components/mobile/ImageBar/config.ts | 27 + .../DiyEditor/components/mobile/ImageBar/index.vue | 24 + .../components/mobile/ImageBar/property.vue | 34 + .../components/mobile/MagicCube/config.ts | 49 + .../components/mobile/MagicCube/index.vue | 76 + .../components/mobile/MagicCube/property.vue | 76 + .../DiyEditor/components/mobile/MenuGrid/config.ts | 79 + .../DiyEditor/components/mobile/MenuGrid/index.vue | 35 + .../components/mobile/MenuGrid/property.vue | 65 + .../DiyEditor/components/mobile/MenuList/config.ts | 48 + .../DiyEditor/components/mobile/MenuList/index.vue | 31 + .../components/mobile/MenuList/property.vue | 45 + .../components/mobile/MenuSwiper/config.ts | 66 + .../components/mobile/MenuSwiper/index.vue | 119 + .../components/mobile/MenuSwiper/property.vue | 76 + .../NavigationBar/components/CellProperty.vue | 98 + .../components/mobile/NavigationBar/config.ts | 82 + .../components/mobile/NavigationBar/index.vue | 90 + .../components/mobile/NavigationBar/property.vue | 91 + .../components/mobile/NoticeBar/config.ts | 46 + .../components/mobile/NoticeBar/index.vue | 26 + .../components/mobile/NoticeBar/property.vue | 46 + .../components/mobile/PageConfig/config.ts | 23 + .../components/mobile/PageConfig/property.vue | 34 + .../DiyEditor/components/mobile/Popover/config.ts | 26 + .../DiyEditor/components/mobile/Popover/index.vue | 38 + .../components/mobile/Popover/property.vue | 38 + .../components/mobile/ProductCard/config.ts | 97 + .../components/mobile/ProductCard/index.vue | 170 + .../components/mobile/ProductCard/property.vue | 149 + .../components/mobile/ProductList/config.ts | 64 + .../components/mobile/ProductList/index.vue | 132 + .../components/mobile/ProductList/property.vue | 99 + .../components/mobile/PromotionArticle/config.ts | 25 + .../components/mobile/PromotionArticle/index.vue | 27 + .../mobile/PromotionArticle/property.vue | 56 + .../mobile/PromotionCombination/config.ts | 96 + .../mobile/PromotionCombination/index.vue | 201 + .../mobile/PromotionCombination/property.vue | 164 + .../components/mobile/PromotionPoint/config.ts | 96 + .../components/mobile/PromotionPoint/index.vue | 202 + .../components/mobile/PromotionPoint/property.vue | 154 + .../components/mobile/PromotionSeckill/config.ts | 96 + .../components/mobile/PromotionSeckill/index.vue | 201 + .../mobile/PromotionSeckill/property.vue | 164 + .../components/mobile/SearchBar/config.ts | 43 + .../components/mobile/SearchBar/index.vue | 75 + .../components/mobile/SearchBar/property.vue | 87 + .../DiyEditor/components/mobile/TabBar/config.ts | 97 + .../DiyEditor/components/mobile/TabBar/index.vue | 66 + .../components/mobile/TabBar/property.vue | 103 + .../DiyEditor/components/mobile/TitleBar/config.ts | 73 + .../DiyEditor/components/mobile/TitleBar/index.vue | 75 + .../components/mobile/TitleBar/property.vue | 139 + .../DiyEditor/components/mobile/UserCard/config.ts | 21 + .../DiyEditor/components/mobile/UserCard/index.vue | 29 + .../components/mobile/UserCard/property.vue | 17 + .../components/mobile/UserCoupon/config.ts | 23 + .../components/mobile/UserCoupon/index.vue | 15 + .../components/mobile/UserCoupon/property.vue | 17 + .../components/mobile/UserOrder/config.ts | 23 + .../components/mobile/UserOrder/index.vue | 13 + .../components/mobile/UserOrder/property.vue | 17 + .../components/mobile/UserWallet/config.ts | 23 + .../components/mobile/UserWallet/index.vue | 15 + .../components/mobile/UserWallet/property.vue | 17 + .../components/mobile/VideoPlayer/config.ts | 37 + .../components/mobile/VideoPlayer/index.vue | 30 + .../components/mobile/VideoPlayer/property.vue | 55 + .../DiyEditor/components/mobile/index.ts | 61 + web/src/components/DiyEditor/index.vue | 599 + web/src/components/DiyEditor/util.ts | 125 + web/src/components/DocAlert/index.vue | 34 + web/src/components/Draggable/index.vue | 86 + web/src/components/Echart/index.ts | 3 + web/src/components/Echart/src/Echart.vue | 119 + web/src/components/Editor/index.ts | 8 + web/src/components/Editor/src/Editor.vue | 243 + web/src/components/Error/index.ts | 3 + web/src/components/Error/src/Error.vue | 58 + web/src/components/Form/index.ts | 15 + web/src/components/Form/src/Form.vue | 307 + web/src/components/Form/src/componentMap.ts | 55 + .../Form/src/components/useRenderCheckbox.tsx | 26 + .../Form/src/components/useRenderRadio.tsx | 26 + .../Form/src/components/useRenderSelect.tsx | 57 + web/src/components/Form/src/helper.ts | 148 + web/src/components/Form/src/types.ts | 17 + web/src/components/FormCreate/index.ts | 4 + .../FormCreate/src/components/DictSelect.vue | 59 + .../FormCreate/src/components/useApiSelect.tsx | 254 + web/src/components/FormCreate/src/config/index.ts | 15 + .../components/FormCreate/src/config/selectRule.ts | 181 + .../FormCreate/src/config/useDictSelectRule.ts | 64 + .../FormCreate/src/config/useEditorRule.ts | 32 + .../FormCreate/src/config/useSelectRule.ts | 37 + .../FormCreate/src/config/useUploadFileRule.ts | 80 + .../FormCreate/src/config/useUploadImgRule.ts | 89 + .../FormCreate/src/config/useUploadImgsRule.ts | 84 + web/src/components/FormCreate/src/type/index.ts | 51 + .../FormCreate/src/useFormCreateDesigner.ts | 101 + web/src/components/FormCreate/src/utils/index.ts | 61 + web/src/components/Highlight/index.ts | 3 + web/src/components/Highlight/src/Highlight.vue | 65 + web/src/components/IFrame/index.ts | 3 + web/src/components/IFrame/src/IFrame.vue | 47 + web/src/components/Icon/index.ts | 4 + web/src/components/Icon/src/Icon.vue | 86 + web/src/components/Icon/src/IconSelect.vue | 239 + web/src/components/Icon/src/data.ts | 1961 +++ web/src/components/ImageViewer/index.ts | 33 + web/src/components/ImageViewer/src/ImageViewer.vue | 35 + web/src/components/ImageViewer/src/types.ts | 9 + web/src/components/Infotip/index.ts | 3 + web/src/components/Infotip/src/Infotip.vue | 54 + web/src/components/InputPassword/index.ts | 3 + .../components/InputPassword/src/InputPassword.vue | 152 + web/src/components/InputWithColor/index.vue | 35 + web/src/components/LogicFlow/editPanel.vue | 0 web/src/components/LogicFlow/previewPanel.vue | 46 + web/src/components/MagicCubeEditor/index.vue | 270 + web/src/components/MagicCubeEditor/util.ts | 72 + web/src/components/MarkdownView/index.vue | 204 + web/src/components/OperateLogV2/index.ts | 3 + .../components/OperateLogV2/src/OperateLogV2.vue | 105 + web/src/components/Pagination/index.vue | 87 + web/src/components/Qrcode/index.ts | 3 + web/src/components/Qrcode/src/Qrcode.vue | 253 + web/src/components/RouterSearch/index.vue | 119 + web/src/components/Search/index.ts | 3 + web/src/components/Search/src/Search.vue | 157 + .../components/ShortcutDateRangePicker/index.vue | 84 + .../SimpleProcessDesignerV2/src/NodeHandler.vue | 321 + .../src/ProcessNodeTree.vue | 150 + .../src/SimpleProcessDesigner.vue | 208 + .../src/SimpleProcessModel.vue | 265 + .../src/SimpleProcessViewer.vue | 47 + .../SimpleProcessDesignerV2/src/consts.ts | 900 + .../SimpleProcessDesignerV2/src/index.ts | 5 + .../components/SimpleProcessDesignerV2/src/node.ts | 616 + .../src/nodes-config/ChildProcessNodeConfig.vue | 610 + .../src/nodes-config/ConditionNodeConfig.vue | 222 + .../src/nodes-config/CopyTaskNodeConfig.vue | 392 + .../src/nodes-config/DelayTimerNodeConfig.vue | 190 + .../src/nodes-config/RouterNodeConfig.vue | 201 + .../src/nodes-config/StartUserNodeConfig.vue | 224 + .../src/nodes-config/TriggerNodeConfig.vue | 525 + .../src/nodes-config/UserTaskNodeConfig.vue | 1058 ++ .../src/nodes-config/components/Condition.vue | 277 + .../nodes-config/components/ConditionDialog.vue | 309 + .../components/HttpRequestParamSetting.vue | 188 + .../nodes-config/components/HttpRequestSetting.vue | 127 + .../nodes-config/components/UserTaskListener.vue | 88 + .../src/nodes/ChildProcessNode.vue | 106 + .../src/nodes/CopyTaskNode.vue | 97 + .../src/nodes/DelayTimerNode.vue | 97 + .../src/nodes/EndEventNode.vue | 102 + .../src/nodes/ExclusiveNode.vue | 240 + .../src/nodes/InclusiveNode.vue | 244 + .../src/nodes/ParallelNode.vue | 184 + .../src/nodes/RouterNode.vue | 97 + .../src/nodes/StartUserNode.vue | 154 + .../src/nodes/TriggerNode.vue | 97 + .../src/nodes/UserTaskNode.vue | 181 + .../SimpleProcessDesignerV2/src/utils.ts | 41 + .../SimpleProcessDesignerV2/theme/iconfont.ttf | Bin 0 -> 4808 bytes .../SimpleProcessDesignerV2/theme/iconfont.woff | Bin 0 -> 3176 bytes .../SimpleProcessDesignerV2/theme/iconfont.woff2 | Bin 0 -> 2628 bytes .../theme/simple-process-designer.scss | 826 + web/src/components/Sticky/index.ts | 3 + web/src/components/Sticky/src/Sticky.vue | 143 + web/src/components/SummaryCard/index.vue | 52 + web/src/components/Table/index.ts | 13 + web/src/components/Table/src/Table.vue | 311 + web/src/components/Table/src/TableSelectForm.vue | 92 + web/src/components/Table/src/helper.ts | 8 + web/src/components/Table/src/types.ts | 26 + web/src/components/Tinyflow/Tinyflow.vue | 63 + web/src/components/Tinyflow/ui/index.css | 1 + web/src/components/Tinyflow/ui/index.d.ts | 41 + web/src/components/Tinyflow/ui/index.js | 16984 +++++++++++++++++++ web/src/components/Tinyflow/ui/index.umd.js | 9 + web/src/components/Tooltip/index.ts | 3 + web/src/components/Tooltip/src/Tooltip.vue | 17 + web/src/components/UploadFile/index.ts | 5 + web/src/components/UploadFile/src/UploadFile.vue | 231 + web/src/components/UploadFile/src/UploadImg.vue | 272 + web/src/components/UploadFile/src/UploadImgs.vue | 319 + web/src/components/UploadFile/src/useUpload.ts | 107 + web/src/components/UserSelectForm/index.vue | 171 + web/src/components/Verifition/index.ts | 3 + web/src/components/Verifition/src/Verify.vue | 441 + .../Verifition/src/Verify/VerifyPoints.vue | 250 + .../Verifition/src/Verify/VerifySlide.vue | 376 + web/src/components/Verifition/src/Verify/index.ts | 4 + web/src/components/Verifition/src/utils/ase.ts | 14 + web/src/components/Verifition/src/utils/util.ts | 97 + web/src/components/VerticalButtonGroup/index.vue | 44 + web/src/components/XButton/index.ts | 4 + web/src/components/XButton/src/XButton.vue | 50 + web/src/components/XButton/src/XTextButton.vue | 49 + .../package/designer/ProcessDesigner.vue | 655 + .../package/designer/ProcessViewer.vue | 379 + .../bpmnProcessDesigner/package/designer/index.ts | 8 + .../bpmnProcessDesigner/package/designer/index2.ts | 8 + .../plugins/content-pad/contentPadProvider.js | 423 + .../package/designer/plugins/content-pad/index.js | 6 + .../package/designer/plugins/defaultEmpty.js | 24 + .../plugins/descriptor/activitiDescriptor.json | 1004 ++ .../plugins/descriptor/camundaDescriptor.json | 1020 ++ .../plugins/descriptor/flowableDescriptor.json | 1483 ++ .../extension-moddle/activiti/activitiExtension.js | 83 + .../plugins/extension-moddle/activiti/index.js | 11 + .../plugins/extension-moddle/camunda/extension.js | 151 + .../plugins/extension-moddle/camunda/index.js | 8 + .../extension-moddle/flowable/flowableExtension.js | 83 + .../plugins/extension-moddle/flowable/index.js | 10 + .../designer/plugins/palette/CustomPalette.js | 233 + .../package/designer/plugins/palette/index.js | 22 + .../designer/plugins/palette/paletteProvider.js | 219 + .../designer/plugins/translate/customTranslate.js | 42 + .../package/designer/plugins/translate/zh.js | 242 + .../bpmnProcessDesigner/package/index.ts | 11 + .../package/palette/ProcessPalette.vue | 45 + .../package/penal/PropertiesPanel.vue | 311 + .../package/penal/base/ElementBaseInfo.vue | 183 + .../penal/custom-config/ElementCustomConfig.vue | 39 + .../components/BoundaryEventTimer.vue | 252 + .../components/UserTaskCustomConfig.vue | 688 + .../package/penal/custom-config/data.ts | 13 + .../package/penal/flow-condition/FlowCondition.vue | 191 + .../package/penal/form/ElementForm.vue | 479 + .../bpmnProcessDesigner/package/penal/index.js | 7 + .../package/penal/listeners/ElementListeners.vue | 447 + .../penal/listeners/ProcessListenerDialog.vue | 85 + .../package/penal/listeners/UserTaskListeners.vue | 491 + .../package/penal/listeners/template.js | 178 + .../package/penal/listeners/utilSelf.ts | 89 + .../penal/multi-instance/ElementMultiInstance.vue | 421 + .../package/penal/other/ElementOtherConfig.vue | 55 + .../package/penal/properties/ElementProperties.vue | 168 + .../penal/signal-message/SignalAndMessage.vue | 113 + .../package/penal/task/ElementTask.vue | 78 + .../bpmnProcessDesigner/package/penal/task/data.ts | 36 + .../penal/task/task-components/CallActivity.vue | 280 + .../task-components/ProcessExpressionDialog.vue | 70 + .../penal/task/task-components/ReceiveTask.vue | 125 + .../penal/task/task-components/ScriptTask.vue | 99 + .../penal/task/task-components/ServiceTask.vue | 91 + .../penal/task/task-components/UserTask.vue | 469 + .../penal/time-event-config/CycleConfig.vue | 285 + .../penal/time-event-config/DurationConfig.vue | 86 + .../penal/time-event-config/TimeEventConfig.vue | 312 + .../package/theme/element-variables.scss | 70 + .../bpmnProcessDesigner/package/theme/index.scss | 117 + .../package/theme/process-designer.scss | 159 + .../package/theme/process-panel.scss | 107 + .../bpmnProcessDesigner/package/utils.ts | 77 + .../bpmnProcessDesigner/src/highlight/index.js | 5 + .../src/modules/custom-renderer/CustomRenderer.js | 14 + .../src/modules/custom-renderer/index.js | 6 + .../src/modules/rules/CustomRules.js | 16 + .../bpmnProcessDesigner/src/modules/rules/index.js | 6 + .../bpmnProcessDesigner/src/translations.ts | 25 + .../src/utils/directive/clickOutSide.js | 39 + .../bpmnProcessDesigner/src/utils/index.js | 10 + .../bpmnProcessDesigner/src/utils/xml2json.js | 50 + web/src/components/index.ts | 6 + web/src/config/axios/config.ts | 28 + web/src/config/axios/errorCode.ts | 6 + web/src/config/axios/index.ts | 47 + web/src/config/axios/service.ts | 239 + web/src/directives/index.ts | 24 + web/src/directives/permission/hasPermi.ts | 31 + web/src/directives/permission/hasRole.ts | 28 + web/src/hooks/event/useScrollTo.ts | 60 + web/src/hooks/web/useCache.ts | 41 + web/src/hooks/web/useConfigGlobal.ts | 9 + web/src/hooks/web/useCrudSchemas.ts | 326 + web/src/hooks/web/useDesign.ts | 18 + web/src/hooks/web/useEmitt.ts | 22 + web/src/hooks/web/useForm.ts | 94 + web/src/hooks/web/useGuide.ts | 49 + web/src/hooks/web/useI18n.ts | 53 + web/src/hooks/web/useIcon.ts | 8 + web/src/hooks/web/useLocale.ts | 35 + web/src/hooks/web/useMessage.ts | 95 + web/src/hooks/web/useNProgress.ts | 33 + web/src/hooks/web/useNetwork.ts | 21 + web/src/hooks/web/useNow.ts | 60 + web/src/hooks/web/usePageLoading.ts | 18 + web/src/hooks/web/useTable.ts | 223 + web/src/hooks/web/useTagsView.ts | 63 + web/src/hooks/web/useTimeAgo.ts | 49 + web/src/hooks/web/useTitle.ts | 24 + web/src/hooks/web/useValidator.ts | 60 + web/src/hooks/web/useWatermark.ts | 72 + web/src/layout/Layout.vue | 75 + web/src/layout/components/AppView.vue | 55 + web/src/layout/components/Breadcrumb/index.ts | 3 + .../components/Breadcrumb/src/Breadcrumb.vue | 130 + web/src/layout/components/Breadcrumb/src/helper.ts | 31 + web/src/layout/components/Collapse/index.ts | 3 + .../layout/components/Collapse/src/Collapse.vue | 35 + web/src/layout/components/ContextMenu/index.ts | 10 + .../components/ContextMenu/src/ContextMenu.vue | 76 + web/src/layout/components/Footer/index.ts | 3 + web/src/layout/components/Footer/src/Footer.vue | 27 + web/src/layout/components/LocaleDropdown/index.ts | 3 + .../LocaleDropdown/src/LocaleDropdown.vue | 52 + web/src/layout/components/Logo/index.ts | 3 + web/src/layout/components/Logo/src/Logo.vue | 88 + web/src/layout/components/Menu/index.ts | 3 + web/src/layout/components/Menu/src/Menu.vue | 272 + .../Menu/src/components/useRenderMenuItem.tsx | 50 + .../Menu/src/components/useRenderMenuTitle.tsx | 27 + web/src/layout/components/Menu/src/helper.ts | 54 + web/src/layout/components/Message/index.ts | 3 + web/src/layout/components/Message/src/Message.vue | 132 + web/src/layout/components/Screenfull/index.ts | 3 + .../components/Screenfull/src/Screenfull.vue | 32 + web/src/layout/components/Setting/index.ts | 3 + web/src/layout/components/Setting/src/Setting.vue | 302 + .../Setting/src/components/ColorRadioPicker.vue | 67 + .../Setting/src/components/InterfaceDisplay.vue | 236 + .../Setting/src/components/LayoutRadioPicker.vue | 172 + web/src/layout/components/SizeDropdown/index.ts | 3 + .../components/SizeDropdown/src/SizeDropdown.vue | 40 + web/src/layout/components/TabMenu/index.ts | 3 + web/src/layout/components/TabMenu/src/TabMenu.vue | 240 + web/src/layout/components/TabMenu/src/helper.ts | 51 + web/src/layout/components/TagsView/index.ts | 3 + .../layout/components/TagsView/src/TagsView.vue | 651 + web/src/layout/components/TagsView/src/helper.ts | 21 + web/src/layout/components/TenantVisit/index.vue | 41 + web/src/layout/components/ThemeSwitch/index.ts | 3 + .../components/ThemeSwitch/src/ThemeSwitch.vue | 46 + web/src/layout/components/ToolHeader.vue | 103 + web/src/layout/components/UserInfo/index.ts | 3 + .../layout/components/UserInfo/src/UserInfo.vue | 109 + .../UserInfo/src/components/LockDialog.vue | 98 + .../UserInfo/src/components/LockPage.vue | 270 + web/src/layout/components/useRenderLayout.tsx | 294 + web/src/locales/en.ts | 459 + web/src/locales/zh-CN.ts | 453 + web/src/main.ts | 73 + web/src/permission.ts | 105 + web/src/plugins/animate.css/index.ts | 1 + web/src/plugins/echarts/index.ts | 49 + web/src/plugins/elementPlus/index.ts | 17 + web/src/plugins/formCreate/index.ts | 135 + web/src/plugins/svgIcon/index.ts | 3 + web/src/plugins/unocss/index.ts | 1 + web/src/plugins/vueI18n/helper.ts | 3 + web/src/plugins/vueI18n/index.ts | 42 + web/src/router/index.ts | 28 + web/src/router/modules/remaining.ts | 369 + web/src/store/index.ts | 12 + web/src/store/modules/app.ts | 322 + web/src/store/modules/bpm/simpleWorkflow.ts | 55 + web/src/store/modules/dict.ts | 106 + web/src/store/modules/locale.ts | 59 + web/src/store/modules/lock.ts | 48 + web/src/store/modules/permission.ts | 71 + web/src/store/modules/tagsView.ts | 177 + web/src/store/modules/user.ts | 108 + web/src/styles/FormCreate/fonts/fontello.woff | Bin 0 -> 4252 bytes web/src/styles/FormCreate/index.scss | 22 + web/src/styles/global.module.scss | 6 + web/src/styles/index.scss | 37 + web/src/styles/theme.scss | 6 + web/src/styles/var.css | 74 + web/src/styles/variables.scss | 4 + web/src/types/components.d.ts | 56 + web/src/types/configGlobal.d.ts | 4 + web/src/types/contextMenu.d.ts | 7 + web/src/types/descriptions.d.ts | 14 + web/src/types/elementPlus.d.ts | 3 + web/src/types/form.d.ts | 44 + web/src/types/icon.d.ts | 5 + web/src/types/infoTip.d.ts | 4 + web/src/types/layout.d.ts | 1 + web/src/types/localeDropdown.d.ts | 10 + web/src/types/qrcode.d.ts | 9 + web/src/types/table.d.ts | 44 + web/src/types/theme.d.ts | 16 + web/src/utils/Logger.ts | 100 + web/src/utils/auth.ts | 80 + web/src/utils/color.ts | 217 + web/src/utils/constants.ts | 446 + web/src/utils/dateUtil.ts | 18 + web/src/utils/dict.ts | 171 + web/src/utils/domUtils.ts | 289 + web/src/utils/download.ts | 100 + web/src/utils/filt.ts | 157 + web/src/utils/formCreate.ts | 205 + web/src/utils/formRules.ts | 7 + web/src/utils/formatTime.ts | 332 + web/src/utils/formatter.ts | 7 + web/src/utils/index.ts | 538 + web/src/utils/is.ts | 118 + web/src/utils/jsencrypt.ts | 31 + web/src/utils/permission.ts | 36 + web/src/utils/propTypes.ts | 24 + web/src/utils/routerHelper.ts | 256 + web/src/utils/tree.ts | 403 + web/src/utils/tsxHelper.ts | 16 + web/src/views/Error/403.vue | 8 + web/src/views/Error/404.vue | 7 + web/src/views/Error/500.vue | 7 + web/src/views/Home/Index.vue | 31 + web/src/views/Home/echarts-data.ts | 308 + web/src/views/Home/types.ts | 57 + web/src/views/Login/Login.vue | 109 + .../views/Login/components/ForgetPasswordForm.vue | 278 + web/src/views/Login/components/LoginForm.vue | 292 + web/src/views/Login/components/LoginFormTitle.vue | 26 + web/src/views/Login/components/MobileForm.vue | 226 + web/src/views/Login/components/QrCodeForm.vue | 30 + web/src/views/Login/components/RegisterForm.vue | 282 + web/src/views/Login/components/SSOLogin.vue | 199 + web/src/views/Login/components/index.ts | 9 + web/src/views/Login/components/useLogin.ts | 42 + web/src/views/Profile/Index.vue | 64 + web/src/views/Profile/components/BasicInfo.vue | 104 + web/src/views/Profile/components/ProfileUser.vue | 105 + web/src/views/Profile/components/ResetPwd.vue | 73 + web/src/views/Profile/components/UserAvatar.vue | 54 + web/src/views/Profile/components/index.ts | 6 + web/src/views/Redirect/Redirect.vue | 28 + web/src/views/bpm/category/CategoryForm.vue | 130 + web/src/views/bpm/category/index.vue | 199 + web/src/views/bpm/form/editor/index.vue | 174 + web/src/views/bpm/form/index.vue | 205 + web/src/views/bpm/group/UserGroupForm.vue | 132 + web/src/views/bpm/group/index.vue | 191 + web/src/views/bpm/model/CategoryDraggableModel.vue | 663 + web/src/views/bpm/model/definition/index.vue | 174 + web/src/views/bpm/model/form/BasicInfo.vue | 344 + web/src/views/bpm/model/form/ExtraSettings.vue | 442 + web/src/views/bpm/model/form/FormDesign.vue | 129 + web/src/views/bpm/model/form/ProcessDesign.vue | 72 + web/src/views/bpm/model/form/editor/index.vue | 124 + web/src/views/bpm/model/form/index.vue | 442 + web/src/views/bpm/model/index.vue | 225 + .../processExpression/ProcessExpressionForm.vue | 114 + web/src/views/bpm/processExpression/index.vue | 182 + .../create/ProcessDefinitionDetail.vue | 331 + web/src/views/bpm/processInstance/create/index.vue | 321 + .../detail/ProcessInstanceBpmnViewer.vue | 61 + .../detail/ProcessInstanceOperationButton.vue | 1117 ++ .../detail/ProcessInstanceSimpleViewer.vue | 174 + .../detail/ProcessInstanceTaskList.vue | 103 + .../detail/ProcessInstanceTimeline.vue | 330 + .../bpm/processInstance/detail/SignDialog.vue | 50 + web/src/views/bpm/processInstance/detail/index.vue | 355 + web/src/views/bpm/processInstance/index.vue | 333 + .../views/bpm/processInstance/manager/index.vue | 259 + web/src/views/bpm/processInstance/report/index.vue | 274 + .../bpm/processListener/ProcessListenerForm.vue | 162 + web/src/views/bpm/processListener/index.vue | 185 + web/src/views/bpm/simple/SimpleModelDesign.vue | 40 + web/src/views/bpm/task/copy/index.vue | 161 + web/src/views/bpm/task/done/index.vue | 272 + web/src/views/bpm/task/manager/index.vue | 166 + web/src/views/bpm/task/todo/index.vue | 236 + .../infra/apiAccessLog/ApiAccessLogDetail.vue | 79 + web/src/views/infra/apiAccessLog/index.vue | 226 + .../views/infra/apiErrorLog/ApiErrorLogDetail.vue | 81 + web/src/views/infra/apiErrorLog/index.vue | 252 + web/src/views/infra/build/index.vue | 184 + web/src/views/infra/codegen/EditTable.vue | 87 + web/src/views/infra/codegen/ImportTable.vue | 160 + web/src/views/infra/codegen/PreviewCode.vue | 222 + .../infra/codegen/components/BasicInfoForm.vue | 87 + .../infra/codegen/components/ColumInfoForm.vue | 167 + .../infra/codegen/components/GenerateInfoForm.vue | 385 + web/src/views/infra/codegen/components/index.ts | 4 + web/src/views/infra/codegen/index.vue | 286 + web/src/views/infra/config/ConfigForm.vue | 131 + web/src/views/infra/config/index.vue | 256 + .../dataSourceConfig/DataSourceConfigForm.vue | 111 + web/src/views/infra/dataSourceConfig/index.vue | 135 + web/src/views/infra/druid/index.vue | 28 + web/src/views/infra/file/FileForm.vue | 99 + web/src/views/infra/file/index.vue | 230 + web/src/views/infra/fileConfig/FileConfigForm.vue | 209 + web/src/views/infra/fileConfig/index.vue | 246 + web/src/views/infra/job/JobDetail.vue | 73 + web/src/views/infra/job/JobForm.vue | 137 + web/src/views/infra/job/index.vue | 331 + web/src/views/infra/job/logger/JobLogDetail.vue | 59 + web/src/views/infra/job/logger/index.vue | 200 + web/src/views/infra/redis/index.vue | 268 + web/src/views/infra/server/index.vue | 30 + web/src/views/infra/skywalking/index.vue | 27 + web/src/views/infra/swagger/index.vue | 28 + web/src/views/infra/webSocket/index.vue | 185 + web/src/views/iot/device/device/DeviceForm.vue | 263 + .../views/iot/device/device/DeviceGroupForm.vue | 90 + .../views/iot/device/device/DeviceImportForm.vue | 139 + .../iot/device/device/detail/DeviceDataDetail.vue | 110 + .../device/device/detail/DeviceDetailConfig.vue | 119 + .../device/device/detail/DeviceDetailsHeader.vue | 69 + .../iot/device/device/detail/DeviceDetailsInfo.vue | 144 + .../iot/device/device/detail/DeviceDetailsLog.vue | 166 + .../device/device/detail/DeviceDetailsModel.vue | 134 + .../device/detail/DeviceDetailsSimulator.vue | 331 + web/src/views/iot/device/device/detail/index.vue | 88 + web/src/views/iot/device/device/index.vue | 516 + web/src/views/iot/device/group/DeviceGroupForm.vue | 112 + web/src/views/iot/device/group/index.vue | 169 + web/src/views/iot/home/index.vue | 509 + web/src/views/iot/plugin/PluginConfigForm.vue | 106 + .../views/iot/plugin/detail/PluginImportForm.vue | 99 + web/src/views/iot/plugin/detail/index.vue | 120 + web/src/views/iot/plugin/index.vue | 329 + .../iot/product/category/ProductCategoryForm.vue | 119 + web/src/views/iot/product/category/index.vue | 170 + web/src/views/iot/product/product/ProductForm.vue | 255 + .../product/detail/ProductDetailsHeader.vue | 110 + .../product/product/detail/ProductDetailsInfo.vue | 43 + .../iot/product/product/detail/ProductTopic.vue | 247 + web/src/views/iot/product/product/detail/index.vue | 82 + web/src/views/iot/product/product/index.vue | 355 + .../iot/rule/databridge/IoTDataBridgeForm.vue | 207 + .../iot/rule/databridge/config/HttpConfigForm.vue | 84 + .../rule/databridge/config/KafkaMQConfigForm.vue | 45 + .../iot/rule/databridge/config/MqttConfigForm.vue | 45 + .../rule/databridge/config/RabbitMQConfigForm.vue | 63 + .../databridge/config/RedisStreamMQConfigForm.vue | 58 + .../rule/databridge/config/RocketMQConfigForm.vue | 57 + .../config/components/KeyValueEditor.vue | 74 + web/src/views/iot/rule/databridge/config/index.ts | 15 + web/src/views/iot/rule/databridge/index.vue | 234 + web/src/views/iot/thingmodel/ThingModelEvent.vue | 56 + web/src/views/iot/thingmodel/ThingModelForm.vue | 214 + .../iot/thingmodel/ThingModelInputOutputParam.vue | 155 + .../views/iot/thingmodel/ThingModelProperty.vue | 169 + web/src/views/iot/thingmodel/ThingModelService.vue | 59 + .../iot/thingmodel/components/DataDefinition.vue | 61 + web/src/views/iot/thingmodel/components/index.ts | 3 + web/src/views/iot/thingmodel/config.ts | 213 + .../dataSpecs/ThingModelArrayDataSpecs.vue | 52 + .../dataSpecs/ThingModelEnumDataSpecs.vue | 159 + .../dataSpecs/ThingModelNumberDataSpecs.vue | 139 + .../dataSpecs/ThingModelStructDataSpecs.vue | 170 + web/src/views/iot/thingmodel/dataSpecs/index.ts | 11 + web/src/views/iot/thingmodel/index.vue | 180 + web/src/views/iot/utils/constants.ts | 4 + web/src/views/report/jmreport/bi.vue | 15 + web/src/views/report/jmreport/index.vue | 15 + web/src/views/system/area/AreaForm.vue | 72 + web/src/views/system/area/index.vue | 79 + web/src/views/system/dept/DeptForm.vue | 174 + web/src/views/system/dept/index.vue | 219 + web/src/views/system/dict/DictTypeForm.vue | 124 + web/src/views/system/dict/data/DictDataForm.vue | 183 + web/src/views/system/dict/data/index.vue | 238 + web/src/views/system/dict/index.vue | 260 + web/src/views/system/loginlog/LoginLogDetail.vue | 51 + web/src/views/system/loginlog/index.vue | 180 + .../system/mail/account/MailAccountDetail.vue | 28 + .../views/system/mail/account/MailAccountForm.vue | 68 + web/src/views/system/mail/account/account.data.ts | 100 + web/src/views/system/mail/account/index.vue | 129 + web/src/views/system/mail/log/MailLogDetail.vue | 33 + web/src/views/system/mail/log/index.vue | 63 + web/src/views/system/mail/log/log.data.ts | 167 + .../system/mail/template/MailTemplateForm.vue | 74 + .../system/mail/template/MailTemplateSendForm.vue | 115 + web/src/views/system/mail/template/index.vue | 130 + .../views/system/mail/template/template.data.ts | 140 + web/src/views/system/menu/MenuForm.vue | 257 + web/src/views/system/menu/index.vue | 318 + web/src/views/system/notice/NoticeForm.vue | 132 + web/src/views/system/notice/index.vue | 217 + .../system/notify/message/NotifyMessageDetail.vue | 66 + web/src/views/system/notify/message/index.vue | 212 + .../system/notify/my/MyNotifyMessageDetail.vue | 48 + web/src/views/system/notify/my/index.vue | 218 + .../system/notify/template/NotifyTemplateForm.vue | 141 + .../notify/template/NotifyTemplateSendForm.vue | 146 + web/src/views/system/notify/template/index.vue | 264 + web/src/views/system/oauth2/client/ClientForm.vue | 261 + web/src/views/system/oauth2/client/index.vue | 219 + web/src/views/system/oauth2/token/index.vue | 164 + .../views/system/operatelog/OperateLogDetail.vue | 68 + web/src/views/system/operatelog/index.vue | 213 + web/src/views/system/post/PostForm.vue | 125 + web/src/views/system/post/index.vue | 231 + web/src/views/system/role/RoleAssignMenuForm.vue | 153 + .../views/system/role/RoleDataPermissionForm.vue | 169 + web/src/views/system/role/RoleForm.vue | 126 + web/src/views/system/role/index.vue | 298 + .../views/system/sms/channel/SmsChannelForm.vue | 144 + web/src/views/system/sms/channel/index.vue | 237 + web/src/views/system/sms/log/SmsLogDetail.vue | 86 + web/src/views/system/sms/log/index.vue | 268 + .../views/system/sms/template/SmsTemplateForm.vue | 163 + .../system/sms/template/SmsTemplateSendForm.vue | 120 + web/src/views/system/sms/template/index.vue | 344 + web/src/views/system/tenant/TenantForm.vue | 183 + web/src/views/system/tenant/index.vue | 296 + .../system/tenantPackage/TenantPackageForm.vue | 187 + web/src/views/system/tenantPackage/index.vue | 209 + web/src/views/system/user/DeptTree.vue | 79 + web/src/views/system/user/UserAssignRoleForm.vue | 96 + web/src/views/system/user/UserForm.vue | 219 + web/src/views/system/user/UserImportForm.vue | 138 + web/src/views/system/user/index.vue | 395 + web/stylelint.config.js | 235 + web/tsconfig.json | 43 + web/types/components.d.ts | 8 + web/types/custom-types.d.ts | 27 + web/types/env.d.ts | 33 + web/types/global.d.ts | 58 + web/types/router.d.ts | 84 + web/uno.config.ts | 107 + web/vite.config.ts | 88 + web/web-types.json | 19 + 795 files changed, 136773 insertions(+) create mode 100644 web/.editorconfig create mode 100644 web/.env create mode 100644 web/.env.dev create mode 100644 web/.env.prod create mode 100644 web/.env.test create mode 100644 web/.eslintignore create mode 100644 web/.eslintrc-auto-import.json create mode 100644 web/.eslintrc.js create mode 100644 web/.gitignore create mode 100644 web/.prettierignore create mode 100644 web/.stylelintignore create mode 100644 web/.vscode/extensions.json create mode 100644 web/.vscode/launch.json create mode 100644 web/.vscode/settings.json create mode 100644 web/build/vite/index.ts create mode 100644 web/build/vite/optimize.ts create mode 100644 web/index.html create mode 100644 web/package-lock.json create mode 100644 web/package.json create mode 100644 web/pnpm-lock.yaml create mode 100644 web/postcss.config.js create mode 100644 web/prettier.config.js create mode 100644 web/public/favicon.ico create mode 100644 web/public/logo.gif create mode 100644 web/src/App.vue create mode 100644 web/src/api/bpm/category/index.ts create mode 100644 web/src/api/bpm/definition/index.ts create mode 100644 web/src/api/bpm/form/index.ts create mode 100644 web/src/api/bpm/leave/index.ts create mode 100644 web/src/api/bpm/model/index.ts create mode 100644 web/src/api/bpm/processExpression/index.ts create mode 100644 web/src/api/bpm/processInstance/index.ts create mode 100644 web/src/api/bpm/processListener/index.ts create mode 100644 web/src/api/bpm/simple/index.ts create mode 100644 web/src/api/bpm/task/index.ts create mode 100644 web/src/api/bpm/userGroup/index.ts create mode 100644 web/src/api/infra/apiAccessLog/index.ts create mode 100644 web/src/api/infra/apiErrorLog/index.ts create mode 100644 web/src/api/infra/codegen/index.ts create mode 100644 web/src/api/infra/config/index.ts create mode 100644 web/src/api/infra/dataSourceConfig/index.ts create mode 100644 web/src/api/infra/demo/demo01/index.ts create mode 100644 web/src/api/infra/demo/demo02/index.ts create mode 100644 web/src/api/infra/demo/demo03/erp/index.ts create mode 100644 web/src/api/infra/demo/demo03/inner/index.ts create mode 100644 web/src/api/infra/demo/demo03/normal/index.ts create mode 100644 web/src/api/infra/file/index.ts create mode 100644 web/src/api/infra/fileConfig/index.ts create mode 100644 web/src/api/infra/job/index.ts create mode 100644 web/src/api/infra/jobLog/index.ts create mode 100644 web/src/api/infra/redis/index.ts create mode 100644 web/src/api/infra/redis/types.ts create mode 100644 web/src/api/iot/device/device/index.ts create mode 100644 web/src/api/iot/device/group/index.ts create mode 100644 web/src/api/iot/plugin/index.ts create mode 100644 web/src/api/iot/product/category/index.ts create mode 100644 web/src/api/iot/product/product/index.ts create mode 100644 web/src/api/iot/rule/databridge/index.ts create mode 100644 web/src/api/iot/statistics/index.ts create mode 100644 web/src/api/iot/thingmodel/index.ts create mode 100644 web/src/api/login/index.ts create mode 100644 web/src/api/login/oauth2/index.ts create mode 100644 web/src/api/login/types.ts create mode 100644 web/src/api/system/area/index.ts create mode 100644 web/src/api/system/dept/index.ts create mode 100644 web/src/api/system/dict/dict.data.ts create mode 100644 web/src/api/system/dict/dict.type.ts create mode 100644 web/src/api/system/loginLog/index.ts create mode 100644 web/src/api/system/mail/account/index.ts create mode 100644 web/src/api/system/mail/log/index.ts create mode 100644 web/src/api/system/mail/template/index.ts create mode 100644 web/src/api/system/menu/index.ts create mode 100644 web/src/api/system/notice/index.ts create mode 100644 web/src/api/system/notify/message/index.ts create mode 100644 web/src/api/system/notify/template/index.ts create mode 100644 web/src/api/system/oauth2/client.ts create mode 100644 web/src/api/system/oauth2/token.ts create mode 100644 web/src/api/system/operatelog/index.ts create mode 100644 web/src/api/system/permission/index.ts create mode 100644 web/src/api/system/post/index.ts create mode 100644 web/src/api/system/role/index.ts create mode 100644 web/src/api/system/sms/smsChannel/index.ts create mode 100644 web/src/api/system/sms/smsLog/index.ts create mode 100644 web/src/api/system/sms/smsTemplate/index.ts create mode 100644 web/src/api/system/tenant/index.ts create mode 100644 web/src/api/system/tenantPackage/index.ts create mode 100644 web/src/api/system/user/index.ts create mode 100644 web/src/api/system/user/profile.ts create mode 100644 web/src/assets/audio/response.mp3 create mode 100644 web/src/assets/imgs/avatar.gif create mode 100644 web/src/assets/imgs/avatar.jpg create mode 100644 web/src/assets/imgs/iot/device.png create mode 100644 web/src/assets/imgs/logo.png create mode 100644 web/src/assets/imgs/profile.jpg create mode 100644 web/src/assets/imgs/wechat.png create mode 100644 web/src/assets/map/json/china.json create mode 100644 web/src/assets/svgs/403.svg create mode 100644 web/src/assets/svgs/404.svg create mode 100644 web/src/assets/svgs/500.svg create mode 100644 web/src/assets/svgs/bpm/add-user.svg create mode 100644 web/src/assets/svgs/bpm/approve.svg create mode 100644 web/src/assets/svgs/bpm/auditor.svg create mode 100644 web/src/assets/svgs/bpm/cancel.svg create mode 100644 web/src/assets/svgs/bpm/child-process.svg create mode 100644 web/src/assets/svgs/bpm/condition.svg create mode 100644 web/src/assets/svgs/bpm/copy.svg create mode 100644 web/src/assets/svgs/bpm/delay.svg create mode 100644 web/src/assets/svgs/bpm/finish.svg create mode 100644 web/src/assets/svgs/bpm/parallel.svg create mode 100644 web/src/assets/svgs/bpm/reject.svg create mode 100644 web/src/assets/svgs/bpm/running.svg create mode 100644 web/src/assets/svgs/bpm/simple-process-bg.svg create mode 100644 web/src/assets/svgs/bpm/starter.svg create mode 100644 web/src/assets/svgs/bpm/transactor.svg create mode 100644 web/src/assets/svgs/icon.svg create mode 100644 web/src/assets/svgs/iot/card-fill.svg create mode 100644 web/src/assets/svgs/iot/cube.svg create mode 100644 web/src/assets/svgs/login-bg.svg create mode 100644 web/src/assets/svgs/login-box-bg.svg create mode 100644 web/src/assets/svgs/message.svg create mode 100644 web/src/assets/svgs/peoples.svg create mode 100644 web/src/assets/svgs/send.svg create mode 100644 web/src/components/AppLinkInput/AppLinkSelectDialog.vue create mode 100644 web/src/components/AppLinkInput/data.ts create mode 100644 web/src/components/AppLinkInput/index.vue create mode 100644 web/src/components/Backtop/index.ts create mode 100644 web/src/components/Backtop/src/Backtop.vue create mode 100644 web/src/components/Card/index.ts create mode 100644 web/src/components/Card/src/CardTitle.vue create mode 100644 web/src/components/ColorInput/index.vue create mode 100644 web/src/components/ConfigGlobal/index.ts create mode 100644 web/src/components/ConfigGlobal/src/ConfigGlobal.vue create mode 100644 web/src/components/ContentDetailWrap/index.ts create mode 100644 web/src/components/ContentDetailWrap/src/ContentDetailWrap.vue create mode 100644 web/src/components/ContentWrap/index.ts create mode 100644 web/src/components/ContentWrap/src/ContentWrap.vue create mode 100644 web/src/components/CountTo/index.ts create mode 100644 web/src/components/CountTo/src/CountTo.vue create mode 100644 web/src/components/Crontab/index.ts create mode 100644 web/src/components/Crontab/src/Crontab.vue create mode 100644 web/src/components/Cropper/index.ts create mode 100644 web/src/components/Cropper/src/CopperModal.vue create mode 100644 web/src/components/Cropper/src/Cropper.vue create mode 100644 web/src/components/Cropper/src/CropperAvatar.vue create mode 100644 web/src/components/Cropper/src/types.ts create mode 100644 web/src/components/DeptSelectForm/index.vue create mode 100644 web/src/components/Descriptions/index.ts create mode 100644 web/src/components/Descriptions/src/Descriptions.vue create mode 100644 web/src/components/Descriptions/src/DescriptionsItemLabel.vue create mode 100644 web/src/components/Dialog/index.ts create mode 100644 web/src/components/Dialog/src/Dialog.vue create mode 100644 web/src/components/DictTag/index.ts create mode 100644 web/src/components/DictTag/src/DictTag.vue create mode 100644 web/src/components/DiyEditor/components/ComponentContainer.vue create mode 100644 web/src/components/DiyEditor/components/ComponentContainerProperty.vue create mode 100644 web/src/components/DiyEditor/components/ComponentLibrary.vue create mode 100644 web/src/components/DiyEditor/components/mobile/Carousel/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/Carousel/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/Carousel/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/CouponCard/component.tsx create mode 100644 web/src/components/DiyEditor/components/mobile/CouponCard/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/CouponCard/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/CouponCard/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/Divider/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/Divider/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/Divider/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts create mode 100644 web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/HotZone/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/HotZone/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/HotZone/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/ImageBar/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/ImageBar/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/ImageBar/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MagicCube/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/MagicCube/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MagicCube/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MenuGrid/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/MenuGrid/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MenuGrid/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MenuList/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/MenuList/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MenuList/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue create mode 100644 web/src/components/DiyEditor/components/mobile/NavigationBar/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/NavigationBar/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/NavigationBar/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/NoticeBar/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/NoticeBar/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/NoticeBar/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PageConfig/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/PageConfig/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/Popover/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/Popover/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/Popover/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/ProductCard/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/ProductCard/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/ProductCard/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/ProductList/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/ProductList/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/ProductList/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/SearchBar/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/SearchBar/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/SearchBar/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/TabBar/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/TabBar/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/TabBar/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/TitleBar/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/TitleBar/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/TitleBar/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserCard/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/UserCard/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserCard/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserCoupon/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/UserCoupon/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserCoupon/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserOrder/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/UserOrder/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserOrder/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserWallet/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/UserWallet/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/UserWallet/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts create mode 100644 web/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue create mode 100644 web/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue create mode 100644 web/src/components/DiyEditor/components/mobile/index.ts create mode 100644 web/src/components/DiyEditor/index.vue create mode 100644 web/src/components/DiyEditor/util.ts create mode 100644 web/src/components/DocAlert/index.vue create mode 100644 web/src/components/Draggable/index.vue create mode 100644 web/src/components/Echart/index.ts create mode 100644 web/src/components/Echart/src/Echart.vue create mode 100644 web/src/components/Editor/index.ts create mode 100644 web/src/components/Editor/src/Editor.vue create mode 100644 web/src/components/Error/index.ts create mode 100644 web/src/components/Error/src/Error.vue create mode 100644 web/src/components/Form/index.ts create mode 100644 web/src/components/Form/src/Form.vue create mode 100644 web/src/components/Form/src/componentMap.ts create mode 100644 web/src/components/Form/src/components/useRenderCheckbox.tsx create mode 100644 web/src/components/Form/src/components/useRenderRadio.tsx create mode 100644 web/src/components/Form/src/components/useRenderSelect.tsx create mode 100644 web/src/components/Form/src/helper.ts create mode 100644 web/src/components/Form/src/types.ts create mode 100644 web/src/components/FormCreate/index.ts create mode 100644 web/src/components/FormCreate/src/components/DictSelect.vue create mode 100644 web/src/components/FormCreate/src/components/useApiSelect.tsx create mode 100644 web/src/components/FormCreate/src/config/index.ts create mode 100644 web/src/components/FormCreate/src/config/selectRule.ts create mode 100644 web/src/components/FormCreate/src/config/useDictSelectRule.ts create mode 100644 web/src/components/FormCreate/src/config/useEditorRule.ts create mode 100644 web/src/components/FormCreate/src/config/useSelectRule.ts create mode 100644 web/src/components/FormCreate/src/config/useUploadFileRule.ts create mode 100644 web/src/components/FormCreate/src/config/useUploadImgRule.ts create mode 100644 web/src/components/FormCreate/src/config/useUploadImgsRule.ts create mode 100644 web/src/components/FormCreate/src/type/index.ts create mode 100644 web/src/components/FormCreate/src/useFormCreateDesigner.ts create mode 100644 web/src/components/FormCreate/src/utils/index.ts create mode 100644 web/src/components/Highlight/index.ts create mode 100644 web/src/components/Highlight/src/Highlight.vue create mode 100644 web/src/components/IFrame/index.ts create mode 100644 web/src/components/IFrame/src/IFrame.vue create mode 100644 web/src/components/Icon/index.ts create mode 100644 web/src/components/Icon/src/Icon.vue create mode 100644 web/src/components/Icon/src/IconSelect.vue create mode 100644 web/src/components/Icon/src/data.ts create mode 100644 web/src/components/ImageViewer/index.ts create mode 100644 web/src/components/ImageViewer/src/ImageViewer.vue create mode 100644 web/src/components/ImageViewer/src/types.ts create mode 100644 web/src/components/Infotip/index.ts create mode 100644 web/src/components/Infotip/src/Infotip.vue create mode 100644 web/src/components/InputPassword/index.ts create mode 100644 web/src/components/InputPassword/src/InputPassword.vue create mode 100644 web/src/components/InputWithColor/index.vue create mode 100644 web/src/components/LogicFlow/editPanel.vue create mode 100644 web/src/components/LogicFlow/previewPanel.vue create mode 100644 web/src/components/MagicCubeEditor/index.vue create mode 100644 web/src/components/MagicCubeEditor/util.ts create mode 100644 web/src/components/MarkdownView/index.vue create mode 100644 web/src/components/OperateLogV2/index.ts create mode 100644 web/src/components/OperateLogV2/src/OperateLogV2.vue create mode 100644 web/src/components/Pagination/index.vue create mode 100644 web/src/components/Qrcode/index.ts create mode 100644 web/src/components/Qrcode/src/Qrcode.vue create mode 100644 web/src/components/RouterSearch/index.vue create mode 100644 web/src/components/Search/index.ts create mode 100644 web/src/components/Search/src/Search.vue create mode 100644 web/src/components/ShortcutDateRangePicker/index.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/consts.ts create mode 100644 web/src/components/SimpleProcessDesignerV2/src/index.ts create mode 100644 web/src/components/SimpleProcessDesignerV2/src/node.ts create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue create mode 100644 web/src/components/SimpleProcessDesignerV2/src/utils.ts create mode 100644 web/src/components/SimpleProcessDesignerV2/theme/iconfont.ttf create mode 100644 web/src/components/SimpleProcessDesignerV2/theme/iconfont.woff create mode 100644 web/src/components/SimpleProcessDesignerV2/theme/iconfont.woff2 create mode 100644 web/src/components/SimpleProcessDesignerV2/theme/simple-process-designer.scss create mode 100644 web/src/components/Sticky/index.ts create mode 100644 web/src/components/Sticky/src/Sticky.vue create mode 100644 web/src/components/SummaryCard/index.vue create mode 100644 web/src/components/Table/index.ts create mode 100644 web/src/components/Table/src/Table.vue create mode 100644 web/src/components/Table/src/TableSelectForm.vue create mode 100644 web/src/components/Table/src/helper.ts create mode 100644 web/src/components/Table/src/types.ts create mode 100644 web/src/components/Tinyflow/Tinyflow.vue create mode 100644 web/src/components/Tinyflow/ui/index.css create mode 100644 web/src/components/Tinyflow/ui/index.d.ts create mode 100644 web/src/components/Tinyflow/ui/index.js create mode 100644 web/src/components/Tinyflow/ui/index.umd.js create mode 100644 web/src/components/Tooltip/index.ts create mode 100644 web/src/components/Tooltip/src/Tooltip.vue create mode 100644 web/src/components/UploadFile/index.ts create mode 100644 web/src/components/UploadFile/src/UploadFile.vue create mode 100644 web/src/components/UploadFile/src/UploadImg.vue create mode 100644 web/src/components/UploadFile/src/UploadImgs.vue create mode 100644 web/src/components/UploadFile/src/useUpload.ts create mode 100644 web/src/components/UserSelectForm/index.vue create mode 100644 web/src/components/Verifition/index.ts create mode 100644 web/src/components/Verifition/src/Verify.vue create mode 100644 web/src/components/Verifition/src/Verify/VerifyPoints.vue create mode 100644 web/src/components/Verifition/src/Verify/VerifySlide.vue create mode 100644 web/src/components/Verifition/src/Verify/index.ts create mode 100644 web/src/components/Verifition/src/utils/ase.ts create mode 100644 web/src/components/Verifition/src/utils/util.ts create mode 100644 web/src/components/VerticalButtonGroup/index.vue create mode 100644 web/src/components/XButton/index.ts create mode 100644 web/src/components/XButton/src/XButton.vue create mode 100644 web/src/components/XButton/src/XTextButton.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/index.ts create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/index2.ts create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js create mode 100644 web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js create mode 100644 web/src/components/bpmnProcessDesigner/package/index.ts create mode 100644 web/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/index.js create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/listeners/template.js create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/data.ts create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/time-event-config/CycleConfig.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/penal/time-event-config/TimeEventConfig.vue create mode 100644 web/src/components/bpmnProcessDesigner/package/theme/element-variables.scss create mode 100644 web/src/components/bpmnProcessDesigner/package/theme/index.scss create mode 100644 web/src/components/bpmnProcessDesigner/package/theme/process-designer.scss create mode 100644 web/src/components/bpmnProcessDesigner/package/theme/process-panel.scss create mode 100644 web/src/components/bpmnProcessDesigner/package/utils.ts create mode 100644 web/src/components/bpmnProcessDesigner/src/highlight/index.js create mode 100644 web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js create mode 100644 web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js create mode 100644 web/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js create mode 100644 web/src/components/bpmnProcessDesigner/src/modules/rules/index.js create mode 100644 web/src/components/bpmnProcessDesigner/src/translations.ts create mode 100644 web/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js create mode 100644 web/src/components/bpmnProcessDesigner/src/utils/index.js create mode 100644 web/src/components/bpmnProcessDesigner/src/utils/xml2json.js create mode 100644 web/src/components/index.ts create mode 100644 web/src/config/axios/config.ts create mode 100644 web/src/config/axios/errorCode.ts create mode 100644 web/src/config/axios/index.ts create mode 100644 web/src/config/axios/service.ts create mode 100644 web/src/directives/index.ts create mode 100644 web/src/directives/permission/hasPermi.ts create mode 100644 web/src/directives/permission/hasRole.ts create mode 100644 web/src/hooks/event/useScrollTo.ts create mode 100644 web/src/hooks/web/useCache.ts create mode 100644 web/src/hooks/web/useConfigGlobal.ts create mode 100644 web/src/hooks/web/useCrudSchemas.ts create mode 100644 web/src/hooks/web/useDesign.ts create mode 100644 web/src/hooks/web/useEmitt.ts create mode 100644 web/src/hooks/web/useForm.ts create mode 100644 web/src/hooks/web/useGuide.ts create mode 100644 web/src/hooks/web/useI18n.ts create mode 100644 web/src/hooks/web/useIcon.ts create mode 100644 web/src/hooks/web/useLocale.ts create mode 100644 web/src/hooks/web/useMessage.ts create mode 100644 web/src/hooks/web/useNProgress.ts create mode 100644 web/src/hooks/web/useNetwork.ts create mode 100644 web/src/hooks/web/useNow.ts create mode 100644 web/src/hooks/web/usePageLoading.ts create mode 100644 web/src/hooks/web/useTable.ts create mode 100644 web/src/hooks/web/useTagsView.ts create mode 100644 web/src/hooks/web/useTimeAgo.ts create mode 100644 web/src/hooks/web/useTitle.ts create mode 100644 web/src/hooks/web/useValidator.ts create mode 100644 web/src/hooks/web/useWatermark.ts create mode 100644 web/src/layout/Layout.vue create mode 100644 web/src/layout/components/AppView.vue create mode 100644 web/src/layout/components/Breadcrumb/index.ts create mode 100644 web/src/layout/components/Breadcrumb/src/Breadcrumb.vue create mode 100644 web/src/layout/components/Breadcrumb/src/helper.ts create mode 100644 web/src/layout/components/Collapse/index.ts create mode 100644 web/src/layout/components/Collapse/src/Collapse.vue create mode 100644 web/src/layout/components/ContextMenu/index.ts create mode 100644 web/src/layout/components/ContextMenu/src/ContextMenu.vue create mode 100644 web/src/layout/components/Footer/index.ts create mode 100644 web/src/layout/components/Footer/src/Footer.vue create mode 100644 web/src/layout/components/LocaleDropdown/index.ts create mode 100644 web/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue create mode 100644 web/src/layout/components/Logo/index.ts create mode 100644 web/src/layout/components/Logo/src/Logo.vue create mode 100644 web/src/layout/components/Menu/index.ts create mode 100644 web/src/layout/components/Menu/src/Menu.vue create mode 100644 web/src/layout/components/Menu/src/components/useRenderMenuItem.tsx create mode 100644 web/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx create mode 100644 web/src/layout/components/Menu/src/helper.ts create mode 100644 web/src/layout/components/Message/index.ts create mode 100644 web/src/layout/components/Message/src/Message.vue create mode 100644 web/src/layout/components/Screenfull/index.ts create mode 100644 web/src/layout/components/Screenfull/src/Screenfull.vue create mode 100644 web/src/layout/components/Setting/index.ts create mode 100644 web/src/layout/components/Setting/src/Setting.vue create mode 100644 web/src/layout/components/Setting/src/components/ColorRadioPicker.vue create mode 100644 web/src/layout/components/Setting/src/components/InterfaceDisplay.vue create mode 100644 web/src/layout/components/Setting/src/components/LayoutRadioPicker.vue create mode 100644 web/src/layout/components/SizeDropdown/index.ts create mode 100644 web/src/layout/components/SizeDropdown/src/SizeDropdown.vue create mode 100644 web/src/layout/components/TabMenu/index.ts create mode 100644 web/src/layout/components/TabMenu/src/TabMenu.vue create mode 100644 web/src/layout/components/TabMenu/src/helper.ts create mode 100644 web/src/layout/components/TagsView/index.ts create mode 100644 web/src/layout/components/TagsView/src/TagsView.vue create mode 100644 web/src/layout/components/TagsView/src/helper.ts create mode 100644 web/src/layout/components/TenantVisit/index.vue create mode 100644 web/src/layout/components/ThemeSwitch/index.ts create mode 100644 web/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue create mode 100644 web/src/layout/components/ToolHeader.vue create mode 100644 web/src/layout/components/UserInfo/index.ts create mode 100644 web/src/layout/components/UserInfo/src/UserInfo.vue create mode 100644 web/src/layout/components/UserInfo/src/components/LockDialog.vue create mode 100644 web/src/layout/components/UserInfo/src/components/LockPage.vue create mode 100644 web/src/layout/components/useRenderLayout.tsx create mode 100644 web/src/locales/en.ts create mode 100644 web/src/locales/zh-CN.ts create mode 100644 web/src/main.ts create mode 100644 web/src/permission.ts create mode 100644 web/src/plugins/animate.css/index.ts create mode 100644 web/src/plugins/echarts/index.ts create mode 100644 web/src/plugins/elementPlus/index.ts create mode 100644 web/src/plugins/formCreate/index.ts create mode 100644 web/src/plugins/svgIcon/index.ts create mode 100644 web/src/plugins/unocss/index.ts create mode 100644 web/src/plugins/vueI18n/helper.ts create mode 100644 web/src/plugins/vueI18n/index.ts create mode 100644 web/src/router/index.ts create mode 100644 web/src/router/modules/remaining.ts create mode 100644 web/src/store/index.ts create mode 100644 web/src/store/modules/app.ts create mode 100644 web/src/store/modules/bpm/simpleWorkflow.ts create mode 100644 web/src/store/modules/dict.ts create mode 100644 web/src/store/modules/locale.ts create mode 100644 web/src/store/modules/lock.ts create mode 100644 web/src/store/modules/permission.ts create mode 100644 web/src/store/modules/tagsView.ts create mode 100644 web/src/store/modules/user.ts create mode 100644 web/src/styles/FormCreate/fonts/fontello.woff create mode 100644 web/src/styles/FormCreate/index.scss create mode 100644 web/src/styles/global.module.scss create mode 100644 web/src/styles/index.scss create mode 100644 web/src/styles/theme.scss create mode 100644 web/src/styles/var.css create mode 100644 web/src/styles/variables.scss create mode 100644 web/src/types/components.d.ts create mode 100644 web/src/types/configGlobal.d.ts create mode 100644 web/src/types/contextMenu.d.ts create mode 100644 web/src/types/descriptions.d.ts create mode 100644 web/src/types/elementPlus.d.ts create mode 100644 web/src/types/form.d.ts create mode 100644 web/src/types/icon.d.ts create mode 100644 web/src/types/infoTip.d.ts create mode 100644 web/src/types/layout.d.ts create mode 100644 web/src/types/localeDropdown.d.ts create mode 100644 web/src/types/qrcode.d.ts create mode 100644 web/src/types/table.d.ts create mode 100644 web/src/types/theme.d.ts create mode 100644 web/src/utils/Logger.ts create mode 100644 web/src/utils/auth.ts create mode 100644 web/src/utils/color.ts create mode 100644 web/src/utils/constants.ts create mode 100644 web/src/utils/dateUtil.ts create mode 100644 web/src/utils/dict.ts create mode 100644 web/src/utils/domUtils.ts create mode 100644 web/src/utils/download.ts create mode 100644 web/src/utils/filt.ts create mode 100644 web/src/utils/formCreate.ts create mode 100644 web/src/utils/formRules.ts create mode 100644 web/src/utils/formatTime.ts create mode 100644 web/src/utils/formatter.ts create mode 100644 web/src/utils/index.ts create mode 100644 web/src/utils/is.ts create mode 100644 web/src/utils/jsencrypt.ts create mode 100644 web/src/utils/permission.ts create mode 100644 web/src/utils/propTypes.ts create mode 100644 web/src/utils/routerHelper.ts create mode 100644 web/src/utils/tree.ts create mode 100644 web/src/utils/tsxHelper.ts create mode 100644 web/src/views/Error/403.vue create mode 100644 web/src/views/Error/404.vue create mode 100644 web/src/views/Error/500.vue create mode 100644 web/src/views/Home/Index.vue create mode 100644 web/src/views/Home/echarts-data.ts create mode 100644 web/src/views/Home/types.ts create mode 100644 web/src/views/Login/Login.vue create mode 100644 web/src/views/Login/components/ForgetPasswordForm.vue create mode 100644 web/src/views/Login/components/LoginForm.vue create mode 100644 web/src/views/Login/components/LoginFormTitle.vue create mode 100644 web/src/views/Login/components/MobileForm.vue create mode 100644 web/src/views/Login/components/QrCodeForm.vue create mode 100644 web/src/views/Login/components/RegisterForm.vue create mode 100644 web/src/views/Login/components/SSOLogin.vue create mode 100644 web/src/views/Login/components/index.ts create mode 100644 web/src/views/Login/components/useLogin.ts create mode 100644 web/src/views/Profile/Index.vue create mode 100644 web/src/views/Profile/components/BasicInfo.vue create mode 100644 web/src/views/Profile/components/ProfileUser.vue create mode 100644 web/src/views/Profile/components/ResetPwd.vue create mode 100644 web/src/views/Profile/components/UserAvatar.vue create mode 100644 web/src/views/Profile/components/index.ts create mode 100644 web/src/views/Redirect/Redirect.vue create mode 100644 web/src/views/bpm/category/CategoryForm.vue create mode 100644 web/src/views/bpm/category/index.vue create mode 100644 web/src/views/bpm/form/editor/index.vue create mode 100644 web/src/views/bpm/form/index.vue create mode 100644 web/src/views/bpm/group/UserGroupForm.vue create mode 100644 web/src/views/bpm/group/index.vue create mode 100644 web/src/views/bpm/model/CategoryDraggableModel.vue create mode 100644 web/src/views/bpm/model/definition/index.vue create mode 100644 web/src/views/bpm/model/form/BasicInfo.vue create mode 100644 web/src/views/bpm/model/form/ExtraSettings.vue create mode 100644 web/src/views/bpm/model/form/FormDesign.vue create mode 100644 web/src/views/bpm/model/form/ProcessDesign.vue create mode 100644 web/src/views/bpm/model/form/editor/index.vue create mode 100644 web/src/views/bpm/model/form/index.vue create mode 100644 web/src/views/bpm/model/index.vue create mode 100644 web/src/views/bpm/processExpression/ProcessExpressionForm.vue create mode 100644 web/src/views/bpm/processExpression/index.vue create mode 100644 web/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue create mode 100644 web/src/views/bpm/processInstance/create/index.vue create mode 100644 web/src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue create mode 100644 web/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue create mode 100644 web/src/views/bpm/processInstance/detail/ProcessInstanceSimpleViewer.vue create mode 100644 web/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue create mode 100644 web/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue create mode 100644 web/src/views/bpm/processInstance/detail/SignDialog.vue create mode 100644 web/src/views/bpm/processInstance/detail/index.vue create mode 100644 web/src/views/bpm/processInstance/index.vue create mode 100644 web/src/views/bpm/processInstance/manager/index.vue create mode 100644 web/src/views/bpm/processInstance/report/index.vue create mode 100644 web/src/views/bpm/processListener/ProcessListenerForm.vue create mode 100644 web/src/views/bpm/processListener/index.vue create mode 100644 web/src/views/bpm/simple/SimpleModelDesign.vue create mode 100644 web/src/views/bpm/task/copy/index.vue create mode 100644 web/src/views/bpm/task/done/index.vue create mode 100644 web/src/views/bpm/task/manager/index.vue create mode 100644 web/src/views/bpm/task/todo/index.vue create mode 100644 web/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue create mode 100644 web/src/views/infra/apiAccessLog/index.vue create mode 100644 web/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue create mode 100644 web/src/views/infra/apiErrorLog/index.vue create mode 100644 web/src/views/infra/build/index.vue create mode 100644 web/src/views/infra/codegen/EditTable.vue create mode 100644 web/src/views/infra/codegen/ImportTable.vue create mode 100644 web/src/views/infra/codegen/PreviewCode.vue create mode 100644 web/src/views/infra/codegen/components/BasicInfoForm.vue create mode 100644 web/src/views/infra/codegen/components/ColumInfoForm.vue create mode 100644 web/src/views/infra/codegen/components/GenerateInfoForm.vue create mode 100644 web/src/views/infra/codegen/components/index.ts create mode 100644 web/src/views/infra/codegen/index.vue create mode 100644 web/src/views/infra/config/ConfigForm.vue create mode 100644 web/src/views/infra/config/index.vue create mode 100644 web/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue create mode 100644 web/src/views/infra/dataSourceConfig/index.vue create mode 100644 web/src/views/infra/druid/index.vue create mode 100644 web/src/views/infra/file/FileForm.vue create mode 100644 web/src/views/infra/file/index.vue create mode 100644 web/src/views/infra/fileConfig/FileConfigForm.vue create mode 100644 web/src/views/infra/fileConfig/index.vue create mode 100644 web/src/views/infra/job/JobDetail.vue create mode 100644 web/src/views/infra/job/JobForm.vue create mode 100644 web/src/views/infra/job/index.vue create mode 100644 web/src/views/infra/job/logger/JobLogDetail.vue create mode 100644 web/src/views/infra/job/logger/index.vue create mode 100644 web/src/views/infra/redis/index.vue create mode 100644 web/src/views/infra/server/index.vue create mode 100644 web/src/views/infra/skywalking/index.vue create mode 100644 web/src/views/infra/swagger/index.vue create mode 100644 web/src/views/infra/webSocket/index.vue create mode 100644 web/src/views/iot/device/device/DeviceForm.vue create mode 100644 web/src/views/iot/device/device/DeviceGroupForm.vue create mode 100644 web/src/views/iot/device/device/DeviceImportForm.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDataDetail.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDetailConfig.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDetailsHeader.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDetailsInfo.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDetailsLog.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDetailsModel.vue create mode 100644 web/src/views/iot/device/device/detail/DeviceDetailsSimulator.vue create mode 100644 web/src/views/iot/device/device/detail/index.vue create mode 100644 web/src/views/iot/device/device/index.vue create mode 100644 web/src/views/iot/device/group/DeviceGroupForm.vue create mode 100644 web/src/views/iot/device/group/index.vue create mode 100644 web/src/views/iot/home/index.vue create mode 100644 web/src/views/iot/plugin/PluginConfigForm.vue create mode 100644 web/src/views/iot/plugin/detail/PluginImportForm.vue create mode 100644 web/src/views/iot/plugin/detail/index.vue create mode 100644 web/src/views/iot/plugin/index.vue create mode 100644 web/src/views/iot/product/category/ProductCategoryForm.vue create mode 100644 web/src/views/iot/product/category/index.vue create mode 100644 web/src/views/iot/product/product/ProductForm.vue create mode 100644 web/src/views/iot/product/product/detail/ProductDetailsHeader.vue create mode 100644 web/src/views/iot/product/product/detail/ProductDetailsInfo.vue create mode 100644 web/src/views/iot/product/product/detail/ProductTopic.vue create mode 100644 web/src/views/iot/product/product/detail/index.vue create mode 100644 web/src/views/iot/product/product/index.vue create mode 100644 web/src/views/iot/rule/databridge/IoTDataBridgeForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/HttpConfigForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/KafkaMQConfigForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/MqttConfigForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/RabbitMQConfigForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/RedisStreamMQConfigForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/RocketMQConfigForm.vue create mode 100644 web/src/views/iot/rule/databridge/config/components/KeyValueEditor.vue create mode 100644 web/src/views/iot/rule/databridge/config/index.ts create mode 100644 web/src/views/iot/rule/databridge/index.vue create mode 100644 web/src/views/iot/thingmodel/ThingModelEvent.vue create mode 100644 web/src/views/iot/thingmodel/ThingModelForm.vue create mode 100644 web/src/views/iot/thingmodel/ThingModelInputOutputParam.vue create mode 100644 web/src/views/iot/thingmodel/ThingModelProperty.vue create mode 100644 web/src/views/iot/thingmodel/ThingModelService.vue create mode 100644 web/src/views/iot/thingmodel/components/DataDefinition.vue create mode 100644 web/src/views/iot/thingmodel/components/index.ts create mode 100644 web/src/views/iot/thingmodel/config.ts create mode 100644 web/src/views/iot/thingmodel/dataSpecs/ThingModelArrayDataSpecs.vue create mode 100644 web/src/views/iot/thingmodel/dataSpecs/ThingModelEnumDataSpecs.vue create mode 100644 web/src/views/iot/thingmodel/dataSpecs/ThingModelNumberDataSpecs.vue create mode 100644 web/src/views/iot/thingmodel/dataSpecs/ThingModelStructDataSpecs.vue create mode 100644 web/src/views/iot/thingmodel/dataSpecs/index.ts create mode 100644 web/src/views/iot/thingmodel/index.vue create mode 100644 web/src/views/iot/utils/constants.ts create mode 100644 web/src/views/report/jmreport/bi.vue create mode 100644 web/src/views/report/jmreport/index.vue create mode 100644 web/src/views/system/area/AreaForm.vue create mode 100644 web/src/views/system/area/index.vue create mode 100644 web/src/views/system/dept/DeptForm.vue create mode 100644 web/src/views/system/dept/index.vue create mode 100644 web/src/views/system/dict/DictTypeForm.vue create mode 100644 web/src/views/system/dict/data/DictDataForm.vue create mode 100644 web/src/views/system/dict/data/index.vue create mode 100644 web/src/views/system/dict/index.vue create mode 100644 web/src/views/system/loginlog/LoginLogDetail.vue create mode 100644 web/src/views/system/loginlog/index.vue create mode 100644 web/src/views/system/mail/account/MailAccountDetail.vue create mode 100644 web/src/views/system/mail/account/MailAccountForm.vue create mode 100644 web/src/views/system/mail/account/account.data.ts create mode 100644 web/src/views/system/mail/account/index.vue create mode 100644 web/src/views/system/mail/log/MailLogDetail.vue create mode 100644 web/src/views/system/mail/log/index.vue create mode 100644 web/src/views/system/mail/log/log.data.ts create mode 100644 web/src/views/system/mail/template/MailTemplateForm.vue create mode 100644 web/src/views/system/mail/template/MailTemplateSendForm.vue create mode 100644 web/src/views/system/mail/template/index.vue create mode 100644 web/src/views/system/mail/template/template.data.ts create mode 100644 web/src/views/system/menu/MenuForm.vue create mode 100644 web/src/views/system/menu/index.vue create mode 100644 web/src/views/system/notice/NoticeForm.vue create mode 100644 web/src/views/system/notice/index.vue create mode 100644 web/src/views/system/notify/message/NotifyMessageDetail.vue create mode 100644 web/src/views/system/notify/message/index.vue create mode 100644 web/src/views/system/notify/my/MyNotifyMessageDetail.vue create mode 100644 web/src/views/system/notify/my/index.vue create mode 100644 web/src/views/system/notify/template/NotifyTemplateForm.vue create mode 100644 web/src/views/system/notify/template/NotifyTemplateSendForm.vue create mode 100644 web/src/views/system/notify/template/index.vue create mode 100644 web/src/views/system/oauth2/client/ClientForm.vue create mode 100644 web/src/views/system/oauth2/client/index.vue create mode 100644 web/src/views/system/oauth2/token/index.vue create mode 100644 web/src/views/system/operatelog/OperateLogDetail.vue create mode 100644 web/src/views/system/operatelog/index.vue create mode 100644 web/src/views/system/post/PostForm.vue create mode 100644 web/src/views/system/post/index.vue create mode 100644 web/src/views/system/role/RoleAssignMenuForm.vue create mode 100644 web/src/views/system/role/RoleDataPermissionForm.vue create mode 100644 web/src/views/system/role/RoleForm.vue create mode 100644 web/src/views/system/role/index.vue create mode 100644 web/src/views/system/sms/channel/SmsChannelForm.vue create mode 100644 web/src/views/system/sms/channel/index.vue create mode 100644 web/src/views/system/sms/log/SmsLogDetail.vue create mode 100644 web/src/views/system/sms/log/index.vue create mode 100644 web/src/views/system/sms/template/SmsTemplateForm.vue create mode 100644 web/src/views/system/sms/template/SmsTemplateSendForm.vue create mode 100644 web/src/views/system/sms/template/index.vue create mode 100644 web/src/views/system/tenant/TenantForm.vue create mode 100644 web/src/views/system/tenant/index.vue create mode 100644 web/src/views/system/tenantPackage/TenantPackageForm.vue create mode 100644 web/src/views/system/tenantPackage/index.vue create mode 100644 web/src/views/system/user/DeptTree.vue create mode 100644 web/src/views/system/user/UserAssignRoleForm.vue create mode 100644 web/src/views/system/user/UserForm.vue create mode 100644 web/src/views/system/user/UserImportForm.vue create mode 100644 web/src/views/system/user/index.vue create mode 100644 web/stylelint.config.js create mode 100644 web/tsconfig.json create mode 100644 web/types/components.d.ts create mode 100644 web/types/custom-types.d.ts create mode 100644 web/types/env.d.ts create mode 100644 web/types/global.d.ts create mode 100644 web/types/router.d.ts create mode 100644 web/uno.config.ts create mode 100644 web/vite.config.ts create mode 100644 web/web-types.json diff --git a/web/.editorconfig b/web/.editorconfig new file mode 100644 index 0000000..79a12ff --- /dev/null +++ b/web/.editorconfig @@ -0,0 +1,12 @@ +root = true +[*.{js,ts,vue}] +charset = utf-8 # 设置文件字符集为 utf-8 +end_of_line = lf # 控制换行类型(lf | cr | crlf) +insert_final_newline = true # 始终在文件末尾插入一个新行 +indent_style = space # 缩进风格(tab | space) +indent_size = 2 # 缩进大小 +max_line_length = 100 # 最大行长度 + +[*.md] # 仅 md 文件适用以下规则 +max_line_length = off # 关闭最大行长度限制 +trim_trailing_whitespace = false # 关闭末尾空格修剪 diff --git a/web/.env b/web/.env new file mode 100644 index 0000000..b7b17c5 --- /dev/null +++ b/web/.env @@ -0,0 +1,20 @@ +# 标题 +VITE_APP_TITLE=管理系统 + +# 项目本地运行端口号 +VITE_PORT=80 + +# open 运行 npm run dev 时自动打开浏览器 +VITE_OPEN=true + +# 租户开关 +VITE_APP_TENANT_ENABLE=true + +# 验证码的开关 +VITE_APP_CAPTCHA_ENABLE=false + + +# 默认账户密码 +VITE_APP_DEFAULT_LOGIN_TENANT = 系统租户 +VITE_APP_DEFAULT_LOGIN_USERNAME = +VITE_APP_DEFAULT_LOGIN_PASSWORD = diff --git a/web/.env.dev b/web/.env.dev new file mode 100644 index 0000000..d0182a8 --- /dev/null +++ b/web/.env.dev @@ -0,0 +1,27 @@ +NODE_ENV=production + +VITE_DEV=true + +# 请求路径 +VITE_BASE_URL='http://192.168.0.129:48080' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=false + +# 是否删除console.log +VITE_DROP_CONSOLE=false + +# 是否sourcemap +VITE_SOURCEMAP=true + +# 打包路径 +VITE_BASE_PATH=/ + +# 输出路径 +VITE_OUT_DIR=dist diff --git a/web/.env.prod b/web/.env.prod new file mode 100644 index 0000000..619a756 --- /dev/null +++ b/web/.env.prod @@ -0,0 +1,27 @@ +NODE_ENV=production + +VITE_DEV=false + +# 请求路径 +VITE_BASE_URL='http://localhost:48080' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=true + +# 是否删除console.log +VITE_DROP_CONSOLE=true + +# 是否sourcemap +VITE_SOURCEMAP=false + +# 打包路径 +VITE_BASE_PATH=/ + +# 输出路径 +VITE_OUT_DIR=dist-prod \ No newline at end of file diff --git a/web/.env.test b/web/.env.test new file mode 100644 index 0000000..45f9735 --- /dev/null +++ b/web/.env.test @@ -0,0 +1,27 @@ +NODE_ENV=production + +VITE_DEV=false + +# 请求路径 +VITE_BASE_URL='' + +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server + +# 接口地址 +VITE_API_URL=/admin-api + +# 是否删除debugger +VITE_DROP_DEBUGGER=true + +# 是否删除console.log +VITE_DROP_CONSOLE=true + +# 是否sourcemap +VITE_SOURCEMAP=false + +# 打包路径 +VITE_BASE_PATH=/ + +# 输出路径 +VITE_OUT_DIR=dist-test diff --git a/web/.eslintignore b/web/.eslintignore new file mode 100644 index 0000000..1e85c0f --- /dev/null +++ b/web/.eslintignore @@ -0,0 +1,8 @@ +/build/ +/config/ +/dist/ +/*.js +/test/unit/coverage/ +/node_modules/* +/dist* +/src/main.ts diff --git a/web/.eslintrc-auto-import.json b/web/.eslintrc-auto-import.json new file mode 100644 index 0000000..024c96a --- /dev/null +++ b/web/.eslintrc-auto-import.json @@ -0,0 +1,259 @@ +{ + "globals": { + "EffectScope": true, + "ElMessage": true, + "ElMessageBox": true, + "ElTag": true, + "asyncComputed": true, + "autoResetRef": true, + "computed": true, + "computedAsync": true, + "computedEager": true, + "computedInject": true, + "computedWithControl": true, + "controlledComputed": true, + "controlledRef": true, + "createApp": true, + "createEventHook": true, + "createGlobalState": true, + "createInjectionState": true, + "createReactiveFn": true, + "createSharedComposable": true, + "createUnrefFn": true, + "customRef": true, + "debouncedRef": true, + "debouncedWatch": true, + "defineAsyncComponent": true, + "defineComponent": true, + "eagerComputed": true, + "effectScope": true, + "extendRef": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "ignorableWatch": true, + "inject": true, + "isDefined": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "makeDestructurable": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onClickOutside": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onKeyStroke": true, + "onLongPress": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onStartTyping": true, + "onUnmounted": true, + "onUpdated": true, + "pausableWatch": true, + "provide": true, + "reactify": true, + "reactifyObject": true, + "reactive": true, + "reactiveComputed": true, + "reactiveOmit": true, + "reactivePick": true, + "readonly": true, + "ref": true, + "refAutoReset": true, + "refDebounced": true, + "refDefault": true, + "refThrottled": true, + "refWithControl": true, + "resolveComponent": true, + "resolveRef": true, + "resolveUnref": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "syncRef": true, + "syncRefs": true, + "templateRef": true, + "throttledRef": true, + "throttledWatch": true, + "toRaw": true, + "toReactive": true, + "toRef": true, + "toRefs": true, + "triggerRef": true, + "tryOnBeforeMount": true, + "tryOnBeforeUnmount": true, + "tryOnMounted": true, + "tryOnScopeDispose": true, + "tryOnUnmounted": true, + "unref": true, + "unrefElement": true, + "until": true, + "useActiveElement": true, + "useArrayEvery": true, + "useArrayFilter": true, + "useArrayFind": true, + "useArrayFindIndex": true, + "useArrayJoin": true, + "useArrayMap": true, + "useArrayReduce": true, + "useArraySome": true, + "useAsyncQueue": true, + "useAsyncState": true, + "useAttrs": true, + "useBase64": true, + "useBattery": true, + "useBluetooth": true, + "useBreakpoints": true, + "useBroadcastChannel": true, + "useBrowserLocation": true, + "useCached": true, + "useClipboard": true, + "useColorMode": true, + "useConfirmDialog": true, + "useCounter": true, + "useCssModule": true, + "useCssVar": true, + "useCssVars": true, + "useCurrentElement": true, + "useCycleList": true, + "useDark": true, + "useDateFormat": true, + "useDebounce": true, + "useDebounceFn": true, + "useDebouncedRefHistory": true, + "useDeviceMotion": true, + "useDeviceOrientation": true, + "useDevicePixelRatio": true, + "useDevicesList": true, + "useDisplayMedia": true, + "useDocumentVisibility": true, + "useDraggable": true, + "useDropZone": true, + "useElementBounding": true, + "useElementByPoint": true, + "useElementHover": true, + "useElementSize": true, + "useElementVisibility": true, + "useEventBus": true, + "useEventListener": true, + "useEventSource": true, + "useEyeDropper": true, + "useFavicon": true, + "useFetch": true, + "useFileDialog": true, + "useFileSystemAccess": true, + "useFocus": true, + "useFocusWithin": true, + "useFps": true, + "useFullscreen": true, + "useGamepad": true, + "useGeolocation": true, + "useIdle": true, + "useImage": true, + "useInfiniteScroll": true, + "useIntersectionObserver": true, + "useInterval": true, + "useIntervalFn": true, + "useKeyModifier": true, + "useLastChanged": true, + "useLocalStorage": true, + "useMagicKeys": true, + "useManualRefHistory": true, + "useMediaControls": true, + "useMediaQuery": true, + "useMemoize": true, + "useMemory": true, + "useMounted": true, + "useMouse": true, + "useMouseInElement": true, + "useMousePressed": true, + "useMutationObserver": true, + "useNavigatorLanguage": true, + "useNetwork": true, + "useNow": true, + "useObjectUrl": true, + "useOffsetPagination": true, + "useOnline": true, + "usePageLeave": true, + "useParallax": true, + "usePermission": true, + "usePointer": true, + "usePointerSwipe": true, + "usePreferredColorScheme": true, + "usePreferredDark": true, + "usePreferredLanguages": true, + "useRafFn": true, + "useRefHistory": true, + "useResizeObserver": true, + "useRoute": true, + "useRouter": true, + "useScreenOrientation": true, + "useScreenSafeArea": true, + "useScriptTag": true, + "useScroll": true, + "useScrollLock": true, + "useSessionStorage": true, + "useShare": true, + "useSlots": true, + "useSpeechRecognition": true, + "useSpeechSynthesis": true, + "useStepper": true, + "useStorage": true, + "useStorageAsync": true, + "useStyleTag": true, + "useSupported": true, + "useSwipe": true, + "useTemplateRefsList": true, + "useTextDirection": true, + "useTextSelection": true, + "useTextareaAutosize": true, + "useThrottle": true, + "useThrottleFn": true, + "useThrottledRefHistory": true, + "useTimeAgo": true, + "useTimeout": true, + "useTimeoutFn": true, + "useTimeoutPoll": true, + "useTimestamp": true, + "useTitle": true, + "useToggle": true, + "useTransition": true, + "useUrlSearchParams": true, + "useUserMedia": true, + "useVModel": true, + "useVModels": true, + "useVibrate": true, + "useVirtualList": true, + "useWakeLock": true, + "useWebNotification": true, + "useWebSocket": true, + "useWebWorker": true, + "useWebWorkerFn": true, + "useWindowFocus": true, + "useWindowScroll": true, + "useWindowSize": true, + "watch": true, + "watchArray": true, + "watchAtMost": true, + "watchDebounced": true, + "watchEffect": true, + "watchIgnorable": true, + "watchOnce": true, + "watchPausable": true, + "watchPostEffect": true, + "watchSyncEffect": true, + "watchThrottled": true, + "watchTriggerable": true, + "watchWithFilter": true, + "whenever": true + } +} diff --git a/web/.eslintrc.js b/web/.eslintrc.js new file mode 100644 index 0000000..b28255c --- /dev/null +++ b/web/.eslintrc.js @@ -0,0 +1,75 @@ +// @ts-check +const { defineConfig } = require('eslint-define-config') +module.exports = defineConfig({ + root: true, + env: { + browser: true, + node: true, + es6: true + }, + parser: 'vue-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser', + ecmaVersion: 2020, + sourceType: 'module', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + extends: [ + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'plugin:prettier/recommended', + '@unocss' + ], + rules: { + 'vue/no-setup-props-destructure': 'off', + 'vue/script-setup-uses-vars': 'error', + 'vue/no-reserved-component-names': 'off', + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'off', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': 'off', + 'no-unused-vars': 'off', + 'space-before-function-paren': 'off', + + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/require-default-prop': 'off', + 'vue/require-explicit-emits': 'off', + 'vue/require-toggle-inside-transition': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'never', + component: 'always' + }, + svg: 'always', + math: 'always' + } + ], + 'vue/multi-word-component-names': 'off', + 'vue/no-v-html': 'off', + 'prettier/prettier': 'off', // 芋艿:默认关闭 prettier 的 ESLint 校验,因为我们使用的是 IDE 的 Prettier 插件 + '@unocss/order': 'off', // 芋艿:禁用 unocss 【css】顺序的提示,因为暂时不需要这么严格,警告也有点繁琐 + '@unocss/order-attributify': 'off' // 芋艿:禁用 unocss 【属性】顺序的提示,因为暂时不需要这么严格,警告也有点繁琐 + } +}) diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..848638a --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,9 @@ +node_modules +.DS_Store +dist +dist-ssr +/dist* +pnpm-debug +auto-*.d.ts +.idea +.history diff --git a/web/.prettierignore b/web/.prettierignore new file mode 100644 index 0000000..f68ea86 --- /dev/null +++ b/web/.prettierignore @@ -0,0 +1,11 @@ +/node_modules/** +/dist/ +/dist* +/public/* +/docs/* +/vite.config.ts +/src/types/env.d.ts +/src/types/auto-components.d.ts +/src/types/auto-imports.d.ts +/docs/**/* +CHANGELOG diff --git a/web/.stylelintignore b/web/.stylelintignore new file mode 100644 index 0000000..aa605b4 --- /dev/null +++ b/web/.stylelintignore @@ -0,0 +1,6 @@ +/dist/* +/public/* +public/* +/dist* +/src/types/env.d.ts +/docs/**/* diff --git a/web/.vscode/extensions.json b/web/.vscode/extensions.json new file mode 100644 index 0000000..65288b5 --- /dev/null +++ b/web/.vscode/extensions.json @@ -0,0 +1,18 @@ +{ + "recommendations": [ + "christian-kohler.path-intellisense", + "vscode-icons-team.vscode-icons", + "davidanson.vscode-markdownlint", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "mrmlnc.vscode-less", + "lokalise.i18n-ally", + "redhat.vscode-yaml", + "csstools.postcss", + "mikestead.dotenv", + "eamodio.gitlens", + "antfu.iconify", + "antfu.unocss", + "Vue.volar" + ] +} diff --git a/web/.vscode/launch.json b/web/.vscode/launch.json new file mode 100644 index 0000000..f43edc0 --- /dev/null +++ b/web/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "msedge", + "request": "launch", + "name": "Launch Edge against localhost", + "url": "http://localhost", + "webRoot": "${workspaceFolder}/src", + "sourceMaps": true + } + ] +} diff --git a/web/.vscode/settings.json b/web/.vscode/settings.json new file mode 100644 index 0000000..74ab52a --- /dev/null +++ b/web/.vscode/settings.json @@ -0,0 +1,146 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "npm.packageManager": "pnpm", + "editor.tabSize": 2, + "prettier.printWidth": 100, // 超过最大值换行 + "editor.defaultFormatter": "esbenp.prettier-vscode", + "files.eol": "\n", + "search.exclude": { + "**/node_modules": true, + "**/*.log": true, + "**/*.log*": true, + "**/bower_components": true, + "**/dist": true, + "**/elehukouben": true, + "**/.git": true, + "**/.gitignore": true, + "**/.svn": true, + "**/.DS_Store": true, + "**/.idea": true, + "**/.vscode": false, + "**/yarn.lock": true, + "**/tmp": true, + "out": true, + "dist": true, + "node_modules": true, + "CHANGELOG.md": true, + "examples": true, + "res": true, + "screenshots": true, + "yarn-error.log": true, + "**/.yarn": true + }, + "files.exclude": { + "**/.cache": true, + "**/.editorconfig": true, + "**/.eslintcache": true, + "**/bower_components": true, + "**/.idea": true, + "**/tmp": true, + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true + }, + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/.vscode/**": true, + "**/node_modules/**": true, + "**/tmp/**": true, + "**/bower_components/**": true, + "**/dist/**": true, + "**/yarn.lock": true + }, + "stylelint.enable": true, + "stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"], + "path-intellisense.mappings": { + "@/": "${workspaceRoot}/src" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[less]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.fixAll.stylelint": "explicit" + }, + "editor.formatOnSave": true, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "i18n-ally.localesPaths": ["src/locales"], + "i18n-ally.keystyle": "nested", + "i18n-ally.sortKeys": true, + "i18n-ally.namespace": false, + "i18n-ally.enabledParsers": ["ts"], + "i18n-ally.sourceLanguage": "en", + "i18n-ally.displayLanguage": "zh-CN", + "i18n-ally.enabledFrameworks": ["vue", "react"], + "cSpell.words": [ + "brotli", + "browserslist", + "codemirror", + "commitlint", + "cropperjs", + "echart", + "echarts", + "esnext", + "esno", + "iconify", + "INTLIFY", + "lintstagedrc", + "logicflow", + "nprogress", + "pinia", + "pnpm", + "qrcode", + "sider", + "sortablejs", + "stylelint", + "svgs", + "unocss", + "unplugin", + "unref", + "videojs", + "VITE", + "vitejs", + "vueuse", + "wangeditor", + "xingyu", + "yudao", + "zxcvbn" + ], + // 控制相关文件嵌套展示 + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "*.ts": "$(capture).test.ts, $(capture).test.tsx", + "*.tsx": "$(capture).test.ts, $(capture).test.tsx", + "*.env": "$(capture).env.*", + "package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.eslintrc-auto-import.json,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore" + }, + "terminal.integrated.scrollback": 10000, + "nuxt.isNuxtApp": false +} diff --git a/web/build/vite/index.ts b/web/build/vite/index.ts new file mode 100644 index 0000000..c064cc5 --- /dev/null +++ b/web/build/vite/index.ts @@ -0,0 +1,99 @@ +import { resolve } from 'path' +import Vue from '@vitejs/plugin-vue' +import VueJsx from '@vitejs/plugin-vue-jsx' +import progress from 'vite-plugin-progress' +import EslintPlugin from 'vite-plugin-eslint' +import PurgeIcons from 'vite-plugin-purge-icons' +import { ViteEjsPlugin } from 'vite-plugin-ejs' +// @ts-ignore +import ElementPlus from 'unplugin-element-plus/vite' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' +import viteCompression from 'vite-plugin-compression' +import topLevelAwait from 'vite-plugin-top-level-await' +import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons-ng' +import UnoCSS from 'unocss/vite' + +export function createVitePlugins() { + const root = process.cwd() + + // 路径查找 + function pathResolve(dir: string) { + return resolve(root, '.', dir) + } + + return [ + Vue(), + VueJsx(), + UnoCSS(), + progress(), + PurgeIcons(), + ElementPlus({}), + AutoImport({ + include: [ + /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx + /\.vue$/, + /\.vue\?vue/, // .vue + /\.md$/ // .md + ], + imports: [ + 'vue', + 'vue-router', + // 可额外添加需要 autoImport 的组件 + { + '@/hooks/web/useI18n': ['useI18n'], + '@/hooks/web/useMessage': ['useMessage'], + '@/hooks/web/useTable': ['useTable'], + '@/hooks/web/useCrudSchemas': ['useCrudSchemas'], + '@/utils/formRules': ['required'], + '@/utils/dict': ['DICT_TYPE'] + } + ], + dts: 'src/types/auto-imports.d.ts', + resolvers: [ElementPlusResolver()], + eslintrc: { + enabled: false, // Default `false` + filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json` + globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable') + } + }), + Components({ + // 生成自定义 `auto-components.d.ts` 全局声明 + dts: 'src/types/auto-components.d.ts', + // 自定义组件的解析器 + resolvers: [ElementPlusResolver()], + globs: ["src/components/**/**.{vue, md}", '!src/components/DiyEditor/components/mobile/**'] + }), + EslintPlugin({ + cache: false, + include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件 + }), + VueI18nPlugin({ + runtimeOnly: true, + compositionOnly: true, + include: [resolve(__dirname, 'src/locales/**')] + }), + createSvgIconsPlugin({ + iconDirs: [pathResolve('src/assets/svgs')], + symbolId: 'icon-[dir]-[name]', + }), + viteCompression({ + verbose: true, // 是否在控制台输出压缩结果 + disable: false, // 是否禁用 + threshold: 10240, // 体积大于 threshold 才会被压缩,单位 b + algorithm: 'gzip', // 压缩算法,可选 [ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw'] + ext: '.gz', // 生成的压缩包后缀 + deleteOriginFile: false //压缩后是否删除源文件 + }), + ViteEjsPlugin(), + topLevelAwait({ + // https://juejin.cn/post/7152191742513512485 + // The export name of top-level await promise for each chunk module + promiseExportName: '__tla', + // The function to generate import names of top-level await promise in each chunk module + promiseImportName: (i) => `__tla_${i}` + }) + ] +} diff --git a/web/build/vite/optimize.ts b/web/build/vite/optimize.ts new file mode 100644 index 0000000..9de496a --- /dev/null +++ b/web/build/vite/optimize.ts @@ -0,0 +1,123 @@ +const include = [ + 'qs', + 'url', + 'vue', + 'sass', + 'mitt', + 'axios', + 'pinia', + 'dayjs', + 'qrcode', + 'unocss', + 'vue-router', + 'vue-types', + 'vue-i18n', + 'crypto-js', + 'cropperjs', + 'lodash-es', + 'nprogress', + 'web-storage-cache', + '@iconify/iconify', + '@vueuse/core', + '@zxcvbn-ts/core', + 'echarts/core', + 'echarts/charts', + 'echarts/components', + 'echarts/renderers', + 'echarts-wordcloud', + '@wangeditor/editor', + '@wangeditor/editor-for-vue', + '@microsoft/fetch-event-source', + 'markdown-it', + 'markmap-view', + 'markmap-lib', + 'markmap-toolbar', + 'highlight.js', + 'element-plus', + 'element-plus/es', + 'element-plus/es/locale/lang/zh-cn', + 'element-plus/es/locale/lang/en', + 'element-plus/es/components/avatar/style/css', + 'element-plus/es/components/space/style/css', + 'element-plus/es/components/backtop/style/css', + 'element-plus/es/components/form/style/css', + 'element-plus/es/components/radio-group/style/css', + 'element-plus/es/components/radio/style/css', + 'element-plus/es/components/checkbox/style/css', + 'element-plus/es/components/checkbox-group/style/css', + 'element-plus/es/components/switch/style/css', + 'element-plus/es/components/time-picker/style/css', + 'element-plus/es/components/date-picker/style/css', + 'element-plus/es/components/descriptions/style/css', + 'element-plus/es/components/descriptions-item/style/css', + 'element-plus/es/components/link/style/css', + 'element-plus/es/components/tooltip/style/css', + 'element-plus/es/components/drawer/style/css', + 'element-plus/es/components/dialog/style/css', + 'element-plus/es/components/checkbox-button/style/css', + 'element-plus/es/components/option-group/style/css', + 'element-plus/es/components/radio-button/style/css', + 'element-plus/es/components/cascader/style/css', + 'element-plus/es/components/color-picker/style/css', + 'element-plus/es/components/input-number/style/css', + 'element-plus/es/components/rate/style/css', + 'element-plus/es/components/select-v2/style/css', + 'element-plus/es/components/tree-select/style/css', + 'element-plus/es/components/slider/style/css', + 'element-plus/es/components/time-select/style/css', + 'element-plus/es/components/autocomplete/style/css', + 'element-plus/es/components/image-viewer/style/css', + 'element-plus/es/components/upload/style/css', + 'element-plus/es/components/col/style/css', + 'element-plus/es/components/form-item/style/css', + 'element-plus/es/components/alert/style/css', + 'element-plus/es/components/breadcrumb/style/css', + 'element-plus/es/components/select/style/css', + 'element-plus/es/components/input/style/css', + 'element-plus/es/components/breadcrumb-item/style/css', + 'element-plus/es/components/tag/style/css', + 'element-plus/es/components/pagination/style/css', + 'element-plus/es/components/table/style/css', + 'element-plus/es/components/table-v2/style/css', + 'element-plus/es/components/table-column/style/css', + 'element-plus/es/components/card/style/css', + 'element-plus/es/components/row/style/css', + 'element-plus/es/components/button/style/css', + 'element-plus/es/components/menu/style/css', + 'element-plus/es/components/sub-menu/style/css', + 'element-plus/es/components/menu-item/style/css', + 'element-plus/es/components/option/style/css', + 'element-plus/es/components/dropdown/style/css', + 'element-plus/es/components/dropdown-menu/style/css', + 'element-plus/es/components/dropdown-item/style/css', + 'element-plus/es/components/skeleton/style/css', + 'element-plus/es/components/skeleton/style/css', + 'element-plus/es/components/backtop/style/css', + 'element-plus/es/components/menu/style/css', + 'element-plus/es/components/sub-menu/style/css', + 'element-plus/es/components/menu-item/style/css', + 'element-plus/es/components/dropdown/style/css', + 'element-plus/es/components/tree/style/css', + 'element-plus/es/components/dropdown-menu/style/css', + 'element-plus/es/components/dropdown-item/style/css', + 'element-plus/es/components/badge/style/css', + 'element-plus/es/components/breadcrumb/style/css', + 'element-plus/es/components/breadcrumb-item/style/css', + 'element-plus/es/components/image/style/css', + 'element-plus/es/components/collapse-transition/style/css', + 'element-plus/es/components/timeline/style/css', + 'element-plus/es/components/timeline-item/style/css', + 'element-plus/es/components/collapse/style/css', + 'element-plus/es/components/collapse-item/style/css', + 'element-plus/es/components/button-group/style/css', + 'element-plus/es/components/text/style/css', + 'element-plus/es/components/segmented/style/css', + '@element-plus/icons-vue', + 'element-plus/es/components/footer/style/css', + 'element-plus/es/components/empty/style/css', + 'element-plus/es/components/mention/style/css' +] + +const exclude = ['@iconify/json'] + +export { include, exclude } diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..27f001a --- /dev/null +++ b/web/index.html @@ -0,0 +1,143 @@ + + + + + + + + %VITE_APP_TITLE% + + +
+ +
+
+
+ +
%VITE_APP_TITLE%
+
+
+
+
+
+
+
+
+ + + diff --git a/web/package-lock.json b/web/package-lock.json new file mode 100644 index 0000000..d4b5a82 --- /dev/null +++ b/web/package-lock.json @@ -0,0 +1,13962 @@ +{ + "name": "yudao-ui-admin-vue3", + "version": "2.6.1-snapshot", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "yudao-ui-admin-vue3", + "version": "2.6.1-snapshot", + "license": "MIT", + "dependencies": { + "@element-plus/icons-vue": "^2.1.0", + "@form-create/designer": "^3.2.6", + "@form-create/element-ui": "^3.2.11", + "@iconify/iconify": "^3.1.1", + "@logicflow/core": "^2.0.16", + "@microsoft/fetch-event-source": "^2.0.1", + "@videojs-player/vue": "^1.0.0", + "@vueuse/core": "^10.9.0", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.10", + "@zxcvbn-ts/core": "^3.0.4", + "animate.css": "^4.1.1", + "axios": "1.9.0", + "benz-amr-recorder": "^1.1.5", + "bpmn-js-token-simulation": "^0.36.0", + "camunda-bpmn-moddle": "^7.0.1", + "cropperjs": "^1.6.1", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.10", + "diagram-js": "^12.8.0", + "driver.js": "^1.3.1", + "echarts": "^5.5.0", + "echarts-wordcloud": "^2.1.0", + "element-plus": "2.9.1", + "fast-xml-parser": "^4.3.2", + "highlight.js": "^11.9.0", + "jsencrypt": "^3.3.2", + "lodash-es": "^4.17.21", + "markdown-it": "^14.1.0", + "markmap-common": "^0.16.0", + "markmap-lib": "^0.16.1", + "markmap-toolbar": "^0.17.0", + "markmap-view": "^0.16.0", + "min-dash": "^4.1.1", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "qrcode": "^1.5.3", + "qs": "^6.12.0", + "sortablejs": "^1.15.3", + "steady-xml": "^0.1.0", + "url": "^0.11.3", + "v3-jsoneditor": "^0.0.6", + "video.js": "^7.21.5", + "vue": "3.5.12", + "vue-dompurify-html": "^4.1.4", + "vue-i18n": "9.10.2", + "vue-router": "4.4.5", + "vue-types": "^5.1.1", + "vue3-signature": "^0.2.4", + "vuedraggable": "^4.1.0", + "web-storage-cache": "^1.1.1", + "xml-js": "^1.6.11" + }, + "devDependencies": { + "@commitlint/cli": "^19.0.1", + "@commitlint/config-conventional": "^19.0.0", + "@iconify/json": "^2.2.187", + "@intlify/unplugin-vue-i18n": "^2.0.0", + "@purge-icons/generated": "^0.9.0", + "@types/lodash-es": "^4.17.12", + "@types/node": "^20.11.21", + "@types/nprogress": "^0.2.3", + "@types/qrcode": "^1.5.5", + "@types/qs": "^6.9.12", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "@unocss/eslint-config": "^0.57.4", + "@unocss/eslint-plugin": "66.1.0-beta.5", + "@unocss/transformer-variant-group": "^0.58.5", + "@vitejs/plugin-legacy": "^5.3.1", + "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "autoprefixer": "^10.4.17", + "bpmn-js": "^17.9.2", + "bpmn-js-properties-panel": "5.23.0", + "consola": "^3.2.3", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-define-config": "^2.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.22.0", + "lint-staged": "^15.2.2", + "postcss": "^8.4.35", + "postcss-html": "^1.6.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.2.5", + "prettier-eslint": "^16.3.0", + "rimraf": "^5.0.5", + "rollup": "^4.12.0", + "sass": "^1.69.5", + "stylelint": "^16.2.1", + "stylelint-config-html": "^1.1.0", + "stylelint-config-recommended": "^14.0.0", + "stylelint-config-standard": "^36.0.0", + "stylelint-order": "^6.0.4", + "terser": "^5.28.1", + "typescript": "5.3.3", + "unocss": "^0.58.5", + "unplugin-auto-import": "^0.16.7", + "unplugin-element-plus": "^0.8.0", + "unplugin-vue-components": "^0.25.2", + "vite": "5.1.4", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-ejs": "^1.7.0", + "vite-plugin-eslint": "^1.8.1", + "vite-plugin-progress": "^0.0.7", + "vite-plugin-purge-icons": "^0.10.0", + "vite-plugin-svg-icons-ng": "^1.3.1", + "vite-plugin-top-level-await": "^1.4.4", + "vue-eslint-parser": "^9.3.2", + "vue-tsc": "^1.8.27" + }, + "engines": { + "node": ">= 16.0.0", + "pnpm": ">=8.6.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.2", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.27.2", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.1", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.27.1", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.30.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.1", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bpmn-io/cm-theme": { + "version": "0.1.0-alpha.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/language": "^6.3.1", + "@codemirror/view": "^6.5.1", + "@lezer/highlight": "^1.1.4" + }, + "workspaces": { + "packages": [ + "preview-themes" + ] + } + }, + "node_modules/@bpmn-io/diagram-js-ui": { + "version": "0.2.3", + "license": "MIT", + "dependencies": { + "htm": "^3.1.1", + "preact": "^10.11.2" + } + }, + "node_modules/@bpmn-io/extract-process-variables": { + "version": "0.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-dash": "^4.0.0" + } + }, + "node_modules/@bpmn-io/feel-editor": { + "version": "1.10.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@bpmn-io/feel-lint": "^1.4.0", + "@codemirror/autocomplete": "^6.16.2", + "@codemirror/commands": "^6.8.0", + "@codemirror/language": "^6.10.2", + "@codemirror/lint": "^6.8.4", + "@codemirror/state": "^6.5.1", + "@codemirror/view": "^6.36.2", + "@lezer/highlight": "^1.2.1", + "lang-feel": "^2.3.0", + "min-dom": "^4.2.1" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/@bpmn-io/feel-lint": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/language": "^6.10.8", + "lezer-feel": "^1.7.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@bpmn-io/properties-panel": { + "version": "3.27.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@bpmn-io/feel-editor": "^1.10.0", + "@codemirror/view": "^6.28.1", + "classnames": "^2.3.1", + "feelers": "^1.4.0", + "focus-trap": "^7.5.2", + "min-dash": "^4.1.1", + "min-dom": "^4.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.6", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.8.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.11.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.5", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.36.8", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.5.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@commitlint/cli": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/ensure": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/message": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types": { + "version": "19.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.2", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "license": "MIT" + }, + "node_modules/@form-create/component-elm-checkbox": { + "version": "3.2.18", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-elm-frame": { + "version": "3.2.18", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-elm-group": { + "version": "3.2.22", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-elm-radio": { + "version": "3.2.18", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-elm-select": { + "version": "3.2.18", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-elm-tree": { + "version": "3.2.18", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-elm-upload": { + "version": "3.2.18", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + } + }, + "node_modules/@form-create/component-subform": { + "version": "3.1.34", + "license": "MIT" + }, + "node_modules/@form-create/component-wangeditor": { + "version": "3.2.14", + "license": "MIT", + "dependencies": { + "wangeditor": "^4.6.0" + } + }, + "node_modules/@form-create/core": { + "version": "3.2.22", + "license": "MIT", + "dependencies": { + "@form-create/utils": "^3.2.18" + }, + "peerDependencies": { + "vue": "^3.1.0" + } + }, + "node_modules/@form-create/designer": { + "version": "3.2.11", + "license": "MIT", + "dependencies": { + "@form-create/component-wangeditor": "^3.1", + "@form-create/element-ui": "^3.2.19", + "@form-create/utils": "^3.2.0", + "codemirror": "^6.65.7", + "element-plus": "^2.8.4", + "js-beautify": "^1.15.1", + "vuedraggable": "4.1.0" + }, + "peerDependencies": { + "vue": "^3.1.5" + } + }, + "node_modules/@form-create/element-ui": { + "version": "3.2.22", + "license": "MIT", + "dependencies": { + "@form-create/component-elm-checkbox": "^3.2.18", + "@form-create/component-elm-frame": "^3.2.18", + "@form-create/component-elm-group": "^3.2.22", + "@form-create/component-elm-radio": "^3.2.18", + "@form-create/component-elm-select": "^3.2.18", + "@form-create/component-elm-tree": "^3.2.18", + "@form-create/component-elm-upload": "^3.2.18", + "@form-create/component-subform": "^3.1.34", + "@form-create/core": "^3.2.22", + "@form-create/utils": "^3.2.18" + }, + "peerDependencies": { + "vue": "^3.1.0" + } + }, + "node_modules/@form-create/utils": { + "version": "3.2.18", + "license": "MIT" + }, + "node_modules/@gera2ld/jsx-dom": { + "version": "2.2.2", + "license": "ISC", + "dependencies": { + "@babel/runtime": "^7.21.5" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@iconify/iconify": { + "version": "3.1.1", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + } + }, + "node_modules/@iconify/json": { + "version": "2.2.338", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "*", + "pathe": "^1.1.2" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@intlify/bundle-utils": { + "version": "7.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "^9.4.0", + "@intlify/shared": "^9.4.0", + "acorn": "^8.8.2", + "escodegen": "^2.1.0", + "estree-walker": "^2.0.2", + "jsonc-eslint-parser": "^2.3.0", + "magic-string": "^0.30.0", + "mlly": "^1.2.0", + "source-map-js": "^1.0.1", + "yaml-eslint-parser": "^1.2.2" + }, + "engines": { + "node": ">= 14.16" + }, + "peerDependenciesMeta": { + "petite-vue-i18n": { + "optional": true + }, + "vue-i18n": { + "optional": true + } + } + }, + "node_modules/@intlify/core-base": { + "version": "9.10.2", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "9.10.2", + "@intlify/shared": "9.10.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/core-base/node_modules/@intlify/message-compiler": { + "version": "9.10.2", + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.10.2", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/core-base/node_modules/@intlify/shared": { + "version": "9.10.2", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.14.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.14.4", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/shared": { + "version": "9.14.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/unplugin-vue-i18n": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/bundle-utils": "^7.4.0", + "@intlify/shared": "^9.4.0", + "@rollup/pluginutils": "^5.0.2", + "@vue/compiler-sfc": "^3.2.47", + "debug": "^4.3.3", + "fast-glob": "^3.2.12", + "js-yaml": "^4.1.0", + "json5": "^2.2.3", + "pathe": "^1.0.0", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2", + "unplugin": "^1.1.0" + }, + "engines": { + "node": ">= 14.16" + }, + "peerDependencies": { + "petite-vue-i18n": "*", + "vue-i18n": "*", + "vue-i18n-bridge": "*" + }, + "peerDependenciesMeta": { + "petite-vue-i18n": { + "optional": true + }, + "vue-i18n": { + "optional": true + }, + "vue-i18n-bridge": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/markdown": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@logicflow/core": { + "version": "2.0.16", + "resolved": "https://registry.npmmirror.com/@logicflow/core/-/core-2.0.16.tgz", + "integrity": "sha512-KoNdY5g7WcAtfk7sMe+uOOso28mw6dwCHgLKmnzC0nenASD0HGWhFq+Yo7ktHP2asMXUISPb9hbQA221NcYZdg==", + "dependencies": { + "classnames": "^2.3.2", + "lodash-es": "^4.17.21", + "mobx": "^5.15.7", + "mobx-preact": "^3.0.0", + "mobx-utils": "^5.6.1", + "mousetrap": "^1.6.5", + "preact": "^10.17.1", + "uuid": "^9.0.0" + } + }, + "node_modules/@logicflow/core/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@microsoft/fetch-event-source": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@purge-icons/core": { + "version": "0.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/iconify": "2.1.2", + "axios": "^0.26.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "fs-extra": "^10.1.0" + } + }, + "node_modules/@purge-icons/core/node_modules/@iconify/iconify": { + "version": "2.1.2", + "dev": true, + "license": "(Apache-2.0 OR GPL-2.0)", + "dependencies": { + "cross-fetch": "^3.1.5" + }, + "funding": { + "url": "http://github.com/sponsors/cyberalien" + } + }, + "node_modules/@purge-icons/core/node_modules/axios": { + "version": "0.26.1", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/@purge-icons/generated": { + "version": "0.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/iconify": ">=2.0.0-rc.6" + } + }, + "node_modules/@quansync/fs": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "quansync": "^0.2.10" + }, + "engines": { + "node": ">=20.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.2", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@sphinxxxx/color-conversion": { + "version": "2.2.2", + "license": "ISC" + }, + "node_modules/@swc/core": { + "version": "1.11.24", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.21" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.24", + "@swc/core-darwin-x64": "1.11.24", + "@swc/core-linux-arm-gnueabihf": "1.11.24", + "@swc/core-linux-arm64-gnu": "1.11.24", + "@swc/core-linux-arm64-musl": "1.11.24", + "@swc/core-linux-x64-gnu": "1.11.24", + "@swc/core-linux-x64-musl": "1.11.24", + "@swc/core-win32-arm64-msvc": "1.11.24", + "@swc/core-win32-ia32-msvc": "1.11.24", + "@swc/core-win32-x64-msvc": "1.11.24" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.24", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.21", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@transloadit/prettier-bytes": { + "version": "0.0.7", + "license": "MIT" + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/event-emitter": { + "version": "0.3.5", + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.16", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "20.17.47", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/nprogress": { + "version": "0.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qrcode": { + "version": "1.5.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.18", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "license": "MIT", + "optional": true + }, + "node_modules/@types/video.js": { + "version": "7.3.58", + "license": "MIT", + "peer": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@unocss/astro": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/reset": "0.58.9", + "@unocss/vite": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/@unocss/astro/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/cli": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.58.9", + "@unocss/core": "0.58.9", + "@unocss/preset-uno": "0.58.9", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0" + }, + "bin": { + "unocss": "bin/unocss.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/cli/node_modules/@antfu/utils": { + "version": "0.7.10", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/cli/node_modules/@unocss/config": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "unconfig": "^0.3.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/cli/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/cli/node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@unocss/cli/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@unocss/cli/node_modules/jiti": { + "version": "1.21.7", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/@unocss/cli/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@unocss/cli/node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@unocss/cli/node_modules/unconfig": { + "version": "0.3.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.7", + "defu": "^6.1.4", + "jiti": "^1.21.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/config": { + "version": "66.1.0-beta.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "66.1.0-beta.5", + "unconfig": "^7.3.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/core": { + "version": "66.1.0-beta.5", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-config": { + "version": "0.57.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/eslint-plugin": "0.57.7" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@antfu/utils": { + "version": "0.7.10", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@unocss/eslint-config/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@unocss/config": { + "version": "0.57.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.57.7", + "unconfig": "^0.3.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@unocss/core": { + "version": "0.57.7", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-config/node_modules/@unocss/eslint-plugin": { + "version": "0.57.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^6.11.0", + "@unocss/config": "0.57.7", + "@unocss/core": "0.57.7", + "magic-string": "^0.30.5", + "synckit": "^0.8.5" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-config/node_modules/jiti": { + "version": "1.21.7", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/@unocss/eslint-config/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@unocss/eslint-config/node_modules/synckit": { + "version": "0.8.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@unocss/eslint-config/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/@unocss/eslint-config/node_modules/unconfig": { + "version": "0.3.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.7", + "defu": "^6.1.4", + "jiti": "^1.21.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-plugin": { + "version": "66.1.0-beta.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.26.1", + "@unocss/config": "66.1.0-beta.5", + "@unocss/core": "66.1.0-beta.5", + "@unocss/rule-utils": "66.1.0-beta.5", + "magic-string": "^0.30.17", + "synckit": "^0.9.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.32.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.32.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.32.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.32.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.32.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unocss/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/extractor-arbitrary-variants/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/rule-utils": "0.58.9", + "gzip-size": "^6.0.0", + "sirv": "^2.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector/node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/config": "0.58.9", + "@unocss/core": "0.58.9", + "@unocss/rule-utils": "0.58.9", + "css-tree": "^2.3.1", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8", + "postcss": "^8.4.38" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/@unocss/postcss/node_modules/@antfu/utils": { + "version": "0.7.10", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss/node_modules/@unocss/config": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "unconfig": "^0.3.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss/node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/postcss/node_modules/css-tree": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/@unocss/postcss/node_modules/jiti": { + "version": "1.21.7", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/@unocss/postcss/node_modules/mdn-data": { + "version": "2.0.30", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@unocss/postcss/node_modules/unconfig": { + "version": "0.3.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.7", + "defu": "^6.1.4", + "jiti": "^1.21.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-attributify": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-attributify/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/utils": "^2.1.22", + "@unocss/core": "0.58.9", + "ofetch": "^1.3.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/extractor-arbitrary-variants": "0.58.9", + "@unocss/rule-utils": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini/node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-typography": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9" + } + }, + "node_modules/@unocss/preset-typography/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9", + "@unocss/preset-wind": "0.58.9", + "@unocss/rule-utils": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-uno/node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "ofetch": "^1.3.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/preset-mini": "0.58.9", + "@unocss/rule-utils": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind/node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/reset": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/rule-utils": { + "version": "66.1.0-beta.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^66.1.0-beta.5", + "magic-string": "^0.30.17" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/scope": { + "version": "0.58.9", + "dev": true, + "license": "MIT" + }, + "node_modules/@unocss/transformer-attributify-jsx": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx-babel": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.3", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/preset-typescript": "^7.24.1", + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx-babel/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "@unocss/rule-utils": "0.58.9", + "css-tree": "^2.3.1" + } + }, + "node_modules/@unocss/transformer-directives/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives/node_modules/@unocss/rule-utils": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "^0.58.9", + "magic-string": "^0.30.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives/node_modules/css-tree": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/@unocss/transformer-directives/node_modules/mdn-data": { + "version": "2.0.30", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@unocss/transformer-variant-group": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-variant-group/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.58.9", + "@unocss/core": "0.58.9", + "@unocss/inspector": "0.58.9", + "@unocss/scope": "0.58.9", + "@unocss/transformer-directives": "0.58.9", + "chokidar": "^3.6.0", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@unocss/vite/node_modules/@antfu/utils": { + "version": "0.7.10", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite/node_modules/@unocss/config": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/core": "0.58.9", + "unconfig": "^0.3.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite/node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@unocss/vite/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@unocss/vite/node_modules/jiti": { + "version": "1.21.7", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/@unocss/vite/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@unocss/vite/node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@unocss/vite/node_modules/unconfig": { + "version": "0.3.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.7", + "defu": "^6.1.4", + "jiti": "^1.21.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@uppy/companion-client": { + "version": "2.2.2", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^4.1.2", + "namespace-emitter": "^2.0.1" + } + }, + "node_modules/@uppy/core": { + "version": "2.3.4", + "license": "MIT", + "dependencies": { + "@transloadit/prettier-bytes": "0.0.7", + "@uppy/store-default": "^2.1.1", + "@uppy/utils": "^4.1.3", + "lodash.throttle": "^4.1.1", + "mime-match": "^1.0.2", + "namespace-emitter": "^2.0.1", + "nanoid": "^3.1.25", + "preact": "^10.5.13" + } + }, + "node_modules/@uppy/store-default": { + "version": "2.1.1", + "license": "MIT" + }, + "node_modules/@uppy/utils": { + "version": "4.1.3", + "license": "MIT", + "dependencies": { + "lodash.throttle": "^4.1.1" + } + }, + "node_modules/@uppy/xhr-upload": { + "version": "2.1.3", + "license": "MIT", + "dependencies": { + "@uppy/companion-client": "^2.2.2", + "@uppy/utils": "^4.1.2", + "nanoid": "^3.1.25" + }, + "peerDependencies": { + "@uppy/core": "^2.3.3" + } + }, + "node_modules/@videojs-player/vue": { + "version": "1.0.0", + "license": "MIT", + "peerDependencies": { + "@types/video.js": "7.x", + "video.js": "7.x", + "vue": "3.x" + } + }, + "node_modules/@videojs/http-streaming": { + "version": "2.16.3", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "3.0.5", + "aes-decrypter": "3.1.3", + "global": "^4.4.0", + "m3u8-parser": "4.8.0", + "mpd-parser": "^0.22.1", + "mux.js": "6.0.1", + "video.js": "^6 || ^7" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "video.js": "^6 || ^7" + } + }, + "node_modules/@videojs/vhs-utils": { + "version": "3.0.5", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0", + "url-toolkit": "^2.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/@videojs/xhr": { + "version": "2.6.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "global": "~4.4.0", + "is-function": "^1.0.1" + } + }, + "node_modules/@vitejs/plugin-legacy": { + "version": "5.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.8", + "@babel/preset-env": "^7.25.8", + "browserslist": "^4.24.0", + "browserslist-to-esbuild": "^2.1.1", + "core-js": "^3.38.1", + "magic-string": "^0.30.12", + "regenerator-runtime": "^0.14.1", + "systemjs": "^6.15.1" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "peerDependencies": { + "terser": "^5.4.0", + "vite": "^5.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "@vue/babel-helper-vue-transform-on": "1.4.0", + "@vue/babel-plugin-resolve-type": "1.4.0", + "@vue/shared": "^3.5.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/parser": "^7.26.9", + "@vue/compiler-sfc": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.2", + "@vue/shared": "3.5.14", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.14", + "@vue/shared": "3.5.14" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.2", + "@vue/compiler-core": "3.5.14", + "@vue/compiler-dom": "3.5.14", + "@vue/compiler-ssr": "3.5.14", + "@vue/shared": "3.5.14", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.3", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.14", + "@vue/shared": "3.5.14" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "license": "MIT" + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/reactivity/node_modules/@vue/shared": { + "version": "3.5.12", + "license": "MIT" + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/runtime-core/node_modules/@vue/shared": { + "version": "3.5.12", + "license": "MIT" + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/runtime-dom/node_modules/@vue/shared": { + "version": "3.5.12", + "license": "MIT" + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "vue": "3.5.12" + } + }, + "node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.12", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/@vue/server-renderer/node_modules/@vue/shared": { + "version": "3.5.12", + "license": "MIT" + }, + "node_modules/@vue/shared": { + "version": "3.5.14", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueuse/core": { + "version": "10.11.1", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.11.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.11.1", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@wangeditor/basic-modules": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "is-url": "^1.2.4" + }, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "lodash.throttle": "^4.1.1", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/code-highlight": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "prismjs": "^1.23.0" + }, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/core": { + "version": "1.1.19", + "license": "MIT", + "dependencies": { + "@types/event-emitter": "^0.3.3", + "event-emitter": "^0.3.5", + "html-void-elements": "^2.0.0", + "i18next": "^20.4.0", + "scroll-into-view-if-needed": "^2.2.28", + "slate-history": "^0.66.0" + }, + "peerDependencies": { + "@uppy/core": "^2.1.1", + "@uppy/xhr-upload": "^2.0.3", + "dom7": "^3.0.0", + "is-hotkey": "^0.2.0", + "lodash.camelcase": "^4.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.debounce": "^4.0.8", + "lodash.foreach": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "lodash.toarray": "^4.4.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/editor": { + "version": "5.1.23", + "license": "MIT", + "dependencies": { + "@uppy/core": "^2.1.1", + "@uppy/xhr-upload": "^2.0.3", + "@wangeditor/basic-modules": "^1.1.7", + "@wangeditor/code-highlight": "^1.0.3", + "@wangeditor/core": "^1.1.19", + "@wangeditor/list-module": "^1.0.5", + "@wangeditor/table-module": "^1.1.4", + "@wangeditor/upload-image-module": "^1.0.2", + "@wangeditor/video-module": "^1.1.4", + "dom7": "^3.0.0", + "is-hotkey": "^0.2.0", + "lodash.camelcase": "^4.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.debounce": "^4.0.8", + "lodash.foreach": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "lodash.toarray": "^4.4.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/editor-for-vue": { + "version": "5.1.12", + "license": "MIT", + "peerDependencies": { + "@wangeditor/editor": ">=5.1.0", + "vue": "^3.0.5" + } + }, + "node_modules/@wangeditor/list-module": { + "version": "1.0.5", + "license": "MIT", + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/table-module": { + "version": "1.1.4", + "license": "MIT", + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/upload-image-module": { + "version": "1.0.2", + "license": "MIT", + "peerDependencies": { + "@uppy/core": "^2.0.3", + "@uppy/xhr-upload": "^2.0.3", + "@wangeditor/basic-modules": "1.x", + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "lodash.foreach": "^4.5.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/video-module": { + "version": "1.1.4", + "license": "MIT", + "peerDependencies": { + "@uppy/core": "^2.1.4", + "@uppy/xhr-upload": "^2.0.7", + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@zxcvbn-ts/core": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "1.0.16" + } + }, + "node_modules/abbrev": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ace-builds": { + "version": "1.41.0", + "license": "BSD-3-Clause" + }, + "node_modules/acorn": { + "version": "8.14.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aes-decrypter": { + "version": "3.1.3", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0", + "pkcs7": "^1.0.4" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/animate.css": { + "version": "4.1.1", + "license": "MIT" + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/array-move": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "dev": true, + "license": "MIT" + }, + "node_modules/async-validator": { + "version": "4.2.5", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/autolinker": { + "version": "3.16.2", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/benz-amr-recorder": { + "version": "1.1.5", + "license": "MIT", + "dependencies": { + "benz-recorderjs": "^1.0.5" + } + }, + "node_modules/benz-recorderjs": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/bpmn-js": { + "version": "17.11.1", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "bpmn-moddle": "^8.1.0", + "diagram-js": "^14.10.0", + "diagram-js-direct-editing": "^3.0.1", + "ids": "^1.0.5", + "inherits-browser": "^0.1.0", + "min-dash": "^4.1.1", + "min-dom": "^4.2.1", + "tiny-svg": "^3.1.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bpmn-js-properties-panel": { + "version": "5.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@bpmn-io/extract-process-variables": "^0.8.0", + "array-move": "^4.0.0", + "ids": "^1.0.5", + "min-dash": "^4.2.1", + "min-dom": "^4.2.1" + }, + "engines": { + "node": "*" + }, + "peerDependencies": { + "@bpmn-io/properties-panel": ">= 3.7", + "bpmn-js": ">= 11.5", + "camunda-bpmn-js-behaviors": ">= 0.4", + "diagram-js": ">= 11.9" + } + }, + "node_modules/bpmn-js-token-simulation": { + "version": "0.36.3", + "license": "MIT", + "dependencies": { + "inherits-browser": "^0.1.0", + "min-dash": "^4.2.2", + "min-dom": "^4.2.1", + "randomcolor": "^0.6.2" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/bpmn-js/node_modules/diagram-js": { + "version": "14.11.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@bpmn-io/diagram-js-ui": "^0.2.3", + "clsx": "^2.1.0", + "didi": "^10.2.2", + "inherits-browser": "^0.1.0", + "min-dash": "^4.1.0", + "min-dom": "^4.2.1", + "object-refs": "^0.4.0", + "path-intersection": "^3.0.0", + "tiny-svg": "^3.1.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bpmn-js/node_modules/didi": { + "version": "10.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/bpmn-js/node_modules/object-refs": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bpmn-js/node_modules/path-intersection": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.20" + } + }, + "node_modules/bpmn-moddle": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-dash": "^4.0.0", + "moddle": "^6.2.3", + "moddle-xml": "^10.1.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.5", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserslist-to-esbuild": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "browserslist-to-esbuild": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "browserslist": "*" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/cac": { + "version": "6.7.14", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.8.2", + "keyv": "^5.3.3" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.0.3" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camunda-bpmn-js-behaviors": { + "version": "1.10.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ids": "^1.0.0", + "min-dash": "^4.0.0" + }, + "peerDependencies": { + "bpmn-js": ">= 9", + "camunda-bpmn-moddle": ">= 7", + "zeebe-bpmn-moddle": ">= 0.18" + } + }, + "node_modules/camunda-bpmn-moddle": { + "version": "7.0.1", + "license": "MIT" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001718", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/codemirror": { + "version": "6.65.7", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/component-event": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.20", + "license": "MIT" + }, + "node_modules/computeds": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "dev": true, + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "license": "ISC" + }, + "node_modules/consola": { + "version": "3.4.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser/node_modules/meow": { + "version": "12.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.42.0", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.42.0", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.42.0", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "jiti": "^2.4.1" + }, + "engines": { + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/cropperjs": { + "version": "1.6.2", + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/css-functions-list": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.2", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/d3": { + "version": "7.9.0", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-flextree": { + "version": "2.1.2", + "license": "WTFPL", + "dependencies": { + "d3-hierarchy": "^1.1.5" + } + }, + "node_modules/d3-flextree/node_modules/d3-hierarchy": { + "version": "1.1.9", + "license": "BSD-3-Clause" + }, + "node_modules/d3-force": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dargs": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/default-passive-events": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/defu": { + "version": "6.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/delaunator": { + "version": "5.0.1", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diagram-js": { + "version": "12.8.1", + "license": "MIT", + "dependencies": { + "@bpmn-io/diagram-js-ui": "^0.2.2", + "clsx": "^2.0.0", + "didi": "^9.0.2", + "hammerjs": "^2.0.1", + "inherits-browser": "^0.1.0", + "min-dash": "^4.1.0", + "min-dom": "^4.1.0", + "object-refs": "^0.3.0", + "path-intersection": "^2.2.1", + "tiny-svg": "^3.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/diagram-js-direct-editing": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-dash": "^4.0.0", + "min-dom": "^4.2.1" + }, + "engines": { + "node": "*" + }, + "peerDependencies": { + "diagram-js": "*" + } + }, + "node_modules/didi": { + "version": "9.0.2", + "license": "MIT" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2" + }, + "node_modules/dom7": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "ssr-window": "^3.0.0-alpha.1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domify": { + "version": "1.4.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dompurify": { + "version": "3.2.5", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/driver.js": { + "version": "1.3.6", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/echarts": { + "version": "5.6.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.1" + } + }, + "node_modules/echarts-wordcloud": { + "version": "2.1.0", + "license": "ISC", + "peerDependencies": { + "echarts": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.155", + "dev": true, + "license": "ISC" + }, + "node_modules/element-plus": { + "version": "2.9.1", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.13", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/element-plus/node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "license": "MIT" + }, + "node_modules/element-plus/node_modules/@vueuse/core": { + "version": "9.13.0", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/element-plus/node_modules/@vueuse/metadata": { + "version": "9.13.0", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared": { + "version": "9.13.0", + "license": "MIT", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-define-config": { + "version": "2.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/Shinigami92" + }, + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=L7GY729FBKTZY" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0", + "pnpm": ">=8.6.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-prettier/node_modules/@pkgr/core": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/eslint-plugin-prettier/node_modules/synckit": { + "version": "0.11.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/eslint-plugin-prettier/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/eslint-plugin-vue": { + "version": "9.33.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exsolve": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ext": { + "version": "1.7.0", + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/feelers": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@bpmn-io/cm-theme": "^0.1.0-alpha.2", + "@bpmn-io/feel-lint": "^1.2.0", + "@codemirror/autocomplete": "^6.10.1", + "@codemirror/commands": "^6.3.0", + "@codemirror/language": "^6.9.1", + "@codemirror/lint": "^6.4.2", + "@codemirror/state": "^6.3.0", + "@codemirror/view": "^6.21.3", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.1.6", + "@lezer/lr": "^1.3.13", + "@lezer/markdown": "^1.1.0", + "feelin": "^3.0.1", + "lezer-feel": "^1.2.4", + "min-dom": "^5.0.0" + }, + "engines": { + "node": "*" + }, + "workspaces": { + "packages": [ + "feelers-playground" + ] + } + }, + "node_modules/feelers/node_modules/domify": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/feelers/node_modules/min-dom": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "domify": "^2.0.0", + "min-dash": "^4.2.1" + } + }, + "node_modules/feelin": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/lr": "^1.4.2", + "lezer-feel": "^1.4.0", + "luxon": "^3.5.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "dev": true, + "license": "ISC" + }, + "node_modules/focus-trap": { + "version": "7.6.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/git-raw-commits/node_modules/meow": { + "version": "12.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hammerjs": { + "version": "2.0.8", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.11.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "node_modules/hookified": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/htm": { + "version": "3.1.1", + "license": "Apache-2.0" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/i18next": { + "version": "20.6.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ids": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/individual": { + "version": "2.0.0" + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inherits-browser": { + "version": "0.1.0", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hotkey": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "license": "MIT" + }, + "node_modules/jiti": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jmespath": { + "version": "0.16.0", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-beautify": { + "version": "1.15.4", + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsencrypt": { + "version": "3.3.2", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/json-source-map": { + "version": "0.6.1", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsoneditor": { + "version": "9.10.5", + "license": "Apache-2.0", + "dependencies": { + "ace-builds": "^1.31.1", + "ajv": "^6.12.6", + "javascript-natural-sort": "^0.7.1", + "jmespath": "^0.16.0", + "json-source-map": "^0.6.1", + "jsonrepair": "3.1.0", + "mobius1-selectr": "^2.4.13", + "picomodal": "^3.0.0", + "vanilla-picker": "^2.12.2" + } + }, + "node_modules/jsoneditor/node_modules/ajv": { + "version": "6.12.6", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/jsoneditor/node_modules/json-schema-traverse": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jsonrepair": { + "version": "3.1.0", + "license": "ISC", + "bin": { + "jsonrepair": "bin/cli.js" + } + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/katex": { + "version": "0.16.22", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/keycode": { + "version": "2.2.1", + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/known-css-properties": { + "version": "0.36.0", + "dev": true, + "license": "MIT" + }, + "node_modules/kolorist": { + "version": "1.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lang-feel": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/autocomplete": "^6.18.4", + "@codemirror/language": "^6.10.8", + "@lezer/common": "^1.2.3", + "lezer-feel": "^1.7.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lezer-feel": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/highlight": "^1.2.1", + "@lezer/lr": "^1.4.2", + "min-dash": "^4.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lint-staged": { + "version": "15.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "13.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/listr2": { + "version": "8.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/local-pkg": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/local-pkg/node_modules/confbox": { + "version": "0.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/local-pkg/node_modules/pathe": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/local-pkg/node_modules/pkg-types": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" + } + }, + "node_modules/locate-path": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "license": "MIT" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "license": "MIT" + }, + "node_modules/lodash.toarray": { + "version": "4.4.0", + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loglevel": { + "version": "1.9.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-colored-level-prefix": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/luxon": { + "version": "3.6.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/m3u8-parser": { + "version": "4.8.0", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markmap-common": { + "version": "0.16.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@gera2ld/jsx-dom": "^2.2.2", + "npm2url": "^0.2.4" + } + }, + "node_modules/markmap-html-parser": { + "version": "0.16.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "cheerio": "1.0.0-rc.12" + }, + "peerDependencies": { + "markmap-common": "*" + } + }, + "node_modules/markmap-lib": { + "version": "0.16.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "highlight.js": "^11.8.0", + "js-yaml": "^4.1.0", + "katex": "^0.16.8", + "markmap-html-parser": "0.16.1", + "markmap-view": "0.16.0", + "prismjs": "^1.29.0", + "remarkable": "^2.0.1", + "remarkable-katex": "^1.2.1" + }, + "peerDependencies": { + "markmap-common": "*" + } + }, + "node_modules/markmap-toolbar": { + "version": "0.17.2", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@gera2ld/jsx-dom": "^2.2.2" + }, + "peerDependencies": { + "markmap-common": "*" + } + }, + "node_modules/markmap-view": { + "version": "0.16.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@gera2ld/jsx-dom": "^2.2.2", + "@types/d3": "^7.4.0", + "d3": "^7.8.5", + "d3-flextree": "^2.1.2" + }, + "peerDependencies": { + "markmap-common": "*" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "license": "MIT" + }, + "node_modules/meow": { + "version": "13.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-match": { + "version": "1.0.2", + "license": "ISC", + "dependencies": { + "wildcard": "^1.1.0" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-dash": { + "version": "4.2.3", + "license": "MIT" + }, + "node_modules/min-document": { + "version": "2.19.0", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/min-dom": { + "version": "4.2.1", + "license": "MIT", + "dependencies": { + "component-event": "^0.2.1", + "domify": "^1.4.1", + "min-dash": "^4.2.1" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/mobius1-selectr": { + "version": "2.4.13", + "license": "MIT" + }, + "node_modules/mobx": { + "version": "5.15.7", + "resolved": "https://registry.npmmirror.com/mobx/-/mobx-5.15.7.tgz", + "integrity": "sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } + }, + "node_modules/mobx-preact": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/mobx-preact/-/mobx-preact-3.0.0.tgz", + "integrity": "sha512-ijan/cBs3WmRye87E5+3JmoFBB00KDAwNA3pm7bMwYLPHBAXlN86aC3gdrXw8aKzM5RI8V3a993PphzPv6P4FA==", + "dependencies": { + "hoist-non-react-statics": "^2.3.1" + }, + "peerDependencies": { + "mobx": "5.x", + "preact": ">=8" + } + }, + "node_modules/mobx-utils": { + "version": "5.6.2", + "resolved": "https://registry.npmmirror.com/mobx-utils/-/mobx-utils-5.6.2.tgz", + "integrity": "sha512-a/WlXyGkp6F12b01sTarENpxbmlRgPHFyR1Xv2bsSjQBm5dcOtd16ONb40/vOqck8L99NHpI+C9MXQ+SZ8f+yw==", + "peerDependencies": { + "mobx": "^4.13.1 || ^5.13.1" + } + }, + "node_modules/moddle": { + "version": "6.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "min-dash": "^4.0.0" + } + }, + "node_modules/moddle-xml": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-dash": "^4.0.0", + "moddle": "^6.0.0", + "saxen": "^8.1.2" + } + }, + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmmirror.com/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "node_modules/mpd-parser": { + "version": "0.22.1", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "@xmldom/xmldom": "^0.8.3", + "global": "^4.4.0" + }, + "bin": { + "mpd-to-m3u8-json": "bin/parse.js" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/mux.js": { + "version": "6.0.1", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.11.2", + "global": "^4.4.0" + }, + "bin": { + "muxjs-transmux": "bin/transmux.js" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/namespace-emitter": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "license": "ISC" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.6", + "dev": true, + "license": "MIT" + }, + "node_modules/node-html-parser": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "7.2.1", + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "license": "BSD-3-Clause" + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm2url": { + "version": "0.2.4", + "license": "MIT" + }, + "node_modules/nprogress": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-refs": { + "version": "0.3.0", + "license": "MIT" + }, + "node_modules/ofetch": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.4", + "ufo": "^1.5.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "license": "BlueOak-1.0.0" + }, + "node_modules/package-manager-detector": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-intersection": { + "version": "2.2.1", + "license": "MIT" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "license": "ISC" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/picomodal": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/pidtree": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pinia": { + "version": "2.3.1", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "3.2.3", + "license": "MIT", + "peerDependencies": { + "pinia": "^2.0.0" + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pkcs7": { + "version": "1.0.4", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.5.5" + }, + "bin": { + "pkcs7": "bin/cli.js" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/pngjs": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-html": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^8.0.0", + "js-tokens": "^9.0.0", + "postcss": "^8.5.0", + "postcss-safe-parser": "^6.0.0" + }, + "engines": { + "node": "^12 || >=14" + } + }, + "node_modules/postcss-html/node_modules/js-tokens": { + "version": "9.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sorting": { + "version": "8.0.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.4.20" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/preact": { + "version": "10.26.6", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-eslint": { + "version": "16.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/parser": "^6.21.0", + "common-tags": "^1.8.2", + "dlv": "^1.1.3", + "eslint": "^8.57.1", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.2", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^3.5.3", + "pretty-format": "^29.7.0", + "require-relative": "^0.8.7", + "tslib": "^2.8.1", + "vue-eslint-parser": "^9.4.3" + }, + "engines": { + "node": ">=16.10.0" + }, + "funding": { + "url": "https://opencollective.com/prettier-eslint" + }, + "peerDependencies": { + "prettier-plugin-svelte": "^3.0.0", + "svelte-eslint-parser": "*" + }, + "peerDependenciesMeta": { + "prettier-plugin-svelte": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + } + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/prettier-eslint/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "license": "ISC" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "1.4.1", + "license": "MIT" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quansync": { + "version": "0.2.10", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randomcolor": { + "version": "0.6.2", + "license": "CC0" + }, + "node_modules/rd": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^10.3.6" + } + }, + "node_modules/rd/node_modules/@types/node": { + "version": "10.17.60", + "dev": true, + "license": "MIT" + }, + "node_modules/react-is": { + "version": "18.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "dev": true, + "license": "MIT" + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/remarkable": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.10", + "autolinker": "^3.11.0" + }, + "bin": { + "remarkable": "bin/remarkable.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/remarkable-katex": { + "version": "1.2.1", + "license": "MIT" + }, + "node_modules/remarkable/node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/require-relative": { + "version": "0.8.7", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "5.0.10", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.40.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.2", + "@rollup/rollup-android-arm64": "4.40.2", + "@rollup/rollup-darwin-arm64": "4.40.2", + "@rollup/rollup-darwin-x64": "4.40.2", + "@rollup/rollup-freebsd-arm64": "4.40.2", + "@rollup/rollup-freebsd-x64": "4.40.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", + "@rollup/rollup-linux-arm-musleabihf": "4.40.2", + "@rollup/rollup-linux-arm64-gnu": "4.40.2", + "@rollup/rollup-linux-arm64-musl": "4.40.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-gnu": "4.40.2", + "@rollup/rollup-linux-riscv64-musl": "4.40.2", + "@rollup/rollup-linux-s390x-gnu": "4.40.2", + "@rollup/rollup-linux-x64-gnu": "4.40.2", + "@rollup/rollup-linux-x64-musl": "4.40.2", + "@rollup/rollup-win32-arm64-msvc": "4.40.2", + "@rollup/rollup-win32-ia32-msvc": "4.40.2", + "@rollup/rollup-win32-x64-msvc": "4.40.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-purge-icons": { + "version": "0.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@purge-icons/core": "^0.10.0", + "@purge-icons/generated": "^0.10.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/rollup-plugin-purge-icons/node_modules/@purge-icons/generated": { + "version": "0.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/iconify": ">=3.1.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rust-result": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "individual": "^2.0.0" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "license": "BSD-3-Clause" + }, + "node_modules/safe-json-parse": { + "version": "4.0.0", + "dependencies": { + "rust-result": "^1.0.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.89.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "license": "ISC" + }, + "node_modules/saxen": { + "version": "8.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.31", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^1.0.20" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/signature_pad": { + "version": "3.0.0-beta.4", + "license": "MIT" + }, + "node_modules/sirv": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slate": { + "version": "0.72.8", + "license": "MIT", + "dependencies": { + "immer": "^9.0.6", + "is-plain-object": "^5.0.0", + "tiny-warning": "^1.0.3" + } + }, + "node_modules/slate-history": { + "version": "0.66.0", + "license": "MIT", + "dependencies": { + "is-plain-object": "^5.0.0" + }, + "peerDependencies": { + "slate": ">=0.65.3" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/snabbdom": { + "version": "3.6.2", + "license": "MIT", + "engines": { + "node": ">=12.17.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.6", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/ssr-window": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/steady-xml": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/strnum": { + "version": "1.1.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/style-mod": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/stylelint": { + "version": "16.19.1", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.3.7", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^10.0.8", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^7.0.3", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.36.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.5.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.2.0", + "svg-tags": "^1.0.0", + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/stylelint-config-html": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12 || >=14" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "postcss-html": "^1.0.0", + "stylelint": ">=14.0.0" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "14.0.1", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.0" + } + }, + "node_modules/stylelint-config-standard": { + "version": "36.0.1", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^14.0.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.0" + } + }, + "node_modules/stylelint-order": { + "version": "6.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.4.32", + "postcss-sorting": "^8.0.2" + }, + "peerDependencies": { + "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" + } + }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.9" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "6.1.9", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^1.9.0", + "flatted": "^3.3.3", + "hookified": "^1.8.2" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "7.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/postcss-safe-parser": { + "version": "7.0.1", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/stylelint/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylelint/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "dev": true + }, + "node_modules/svgo": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-tree": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/svgo/node_modules/mdn-data": { + "version": "2.0.30", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/synckit": { + "version": "0.9.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/systemjs": { + "version": "6.15.1", + "dev": true, + "license": "MIT" + }, + "node_modules/tabbable": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/table": { + "version": "6.9.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser": { + "version": "5.39.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-svg": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.3.0", + "license": "0BSD" + }, + "node_modules/type": { + "version": "2.7.3", + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/unconfig": { + "version": "7.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@quansync/fs": "^0.1.1", + "defu": "^6.1.4", + "jiti": "^2.4.2", + "quansync": "^0.2.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport": { + "version": "3.14.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.3", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "pathe": "^2.0.1", + "picomatch": "^4.0.2", + "pkg-types": "^1.3.0", + "scule": "^1.3.0", + "strip-literal": "^2.1.1", + "unplugin": "^1.16.1" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unimport/node_modules/pathe": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unocss": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@unocss/astro": "0.58.9", + "@unocss/cli": "0.58.9", + "@unocss/core": "0.58.9", + "@unocss/extractor-arbitrary-variants": "0.58.9", + "@unocss/postcss": "0.58.9", + "@unocss/preset-attributify": "0.58.9", + "@unocss/preset-icons": "0.58.9", + "@unocss/preset-mini": "0.58.9", + "@unocss/preset-tagify": "0.58.9", + "@unocss/preset-typography": "0.58.9", + "@unocss/preset-uno": "0.58.9", + "@unocss/preset-web-fonts": "0.58.9", + "@unocss/preset-wind": "0.58.9", + "@unocss/reset": "0.58.9", + "@unocss/transformer-attributify-jsx": "0.58.9", + "@unocss/transformer-attributify-jsx-babel": "0.58.9", + "@unocss/transformer-compile-class": "0.58.9", + "@unocss/transformer-directives": "0.58.9", + "@unocss/transformer-variant-group": "0.58.9", + "@unocss/vite": "0.58.9" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@unocss/webpack": "0.58.9", + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@unocss/webpack": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/unocss/node_modules/@unocss/core": { + "version": "0.58.9", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unplugin": { + "version": "1.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unplugin-auto-import": { + "version": "0.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.6", + "@rollup/pluginutils": "^5.0.5", + "fast-glob": "^3.3.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "minimatch": "^9.0.3", + "unimport": "^3.4.0", + "unplugin": "^1.5.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import/node_modules/@antfu/utils": { + "version": "0.7.10", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unplugin-auto-import/node_modules/local-pkg": { + "version": "0.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unplugin-element-plus": { + "version": "0.8.0", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "es-module-lexer": "^1.3.0", + "magic-string": "^0.30.1", + "unplugin": "^1.3.2" + }, + "engines": { + "node": ">=14.19.0" + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.25.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.5", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.3.0", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "minimatch": "^9.0.3", + "resolve": "^1.22.2", + "unplugin": "^1.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/@antfu/utils": { + "version": "0.7.10", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unplugin-vue-components/node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/unplugin-vue-components/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/unplugin-vue-components/node_modules/local-pkg": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unplugin-vue-components/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/unplugin-vue-components/node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/url": { + "version": "0.11.4", + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url-toolkit": { + "version": "2.2.5", + "license": "Apache-2.0" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/uuid": { + "version": "10.0.0", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v3-jsoneditor": { + "version": "0.0.6", + "license": "MIT", + "dependencies": { + "jsoneditor": "^9.10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/pratik227" + } + }, + "node_modules/vanilla-picker": { + "version": "2.12.3", + "license": "ISC", + "dependencies": { + "@sphinxxxx/color-conversion": "^2.2.2" + } + }, + "node_modules/video.js": { + "version": "7.21.7", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/http-streaming": "2.16.3", + "@videojs/vhs-utils": "^3.0.4", + "@videojs/xhr": "2.6.0", + "aes-decrypter": "3.1.3", + "global": "^4.4.0", + "keycode": "^2.2.0", + "m3u8-parser": "4.8.0", + "mpd-parser": "0.22.1", + "mux.js": "6.0.1", + "safe-json-parse": "4.0.0", + "videojs-font": "3.2.0", + "videojs-vtt.js": "^0.15.5" + } + }, + "node_modules/videojs-font": { + "version": "3.2.0", + "license": "Apache-2.0" + }, + "node_modules/videojs-vtt.js": { + "version": "0.15.5", + "license": "Apache-2.0", + "dependencies": { + "global": "^4.3.1" + } + }, + "node_modules/vite": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-compression": { + "version": "0.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vite-plugin-compression/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vite-plugin-compression/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vite-plugin-ejs": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ejs": "^3.1.9" + }, + "peerDependencies": { + "vite": ">=5.0.0" + } + }, + "node_modules/vite-plugin-eslint": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "@types/eslint": "^8.4.5", + "rollup": "^2.77.2" + }, + "peerDependencies": { + "eslint": ">=7", + "vite": ">=2" + } + }, + "node_modules/vite-plugin-eslint/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/vite-plugin-eslint/node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite-plugin-eslint/node_modules/rollup": { + "version": "2.79.2", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-plugin-progress": { + "version": "0.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "progress": "^2.0.3", + "rd": "^2.0.1" + }, + "engines": { + "node": ">=14", + "pnpm": ">=7.0.0" + }, + "peerDependencies": { + "vite": ">2.0.0-0" + } + }, + "node_modules/vite-plugin-purge-icons": { + "version": "0.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@purge-icons/core": "^0.10.0", + "@purge-icons/generated": "^0.10.0", + "rollup-plugin-purge-icons": "^0.10.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "vite": ">=2" + } + }, + "node_modules/vite-plugin-purge-icons/node_modules/@purge-icons/generated": { + "version": "0.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/iconify": ">=3.1.1" + } + }, + "node_modules/vite-plugin-svg-icons-ng": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.0", + "node-html-parser": "^7.0.1", + "pathe": "^2.0.3", + "svgo": "^3.3.2" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": ">=5.0.0" + } + }, + "node_modules/vite-plugin-svg-icons-ng/node_modules/fs-extra": { + "version": "11.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/vite-plugin-svg-icons-ng/node_modules/pathe": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-virtual": "^3.0.2", + "@swc/core": "^1.10.16", + "uuid": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vue": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-dompurify-html": { + "version": "4.1.4", + "license": "MIT", + "dependencies": { + "dompurify": "^3.0.0", + "vue-demi": "^0.14.0" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.0.0" + } + }, + "node_modules/vue-dompurify-html/node_modules/vue-demi": { + "version": "0.14.10", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.10.2", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "9.10.2", + "@intlify/shared": "9.10.2", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-i18n/node_modules/@intlify/shared": { + "version": "9.10.2", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/vue-router": { + "version": "4.4.5", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-types": { + "version": "5.1.3", + "license": "MIT", + "dependencies": { + "is-plain-object": "5.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "vue": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/vue/node_modules/@vue/compiler-core": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.12", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/vue/node_modules/@vue/compiler-dom": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/vue/node_modules/@vue/compiler-sfc": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/vue/node_modules/@vue/compiler-ssr": { + "version": "3.5.12", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" + } + }, + "node_modules/vue/node_modules/@vue/shared": { + "version": "3.5.12", + "license": "MIT" + }, + "node_modules/vue3-signature": { + "version": "0.2.4", + "license": "MIT", + "dependencies": { + "default-passive-events": "^2.0.0", + "signature_pad": "^3.0.0-beta.4", + "vue": "^3.2.37" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/vuedraggable/node_modules/sortablejs": { + "version": "1.14.0", + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/wangeditor": { + "version": "4.7.15", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@babel/runtime-corejs3": "^7.11.2", + "tslib": "^2.1.0" + } + }, + "node_modules/web-storage-cache": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "license": "ISC" + }, + "node_modules/wildcard": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.0", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yaml-eslint-parser": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.0.0", + "yaml": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zeebe-bpmn-moddle": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/zrender": { + "version": "5.6.1", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + } + } +} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..1dd6730 --- /dev/null +++ b/web/package.json @@ -0,0 +1,155 @@ +{ + "name": "yudao-ui-admin-vue3", + "version": "2.6.1-snapshot", + "description": "基于vue3、vite4、element-plus、typesScript", + "author": "xingyu", + "private": false, + "scripts": { + "i": "pnpm install", + "dev": "vite --mode dev", + "ts:check": "vue-tsc --noEmit", + "build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build", + "build:dev": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode dev", + "build:test": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode test", + "build:stage": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode stage", + "build:prod": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode prod", + "serve:dev": "vite preview --mode dev", + "serve:prod": "vite preview --mode prod", + "preview": "pnpm build:local && vite preview", + "clean": "npx rimraf node_modules", + "clean:cache": "npx rimraf node_modules/.cache", + "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src", + "lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", + "lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", + "lint:lint-staged": "lint-staged -c " + }, + "dependencies": { + "@element-plus/icons-vue": "^2.1.0", + "@form-create/designer": "^3.2.6", + "@form-create/element-ui": "^3.2.11", + "@iconify/iconify": "^3.1.1", + "@logicflow/core": "^2.0.16", + "@microsoft/fetch-event-source": "^2.0.1", + "@videojs-player/vue": "^1.0.0", + "@vueuse/core": "^10.9.0", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.10", + "@zxcvbn-ts/core": "^3.0.4", + "animate.css": "^4.1.1", + "axios": "1.9.0", + "benz-amr-recorder": "^1.1.5", + "bpmn-js-token-simulation": "^0.36.0", + "camunda-bpmn-moddle": "^7.0.1", + "cropperjs": "^1.6.1", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.10", + "diagram-js": "^12.8.0", + "driver.js": "^1.3.1", + "echarts": "^5.5.0", + "echarts-wordcloud": "^2.1.0", + "element-plus": "2.9.1", + "fast-xml-parser": "^4.3.2", + "highlight.js": "^11.9.0", + "jsencrypt": "^3.3.2", + "lodash-es": "^4.17.21", + "markdown-it": "^14.1.0", + "markmap-common": "^0.16.0", + "markmap-lib": "^0.16.1", + "markmap-toolbar": "^0.17.0", + "markmap-view": "^0.16.0", + "min-dash": "^4.1.1", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "qrcode": "^1.5.3", + "qs": "^6.12.0", + "sortablejs": "^1.15.3", + "steady-xml": "^0.1.0", + "url": "^0.11.3", + "v3-jsoneditor": "^0.0.6", + "video.js": "^7.21.5", + "vue": "3.5.12", + "vue-dompurify-html": "^4.1.4", + "vue-i18n": "9.10.2", + "vue-router": "4.4.5", + "vue-types": "^5.1.1", + "vue3-signature": "^0.2.4", + "vuedraggable": "^4.1.0", + "web-storage-cache": "^1.1.1", + "xml-js": "^1.6.11" + }, + "devDependencies": { + "@commitlint/cli": "^19.0.1", + "@commitlint/config-conventional": "^19.0.0", + "@iconify/json": "^2.2.187", + "@intlify/unplugin-vue-i18n": "^2.0.0", + "@purge-icons/generated": "^0.9.0", + "@types/lodash-es": "^4.17.12", + "@types/node": "^20.11.21", + "@types/nprogress": "^0.2.3", + "@types/qrcode": "^1.5.5", + "@types/qs": "^6.9.12", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "@unocss/eslint-config": "^0.57.4", + "@unocss/eslint-plugin": "66.1.0-beta.5", + "@unocss/transformer-variant-group": "^0.58.5", + "@vitejs/plugin-legacy": "^5.3.1", + "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "autoprefixer": "^10.4.17", + "bpmn-js": "^17.9.2", + "bpmn-js-properties-panel": "5.23.0", + "consola": "^3.2.3", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-define-config": "^2.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.22.0", + "lint-staged": "^15.2.2", + "postcss": "^8.4.35", + "postcss-html": "^1.6.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.2.5", + "prettier-eslint": "^16.3.0", + "rimraf": "^5.0.5", + "rollup": "^4.12.0", + "sass": "^1.69.5", + "stylelint": "^16.2.1", + "stylelint-config-html": "^1.1.0", + "stylelint-config-recommended": "^14.0.0", + "stylelint-config-standard": "^36.0.0", + "stylelint-order": "^6.0.4", + "terser": "^5.28.1", + "typescript": "5.3.3", + "unocss": "^0.58.5", + "unplugin-auto-import": "^0.16.7", + "unplugin-element-plus": "^0.8.0", + "unplugin-vue-components": "^0.25.2", + "vite": "5.1.4", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-ejs": "^1.7.0", + "vite-plugin-eslint": "^1.8.1", + "vite-plugin-progress": "^0.0.7", + "vite-plugin-purge-icons": "^0.10.0", + "vite-plugin-svg-icons-ng": "^1.3.1", + "vite-plugin-top-level-await": "^1.4.4", + "vue-eslint-parser": "^9.3.2", + "vue-tsc": "^1.8.27" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://gitee.com/yudaocode/yudao-ui-admin-vue3" + }, + "bugs": { + "url": "https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues" + }, + "homepage": "https://gitee.com/yudaocode/yudao-ui-admin-vue3", + "web-types": "./web-types.json", + "engines": { + "node": ">= 16.0.0", + "pnpm": ">=8.6.0" + } +} diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml new file mode 100644 index 0000000..ef52795 --- /dev/null +++ b/web/pnpm-lock.yaml @@ -0,0 +1,10526 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@element-plus/icons-vue': + specifier: ^2.1.0 + version: 2.3.1(vue@3.5.12(typescript@5.3.3)) + '@form-create/designer': + specifier: ^3.2.6 + version: 3.2.8(vue@3.5.12(typescript@5.3.3)) + '@form-create/element-ui': + specifier: ^3.2.11 + version: 3.2.14(vue@3.5.12(typescript@5.3.3)) + '@iconify/iconify': + specifier: ^3.1.1 + version: 3.1.1 + '@microsoft/fetch-event-source': + specifier: ^2.0.1 + version: 2.0.1 + '@videojs-player/vue': + specifier: ^1.0.0 + version: 1.0.0(@types/video.js@7.3.58)(video.js@7.21.6)(vue@3.5.12(typescript@5.3.3)) + '@vueuse/core': + specifier: ^10.9.0 + version: 10.11.1(vue@3.5.12(typescript@5.3.3)) + '@wangeditor/editor': + specifier: ^5.1.23 + version: 5.1.23 + '@wangeditor/editor-for-vue': + specifier: ^5.1.10 + version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.12(typescript@5.3.3)) + '@zxcvbn-ts/core': + specifier: ^3.0.4 + version: 3.0.4 + animate.css: + specifier: ^4.1.1 + version: 4.1.1 + axios: + specifier: ^1.6.8 + version: 1.7.8 + benz-amr-recorder: + specifier: ^1.1.5 + version: 1.1.5 + bpmn-js-token-simulation: + specifier: ^0.36.0 + version: 0.36.2 + camunda-bpmn-moddle: + specifier: ^7.0.1 + version: 7.0.1 + cropperjs: + specifier: ^1.6.1 + version: 1.6.2 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + dayjs: + specifier: ^1.11.10 + version: 1.11.13 + diagram-js: + specifier: ^12.8.0 + version: 12.8.1 + driver.js: + specifier: ^1.3.1 + version: 1.3.1 + echarts: + specifier: ^5.5.0 + version: 5.5.1 + echarts-wordcloud: + specifier: ^2.1.0 + version: 2.1.0(echarts@5.5.1) + element-plus: + specifier: 2.9.1 + version: 2.9.1(vue@3.5.12(typescript@5.3.3)) + fast-xml-parser: + specifier: ^4.3.2 + version: 4.5.0 + highlight.js: + specifier: ^11.9.0 + version: 11.10.0 + jsencrypt: + specifier: ^3.3.2 + version: 3.3.2 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + markdown-it: + specifier: ^14.1.0 + version: 14.1.0 + markmap-common: + specifier: ^0.16.0 + version: 0.16.0 + markmap-lib: + specifier: ^0.16.1 + version: 0.16.1(markmap-common@0.16.0) + markmap-toolbar: + specifier: ^0.17.0 + version: 0.17.2(markmap-common@0.16.0) + markmap-view: + specifier: ^0.16.0 + version: 0.16.0(markmap-common@0.16.0) + min-dash: + specifier: ^4.1.1 + version: 4.2.2 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^2.1.7 + version: 2.2.8(typescript@5.3.3)(vue@3.5.12(typescript@5.3.3)) + pinia-plugin-persistedstate: + specifier: ^3.2.1 + version: 3.2.3(pinia@2.2.8(typescript@5.3.3)(vue@3.5.12(typescript@5.3.3))) + qrcode: + specifier: ^1.5.3 + version: 1.5.4 + qs: + specifier: ^6.12.0 + version: 6.13.1 + sortablejs: + specifier: ^1.15.3 + version: 1.15.6 + steady-xml: + specifier: ^0.1.0 + version: 0.1.0 + url: + specifier: ^0.11.3 + version: 0.11.4 + v3-jsoneditor: + specifier: ^0.0.6 + version: 0.0.6 + video.js: + specifier: ^7.21.5 + version: 7.21.6 + vue: + specifier: 3.5.12 + version: 3.5.12(typescript@5.3.3) + vue-dompurify-html: + specifier: ^4.1.4 + version: 4.1.4(vue@3.5.12(typescript@5.3.3)) + vue-i18n: + specifier: 9.10.2 + version: 9.10.2(vue@3.5.12(typescript@5.3.3)) + vue-router: + specifier: 4.4.5 + version: 4.4.5(vue@3.5.12(typescript@5.3.3)) + vue-types: + specifier: ^5.1.1 + version: 5.1.3(vue@3.5.12(typescript@5.3.3)) + vue3-signature: + specifier: ^0.2.4 + version: 0.2.4(vue@3.5.12(typescript@5.3.3)) + vuedraggable: + specifier: ^4.1.0 + version: 4.1.0(vue@3.5.12(typescript@5.3.3)) + web-storage-cache: + specifier: ^1.1.1 + version: 1.1.1 + xml-js: + specifier: ^1.6.11 + version: 1.6.11 + devDependencies: + '@commitlint/cli': + specifier: ^19.0.1 + version: 19.6.0(@types/node@20.17.9)(typescript@5.3.3) + '@commitlint/config-conventional': + specifier: ^19.0.0 + version: 19.6.0 + '@iconify/json': + specifier: ^2.2.187 + version: 2.2.277 + '@intlify/unplugin-vue-i18n': + specifier: ^2.0.0 + version: 2.0.0(rollup@4.27.4)(vue-i18n@9.10.2(vue@3.5.12(typescript@5.3.3))) + '@purge-icons/generated': + specifier: ^0.9.0 + version: 0.9.0 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/node': + specifier: ^20.11.21 + version: 20.17.9 + '@types/nprogress': + specifier: ^0.2.3 + version: 0.2.3 + '@types/qrcode': + specifier: ^1.5.5 + version: 1.5.5 + '@types/qs': + specifier: ^6.9.12 + version: 6.9.17 + '@typescript-eslint/eslint-plugin': + specifier: ^7.1.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^7.1.0 + version: 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@unocss/eslint-config': + specifier: ^0.57.4 + version: 0.57.7(eslint@8.57.1)(typescript@5.3.3) + '@unocss/eslint-plugin': + specifier: 66.1.0-beta.5 + version: 66.1.0-beta.5(eslint@8.57.1)(typescript@5.3.3) + '@unocss/transformer-variant-group': + specifier: ^0.58.5 + version: 0.58.9 + '@vitejs/plugin-legacy': + specifier: ^5.3.1 + version: 5.4.3(terser@5.36.0)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + '@vitejs/plugin-vue': + specifier: ^5.0.4 + version: 5.2.1(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))(vue@3.5.12(typescript@5.3.3)) + '@vitejs/plugin-vue-jsx': + specifier: ^3.1.0 + version: 3.1.0(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))(vue@3.5.12(typescript@5.3.3)) + autoprefixer: + specifier: ^10.4.17 + version: 10.4.20(postcss@8.4.49) + bpmn-js: + specifier: ^17.9.2 + version: 17.11.1 + bpmn-js-properties-panel: + specifier: 5.23.0 + version: 5.23.0(@bpmn-io/properties-panel@3.25.0(@lezer/common@1.2.3))(bpmn-js@17.11.1)(camunda-bpmn-js-behaviors@1.7.2(bpmn-js@17.11.1)(camunda-bpmn-moddle@7.0.1)(zeebe-bpmn-moddle@1.7.0))(diagram-js@12.8.1) + consola: + specifier: ^3.2.3 + version: 3.2.3 + eslint: + specifier: ^8.57.0 + version: 8.57.1 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.1) + eslint-define-config: + specifier: ^2.1.0 + version: 2.1.0 + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.1(@types/eslint@8.56.12)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.1) + eslint-plugin-vue: + specifier: ^9.22.0 + version: 9.31.0(eslint@8.57.1) + lint-staged: + specifier: ^15.2.2 + version: 15.2.10 + postcss: + specifier: ^8.4.35 + version: 8.4.49 + postcss-html: + specifier: ^1.6.0 + version: 1.7.0 + postcss-scss: + specifier: ^4.0.9 + version: 4.0.9(postcss@8.4.49) + prettier: + specifier: ^3.2.5 + version: 3.4.1 + prettier-eslint: + specifier: ^16.3.0 + version: 16.3.0 + rimraf: + specifier: ^5.0.5 + version: 5.0.10 + rollup: + specifier: ^4.12.0 + version: 4.27.4 + sass: + specifier: ^1.69.5 + version: 1.81.0 + stylelint: + specifier: ^16.2.1 + version: 16.11.0(typescript@5.3.3) + stylelint-config-html: + specifier: ^1.1.0 + version: 1.1.0(postcss-html@1.7.0)(stylelint@16.11.0(typescript@5.3.3)) + stylelint-config-recommended: + specifier: ^14.0.0 + version: 14.0.1(stylelint@16.11.0(typescript@5.3.3)) + stylelint-config-standard: + specifier: ^36.0.0 + version: 36.0.1(stylelint@16.11.0(typescript@5.3.3)) + stylelint-order: + specifier: ^6.0.4 + version: 6.0.4(stylelint@16.11.0(typescript@5.3.3)) + terser: + specifier: ^5.28.1 + version: 5.36.0 + typescript: + specifier: 5.3.3 + version: 5.3.3 + unocss: + specifier: ^0.58.5 + version: 0.58.9(postcss@8.4.49)(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + unplugin-auto-import: + specifier: ^0.16.7 + version: 0.16.7(@vueuse/core@10.11.1(vue@3.5.12(typescript@5.3.3)))(rollup@4.27.4) + unplugin-element-plus: + specifier: ^0.8.0 + version: 0.8.0(rollup@4.27.4) + unplugin-vue-components: + specifier: ^0.25.2 + version: 0.25.2(@babel/parser@7.26.2)(rollup@4.27.4)(vue@3.5.12(typescript@5.3.3)) + vite: + specifier: 5.1.4 + version: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vite-plugin-ejs: + specifier: ^1.7.0 + version: 1.7.0(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vite-plugin-eslint: + specifier: ^1.8.1 + version: 1.8.1(eslint@8.57.1)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vite-plugin-progress: + specifier: ^0.0.7 + version: 0.0.7(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vite-plugin-purge-icons: + specifier: ^0.10.0 + version: 0.10.0(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vite-plugin-svg-icons-ng: + specifier: ^1.3.1 + version: 1.3.1(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vite-plugin-top-level-await: + specifier: ^1.4.4 + version: 1.4.4(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + vue-eslint-parser: + specifier: ^9.3.2 + version: 9.4.3(eslint@8.57.1) + vue-tsc: + specifier: ^1.8.27 + version: 1.8.27(typescript@5.3.3) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, tarball: https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==, tarball: https://registry.npmmirror.com/@antfu/install-pkg/-/install-pkg-0.4.1.tgz} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==, tarball: https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.10.tgz} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==, tarball: https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==, tarball: https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.2.tgz} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==, tarball: https://registry.npmmirror.com/@babel/core/-/core-7.26.0.tgz} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==, tarball: https://registry.npmmirror.com/@babel/generator/-/generator-7.26.2.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==, tarball: https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==, tarball: https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==, tarball: https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==, tarball: https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==, tarball: https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.3': + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==, tarball: https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==, tarball: https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==, tarball: https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==, tarball: https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==, tarball: https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==, tarball: https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==, tarball: https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==, tarball: https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==, tarball: https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==, tarball: https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==, tarball: https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==, tarball: https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==, tarball: https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.26.2.tgz} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==, tarball: https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==, tarball: https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==, tarball: https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==, tarball: https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==, tarball: https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, tarball: https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, tarball: https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.9': + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==, tarball: https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==, tarball: https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, tarball: https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-typescript@7.26.0': + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==, tarball: https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime-corejs3@7.26.0': + resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==, tarball: https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==, tarball: https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==, tarball: https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.9.tgz} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.26.0.tgz} + engines: {node: '>=6.9.0'} + + '@bpmn-io/cm-theme@0.1.0-alpha.2': + resolution: {integrity: sha512-ZILgiYzxk3KMvxplUXmdRFQo45/JehDPg5k9tWfehmzUOSE13ssyLPil8uCloMQnb3yyzyOWTjb/wzKXTHlFQw==} + + '@bpmn-io/diagram-js-ui@0.2.3': + resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==, tarball: https://registry.npmmirror.com/@bpmn-io/diagram-js-ui/-/diagram-js-ui-0.2.3.tgz} + + '@bpmn-io/extract-process-variables@0.8.0': + resolution: {integrity: sha512-yAS7ZYX+D56K+luC36u96eRMLb4VHcPUwTUqMZ/Z/Je2gou2DJLRbuBTHAB4jjKt4wFCHSG4B8Y+TrBciEYf4w==, tarball: https://registry.npmmirror.com/@bpmn-io/extract-process-variables/-/extract-process-variables-0.8.0.tgz} + + '@bpmn-io/feel-editor@1.9.1': + resolution: {integrity: sha512-UxSORdh5cwKM4fib4f9ov6J1/BHGpQVNtA+wPyEdKQyCyz3wqwE2/xe5wneVR1j5QFC5m2Na8nTy4a1TDFvZTw==} + engines: {node: '>= 16'} + + '@bpmn-io/feel-lint@1.3.1': + resolution: {integrity: sha512-wcFkJKhOm/iqCt5bzkKvxL5Dr9wKwUD+t164bQYbJsTYouAqmkkxiGsoqck42hXwdIhMSguZ+vqQ3hj5QdiYCA==} + + '@bpmn-io/properties-panel@3.25.0': + resolution: {integrity: sha512-SRGgj8uJc1Yyjcht2g36Q+xKR7sTx5VZXvcwDrdmQKlx5Y3nRmvmMjDGzeGDJDb7pNU1DSlaBJic84uISDBMWg==} + + '@codemirror/autocomplete@6.18.3': + resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + + '@codemirror/commands@6.7.1': + resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==} + + '@codemirror/language@6.10.6': + resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==} + + '@codemirror/lint@6.8.4': + resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==} + + '@codemirror/state@6.4.1': + resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + + '@codemirror/view@6.35.0': + resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==} + + '@commitlint/cli@19.6.0': + resolution: {integrity: sha512-v17BgGD9w5KnthaKxXnEg6KLq6DYiAxyiN44TpiRtqyW8NSq+Kx99mkEG8Qo6uu6cI5eMzMojW2muJxjmPnF8w==, tarball: https://registry.npmmirror.com/@commitlint/cli/-/cli-19.6.0.tgz} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.6.0': + resolution: {integrity: sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==, tarball: https://registry.npmmirror.com/@commitlint/config-conventional/-/config-conventional-19.6.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.5.0': + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==, tarball: https://registry.npmmirror.com/@commitlint/config-validator/-/config-validator-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.5.0': + resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==, tarball: https://registry.npmmirror.com/@commitlint/ensure/-/ensure-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.5.0': + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==, tarball: https://registry.npmmirror.com/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/format@19.5.0': + resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==, tarball: https://registry.npmmirror.com/@commitlint/format/-/format-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.6.0': + resolution: {integrity: sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==, tarball: https://registry.npmmirror.com/@commitlint/is-ignored/-/is-ignored-19.6.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/lint@19.6.0': + resolution: {integrity: sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==, tarball: https://registry.npmmirror.com/@commitlint/lint/-/lint-19.6.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/load@19.5.0': + resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==, tarball: https://registry.npmmirror.com/@commitlint/load/-/load-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/message@19.5.0': + resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==, tarball: https://registry.npmmirror.com/@commitlint/message/-/message-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/parse@19.5.0': + resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==, tarball: https://registry.npmmirror.com/@commitlint/parse/-/parse-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/read@19.5.0': + resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==, tarball: https://registry.npmmirror.com/@commitlint/read/-/read-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.5.0': + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==, tarball: https://registry.npmmirror.com/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/rules@19.6.0': + resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==, tarball: https://registry.npmmirror.com/@commitlint/rules/-/rules-19.6.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.5.0': + resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==, tarball: https://registry.npmmirror.com/@commitlint/to-lines/-/to-lines-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.5.0': + resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==, tarball: https://registry.npmmirror.com/@commitlint/top-level/-/top-level-19.5.0.tgz} + engines: {node: '>=v18'} + + '@commitlint/types@19.5.0': + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==, tarball: https://registry.npmmirror.com/@commitlint/types/-/types-19.5.0.tgz} + engines: {node: '>=v18'} + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==, tarball: https://registry.npmmirror.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==, tarball: https://registry.npmmirror.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.2': + resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==, tarball: https://registry.npmmirror.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==, tarball: https://registry.npmmirror.com/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==, tarball: https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz} + engines: {node: '>=10'} + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==, tarball: https://registry.npmmirror.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz} + + '@element-plus/icons-vue@2.3.1': + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==, tarball: https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz} + peerDependencies: + vue: ^3.2.0 + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==, tarball: https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==, tarball: https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, tarball: https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==, tarball: https://registry.npmmirror.com/@eslint/js/-/js-8.57.1.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@floating-ui/core@1.6.8': + resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==, tarball: https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz} + + '@floating-ui/dom@1.6.12': + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==, tarball: https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.12.tgz} + + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==, tarball: https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz} + + '@form-create/component-elm-checkbox@3.2.14': + resolution: {integrity: sha512-VtjRvNxbKpjp0bNYQ2BuLRVIQHZdPpYn3Hy0xSuzv6QjEDnffMdmawHImPSlp8wAW3b94wZdHMLMqpyMew8bBw==, tarball: https://registry.npmmirror.com/@form-create/component-elm-checkbox/-/component-elm-checkbox-3.2.14.tgz} + + '@form-create/component-elm-frame@3.2.14': + resolution: {integrity: sha512-JR7F8rEK4rC87ofjndRWaCNirUJTBGIINkP2GGbB5n8dH5wrkXi1QPemXBGaEgXoaxOQPRgMdc/GgZERgl6l/w==, tarball: https://registry.npmmirror.com/@form-create/component-elm-frame/-/component-elm-frame-3.2.14.tgz} + + '@form-create/component-elm-group@3.2.14': + resolution: {integrity: sha512-fK0Gw+mTuypFqOqXLT3PK+/lhUd/Qv8EJzjgl0hfy9A2SoR1g1t2HBz2E70MK9CtZ5i4Zcf118NjQM0cDAPkIw==, tarball: https://registry.npmmirror.com/@form-create/component-elm-group/-/component-elm-group-3.2.14.tgz} + + '@form-create/component-elm-radio@3.2.14': + resolution: {integrity: sha512-bNtMhDlWMpBHBFjkITGwDpYH/hZQDJ/q1SqsO5aWw+fxonWEod9ZgFaxUfNeqCKyo8loqu3tzivd5ZL77TsGFw==, tarball: https://registry.npmmirror.com/@form-create/component-elm-radio/-/component-elm-radio-3.2.14.tgz} + + '@form-create/component-elm-select@3.2.14': + resolution: {integrity: sha512-yUX0uZQHakIVngV/0D54tchhytApKsuuJcsxSrdIqTRBd83XtEC9UO4fPDX8O+M53DpSX6YEUduRvqSPmUfKgQ==, tarball: https://registry.npmmirror.com/@form-create/component-elm-select/-/component-elm-select-3.2.14.tgz} + + '@form-create/component-elm-tree@3.2.14': + resolution: {integrity: sha512-zZWsSmPqVzA8p31di1QmpPaknd7NXuyNDMJ8L6kwCo/ipzJwvToAVtj0fnTbQbdMVvGQlREs+Hwy9gJBkCoiFA==, tarball: https://registry.npmmirror.com/@form-create/component-elm-tree/-/component-elm-tree-3.2.14.tgz} + + '@form-create/component-elm-upload@3.2.14': + resolution: {integrity: sha512-QtfzjPdSDuEUh4gfIInnNBFQB+qZvIJ/mKTz0r7wTVvZUOJbvnnEiaB0/1QzJ4z9ZfqYswdlahO9+hBW18ioCA==, tarball: https://registry.npmmirror.com/@form-create/component-elm-upload/-/component-elm-upload-3.2.14.tgz} + + '@form-create/component-subform@3.1.34': + resolution: {integrity: sha512-OJcFH/7MTHx7JLEjDK/weS27qfuFWAI+OK+gXTJ2jIt9aZkGWF/EWkjetiJLt5a0KMw4Z15wOS2XCY9pVK9vlA==, tarball: https://registry.npmmirror.com/@form-create/component-subform/-/component-subform-3.1.34.tgz} + + '@form-create/component-wangeditor@3.2.14': + resolution: {integrity: sha512-N/U/hFBdBu2OIguxoKe1Kslq5fW6XmtyhKDImLfKLn1xI6X5WUtt3r7QTaUPcVUl2vntpM9wJ/FBdG17RzF/Dg==, tarball: https://registry.npmmirror.com/@form-create/component-wangeditor/-/component-wangeditor-3.2.14.tgz} + + '@form-create/core@3.2.14': + resolution: {integrity: sha512-z2YFhsru4PP/5AIwW2uBWW/Abn0ZtTMb52MqpJOedWulGRSS+zSvzsMMXB18EZPsug2OG1plQUkK79wlR6Y5JA==, tarball: https://registry.npmmirror.com/@form-create/core/-/core-3.2.14.tgz} + peerDependencies: + vue: ^3.1.0 + + '@form-create/designer@3.2.8': + resolution: {integrity: sha512-SgrGiWOFaQTARAmysepHDtFyRi97rERrlkv1joz+DCOAzZME3RKRTXVqA7ALzJ2jI3psiCosGAK4rPSLh6EvgA==, tarball: https://registry.npmmirror.com/@form-create/designer/-/designer-3.2.8.tgz} + peerDependencies: + vue: ^3.1.5 + + '@form-create/element-ui@3.2.14': + resolution: {integrity: sha512-xd+DNxS4ZBuE0gH/o+br/Lyn5kJQq7RonTykUXagfSxPq+iMnN2vmOSqHYQ0+uXNNu151PfRlZcsujNXgK1t/w==, tarball: https://registry.npmmirror.com/@form-create/element-ui/-/element-ui-3.2.14.tgz} + peerDependencies: + vue: ^3.1.0 + + '@form-create/utils@3.2.14': + resolution: {integrity: sha512-LDr2uao4qM68C4BXXAQkaMErxRvy3ZFda9992n1frXG8Ry2sbXXxOaY20ZWQoFY6HQP8ABJuJFVfM9p0KVSFLQ==, tarball: https://registry.npmmirror.com/@form-create/utils/-/utils-3.2.14.tgz} + + '@gera2ld/jsx-dom@2.2.2': + resolution: {integrity: sha512-EOqf31IATRE6zS1W1EoWmXZhGfLAoO9FIlwTtHduSrBdud4npYBxYAkv8dZ5hudDPwJeeSjn40kbCL4wAzr8dA==, tarball: https://registry.npmmirror.com/@gera2ld/jsx-dom/-/jsx-dom-2.2.2.tgz} + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==, tarball: https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, tarball: https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==, tarball: https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz} + deprecated: Use @eslint/object-schema instead + + '@iconify/iconify@2.1.2': + resolution: {integrity: sha512-QcUzFeEWkE/mW+BVtEGmcWATClcCOIJFiYUD/PiCWuTcdEA297o8D4oN6Ra44WrNOHu1wqNW4J0ioaDIiqaFOQ==, tarball: https://registry.npmmirror.com/@iconify/iconify/-/iconify-2.1.2.tgz} + deprecated: no longer maintained, switch to modern iconify-icon web component + + '@iconify/iconify@3.1.1': + resolution: {integrity: sha512-1nemfyD/OJzh9ALepH7YfuuP8BdEB24Skhd8DXWh0hzcOxImbb1ZizSZkpCzAwSZSGcJFmscIBaBQu+yLyWaxQ==, tarball: https://registry.npmmirror.com/@iconify/iconify/-/iconify-3.1.1.tgz} + deprecated: no longer maintained, switch to modern iconify-icon web component + + '@iconify/json@2.2.277': + resolution: {integrity: sha512-hNBnGD2djNgsdB4Yq5dBhP2CI0PLt+4EamozKSAD+hsbFAzVUN6sMj5FUiBFu8BKUOBIYcrX8ri7C7Qe3K10ew==, tarball: https://registry.npmmirror.com/@iconify/json/-/json-2.2.277.tgz} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==, tarball: https://registry.npmmirror.com/@iconify/types/-/types-2.0.0.tgz} + + '@iconify/utils@2.1.33': + resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==, tarball: https://registry.npmmirror.com/@iconify/utils/-/utils-2.1.33.tgz} + + '@intlify/bundle-utils@7.5.1': + resolution: {integrity: sha512-UovJl10oBIlmYEcWw+VIHdKY5Uv5sdPG0b/b6bOYxGLln3UwB75+2dlc0F3Fsa0RhoznQ5Rp589/BZpABpE4Xw==, tarball: https://registry.npmmirror.com/@intlify/bundle-utils/-/bundle-utils-7.5.1.tgz} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + + '@intlify/core-base@9.10.2': + resolution: {integrity: sha512-HGStVnKobsJL0DoYIyRCGXBH63DMQqEZxDUGrkNI05FuTcruYUtOAxyL3zoAZu/uDGO6mcUvm3VXBaHG2GdZCg==, tarball: https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.10.2.tgz} + engines: {node: '>= 16'} + + '@intlify/message-compiler@9.10.2': + resolution: {integrity: sha512-ntY/kfBwQRtX5Zh6wL8cSATujPzWW2ZQd1QwKyWwAy5fMqJyyixHMeovN4fmEyCqSu+hFfYOE63nU94evsy4YA==, tarball: https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.10.2.tgz} + engines: {node: '>= 16'} + + '@intlify/message-compiler@9.14.2': + resolution: {integrity: sha512-YsKKuV4Qv4wrLNsvgWbTf0E40uRv+Qiw1BeLQ0LAxifQuhiMe+hfTIzOMdWj/ZpnTDj4RSZtkXjJM7JDiiB5LQ==, tarball: https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.14.2.tgz} + engines: {node: '>= 16'} + + '@intlify/shared@9.10.2': + resolution: {integrity: sha512-ttHCAJkRy7R5W2S9RVnN9KYQYPIpV2+GiS79T4EE37nrPyH6/1SrOh3bmdCRC1T3ocL8qCDx7x2lBJ0xaITU7Q==, tarball: https://registry.npmmirror.com/@intlify/shared/-/shared-9.10.2.tgz} + engines: {node: '>= 16'} + + '@intlify/shared@9.14.2': + resolution: {integrity: sha512-uRAHAxYPeF+G5DBIboKpPgC/Waecd4Jz8ihtkpJQD5ycb5PwXp0k/+hBGl5dAjwF7w+l74kz/PKA8r8OK//RUw==, tarball: https://registry.npmmirror.com/@intlify/shared/-/shared-9.14.2.tgz} + engines: {node: '>= 16'} + + '@intlify/unplugin-vue-i18n@2.0.0': + resolution: {integrity: sha512-1oKvm92L9l2od2H9wKx2ZvR4tzn7gUtd7bPLI7AWUmm7U9H1iEypndt5d985ypxGsEs0gToDaKTrytbBIJwwSg==, tarball: https://registry.npmmirror.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-2.0.0.tgz} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + vue-i18n-bridge: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + vue-i18n-bridge: + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, tarball: https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz} + engines: {node: '>=12'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, tarball: https://registry.npmmirror.com/@jest/schemas/-/schemas-29.6.3.tgz} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, tarball: https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, tarball: https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, tarball: https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==, tarball: https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, tarball: https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, tarball: https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz} + + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + + '@lezer/highlight@1.2.1': + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + + '@lezer/markdown@1.3.2': + resolution: {integrity: sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==} + + '@microsoft/fetch-event-source@2.0.1': + resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==, tarball: https://registry.npmmirror.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, tarball: https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, tarball: https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, tarball: https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==, tarball: https://registry.npmmirror.com/@pkgr/core/-/core-0.1.1.tgz} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==, tarball: https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.28.tgz} + + '@purge-icons/core@0.10.0': + resolution: {integrity: sha512-AtJbZv5Yy+vWX5v32DPTr+CW7AkSK8HJx52orDbrYt/9s4lGM2t4KKAmwaTQEH2HYr2HVh1mlqs54/S1s3WT1g==, tarball: https://registry.npmmirror.com/@purge-icons/core/-/core-0.10.0.tgz} + + '@purge-icons/generated@0.10.0': + resolution: {integrity: sha512-I+1yN7/yDy/eZzfhAZqKF8Z6FM8D/O1vempbPrHJ0m9HlZwvf8sWXOArPJ2qRQGB6mJUVSpaXkoGBuoz1GQX5A==, tarball: https://registry.npmmirror.com/@purge-icons/generated/-/generated-0.10.0.tgz} + + '@purge-icons/generated@0.9.0': + resolution: {integrity: sha512-s2t+1oVtGDV6KtqfCXtUOhxfeYvOdDF90IVm+nMs/6bUP0HeGZLslguuL/AibpwtfL4FA/oCsIu/RhwapgAdJw==, tarball: https://registry.npmmirror.com/@purge-icons/generated/-/generated-0.9.0.tgz} + + '@quansync/fs@0.1.1': + resolution: {integrity: sha512-sx8J1O/+j2lqs8MvsEz6rs/6UAUpCb4fu7C6EqtMqzbS3CmqLkTDTOMK+DrWukvyUuHzl8DhMjfNJzQDTqfGJg==, tarball: https://registry.npmmirror.com/@quansync/fs/-/fs-0.1.1.tgz} + engines: {node: '>=20.18.0'} + + '@rollup/plugin-virtual@3.0.2': + resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==, tarball: https://registry.npmmirror.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, tarball: https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==, tarball: https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.27.4': + resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.27.4': + resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.27.4': + resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.27.4': + resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.27.4': + resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.4': + resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': + resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.27.4': + resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.27.4': + resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.27.4': + resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': + resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.27.4': + resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.27.4': + resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.27.4': + resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.27.4': + resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.27.4': + resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.27.4': + resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.27.4': + resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} + cpu: [x64] + os: [win32] + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, tarball: https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.27.8.tgz} + + '@sphinxxxx/color-conversion@2.2.2': + resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==} + + '@swc/core-darwin-arm64@1.9.3': + resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.9.3': + resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.9.3': + resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.9.3': + resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.9.3': + resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.9.3': + resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.9.3': + resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.9.3': + resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.9.3': + resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.9.3': + resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.9.3': + resolution: {integrity: sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==, tarball: https://registry.npmmirror.com/@swc/core/-/core-1.9.3.tgz} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, tarball: https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz} + + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==, tarball: https://registry.npmmirror.com/@swc/types/-/types-0.1.17.tgz} + + '@sxzz/popperjs-es@2.11.7': + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + + '@transloadit/prettier-bytes@0.0.7': + resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==, tarball: https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@types/conventional-commits-parser@5.0.1': + resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==, tarball: https://registry.npmmirror.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz} + + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==, tarball: https://registry.npmmirror.com/@types/d3-array/-/d3-array-3.2.1.tgz} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==, tarball: https://registry.npmmirror.com/@types/d3-axis/-/d3-axis-3.0.6.tgz} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==, tarball: https://registry.npmmirror.com/@types/d3-brush/-/d3-brush-3.0.6.tgz} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==, tarball: https://registry.npmmirror.com/@types/d3-chord/-/d3-chord-3.0.6.tgz} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==, tarball: https://registry.npmmirror.com/@types/d3-color/-/d3-color-3.1.3.tgz} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==, tarball: https://registry.npmmirror.com/@types/d3-contour/-/d3-contour-3.0.6.tgz} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==, tarball: https://registry.npmmirror.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz} + + '@types/d3-dispatch@3.0.6': + resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==, tarball: https://registry.npmmirror.com/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==, tarball: https://registry.npmmirror.com/@types/d3-drag/-/d3-drag-3.0.7.tgz} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==, tarball: https://registry.npmmirror.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==, tarball: https://registry.npmmirror.com/@types/d3-ease/-/d3-ease-3.0.2.tgz} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==, tarball: https://registry.npmmirror.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==, tarball: https://registry.npmmirror.com/@types/d3-force/-/d3-force-3.0.10.tgz} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==, tarball: https://registry.npmmirror.com/@types/d3-format/-/d3-format-3.0.4.tgz} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==, tarball: https://registry.npmmirror.com/@types/d3-geo/-/d3-geo-3.1.0.tgz} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==, tarball: https://registry.npmmirror.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==, tarball: https://registry.npmmirror.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz} + + '@types/d3-path@3.1.0': + resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==, tarball: https://registry.npmmirror.com/@types/d3-path/-/d3-path-3.1.0.tgz} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==, tarball: https://registry.npmmirror.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==, tarball: https://registry.npmmirror.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==, tarball: https://registry.npmmirror.com/@types/d3-random/-/d3-random-3.0.3.tgz} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==, tarball: https://registry.npmmirror.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz} + + '@types/d3-scale@4.0.8': + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==, tarball: https://registry.npmmirror.com/@types/d3-scale/-/d3-scale-4.0.8.tgz} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==, tarball: https://registry.npmmirror.com/@types/d3-selection/-/d3-selection-3.0.11.tgz} + + '@types/d3-shape@3.1.6': + resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==, tarball: https://registry.npmmirror.com/@types/d3-shape/-/d3-shape-3.1.6.tgz} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==, tarball: https://registry.npmmirror.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==, tarball: https://registry.npmmirror.com/@types/d3-time/-/d3-time-3.0.4.tgz} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==, tarball: https://registry.npmmirror.com/@types/d3-timer/-/d3-timer-3.0.2.tgz} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==, tarball: https://registry.npmmirror.com/@types/d3-transition/-/d3-transition-3.0.9.tgz} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==, tarball: https://registry.npmmirror.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==, tarball: https://registry.npmmirror.com/@types/d3/-/d3-7.4.3.tgz} + + '@types/eslint@8.56.12': + resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==, tarball: https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==, tarball: https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz} + + '@types/event-emitter@0.3.5': + resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==, tarball: https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.5.tgz} + + '@types/geojson@7946.0.14': + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==, tarball: https://registry.npmmirror.com/@types/geojson/-/geojson-7946.0.14.tgz} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==, tarball: https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz} + + '@types/lodash@4.17.13': + resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==, tarball: https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.13.tgz} + + '@types/node@10.17.60': + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==, tarball: https://registry.npmmirror.com/@types/node/-/node-10.17.60.tgz} + + '@types/node@20.17.9': + resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==, tarball: https://registry.npmmirror.com/@types/node/-/node-20.17.9.tgz} + + '@types/nprogress@0.2.3': + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==, tarball: https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.3.tgz} + + '@types/qrcode@1.5.5': + resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==, tarball: https://registry.npmmirror.com/@types/qrcode/-/qrcode-1.5.5.tgz} + + '@types/qs@6.9.17': + resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==, tarball: https://registry.npmmirror.com/@types/qs/-/qs-6.9.17.tgz} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==, tarball: https://registry.npmmirror.com/@types/semver/-/semver-7.5.8.tgz} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/video.js@7.3.58': + resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==, tarball: https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==, tarball: https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==, tarball: https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==, tarball: https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.21.0.tgz} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==, tarball: https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==, tarball: https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==, tarball: https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@8.26.1': + resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==, tarball: https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==, tarball: https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==, tarball: https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.21.0.tgz} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==, tarball: https://registry.npmmirror.com/@typescript-eslint/types/-/types-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@8.26.1': + resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==, tarball: https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.26.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==, tarball: https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==, tarball: https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.26.1': + resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==, tarball: https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==, tarball: https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.21.0.tgz} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==, tarball: https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/utils@8.26.1': + resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==, tarball: https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.26.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==, tarball: https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==, tarball: https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@8.26.1': + resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==, tarball: https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, tarball: https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz} + + '@unocss/astro@0.58.9': + resolution: {integrity: sha512-VWfHNC0EfawFxLfb3uI+QcMGBN+ju+BYtutzeZTjilLKj31X2UpqIh8fepixL6ljgZzB3fweqg2xtUMC0gMnoQ==, tarball: https://registry.npmmirror.com/@unocss/astro/-/astro-0.58.9.tgz} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@0.58.9': + resolution: {integrity: sha512-q7qlwX3V6UaqljWUQ5gMj36yTA9eLuuRywahdQWt1ioy4aPF/MEEfnMBZf/ntrqf5tIT5TO8fE11nvCco2Q/sA==, tarball: https://registry.npmmirror.com/@unocss/cli/-/cli-0.58.9.tgz} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@0.57.7': + resolution: {integrity: sha512-UG8G9orWEdk/vyDvGUToXYn/RZy/Qjpx66pLsaf5wQK37hkYsBoReAU5v8Ia/6PL1ueJlkcNXLaNpN6/yVoJvg==, tarball: https://registry.npmmirror.com/@unocss/config/-/config-0.57.7.tgz} + engines: {node: '>=14'} + + '@unocss/config@0.58.9': + resolution: {integrity: sha512-90wRXIyGNI8UenWxvHUcH4l4rgq813MsTzYWsf6ZKyLLvkFjV2b2EfGXI27GPvZ7fVE1OAqx+wJNTw8CyQxwag==, tarball: https://registry.npmmirror.com/@unocss/config/-/config-0.58.9.tgz} + engines: {node: '>=14'} + + '@unocss/config@66.1.0-beta.5': + resolution: {integrity: sha512-RBty/CVvdefTpeLmluQrIQIj+Po5bTIgIgcWgw+A3dMcUN3iRv0mYbw1d3FIRa0Ladx9zKaMxRFss0xkiS13yw==, tarball: https://registry.npmmirror.com/@unocss/config/-/config-66.1.0-beta.5.tgz} + engines: {node: '>=14'} + + '@unocss/core@0.57.7': + resolution: {integrity: sha512-1d36M0CV3yC80J0pqOa5rH1BX6g2iZdtKmIb3oSBN4AWnMCSrrJEPBrUikyMq2TEQTrYWJIVDzv5A9hBUat3TA==, tarball: https://registry.npmmirror.com/@unocss/core/-/core-0.57.7.tgz} + + '@unocss/core@0.58.9': + resolution: {integrity: sha512-wYpPIPPsOIbIoMIDuH8ihehJk5pAZmyFKXIYO/Kro98GEOFhz6lJoLsy6/PZuitlgp2/TSlubUuWGjHWvp5osw==, tarball: https://registry.npmmirror.com/@unocss/core/-/core-0.58.9.tgz} + + '@unocss/core@66.1.0-beta.5': + resolution: {integrity: sha512-1kZzSrB87KKd+xP+vMN7IP03j2UPEykna447aw3UaK5RYTDd/LuVtxoep6gvjN9TJiB4K+Qx0sAtgnfhPpka9Q==, tarball: https://registry.npmmirror.com/@unocss/core/-/core-66.1.0-beta.5.tgz} + + '@unocss/eslint-config@0.57.7': + resolution: {integrity: sha512-EJlI6rV0ZfDCphIiddHSWZVeoHdYDTVohVXGo+NfNOuRuvYWGna3n4hY3VEAiT3mWLK0/0anzHF7X0PNzCR5lQ==, tarball: https://registry.npmmirror.com/@unocss/eslint-config/-/eslint-config-0.57.7.tgz} + engines: {node: '>=14'} + + '@unocss/eslint-plugin@0.57.7': + resolution: {integrity: sha512-nwj7UJF7wCfPVl5B7cUB0xrSk6yuVMdMgABnsy4N5xBlds8cclrUO+boaTB9qzh8Lg9nfJVLB3+cW3po2SJoew==, tarball: https://registry.npmmirror.com/@unocss/eslint-plugin/-/eslint-plugin-0.57.7.tgz} + engines: {node: '>=14'} + + '@unocss/eslint-plugin@66.1.0-beta.5': + resolution: {integrity: sha512-5BRXjE8XJ9Yrf/lmgBCCmpfXRfiaebdS0zhkbmsFJmtXzhhun0epIF2cs/nXIya9rtvne+YKUAPXxIIoHV3lKA==, tarball: https://registry.npmmirror.com/@unocss/eslint-plugin/-/eslint-plugin-66.1.0-beta.5.tgz} + engines: {node: '>=14'} + + '@unocss/extractor-arbitrary-variants@0.58.9': + resolution: {integrity: sha512-M/BvPdbEEMdhcFQh/z2Bf9gylO1Ky/ZnpIvKWS1YJPLt4KA7UWXSUf+ZNTFxX+X58Is5qAb5hNh/XBQmL3gbXg==, tarball: https://registry.npmmirror.com/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.9.tgz} + + '@unocss/inspector@0.58.9': + resolution: {integrity: sha512-uRzqkCNeBmEvFePXcfIFcQPMlCXd9/bLwa5OkBthiOILwQdH1uRIW3GWAa2SWspu+kZLP0Ly3SjZ9Wqi+5ZtTw==, tarball: https://registry.npmmirror.com/@unocss/inspector/-/inspector-0.58.9.tgz} + + '@unocss/postcss@0.58.9': + resolution: {integrity: sha512-PnKmH6Qhimw35yO6u6yx9SHaX2NmvbRNPDvMDHA/1xr3M8L0o8U88tgKbWfm65NEGF3R1zJ9A8rjtZn/LPkgPA==, tarball: https://registry.npmmirror.com/@unocss/postcss/-/postcss-0.58.9.tgz} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@0.58.9': + resolution: {integrity: sha512-ucP+kXRFcwmBmHohUVv31bE/SejMAMo7Hjb0QcKVLyHlzRWUJsfNR+jTAIGIUSYxN7Q8MeigYsongGo3nIeJnQ==, tarball: https://registry.npmmirror.com/@unocss/preset-attributify/-/preset-attributify-0.58.9.tgz} + + '@unocss/preset-icons@0.58.9': + resolution: {integrity: sha512-9dS48+yAunsbS0ylOW2Wisozwpn3nGY1CqTiidkUnrMnrZK3al579A7srUX9NyPWWDjprO7eU/JkWbdDQSmFFA==, tarball: https://registry.npmmirror.com/@unocss/preset-icons/-/preset-icons-0.58.9.tgz} + + '@unocss/preset-mini@0.58.9': + resolution: {integrity: sha512-m4aDGYtueP8QGsU3FsyML63T/w5Mtr4htme2jXy6m50+tzC1PPHaIBstMTMQfLc6h8UOregPJyGHB5iYQZGEvQ==, tarball: https://registry.npmmirror.com/@unocss/preset-mini/-/preset-mini-0.58.9.tgz} + + '@unocss/preset-tagify@0.58.9': + resolution: {integrity: sha512-obh75XrRmxYwrQMflzvhQUMeHwd/R9bEDhTWUW9aBTolBy4eNypmQwOhHCKh5Xi4Dg6o0xj6GWC/jcCj1SPLog==, tarball: https://registry.npmmirror.com/@unocss/preset-tagify/-/preset-tagify-0.58.9.tgz} + + '@unocss/preset-typography@0.58.9': + resolution: {integrity: sha512-hrsaqKlcZni3Vh4fwXC+lP9e92FQYbqtmlZw2jpxlVwwH5aLzwk4d4MiFQGyhCfzuSDYm0Zd52putFVV02J7bA==, tarball: https://registry.npmmirror.com/@unocss/preset-typography/-/preset-typography-0.58.9.tgz} + + '@unocss/preset-uno@0.58.9': + resolution: {integrity: sha512-Fze+X2Z/EegCkRdDRgwwvFBmXBenNR1AG8KxAyz8iPeWbhOBaRra2sn2ScryrfH6SbJHpw26ZyJXycAdS0Fq3A==, tarball: https://registry.npmmirror.com/@unocss/preset-uno/-/preset-uno-0.58.9.tgz} + + '@unocss/preset-web-fonts@0.58.9': + resolution: {integrity: sha512-XtiO+Z+RYnNYomNkS2XxaQiY++CrQZKOfNGw5htgIrb32QtYVQSkyYQ3jDw7JmMiCWlZ4E72cV/zUb++WrZLxg==, tarball: https://registry.npmmirror.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.58.9.tgz} + + '@unocss/preset-wind@0.58.9': + resolution: {integrity: sha512-7l+7Vx5UoN80BmJKiqDXaJJ6EUqrnUQYv8NxCThFi5lYuHzxsYWZPLU3k3XlWRUQt8XL+6rYx7mMBmD7EUSHyw==, tarball: https://registry.npmmirror.com/@unocss/preset-wind/-/preset-wind-0.58.9.tgz} + + '@unocss/reset@0.58.9': + resolution: {integrity: sha512-nA2pg3tnwlquq+FDOHyKwZvs20A6iBsKPU7Yjb48JrNnzoaXqE+O9oN6782IG2yKVW4AcnsAnAnM4cxXhGzy1w==, tarball: https://registry.npmmirror.com/@unocss/reset/-/reset-0.58.9.tgz} + + '@unocss/rule-utils@0.58.9': + resolution: {integrity: sha512-45bDa+elmlFLthhJmKr2ltKMAB0yoXnDMQ6Zp5j3OiRB7dDMBkwYRPvHLvIe+34Ey7tDt/kvvDPtWMpPl2quUQ==, tarball: https://registry.npmmirror.com/@unocss/rule-utils/-/rule-utils-0.58.9.tgz} + engines: {node: '>=14'} + + '@unocss/rule-utils@66.1.0-beta.5': + resolution: {integrity: sha512-G757sAnQAMNRUijgOTut8UkbkncSablI6Viwcq2VP4r0Lhi6RFOv/n6AOTWsDgGeUSuWTa/p3zb3NDHY7ztE9g==, tarball: https://registry.npmmirror.com/@unocss/rule-utils/-/rule-utils-66.1.0-beta.5.tgz} + engines: {node: '>=14'} + + '@unocss/scope@0.58.9': + resolution: {integrity: sha512-BIwcpx0R3bE0rYa9JVDJTk0GX32EBvnbvufBpNkWfC5tb7g+B7nMkVq9ichanksYCCxrIQQo0mrIz5PNzu9sGA==, tarball: https://registry.npmmirror.com/@unocss/scope/-/scope-0.58.9.tgz} + + '@unocss/transformer-attributify-jsx-babel@0.58.9': + resolution: {integrity: sha512-UGaQoGZg+3QrsPtnGHPECmsGn4EQb2KSdZ4eGEn2YssjKv+CcQhzRvpEUgnuF/F+jGPkCkS/G/YEQBHRWBY54Q==, tarball: https://registry.npmmirror.com/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.58.9.tgz} + + '@unocss/transformer-attributify-jsx@0.58.9': + resolution: {integrity: sha512-jpL3PRwf8t43v1agUdQn2EHGgfdWfvzsMxFtoybO88xzOikzAJaaouteNtojc/fQat2T9iBduDxVj5egdKmhdQ==, tarball: https://registry.npmmirror.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.58.9.tgz} + + '@unocss/transformer-compile-class@0.58.9': + resolution: {integrity: sha512-l2VpCqelJ6Tgc1kfSODxBtg7fCGPVRr2EUzTg1LrGYKa2McbKuc/wV/2DWKHGxL6+voWi7a2C9XflqGDXXutuQ==, tarball: https://registry.npmmirror.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.58.9.tgz} + + '@unocss/transformer-directives@0.58.9': + resolution: {integrity: sha512-pLOUsdoY2ugVntJXg0xuGjO9XZ2xCiMxTPRtpZ4TsEzUtdEzMswR06Y8VWvNciTB/Zqxcz9ta8rD0DKePOfSuw==, tarball: https://registry.npmmirror.com/@unocss/transformer-directives/-/transformer-directives-0.58.9.tgz} + + '@unocss/transformer-variant-group@0.58.9': + resolution: {integrity: sha512-3A6voHSnFcyw6xpcZT6oxE+KN4SHRnG4z862tdtWvRGcN+jGyNr20ylEZtnbk4xj0VNMeGHHQRZ0WLvmrAwvOQ==, tarball: https://registry.npmmirror.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.58.9.tgz} + + '@unocss/vite@0.58.9': + resolution: {integrity: sha512-mmppBuulAHCal+sC0Qz36Y99t0HicAmznpj70Kzwl7g/yvXwm58/DW2OnpCWw+uA8/JBft/+z3zE+XvrI+T1HA==, tarball: https://registry.npmmirror.com/@unocss/vite/-/vite-0.58.9.tgz} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + + '@uppy/companion-client@2.2.2': + resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==, tarball: https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz} + + '@uppy/core@2.3.4': + resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==, tarball: https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz} + + '@uppy/store-default@2.1.1': + resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==, tarball: https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz} + + '@uppy/utils@4.1.3': + resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==, tarball: https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz} + + '@uppy/xhr-upload@2.1.3': + resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==, tarball: https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz} + peerDependencies: + '@uppy/core': ^2.3.3 + + '@videojs-player/vue@1.0.0': + resolution: {integrity: sha512-WonTezRfKu3fYdQLt/ta+nuKH6gMZUv8l40Jke/j4Lae7IqeO/+lLAmBnh3ni88bwR+vkFXIlZ2Ci7VKInIYJg==, tarball: https://registry.npmmirror.com/@videojs-player/vue/-/vue-1.0.0.tgz} + peerDependencies: + '@types/video.js': 7.x + video.js: 7.x + vue: 3.x + + '@videojs/http-streaming@2.16.3': + resolution: {integrity: sha512-91CJv5PnFBzNBvyEjt+9cPzTK/xoVixARj2g7ZAvItA+5bx8VKdk5RxCz/PP2kdzz9W+NiDUMPkdmTsosmy69Q==, tarball: https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-2.16.3.tgz} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + video.js: ^6 || ^7 + + '@videojs/vhs-utils@3.0.5': + resolution: {integrity: sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==, tarball: https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz} + engines: {node: '>=8', npm: '>=5'} + + '@videojs/xhr@2.6.0': + resolution: {integrity: sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==, tarball: https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz} + + '@vitejs/plugin-legacy@5.4.3': + resolution: {integrity: sha512-wsyXK9mascyplcqvww1gA1xYiy29iRHfyciw+a0t7qRNdzX6PdfSWmOoCi74epr87DujM+5J+rnnSv+4PazqVg==, tarball: https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-5.4.3.tgz} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^5.0.0 + + '@vitejs/plugin-vue-jsx@3.1.0': + resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 || ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.2.1': + resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==, tarball: https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + + '@volar/language-core@1.11.1': + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==, tarball: https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz} + + '@volar/source-map@1.11.1': + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==, tarball: https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz} + + '@volar/typescript@1.11.1': + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==, tarball: https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz} + + '@vue/babel-helper-vue-transform-on@1.2.5': + resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==, tarball: https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz} + + '@vue/babel-plugin-jsx@1.2.5': + resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==, tarball: https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.2.5': + resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==, tarball: https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.12': + resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.12.tgz} + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==, tarball: https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz} + + '@vue/compiler-dom@3.5.12': + resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==, tarball: https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz} + + '@vue/compiler-sfc@3.5.12': + resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==, tarball: https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz} + + '@vue/compiler-ssr@3.5.12': + resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==, tarball: https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==, tarball: https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz} + + '@vue/language-core@1.8.27': + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==, tarball: https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.12': + resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==, tarball: https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.12.tgz} + + '@vue/runtime-core@3.5.12': + resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==, tarball: https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.12.tgz} + + '@vue/runtime-dom@3.5.12': + resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==, tarball: https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz} + + '@vue/server-renderer@3.5.12': + resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==, tarball: https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.12.tgz} + peerDependencies: + vue: 3.5.12 + + '@vue/shared@3.5.12': + resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.5.12.tgz} + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==, tarball: https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz} + + '@vueuse/core@10.11.1': + resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==, tarball: https://registry.npmmirror.com/@vueuse/core/-/core-10.11.1.tgz} + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==, tarball: https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz} + + '@vueuse/metadata@10.11.1': + resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==, tarball: https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.11.1.tgz} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==, tarball: https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz} + + '@vueuse/shared@10.11.1': + resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==, tarball: https://registry.npmmirror.com/@vueuse/shared/-/shared-10.11.1.tgz} + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==, tarball: https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz} + + '@wangeditor/basic-modules@1.1.7': + resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==, tarball: https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/code-highlight@1.0.3': + resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==, tarball: https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/core@1.1.19': + resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==, tarball: https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz} + peerDependencies: + '@uppy/core': ^2.1.1 + '@uppy/xhr-upload': ^2.0.3 + dom7: ^3.0.0 + is-hotkey: ^0.2.0 + lodash.camelcase: ^4.3.0 + lodash.clonedeep: ^4.5.0 + lodash.debounce: ^4.0.8 + lodash.foreach: ^4.5.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + lodash.toarray: ^4.4.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/editor-for-vue@5.1.12': + resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==, tarball: https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz} + peerDependencies: + '@wangeditor/editor': '>=5.1.0' + vue: ^3.0.5 + + '@wangeditor/editor@5.1.23': + resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==, tarball: https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz} + + '@wangeditor/list-module@1.0.5': + resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==, tarball: https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/table-module@1.1.4': + resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==, tarball: https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/upload-image-module@1.0.2': + resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==, tarball: https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz} + peerDependencies: + '@uppy/core': ^2.0.3 + '@uppy/xhr-upload': ^2.0.3 + '@wangeditor/basic-modules': 1.x + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.foreach: ^4.5.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/video-module@1.1.4': + resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==, tarball: https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz} + peerDependencies: + '@uppy/core': ^2.1.4 + '@uppy/xhr-upload': ^2.0.7 + '@wangeditor/core': 1.x + dom7: ^3.0.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==, tarball: https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz} + engines: {node: '>=10.0.0'} + + '@zxcvbn-ts/core@3.0.4': + resolution: {integrity: sha512-aQeiT0F09FuJaAqNrxynlAwZ2mW/1MdXakKWNmGM1Qp/VaY6CnB/GfnMS2T8gB2231Esp1/maCWd8vTG4OuShw==, tarball: https://registry.npmmirror.com/@zxcvbn-ts/core/-/core-3.0.4.tgz} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, tarball: https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz} + hasBin: true + + ace-builds@1.39.1: + resolution: {integrity: sha512-HcJbBzx8qY66t9gZo/sQu7pi0wO/CFLdYn1LxQO1WQTfIkMfyc7LRnBpsp/oNCSSU/LL83jXHN1fqyOTuIhUjg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, tarball: https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==, tarball: https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz} + engines: {node: '>=0.4.0'} + hasBin: true + + aes-decrypter@3.1.3: + resolution: {integrity: sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==, tarball: https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, tarball: https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, tarball: https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz} + + animate.css@4.1.1: + resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==, tarball: https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==, tarball: https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz} + engines: {node: '>=18'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz} + engines: {node: '>=0.10.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz} + engines: {node: '>=12'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz} + engines: {node: '>=0.10.0'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, tarball: https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, tarball: https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, tarball: https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, tarball: https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz} + + array-move@4.0.0: + resolution: {integrity: sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==, tarball: https://registry.npmmirror.com/array-move/-/array-move-4.0.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, tarball: https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz} + engines: {node: '>=8'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, tarball: https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz} + engines: {node: '>=8'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==, tarball: https://registry.npmmirror.com/async/-/async-3.2.6.tgz} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz} + + autolinker@3.16.2: + resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==, tarball: https://registry.npmmirror.com/autolinker/-/autolinker-3.16.2.tgz} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==, tarball: https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.20.tgz} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==, tarball: https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz} + + axios@1.7.8: + resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==, tarball: https://registry.npmmirror.com/axios/-/axios-1.7.8.tgz} + + babel-plugin-polyfill-corejs2@0.4.12: + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==, tarball: https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==, tarball: https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.3: + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==, tarball: https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-2.0.0.tgz} + + benz-amr-recorder@1.1.5: + resolution: {integrity: sha512-NepctcNTsZHK8NxBb5uKO5p8S+xkbm+vD6GLSkCYdJeEsriexvgumLHpDkanX4QJBcLRMVtg16buWMs+gUPB3g==, tarball: https://registry.npmmirror.com/benz-amr-recorder/-/benz-amr-recorder-1.1.5.tgz} + + benz-recorderjs@1.0.5: + resolution: {integrity: sha512-EwedOQo9KLti7HxDi/eZY51PSRbAXnOdEZmLvJ6ro3QQSoF9Y3AXBt57MIllGvVz5vtFYMeikG+GD7qTm3+p9w==, tarball: https://registry.npmmirror.com/benz-recorderjs/-/benz-recorderjs-1.0.5.tgz} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, tarball: https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz} + engines: {node: '>=8'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz} + + bpmn-js-properties-panel@5.23.0: + resolution: {integrity: sha512-4B27LM8oV14A2QWRvazV17h4NxbkNERcqU+AGJmxKImMlLhu9893MWR+pCdTQCTphBdBkuD8ksWm+1wVCedJ7g==, tarball: https://registry.npmmirror.com/bpmn-js-properties-panel/-/bpmn-js-properties-panel-5.23.0.tgz} + peerDependencies: + '@bpmn-io/properties-panel': '>= 3.7' + bpmn-js: '>= 11.5' + camunda-bpmn-js-behaviors: '>= 0.4' + diagram-js: '>= 11.9' + + bpmn-js-token-simulation@0.36.2: + resolution: {integrity: sha512-sN7US4gIA5tGs74gYLnZ2Eay+gPqkKPjEttp/VRTeydSg0RGPuGiGwTo1TaLf8cV8FXFCDD2actkQWn/aeg79Q==} + engines: {node: '>= 16'} + + bpmn-js@17.11.1: + resolution: {integrity: sha512-ywCeTg5kvN8lYkU+fHE+YXTGlfKc55lRBn7zW3k1//toeMNPy/PS/uQiujRWdFhMrH5dbtDvlwWukNw2pjWw8Q==, tarball: https://registry.npmmirror.com/bpmn-js/-/bpmn-js-17.11.1.tgz} + + bpmn-moddle@8.1.0: + resolution: {integrity: sha512-yI5OAFfYVJwViKTsTsonVfCBPtB3MlefADUORwNIxxBOMp21vnoxuxsdgUWlPH/dvAEZh/+mr8UtqOBNu8NC5Q==, tarball: https://registry.npmmirror.com/bpmn-moddle/-/bpmn-moddle-8.1.0.tgz} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, tarball: https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz} + engines: {node: '>=8'} + + browserslist-to-esbuild@2.1.1: + resolution: {integrity: sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==, tarball: https://registry.npmmirror.com/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + browserslist: '*' + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==, tarball: https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, tarball: https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, tarball: https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz} + engines: {node: '>=8'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, tarball: https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, tarball: https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, tarball: https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz} + engines: {node: '>=6'} + + camunda-bpmn-js-behaviors@1.7.2: + resolution: {integrity: sha512-xjLJHc18T40tcYu4JCeYDo1wR5i9+ZqcVnXVP6c4ooAe2gKISbBvFc07gqGpqiwm7TpEBvUfDj3PrRr+ofaf4w==} + peerDependencies: + bpmn-js: '>= 9' + camunda-bpmn-moddle: '>= 7' + zeebe-bpmn-moddle: '>= 0.18' + + camunda-bpmn-moddle@7.0.1: + resolution: {integrity: sha512-Br8Diu6roMpziHdpl66Dhnm0DTnCFMrSD9zwLV08LpD52QA0UsXxU87XfHf08HjuB7ly0Hd1bvajZRpf9hbmYQ==, tarball: https://registry.npmmirror.com/camunda-bpmn-moddle/-/camunda-bpmn-moddle-7.0.1.tgz} + + caniuse-lite@1.0.30001684: + resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==, tarball: https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==, tarball: https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz} + engines: {node: '>=0.10.0'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, tarball: https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, tarball: https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz} + + cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==, tarball: https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.12.tgz} + engines: {node: '>= 6'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-4.0.1.tgz} + engines: {node: '>= 14.16.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, tarball: https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==, tarball: https://registry.npmmirror.com/cli-truncate/-/cli-truncate-4.0.0.tgz} + engines: {node: '>=18'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, tarball: https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, tarball: https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, tarball: https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz} + engines: {node: '>=6'} + + codemirror@6.65.7: + resolution: {integrity: sha512-HcfnUFJwI2FvH73YWVbbMh7ObWxZiHIycEhv9ZEXy6e8ZKDjtZKbbYFUtsLN46HFXPvU5V2Uvc2d55Z//oFW5A==, tarball: https://registry.npmmirror.com/codemirror/-/codemirror-6.65.7.tgz} + deprecated: This is an accidentally mis-tagged instance of 5.65.7 + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==, tarball: https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, tarball: https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz} + engines: {node: '>= 0.8'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, tarball: https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, tarball: https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, tarball: https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz} + engines: {node: '>= 12'} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==, tarball: https://registry.npmmirror.com/common-tags/-/common-tags-1.8.2.tgz} + engines: {node: '>=4.0.0'} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, tarball: https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz} + + component-event@0.2.1: + resolution: {integrity: sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==, tarball: https://registry.npmmirror.com/component-event/-/component-event-0.2.1.tgz} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==, tarball: https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==, tarball: https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, tarball: https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==, tarball: https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==, tarball: https://registry.npmmirror.com/consola/-/consola-3.2.3.tgz} + engines: {node: ^14.18.0 || >=16.10.0} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==, tarball: https://registry.npmmirror.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==, tarball: https://registry.npmmirror.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz} + engines: {node: '>=16'} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==, tarball: https://registry.npmmirror.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, tarball: https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz} + + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==, tarball: https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.39.0.tgz} + + core-js-pure@3.39.0: + resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==, tarball: https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.39.0.tgz} + + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==, tarball: https://registry.npmmirror.com/core-js/-/core-js-3.39.0.tgz} + + cosmiconfig-typescript-loader@5.1.0: + resolution: {integrity: sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==, tarball: https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.1.0.tgz} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==, tarball: https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cropperjs@1.6.2: + resolution: {integrity: sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==, tarball: https://registry.npmmirror.com/cropperjs/-/cropperjs-1.6.2.tgz} + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==, tarball: https://registry.npmmirror.com/cross-fetch/-/cross-fetch-3.1.8.tgz} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, tarball: https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==, tarball: https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz} + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==, tarball: https://registry.npmmirror.com/css-functions-list/-/css-functions-list-3.2.3.tgz} + engines: {node: '>=12 || >=16'} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, tarball: https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, tarball: https://registry.npmmirror.com/css-tree/-/css-tree-2.3.1.tgz} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-tree@3.0.1: + resolution: {integrity: sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==, tarball: https://registry.npmmirror.com/css-tree/-/css-tree-3.0.1.tgz} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, tarball: https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz} + engines: {node: '>=4'} + hasBin: true + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==, tarball: https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==, tarball: https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==, tarball: https://registry.npmmirror.com/d3-axis/-/d3-axis-3.0.0.tgz} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==, tarball: https://registry.npmmirror.com/d3-brush/-/d3-brush-3.0.0.tgz} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==, tarball: https://registry.npmmirror.com/d3-chord/-/d3-chord-3.0.1.tgz} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==, tarball: https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==, tarball: https://registry.npmmirror.com/d3-contour/-/d3-contour-4.0.2.tgz} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==, tarball: https://registry.npmmirror.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==, tarball: https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==, tarball: https://registry.npmmirror.com/d3-drag/-/d3-drag-3.0.0.tgz} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==, tarball: https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==, tarball: https://registry.npmmirror.com/d3-ease/-/d3-ease-3.0.1.tgz} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==, tarball: https://registry.npmmirror.com/d3-fetch/-/d3-fetch-3.0.1.tgz} + engines: {node: '>=12'} + + d3-flextree@2.1.2: + resolution: {integrity: sha512-gJiHrx5uTTHq44bjyIb3xpbmmdZcWLYPKeO9EPVOq8EylMFOiH2+9sWqKAiQ4DcFuOZTAxPOQyv0Rnmji/g15A==, tarball: https://registry.npmmirror.com/d3-flextree/-/d3-flextree-2.1.2.tgz} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==, tarball: https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==, tarball: https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==, tarball: https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.1.tgz} + engines: {node: '>=12'} + + d3-hierarchy@1.1.9: + resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==, tarball: https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==, tarball: https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==, tarball: https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==, tarball: https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==, tarball: https://registry.npmmirror.com/d3-polygon/-/d3-polygon-3.0.1.tgz} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==, tarball: https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==, tarball: https://registry.npmmirror.com/d3-random/-/d3-random-3.0.1.tgz} + engines: {node: '>=12'} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==, tarball: https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==, tarball: https://registry.npmmirror.com/d3-scale/-/d3-scale-4.0.2.tgz} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==, tarball: https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==, tarball: https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==, tarball: https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==, tarball: https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==, tarball: https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==, tarball: https://registry.npmmirror.com/d3-transition/-/d3-transition-3.0.1.tgz} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==, tarball: https://registry.npmmirror.com/d3-zoom/-/d3-zoom-3.0.0.tgz} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==, tarball: https://registry.npmmirror.com/d3/-/d3-7.9.0.tgz} + engines: {node: '>=12'} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==, tarball: https://registry.npmmirror.com/d/-/d-1.0.2.tgz} + engines: {node: '>=0.12'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==, tarball: https://registry.npmmirror.com/dargs/-/dargs-8.1.0.tgz} + engines: {node: '>=12'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==, tarball: https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==, tarball: https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, tarball: https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz} + engines: {node: '>=0.10.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, tarball: https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz} + + default-passive-events@2.0.0: + resolution: {integrity: sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, tarball: https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==, tarball: https://registry.npmmirror.com/defu/-/defu-6.1.4.tgz} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==, tarball: https://registry.npmmirror.com/delaunator/-/delaunator-5.0.1.tgz} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz} + engines: {node: '>=0.4.0'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==, tarball: https://registry.npmmirror.com/destr/-/destr-2.0.3.tgz} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==, tarball: https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz} + engines: {node: '>=0.10'} + hasBin: true + + diagram-js-direct-editing@3.2.0: + resolution: {integrity: sha512-+pyxeQGBSdLiZX0/tmmsm2qZSvm9YtVzod5W3RMHSTR7VrkUMD6E7EX/W9JQv3ebxO7oIdqFmytmNDDpSHnYEw==, tarball: https://registry.npmmirror.com/diagram-js-direct-editing/-/diagram-js-direct-editing-3.2.0.tgz} + peerDependencies: + diagram-js: '*' + + diagram-js@12.8.1: + resolution: {integrity: sha512-LF9BiwjbOPpZd0ez5VSlYRbdbEA59YQX43bWvNDp1rLMv0xwZ5yIg4oaYDK82nIQ0kH1tjvoQRpNevMTCgQVyw==, tarball: https://registry.npmmirror.com/diagram-js/-/diagram-js-12.8.1.tgz} + + diagram-js@14.11.3: + resolution: {integrity: sha512-Seq9BHAXfzKS60L4v4Gvgvv72wOtvrfJQAyyPm9pntSZDMzjoodPSXnEUPud1G2zVCMGEUUW++s0reEdaWgkXA==, tarball: https://registry.npmmirror.com/diagram-js/-/diagram-js-14.11.3.tgz} + + didi@10.2.2: + resolution: {integrity: sha512-l8NYkYFXV1izHI65EyT8EXOjUZtKmQkHLTT89cSP7HU5J/G7AOj0dXKtLc04EXYlga99PBY18IPjOeZ+c3DI4w==, tarball: https://registry.npmmirror.com/didi/-/didi-10.2.2.tgz} + engines: {node: '>= 16'} + + didi@9.0.2: + resolution: {integrity: sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==, tarball: https://registry.npmmirror.com/didi/-/didi-9.0.2.tgz} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==, tarball: https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, tarball: https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, tarball: https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, tarball: https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz} + engines: {node: '>=6.0.0'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, tarball: https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==, tarball: https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz} + + dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==, tarball: https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, tarball: https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, tarball: https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz} + engines: {node: '>= 4'} + + domify@1.4.2: + resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==, tarball: https://registry.npmmirror.com/domify/-/domify-1.4.2.tgz} + + domify@2.0.0: + resolution: {integrity: sha512-rmvrrmWQPD/X1A/nPBfIVg4r05792QdG9Z4Prk6oQG0F9zBMDkr0GKAdds1wjb2dq1rTz/ywc4ZxpZbgz0tttg==} + engines: {node: '>=18'} + + dompurify@3.2.1: + resolution: {integrity: sha512-NBHEsc0/kzRYQd+AY6HR6B/IgsqzBABrqJbpCDQII/OK6h7B7LXzweZTDsqSW2LkTRpoxf18YUP+YjGySk6B3w==, tarball: https://registry.npmmirror.com/dompurify/-/dompurify-3.2.1.tgz} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==, tarball: https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, tarball: https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz} + engines: {node: '>=8'} + + driver.js@1.3.1: + resolution: {integrity: sha512-MvUdXbqSgEsgS/H9KyWb5Rxy0aE6BhOVT4cssi2x2XjmXea6qQfgdx32XKVLLSqTaIw7q/uxU5Xl3NV7+cN6FQ==, tarball: https://registry.npmmirror.com/driver.js/-/driver.js-1.3.1.tgz} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, tarball: https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, tarball: https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz} + + echarts-wordcloud@2.1.0: + resolution: {integrity: sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==, tarball: https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz} + peerDependencies: + echarts: ^5.0.1 + + echarts@5.5.1: + resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==, tarball: https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==, tarball: https://registry.npmmirror.com/ejs/-/ejs-3.1.10.tgz} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.67: + resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==, tarball: https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz} + + element-plus@2.9.1: + resolution: {integrity: sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==, tarball: https://registry.npmmirror.com/element-plus/-/element-plus-2.9.1.tgz} + peerDependencies: + vue: ^3.2.0 + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.4.0.tgz} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, tarball: https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, tarball: https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==, tarball: https://registry.npmmirror.com/environment/-/environment-1.1.0.tgz} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, tarball: https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, tarball: https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, tarball: https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==, tarball: https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==, tarball: https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==, tarball: https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==, tarball: https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz} + engines: {node: '>=0.12'} + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==, tarball: https://registry.npmmirror.com/esbuild/-/esbuild-0.19.12.tgz} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, tarball: https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, tarball: https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, tarball: https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, tarball: https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-define-config@2.1.0: + resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==, tarball: https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-2.1.0.tgz} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==, tarball: https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@9.31.0: + resolution: {integrity: sha512-aYMUCgivhz1o4tLkRHj5oq9YgYPM4/EJc0M7TAKRLCUA5OYxRLAhYEVD2nLtTwLyixEFI+/QXSvKU9ESZFgqjQ==, tarball: https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.31.0.tgz} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, tarball: https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, tarball: https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==, tarball: https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==, tarball: https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==, tarball: https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz} + engines: {node: '>=0.10'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, tarball: https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, tarball: https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, tarball: https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, tarball: https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, tarball: https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, tarball: https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz} + engines: {node: '>=0.10.0'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==, tarball: https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, tarball: https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, tarball: https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz} + engines: {node: '>=16.17'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==, tarball: https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, tarball: https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, tarball: https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, tarball: https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, tarball: https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==, tarball: https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.3.tgz} + + fast-xml-parser@4.5.0: + resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==, tarball: https://registry.npmmirror.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz} + hasBin: true + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==, tarball: https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz} + engines: {node: '>= 4.9.1'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, tarball: https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz} + + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==, tarball: https://registry.npmmirror.com/fdir/-/fdir-6.4.2.tgz} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + feelers@1.4.0: + resolution: {integrity: sha512-CGa/7ILuqoqTaeYeoKsg/4tzu2es9sEEJTmSjdu0lousZBw4V9gcYhHYFNmbrSrKmbAVfOzj6/DsymGJWFIOeg==} + + feelin@3.2.0: + resolution: {integrity: sha512-GFDbHsTYk7YXO1tyw1dOjb7IODeAZvNIosdGZThUwPx5XcD/XhO0hnPZXsIbAzSsIdrgGlTEEdby9fZ2gixysA==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz} + engines: {node: ^10.12.0 || >=12.0.0} + + file-entry-cache@9.1.0: + resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==, tarball: https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-9.1.0.tgz} + engines: {node: '>=18'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==, tarball: https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, tarball: https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, tarball: https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==, tarball: https://registry.npmmirror.com/find-up/-/find-up-7.0.0.tgz} + engines: {node: '>=18'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==, tarball: https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz} + engines: {node: ^10.12.0 || >=12.0.0} + + flat-cache@5.0.0: + resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==, tarball: https://registry.npmmirror.com/flat-cache/-/flat-cache-5.0.0.tgz} + engines: {node: '>=18'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==, tarball: https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz} + + focus-trap@7.6.2: + resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==, tarball: https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.0.tgz} + engines: {node: '>=14'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==, tarball: https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, tarball: https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz} + engines: {node: '>=12'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, tarball: https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, tarball: https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, tarball: https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==, tarball: https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz} + engines: {node: '>=18'} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz} + engines: {node: '>= 0.4'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, tarball: https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz} + engines: {node: '>=16'} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==, tarball: https://registry.npmmirror.com/git-raw-commits/-/git-raw-commits-4.0.0.tgz} + engines: {node: '>=16'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, tarball: https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, tarball: https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==, tarball: https://registry.npmmirror.com/global-directory/-/global-directory-4.0.1.tgz} + engines: {node: '>=18'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==, tarball: https://registry.npmmirror.com/global-modules/-/global-modules-2.0.0.tgz} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==, tarball: https://registry.npmmirror.com/global-prefix/-/global-prefix-3.0.0.tgz} + engines: {node: '>=6'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==, tarball: https://registry.npmmirror.com/global/-/global-4.4.0.tgz} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, tarball: https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==, tarball: https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, tarball: https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz} + engines: {node: '>=10'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==, tarball: https://registry.npmmirror.com/globjoin/-/globjoin-0.1.4.tgz} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, tarball: https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, tarball: https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, tarball: https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz} + engines: {node: '>=10'} + + hammerjs@2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==, tarball: https://registry.npmmirror.com/hammerjs/-/hammerjs-2.0.8.tgz} + engines: {node: '>=0.8.0'} + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, tarball: https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz} + engines: {node: '>=0.10.0'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, tarball: https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, tarball: https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, tarball: https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, tarball: https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, tarball: https://registry.npmmirror.com/he/-/he-1.2.0.tgz} + hasBin: true + + highlight.js@11.10.0: + resolution: {integrity: sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==, tarball: https://registry.npmmirror.com/highlight.js/-/highlight.js-11.10.0.tgz} + engines: {node: '>=12.0.0'} + + htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==, tarball: https://registry.npmmirror.com/htm/-/htm-3.1.1.tgz} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, tarball: https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz} + engines: {node: '>=8'} + + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==, tarball: https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==, tarball: https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, tarball: https://registry.npmmirror.com/human-signals/-/human-signals-5.0.0.tgz} + engines: {node: '>=16.17.0'} + + i18next@20.6.1: + resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==, tarball: https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz} + engines: {node: '>=0.10.0'} + + ids@1.0.5: + resolution: {integrity: sha512-XQ0yom/4KWTL29sLG+tyuycy7UmeaM/79GRtSJq6IG9cJGIPeBz5kwDCguie3TwxaMNIc3WtPi0cTa1XYHicpw==, tarball: https://registry.npmmirror.com/ids/-/ids-1.0.5.tgz} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz} + engines: {node: '>= 4'} + + ignore@6.0.2: + resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==, tarball: https://registry.npmmirror.com/ignore/-/ignore-6.0.2.tgz} + engines: {node: '>= 4'} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==, tarball: https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz} + + immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==, tarball: https://registry.npmmirror.com/immutable/-/immutable-5.0.3.tgz} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, tarball: https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==, tarball: https://registry.npmmirror.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, tarball: https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, tarball: https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz} + engines: {node: '>=8'} + + individual@2.0.0: + resolution: {integrity: sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==, tarball: https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, tarball: https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits-browser@0.1.0: + resolution: {integrity: sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==, tarball: https://registry.npmmirror.com/inherits-browser/-/inherits-browser-0.1.0.tgz} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, tarball: https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, tarball: https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==, tarball: https://registry.npmmirror.com/ini/-/ini-4.1.1.tgz} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==, tarball: https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz} + engines: {node: '>=12'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, tarball: https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, tarball: https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz} + engines: {node: '>=8'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.1.tgz} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, tarball: https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, tarball: https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==, tarball: https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz} + engines: {node: '>=18'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==, tarball: https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz} + engines: {node: '>=0.10.0'} + + is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==, tarball: https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, tarball: https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, tarball: https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, tarball: https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz} + engines: {node: '>=8'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==, tarball: https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz} + engines: {node: '>=0.10.0'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, tarball: https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==, tarball: https://registry.npmmirror.com/is-text-path/-/is-text-path-2.0.0.tgz} + engines: {node: '>=8'} + + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==, tarball: https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, tarball: https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==, tarball: https://registry.npmmirror.com/jake/-/jake-10.9.2.tgz} + engines: {node: '>=10'} + hasBin: true + + javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==, tarball: https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==, tarball: https://registry.npmmirror.com/jiti/-/jiti-2.4.2.tgz} + hasBin: true + + jmespath@0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, tarball: https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz} + hasBin: true + + jsencrypt@3.3.2: + resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==, tarball: https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.3.2.tgz} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, tarball: https://registry.npmmirror.com/jsesc/-/jsesc-3.0.2.tgz} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, tarball: https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, tarball: https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, tarball: https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, tarball: https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz} + + json-source-map@0.6.1: + resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, tarball: https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz} + engines: {node: '>=6'} + hasBin: true + + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==, tarball: https://registry.npmmirror.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + jsoneditor@9.10.5: + resolution: {integrity: sha512-fVZ0NMt+zm4rqTKBv2x7zPdLeaRyKo1EjJkaR1QjK4gEM1rMwICILYSW1OPxSc1qqyAoDaA/eeNrluKoxOocCA==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, tarball: https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, tarball: https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz} + engines: {'0': node >= 0.2.0} + + jsonrepair@3.1.0: + resolution: {integrity: sha512-idqReg23J0PVRAADmZMc5xQM3xeOX5bTB6OTyMnzq33IXJXmn9iJuWIEvGmrN80rQf4d7uLTMEDwpzujNcI0Rg==} + hasBin: true + + katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==, tarball: https://registry.npmmirror.com/katex/-/katex-0.16.11.tgz} + hasBin: true + + keycode@2.2.1: + resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==, tarball: https://registry.npmmirror.com/keycode/-/keycode-2.2.1.tgz} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, tarball: https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz} + engines: {node: '>=0.10.0'} + + known-css-properties@0.35.0: + resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==, tarball: https://registry.npmmirror.com/known-css-properties/-/known-css-properties-0.35.0.tgz} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==, tarball: https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz} + + lang-feel@2.2.0: + resolution: {integrity: sha512-Ebo5nftYsMfJzB3Ny8Oy4oaDXZXb5x61qtVVmKv6aImvAZUbT76mD60ZbEilizjZQzsR2CcU1iMK5sacIa1NVA==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz} + engines: {node: '>= 0.8.0'} + + lezer-feel@1.4.0: + resolution: {integrity: sha512-kNxG7O38gwpuYy+C3JCRxQNTCE2qu9uTuH5dE3EGVnRhIQMe6rPDz0S8t3urLEOsMud6HI795m6zX2ujfUaqTw==} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==, tarball: https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, tarball: https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==, tarball: https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz} + + lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==, tarball: https://registry.npmmirror.com/lint-staged/-/lint-staged-15.2.10.tgz} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==, tarball: https://registry.npmmirror.com/listr2/-/listr2-8.2.5.tgz} + engines: {node: '>=18.0.0'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==, tarball: https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz} + engines: {node: '>=14'} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==, tarball: https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, tarball: https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==, tarball: https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, tarball: https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==, tarball: https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, tarball: https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==, tarball: https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, tarball: https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz} + + lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==, tarball: https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==, tarball: https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, tarball: https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==, tarball: https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, tarball: https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==, tarball: https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==, tarball: https://registry.npmmirror.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, tarball: https://registry.npmmirror.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, tarball: https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz} + + lodash.toarray@4.4.0: + resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==, tarball: https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, tarball: https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, tarball: https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==, tarball: https://registry.npmmirror.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, tarball: https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==, tarball: https://registry.npmmirror.com/log-update/-/log-update-6.1.0.tgz} + engines: {node: '>=18'} + + loglevel-colored-level-prefix@1.0.0: + resolution: {integrity: sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==, tarball: https://registry.npmmirror.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==, tarball: https://registry.npmmirror.com/loglevel/-/loglevel-1.9.2.tgz} + engines: {node: '>= 0.6.0'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz} + + luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + engines: {node: '>=12'} + + m3u8-parser@4.8.0: + resolution: {integrity: sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==, tarball: https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz} + + magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.30.14.tgz} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==, tarball: https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz} + hasBin: true + + markmap-common@0.16.0: + resolution: {integrity: sha512-q3nlNDMKuWXTm3VwZFY9V5zteL/+iBLZanUK5vS+e26bUbzTSG5VtAzsyJbmgJm1WhwmIIAxbXEnp6JdvtTduA==, tarball: https://registry.npmmirror.com/markmap-common/-/markmap-common-0.16.0.tgz} + + markmap-html-parser@0.16.1: + resolution: {integrity: sha512-/Mgm4g1qMQ8uEOz8h8K+jPspdgjfw29NqmfTLZSt8yG+vW7fWWduPjGRFc5axAZxCzP7PTzZLEuOxAqOwEg8Bg==, tarball: https://registry.npmmirror.com/markmap-html-parser/-/markmap-html-parser-0.16.1.tgz} + peerDependencies: + markmap-common: '*' + + markmap-lib@0.16.1: + resolution: {integrity: sha512-jD8VsB67m677IRehGSwwVJDlC6PS+xzDKsJOwdvjZ+ndfXrHa1lyqfvR6mIwvGGUIciF86YEITSKL9hQTHE4Rw==, tarball: https://registry.npmmirror.com/markmap-lib/-/markmap-lib-0.16.1.tgz} + peerDependencies: + markmap-common: '*' + + markmap-toolbar@0.17.2: + resolution: {integrity: sha512-WQ05P2xvQmZT0ybRUE0uRzrs30aXlJ6/yEUsA6A9nYEwm8T9jSwBxIM/5zYlkH/XzUcsRRxtCa4k1IWR74gkpQ==, tarball: https://registry.npmmirror.com/markmap-toolbar/-/markmap-toolbar-0.17.2.tgz} + peerDependencies: + markmap-common: '*' + + markmap-view@0.16.0: + resolution: {integrity: sha512-JOiSEThs8B4bAP9E6rcCWOz2SsMwCBFaR76wLARRVb04C/qLiLmvrm675kNPq4lRBAwtugHCYvjG0otpSlB4Cw==, tarball: https://registry.npmmirror.com/markmap-view/-/markmap-view-0.16.0.tgz} + peerDependencies: + markmap-common: '*' + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==, tarball: https://registry.npmmirror.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, tarball: https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.30.tgz} + + mdn-data@2.12.1: + resolution: {integrity: sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==, tarball: https://registry.npmmirror.com/mdn-data/-/mdn-data-2.12.1.tgz} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==, tarball: https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==, tarball: https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==, tarball: https://registry.npmmirror.com/meow/-/meow-12.1.1.tgz} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==, tarball: https://registry.npmmirror.com/meow/-/meow-13.2.0.tgz} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, tarball: https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, tarball: https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, tarball: https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz} + engines: {node: '>= 0.6'} + + mime-match@1.0.2: + resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==, tarball: https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, tarball: https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, tarball: https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz} + engines: {node: '>=18'} + + min-dash@4.2.2: + resolution: {integrity: sha512-qbhSYUxk6mBaF096B3JOQSumXbKWHenmT97cSpdNzgkWwGjhjhE/KZODCoDNhI2I4C9Cb6R/Q13S4BYkUSXoXQ==, tarball: https://registry.npmmirror.com/min-dash/-/min-dash-4.2.2.tgz} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==, tarball: https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz} + + min-dom@4.2.1: + resolution: {integrity: sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==, tarball: https://registry.npmmirror.com/min-dom/-/min-dom-4.2.1.tgz} + + min-dom@5.1.1: + resolution: {integrity: sha512-GaKUlguMAofd3OJsB0OkP17i5kucKqErgVCJxPawO9l5NwIPnr28SAr99zzlzMCWWljISBYrnZVWdE2Q92YGFQ==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, tarball: https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, tarball: https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, tarball: https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==, tarball: https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==, tarball: https://registry.npmmirror.com/mlly/-/mlly-1.7.3.tgz} + + mobius1-selectr@2.4.13: + resolution: {integrity: sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==} + + moddle-xml@10.1.0: + resolution: {integrity: sha512-erWckwLt+dYskewKXJso9u+aAZ5172lOiYxSOqKCPTy7L/xmqH1PoeoA7eVC7oJTt3PqF5TkZzUmbjGH6soQBg==, tarball: https://registry.npmmirror.com/moddle-xml/-/moddle-xml-10.1.0.tgz} + + moddle@6.2.3: + resolution: {integrity: sha512-bLVN+ZHL3aKnhxc19XtjUfvdJsS3EsiEJC7bT6YPD11qYmTzvsxrGgyYz1Ouof7TZuGw0lDJ1OLmEnxcpQWk3Q==, tarball: https://registry.npmmirror.com/moddle/-/moddle-6.2.3.tgz} + + mpd-parser@0.22.1: + resolution: {integrity: sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==, tarball: https://registry.npmmirror.com/mpd-parser/-/mpd-parser-0.22.1.tgz} + hasBin: true + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, tarball: https://registry.npmmirror.com/mrmime/-/mrmime-2.0.0.tgz} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz} + + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==, tarball: https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz} + + mux.js@6.0.1: + resolution: {integrity: sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==, tarball: https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz} + engines: {node: '>=8', npm: '>=5'} + hasBin: true + + namespace-emitter@2.0.1: + resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==, tarball: https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, tarball: https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==, tarball: https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==, tarball: https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==, tarball: https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, tarball: https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-html-parser@7.0.1: + resolution: {integrity: sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, tarball: https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, tarball: https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, tarball: https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz} + engines: {node: '>=0.10.0'} + + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==, tarball: https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==, tarball: https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.3.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npm2url@0.2.4: + resolution: {integrity: sha512-arzGp/hQz0Ey+ZGhF64XVH7Xqwd+1Q/po5uGiBbzph8ebX6T0uvt3N7c1nBHQNsQVykQgHhqoRTX7JFcHecGuw==, tarball: https://registry.npmmirror.com/npm2url/-/npm2url-0.2.4.tgz} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==, tarball: https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz} + + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==, tarball: https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.3.tgz} + engines: {node: '>= 0.4'} + + object-refs@0.3.0: + resolution: {integrity: sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==, tarball: https://registry.npmmirror.com/object-refs/-/object-refs-0.3.0.tgz} + + object-refs@0.4.0: + resolution: {integrity: sha512-6kJqKWryKZmtte6QYvouas0/EIJKPI1/MMIuRsiBlNuhIMfqYTggzX2F1AJ2+cDs288xyi9GL7FyasHINR98BQ==, tarball: https://registry.npmmirror.com/object-refs/-/object-refs-0.4.0.tgz} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==, tarball: https://registry.npmmirror.com/ofetch/-/ofetch-1.4.1.tgz} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, tarball: https://registry.npmmirror.com/once/-/once-1.4.0.tgz} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, tarball: https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, tarball: https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz} + engines: {node: '>=18'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz} + engines: {node: '>= 0.8.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, tarball: https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==, tarball: https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, tarball: https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==, tarball: https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, tarball: https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, tarball: https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz} + + package-manager-detector@0.2.5: + resolution: {integrity: sha512-3dS7y28uua+UDbRCLBqltMBrbI+A5U2mI9YuxHRxIWYmLj3DwntEBmERYzIAQ4DMeuCUOBSak7dBHHoXKpOTYQ==, tarball: https://registry.npmmirror.com/package-manager-detector/-/package-manager-detector-0.2.5.tgz} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, tarball: https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz} + engines: {node: '>=8'} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==, tarball: https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz} + + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==, tarball: https://registry.npmmirror.com/parse5/-/parse5-7.2.1.tgz} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==, tarball: https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==, tarball: https://registry.npmmirror.com/path-exists/-/path-exists-5.0.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-intersection@2.2.1: + resolution: {integrity: sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==, tarball: https://registry.npmmirror.com/path-intersection/-/path-intersection-2.2.1.tgz} + + path-intersection@3.1.0: + resolution: {integrity: sha512-3xS3lvv/vuwm5aH2BVvNRvnvwR2Drde7jQClKpCXTYXIMMjcw/EnMhzCgeHwqbCpzi760PEfAkU53vSIlrNr9A==, tarball: https://registry.npmmirror.com/path-intersection/-/path-intersection-3.1.0.tgz} + engines: {node: '>= 14.20'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, tarball: https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, tarball: https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, tarball: https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, tarball: https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, tarball: https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, tarball: https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, tarball: https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz} + engines: {node: '>=12'} + + picomodal@3.0.0: + resolution: {integrity: sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==, tarball: https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz} + engines: {node: '>=0.10'} + hasBin: true + + pinia-plugin-persistedstate@3.2.3: + resolution: {integrity: sha512-Cm819WBj/s5K5DGw55EwbXDtx+EZzM0YR5AZbq9XE3u0xvXwvX2JnWoFpWIcdzISBHqy9H1UiSIUmXyXqWsQRQ==, tarball: https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.3.tgz} + peerDependencies: + pinia: ^2.0.0 + + pinia@2.2.8: + resolution: {integrity: sha512-NRTYy2g+kju5tBRe0oNlriZIbMNvma8ZJrpHsp3qudyiMEA8jMmPPKQ2QMHg0Oc4BkUyQYWagACabrwriCK9HQ==, tarball: https://registry.npmmirror.com/pinia/-/pinia-2.2.8.tgz} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.5.11 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pkcs7@1.0.4: + resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==, tarball: https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz} + hasBin: true + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==, tarball: https://registry.npmmirror.com/pkg-types/-/pkg-types-1.2.1.tgz} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==, tarball: https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz} + engines: {node: '>=10.13.0'} + + postcss-html@1.7.0: + resolution: {integrity: sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==, tarball: https://registry.npmmirror.com/postcss-html/-/postcss-html-1.7.0.tgz} + engines: {node: ^12 || >=14} + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==, tarball: https://registry.npmmirror.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz} + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==, tarball: https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==, tarball: https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==, tarball: https://registry.npmmirror.com/postcss-scss/-/postcss-scss-4.0.9.tgz} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz} + engines: {node: '>=4'} + + postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz} + engines: {node: '>=4'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==, tarball: https://registry.npmmirror.com/postcss-sorting/-/postcss-sorting-8.0.2.tgz} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, tarball: https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz} + engines: {node: ^10 || ^12 || >=14} + + preact@10.25.0: + resolution: {integrity: sha512-6bYnzlLxXV3OSpUxLdaxBmE7PMOu0aR3pG6lryK/0jmvcDFPlcXGQAt5DpK3RITWiDrfYZRI0druyaK/S9kYLg==, tarball: https://registry.npmmirror.com/preact/-/preact-10.25.0.tgz} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz} + engines: {node: '>= 0.8.0'} + + prettier-eslint@16.3.0: + resolution: {integrity: sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==, tarball: https://registry.npmmirror.com/prettier-eslint/-/prettier-eslint-16.3.0.tgz} + engines: {node: '>=16.10.0'} + peerDependencies: + prettier-plugin-svelte: ^3.0.0 + svelte-eslint-parser: '*' + peerDependenciesMeta: + prettier-plugin-svelte: + optional: true + svelte-eslint-parser: + optional: true + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, tarball: https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz} + engines: {node: '>=6.0.0'} + + prettier@3.4.1: + resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==, tarball: https://registry.npmmirror.com/prettier/-/prettier-3.4.1.tgz} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, tarball: https://registry.npmmirror.com/pretty-format/-/pretty-format-29.7.0.tgz} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, tarball: https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz} + engines: {node: '>=6'} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, tarball: https://registry.npmmirror.com/process/-/process-0.11.10.tgz} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, tarball: https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz} + engines: {node: '>=0.4.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==, tarball: https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz} + engines: {node: '>=6'} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==, tarball: https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz} + engines: {node: '>=6'} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==, tarball: https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==, tarball: https://registry.npmmirror.com/qs/-/qs-6.13.1.tgz} + engines: {node: '>=0.6'} + + quansync@0.2.8: + resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==, tarball: https://registry.npmmirror.com/quansync/-/quansync-0.2.8.tgz} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, tarball: https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz} + + randomcolor@0.6.2: + resolution: {integrity: sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A==} + + rd@2.0.1: + resolution: {integrity: sha512-/XdKU4UazUZTXFmI0dpABt8jSXPWcEyaGdk340KdHnsEOdkTctlX23aAK7ChQDn39YGNlAJr1M5uvaKt4QnpNw==, tarball: https://registry.npmmirror.com/rd/-/rd-2.0.1.tgz} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, tarball: https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, tarball: https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz} + engines: {node: '>=8.10.0'} + + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==, tarball: https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz} + engines: {node: '>= 14.16.0'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==, tarball: https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, tarball: https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==, tarball: https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==, tarball: https://registry.npmmirror.com/regexpu-core/-/regexpu-core-6.2.0.tgz} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, tarball: https://registry.npmmirror.com/regjsgen/-/regjsgen-0.8.0.tgz} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==, tarball: https://registry.npmmirror.com/regjsparser/-/regjsparser-0.12.0.tgz} + hasBin: true + + remarkable-katex@1.2.1: + resolution: {integrity: sha512-Y1VquJBZnaVsfsVcKW2hmjT+pDL7mp8l5WAVlvuvViltrdok2m1AIKmJv8SsH+mBY84PoMw67t3kTWw1dIm8+g==, tarball: https://registry.npmmirror.com/remarkable-katex/-/remarkable-katex-1.2.1.tgz} + + remarkable@2.0.1: + resolution: {integrity: sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==, tarball: https://registry.npmmirror.com/remarkable/-/remarkable-2.0.1.tgz} + engines: {node: '>= 6.0.0'} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, tarball: https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, tarball: https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, tarball: https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz} + + require-relative@0.8.7: + resolution: {integrity: sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==, tarball: https://registry.npmmirror.com/require-relative/-/require-relative-0.8.7.tgz} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz} + engines: {node: '>=8'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, tarball: https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz} + engines: {node: '>=18'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, tarball: https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, tarball: https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, tarball: https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==, tarball: https://registry.npmmirror.com/rimraf/-/rimraf-5.0.10.tgz} + hasBin: true + + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==, tarball: https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz} + + rollup-plugin-purge-icons@0.10.0: + resolution: {integrity: sha512-GD2ftg4L9G/sagIhtCmBn5vdyzePOisniythubpbywP0Q3ix9rZuDeFvgXTPemOsc22pvH7t22ryYQIl0rwGog==, tarball: https://registry.npmmirror.com/rollup-plugin-purge-icons/-/rollup-plugin-purge-icons-0.10.0.tgz} + engines: {node: '>= 12'} + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==, tarball: https://registry.npmmirror.com/rollup/-/rollup-2.79.2.tgz} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@4.27.4: + resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==, tarball: https://registry.npmmirror.com/rollup/-/rollup-4.27.4.tgz} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, tarball: https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz} + + rust-result@1.0.0: + resolution: {integrity: sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==, tarball: https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, tarball: https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz} + + safe-json-parse@4.0.0: + resolution: {integrity: sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==, tarball: https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz} + + sass@1.81.0: + resolution: {integrity: sha512-Q4fOxRfhmv3sqCLoGfvrC9pRV8btc0UtqL9mN6Yrv6Qi9ScL55CVH1vlPP863ISLEEMNLLuu9P+enCeGHlnzhA==, tarball: https://registry.npmmirror.com/sass/-/sass-1.81.0.tgz} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, tarball: https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz} + + saxen@8.1.2: + resolution: {integrity: sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==, tarball: https://registry.npmmirror.com/saxen/-/saxen-8.1.2.tgz} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==, tarball: https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==, tarball: https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, tarball: https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, tarball: https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, tarball: https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, tarball: https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==, tarball: https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, tarball: https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz} + engines: {node: '>=14'} + + signature_pad@3.0.0-beta.4: + resolution: {integrity: sha512-cOf2NhVuTiuNqe2X/ycEmizvCDXk0DoemhsEpnkcGnA4kS5iJYTCqZ9As7tFBbsch45Q1EdX61833+6sjJ8rrw==} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==, tarball: https://registry.npmmirror.com/sirv/-/sirv-2.0.4.tgz} + engines: {node: '>= 10'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, tarball: https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz} + engines: {node: '>=8'} + + slate-history@0.66.0: + resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==, tarball: https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz} + peerDependencies: + slate: '>=0.65.3' + + slate@0.72.8: + resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==, tarball: https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, tarball: https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, tarball: https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==, tarball: https://registry.npmmirror.com/slice-ansi/-/slice-ansi-7.1.0.tgz} + engines: {node: '>=18'} + + snabbdom@3.6.2: + resolution: {integrity: sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==, tarball: https://registry.npmmirror.com/snabbdom/-/snabbdom-3.6.2.tgz} + engines: {node: '>=12.17.0'} + + sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==, tarball: https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz} + + sortablejs@1.15.6: + resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==, tarball: https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.6.tgz} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, tarball: https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, tarball: https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, tarball: https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz} + + ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==, tarball: https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz} + + steady-xml@0.1.0: + resolution: {integrity: sha512-5sk17qO2wWRtonTNoBhoKAB35OSsGJOa3+NEa6D+1GS+de+ujDWxnflMkXBrviOfkNrPTUqduAdXhrMJs89nAw==, tarball: https://registry.npmmirror.com/steady-xml/-/steady-xml-0.1.0.tgz} + engines: {node: '>=12.0.0'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, tarball: https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, tarball: https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, tarball: https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, tarball: https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz} + engines: {node: '>=18'} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz} + engines: {node: '>=12'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, tarball: https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, tarball: https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz} + engines: {node: '>=8'} + + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==, tarball: https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.1.tgz} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==, tarball: https://registry.npmmirror.com/strnum/-/strnum-1.0.5.tgz} + + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + stylelint-config-html@1.1.0: + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==, tarball: https://registry.npmmirror.com/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recommended@14.0.1: + resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==, tarball: https://registry.npmmirror.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + + stylelint-config-standard@36.0.1: + resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==, tarball: https://registry.npmmirror.com/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==, tarball: https://registry.npmmirror.com/stylelint-order/-/stylelint-order-6.0.4.tgz} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + + stylelint@16.11.0: + resolution: {integrity: sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==, tarball: https://registry.npmmirror.com/stylelint/-/stylelint-16.11.0.tgz} + engines: {node: '>=18.12.0'} + hasBin: true + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz} + engines: {node: '>=0.8.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz} + engines: {node: '>=8'} + + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==, tarball: https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, tarball: https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==, tarball: https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==, tarball: https://registry.npmmirror.com/synckit/-/synckit-0.8.8.tgz} + engines: {node: ^14.18.0 || >=16.0.0} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==, tarball: https://registry.npmmirror.com/synckit/-/synckit-0.9.2.tgz} + engines: {node: ^14.18.0 || >=16.0.0} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==, tarball: https://registry.npmmirror.com/systemjs/-/systemjs-6.15.1.tgz} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==, tarball: https://registry.npmmirror.com/table/-/table-6.8.2.tgz} + engines: {node: '>=10.0.0'} + + terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==, tarball: https://registry.npmmirror.com/terser/-/terser-5.36.0.tgz} + engines: {node: '>=10'} + hasBin: true + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==, tarball: https://registry.npmmirror.com/text-extensions/-/text-extensions-2.4.0.tgz} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, tarball: https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, tarball: https://registry.npmmirror.com/through/-/through-2.3.8.tgz} + + tiny-svg@3.1.3: + resolution: {integrity: sha512-9mwnPqXInRsBmH/DO6NMxBE++9LsqpVXQSSTZGc5bomoKKvL5OX/Hlotw7XVXP6XLRcHWIzZpxfovGqWKgCypQ==, tarball: https://registry.npmmirror.com/tiny-svg/-/tiny-svg-3.1.3.tgz} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==, tarball: https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz} + + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==, tarball: https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.1.tgz} + + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==, tarball: https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.10.tgz} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, tarball: https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz} + engines: {node: '>=8.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, tarball: https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, tarball: https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz} + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==, tarball: https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==, tarball: https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-2.0.1.tgz} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, tarball: https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, tarball: https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz} + engines: {node: '>=10'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==, tarball: https://registry.npmmirror.com/type/-/type-2.7.3.tgz} + + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==, tarball: https://registry.npmmirror.com/typescript/-/typescript-5.3.3.tgz} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==, tarball: https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==, tarball: https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz} + + unconfig@0.3.13: + resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==, tarball: https://registry.npmmirror.com/unconfig/-/unconfig-0.3.13.tgz} + + unconfig@7.3.1: + resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==, tarball: https://registry.npmmirror.com/unconfig/-/unconfig-7.3.1.tgz} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==, tarball: https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, tarball: https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, tarball: https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==, tarball: https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==, tarball: https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==, tarball: https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz} + engines: {node: '>=18'} + + unimport@3.14.2: + resolution: {integrity: sha512-FSxhbAylGGanyuTb3K0Ka3T9mnsD0+cRKbwOS11Li4Lh2whWS091e32JH4bIHrTckxlW9GnExAglADlxXjjzFw==, tarball: https://registry.npmmirror.com/unimport/-/unimport-3.14.2.tgz} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, tarball: https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz} + engines: {node: '>= 10.0.0'} + + unocss@0.58.9: + resolution: {integrity: sha512-aqANXXP0RrtN4kSaTLn/7I6wh8o45LUdVgPzGu7Fan2DfH2+wpIs6frlnlHlOymnb+52dp6kXluQinddaUKW1A==, tarball: https://registry.npmmirror.com/unocss/-/unocss-0.58.9.tgz} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.58.9 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unplugin-auto-import@0.16.7: + resolution: {integrity: sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==, tarball: https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-element-plus@0.8.0: + resolution: {integrity: sha512-jByUGY3FG2B8RJKFryqxx4eNtSTj+Hjlo8edcOdJymewndDQjThZ1pRUQHRjQsbKhTV2jEctJV7t7RJ405UL4g==, tarball: https://registry.npmmirror.com/unplugin-element-plus/-/unplugin-element-plus-0.8.0.tgz} + engines: {node: '>=14.19.0'} + + unplugin-vue-components@0.25.2: + resolution: {integrity: sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==, tarball: https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.25.2.tgz} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + + unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==, tarball: https://registry.npmmirror.com/unplugin/-/unplugin-1.16.0.tgz} + engines: {node: '>=14.0.0'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==, tarball: https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, tarball: https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz} + + url-toolkit@2.2.5: + resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==, tarball: https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==, tarball: https://registry.npmmirror.com/url/-/url-0.11.4.tgz} + engines: {node: '>= 0.4'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==, tarball: https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz} + hasBin: true + + v3-jsoneditor@0.0.6: + resolution: {integrity: sha512-9G0sXWXUn67SBkn46ycWfwPwjuJu/lcsQaNzMtXAR2/95hMV21WfcRNsqJ+vVVrSHQehohB/9fVLwYEXz0u/KA==} + + vanilla-picker@2.12.3: + resolution: {integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==} + + video.js@7.21.6: + resolution: {integrity: sha512-m41TbODrUCToVfK1aljVd296CwDQnCRewpIm5tTXMuV87YYSGw1H+VDOaV45HlpcWSsTWWLF++InDgGJfthfUw==, tarball: https://registry.npmmirror.com/video.js/-/video.js-7.21.6.tgz} + + videojs-font@3.2.0: + resolution: {integrity: sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==, tarball: https://registry.npmmirror.com/videojs-font/-/videojs-font-3.2.0.tgz} + + videojs-vtt.js@0.15.5: + resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==, tarball: https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz} + + vite-plugin-compression@0.5.1: + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==, tarball: https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-ejs@1.7.0: + resolution: {integrity: sha512-JNP3zQDC4mSbfoJ3G73s5mmZITD8NGjUmLkq4swxyahy/W0xuokK9U9IJGXw7KCggq6UucT6hJ0p+tQrNtqTZw==, tarball: https://registry.npmmirror.com/vite-plugin-ejs/-/vite-plugin-ejs-1.7.0.tgz} + peerDependencies: + vite: '>=5.0.0' + + vite-plugin-eslint@1.8.1: + resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==, tarball: https://registry.npmmirror.com/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz} + peerDependencies: + eslint: '>=7' + vite: '>=2' + + vite-plugin-progress@0.0.7: + resolution: {integrity: sha512-zyvKdcc/X+6hnw3J1HVV1TKrlFKC4Rh8GnDnWG/2qhRXjqytTcM++xZ+SAPnoDsSyWl8O93ymK0wZRgHAoglEQ==, tarball: https://registry.npmmirror.com/vite-plugin-progress/-/vite-plugin-progress-0.0.7.tgz} + engines: {node: '>=14', pnpm: '>=7.0.0'} + peerDependencies: + vite: '>2.0.0-0' + + vite-plugin-purge-icons@0.10.0: + resolution: {integrity: sha512-4fMJKQuBu9lAPJWjqGEytRaxty1pP9bWgQLA68dwbbaCXu6NBrOUb/3kMaUc7TP09kerEk+qTriCk05OZXpjwA==, tarball: https://registry.npmmirror.com/vite-plugin-purge-icons/-/vite-plugin-purge-icons-0.10.0.tgz} + engines: {node: '>= 12'} + peerDependencies: + vite: '>=2' + + vite-plugin-svg-icons-ng@1.3.1: + resolution: {integrity: sha512-86oYE/MACMyqebcbuKpUTUJsptHoAfgnPS8680jQ0VigDEM2oxb59Nj2G+1FqA8CzyLCFftAKtwMAz8UGqiRfg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: '>=5.0.0' + + vite-plugin-top-level-await@1.4.4: + resolution: {integrity: sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw==, tarball: https://registry.npmmirror.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.4.tgz} + peerDependencies: + vite: '>=2.8' + + vite@5.1.4: + resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==, tarball: https://registry.npmmirror.com/vite/-/vite-5.1.4.tgz} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==, tarball: https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-dompurify-html@4.1.4: + resolution: {integrity: sha512-K0XDSZA4dmMMvAgW8yaCx1kAYQldmgXeHJaLPS0mlSKOu8B+onE06X4KfB5LGyX4jR3rlVosyWJczRBzR0sZ/g==, tarball: https://registry.npmmirror.com/vue-dompurify-html/-/vue-dompurify-html-4.1.4.tgz} + peerDependencies: + vue: ^2.7.0 || ^3.0.0 + + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==, tarball: https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-i18n@9.10.2: + resolution: {integrity: sha512-ECJ8RIFd+3c1d3m1pctQ6ywG5Yj8Efy1oYoAKQ9neRdkLbuKLVeW4gaY5HPkD/9ssf1pOnUrmIFjx2/gkGxmEw==, tarball: https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.10.2.tgz} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + + vue-router@4.4.5: + resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==, tarball: https://registry.npmmirror.com/vue-router/-/vue-router-4.4.5.tgz} + peerDependencies: + vue: ^3.2.0 + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==, tarball: https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz} + + vue-tsc@1.8.27: + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==, tarball: https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz} + hasBin: true + peerDependencies: + typescript: '*' + + vue-types@5.1.3: + resolution: {integrity: sha512-3Wy6QcZl0VusCCHX3vYrWSILFlrOB2EQDoySnuYmASM5cUp1FivJGfkS5lp1CutDgyRb41g32r/1QCmiBj5i1Q==, tarball: https://registry.npmmirror.com/vue-types/-/vue-types-5.1.3.tgz} + engines: {node: '>=14.0.0'} + peerDependencies: + vue: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + vue: + optional: true + + vue3-signature@0.2.4: + resolution: {integrity: sha512-XFwwFVK9OG3F085pKIq2SlNVqx32WdFH+TXbGEWc5FfEKpx8oMmZuAwZZ50K/pH2FgmJSE8IRwU9DDhrLpd6iA==} + peerDependencies: + vue: ^3.2.0 + + vue@3.5.12: + resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==, tarball: https://registry.npmmirror.com/vue/-/vue-3.5.12.tgz} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vuedraggable@4.1.0: + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==, tarball: https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz} + peerDependencies: + vue: ^3.0.1 + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + wangeditor@4.7.15: + resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==, tarball: https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz} + + web-storage-cache@1.1.1: + resolution: {integrity: sha512-D0MieGooOs8RpsrK+vnejXnvh4OOv/+lTFB35JRkJJQt+uOjPE08XpaE0QBLMTRu47B1KGT/Nq3Gbag3Orinzw==, tarball: https://registry.npmmirror.com/web-storage-cache/-/web-storage-cache-1.1.1.tgz} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, tarball: https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==, tarball: https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, tarball: https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, tarball: https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, tarball: https://registry.npmmirror.com/which/-/which-1.3.1.tgz} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmmirror.com/which/-/which-2.0.2.tgz} + engines: {node: '>= 8'} + hasBin: true + + wildcard@1.1.2: + resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==, tarball: https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, tarball: https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, tarball: https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==, tarball: https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==, tarball: https://registry.npmmirror.com/xml-js/-/xml-js-1.6.11.tgz} + hasBin: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, tarball: https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz} + engines: {node: '>=12'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, tarball: https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, tarball: https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, tarball: https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz} + + yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==, tarball: https://registry.npmmirror.com/yaml-eslint-parser/-/yaml-eslint-parser-1.2.3.tgz} + engines: {node: ^14.17.0 || >=16.0.0} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==, tarball: https://registry.npmmirror.com/yaml/-/yaml-2.5.1.tgz} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==, tarball: https://registry.npmmirror.com/yaml/-/yaml-2.6.1.tgz} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, tarball: https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, tarball: https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, tarball: https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, tarball: https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==, tarball: https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.1.1.tgz} + engines: {node: '>=12.20'} + + zeebe-bpmn-moddle@1.7.0: + resolution: {integrity: sha512-eZ6OXSt0c4n9V/oN/46gTlwDIS3GhWQLt9jbM5uS/YryB4yN8wdrrKrtw+TpyNy0SSKWXNDHyC83nCA2blPO3Q==} + + zrender@5.6.0: + resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==, tarball: https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.5 + tinyexec: 0.3.1 + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.2': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.7 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 + esutils: 2.0.3 + + '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime-corejs3@7.26.0': + dependencies: + core-js-pure: 3.39.0 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bpmn-io/cm-theme@0.1.0-alpha.2': + dependencies: + '@codemirror/language': 6.10.6 + '@codemirror/view': 6.35.0 + '@lezer/highlight': 1.2.1 + + '@bpmn-io/diagram-js-ui@0.2.3': + dependencies: + htm: 3.1.1 + preact: 10.25.0 + + '@bpmn-io/extract-process-variables@0.8.0': + dependencies: + min-dash: 4.2.2 + + '@bpmn-io/feel-editor@1.9.1(@lezer/common@1.2.3)': + dependencies: + '@bpmn-io/feel-lint': 1.3.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/commands': 6.7.1 + '@codemirror/language': 6.10.6 + '@codemirror/lint': 6.8.4 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + '@lezer/highlight': 1.2.1 + lang-feel: 2.2.0 + min-dom: 4.2.1 + transitivePeerDependencies: + - '@lezer/common' + + '@bpmn-io/feel-lint@1.3.1': + dependencies: + '@codemirror/language': 6.10.6 + lezer-feel: 1.4.0 + + '@bpmn-io/properties-panel@3.25.0(@lezer/common@1.2.3)': + dependencies: + '@bpmn-io/feel-editor': 1.9.1(@lezer/common@1.2.3) + '@codemirror/view': 6.35.0 + classnames: 2.5.1 + feelers: 1.4.0 + focus-trap: 7.6.2 + min-dash: 4.2.2 + min-dom: 4.2.1 + transitivePeerDependencies: + - '@lezer/common' + + '@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)': + dependencies: + '@codemirror/language': 6.10.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + '@lezer/common': 1.2.3 + + '@codemirror/commands@6.7.1': + dependencies: + '@codemirror/language': 6.10.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + '@lezer/common': 1.2.3 + + '@codemirror/language@6.10.6': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + + '@codemirror/lint@6.8.4': + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + crelt: 1.0.6 + + '@codemirror/state@6.4.1': {} + + '@codemirror/view@6.35.0': + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@commitlint/cli@19.6.0(@types/node@20.17.9)(typescript@5.3.3)': + dependencies: + '@commitlint/format': 19.5.0 + '@commitlint/lint': 19.6.0 + '@commitlint/load': 19.5.0(@types/node@20.17.9)(typescript@5.3.3) + '@commitlint/read': 19.5.0 + '@commitlint/types': 19.5.0 + tinyexec: 0.3.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.6.0': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + ajv: 8.17.1 + + '@commitlint/ensure@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.5.0': {} + + '@commitlint/format@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.6.0': + dependencies: + '@commitlint/types': 19.5.0 + semver: 7.6.3 + + '@commitlint/lint@19.6.0': + dependencies: + '@commitlint/is-ignored': 19.6.0 + '@commitlint/parse': 19.5.0 + '@commitlint/rules': 19.6.0 + '@commitlint/types': 19.5.0 + + '@commitlint/load@19.5.0(@types/node@20.17.9)(typescript@5.3.3)': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.1.0(@types/node@20.17.9)(cosmiconfig@9.0.0(typescript@5.3.3))(typescript@5.3.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.5.0': {} + + '@commitlint/parse@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.5.0': + dependencies: + '@commitlint/top-level': 19.5.0 + '@commitlint/types': 19.5.0 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 0.3.1 + + '@commitlint/resolve-extends@19.5.0': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.6.0': + dependencies: + '@commitlint/ensure': 19.5.0 + '@commitlint/message': 19.5.0 + '@commitlint/to-lines': 19.5.0 + '@commitlint/types': 19.5.0 + + '@commitlint/to-lines@19.5.0': {} + + '@commitlint/top-level@19.5.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.5.0': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.3.0 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)': + dependencies: + postcss-selector-parser: 7.0.0 + + '@ctrl/tinycolor@3.6.1': {} + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@element-plus/icons-vue@2.3.1(vue@3.5.12(typescript@5.3.3))': + dependencies: + vue: 3.5.12(typescript@5.3.3) + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/android-arm64@0.19.12': + optional: true + + '@esbuild/android-arm@0.19.12': + optional: true + + '@esbuild/android-x64@0.19.12': + optional: true + + '@esbuild/darwin-arm64@0.19.12': + optional: true + + '@esbuild/darwin-x64@0.19.12': + optional: true + + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@floating-ui/core@1.6.8': + dependencies: + '@floating-ui/utils': 0.2.8 + + '@floating-ui/dom@1.6.12': + dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/utils': 0.2.8 + + '@floating-ui/utils@0.2.8': {} + + '@form-create/component-elm-checkbox@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-elm-frame@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-elm-group@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-elm-radio@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-elm-select@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-elm-tree@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-elm-upload@3.2.14': + dependencies: + '@form-create/utils': 3.2.14 + + '@form-create/component-subform@3.1.34': {} + + '@form-create/component-wangeditor@3.2.14': + dependencies: + wangeditor: 4.7.15 + + '@form-create/core@3.2.14(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@form-create/utils': 3.2.14 + vue: 3.5.12(typescript@5.3.3) + + '@form-create/designer@3.2.8(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@form-create/component-wangeditor': 3.2.14 + '@form-create/element-ui': 3.2.14(vue@3.5.12(typescript@5.3.3)) + '@form-create/utils': 3.2.14 + codemirror: 6.65.7 + element-plus: 2.9.1(vue@3.5.12(typescript@5.3.3)) + vue: 3.5.12(typescript@5.3.3) + vuedraggable: 4.1.0(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + + '@form-create/element-ui@3.2.14(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@form-create/component-elm-checkbox': 3.2.14 + '@form-create/component-elm-frame': 3.2.14 + '@form-create/component-elm-group': 3.2.14 + '@form-create/component-elm-radio': 3.2.14 + '@form-create/component-elm-select': 3.2.14 + '@form-create/component-elm-tree': 3.2.14 + '@form-create/component-elm-upload': 3.2.14 + '@form-create/component-subform': 3.1.34 + '@form-create/core': 3.2.14(vue@3.5.12(typescript@5.3.3)) + '@form-create/utils': 3.2.14 + vue: 3.5.12(typescript@5.3.3) + + '@form-create/utils@3.2.14': {} + + '@gera2ld/jsx-dom@2.2.2': + dependencies: + '@babel/runtime': 7.26.0 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@iconify/iconify@2.1.2': + dependencies: + cross-fetch: 3.1.8 + transitivePeerDependencies: + - encoding + + '@iconify/iconify@3.1.1': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/json@2.2.277': + dependencies: + '@iconify/types': 2.0.0 + pathe: 1.1.2 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.33': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.7 + kolorist: 1.8.0 + local-pkg: 0.5.1 + mlly: 1.7.3 + transitivePeerDependencies: + - supports-color + + '@intlify/bundle-utils@7.5.1(vue-i18n@9.10.2(vue@3.5.12(typescript@5.3.3)))': + dependencies: + '@intlify/message-compiler': 9.14.2 + '@intlify/shared': 9.14.2 + acorn: 8.14.0 + escodegen: 2.1.0 + estree-walker: 2.0.2 + jsonc-eslint-parser: 2.4.0 + magic-string: 0.30.14 + mlly: 1.7.3 + source-map-js: 1.2.1 + yaml-eslint-parser: 1.2.3 + optionalDependencies: + vue-i18n: 9.10.2(vue@3.5.12(typescript@5.3.3)) + + '@intlify/core-base@9.10.2': + dependencies: + '@intlify/message-compiler': 9.10.2 + '@intlify/shared': 9.10.2 + + '@intlify/message-compiler@9.10.2': + dependencies: + '@intlify/shared': 9.10.2 + source-map-js: 1.2.1 + + '@intlify/message-compiler@9.14.2': + dependencies: + '@intlify/shared': 9.14.2 + source-map-js: 1.2.1 + + '@intlify/shared@9.10.2': {} + + '@intlify/shared@9.14.2': {} + + '@intlify/unplugin-vue-i18n@2.0.0(rollup@4.27.4)(vue-i18n@9.10.2(vue@3.5.12(typescript@5.3.3)))': + dependencies: + '@intlify/bundle-utils': 7.5.1(vue-i18n@9.10.2(vue@3.5.12(typescript@5.3.3))) + '@intlify/shared': 9.14.2 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + '@vue/compiler-sfc': 3.5.13 + debug: 4.3.7 + fast-glob: 3.3.2 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.2 + picocolors: 1.1.1 + source-map-js: 1.2.1 + unplugin: 1.16.0 + optionalDependencies: + vue-i18n: 9.10.2(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - rollup + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@lezer/common@1.2.3': {} + + '@lezer/highlight@1.2.1': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/markdown@1.3.2': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + + '@microsoft/fetch-event-source@2.0.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@parcel/watcher-android-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-x64@2.5.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.0': + optional: true + + '@parcel/watcher-win32-arm64@2.5.0': + optional: true + + '@parcel/watcher-win32-ia32@2.5.0': + optional: true + + '@parcel/watcher-win32-x64@2.5.0': + optional: true + + '@parcel/watcher@2.5.0': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + optional: true + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@polka/url@1.0.0-next.28': {} + + '@purge-icons/core@0.10.0': + dependencies: + '@iconify/iconify': 2.1.2 + axios: 0.26.1(debug@4.3.7) + debug: 4.3.7 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@purge-icons/generated@0.10.0': + dependencies: + '@iconify/iconify': 3.1.1 + + '@purge-icons/generated@0.9.0': + dependencies: + '@iconify/iconify': 3.1.1 + + '@quansync/fs@0.1.1': + dependencies: + quansync: 0.2.8 + + '@rollup/plugin-virtual@3.0.2(rollup@4.27.4)': + optionalDependencies: + rollup: 4.27.4 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.1.3(rollup@4.27.4)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.27.4 + + '@rollup/rollup-android-arm-eabi@4.27.4': + optional: true + + '@rollup/rollup-android-arm64@4.27.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.27.4': + optional: true + + '@rollup/rollup-darwin-x64@4.27.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.27.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.27.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.27.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.27.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.27.4': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.27.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.27.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.27.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.27.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.27.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.4': + optional: true + + '@sinclair/typebox@0.27.8': {} + + '@sphinxxxx/color-conversion@2.2.2': {} + + '@swc/core-darwin-arm64@1.9.3': + optional: true + + '@swc/core-darwin-x64@1.9.3': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.9.3': + optional: true + + '@swc/core-linux-arm64-gnu@1.9.3': + optional: true + + '@swc/core-linux-arm64-musl@1.9.3': + optional: true + + '@swc/core-linux-x64-gnu@1.9.3': + optional: true + + '@swc/core-linux-x64-musl@1.9.3': + optional: true + + '@swc/core-win32-arm64-msvc@1.9.3': + optional: true + + '@swc/core-win32-ia32-msvc@1.9.3': + optional: true + + '@swc/core-win32-x64-msvc@1.9.3': + optional: true + + '@swc/core@1.9.3': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.3 + '@swc/core-darwin-x64': 1.9.3 + '@swc/core-linux-arm-gnueabihf': 1.9.3 + '@swc/core-linux-arm64-gnu': 1.9.3 + '@swc/core-linux-arm64-musl': 1.9.3 + '@swc/core-linux-x64-gnu': 1.9.3 + '@swc/core-linux-x64-musl': 1.9.3 + '@swc/core-win32-arm64-msvc': 1.9.3 + '@swc/core-win32-ia32-msvc': 1.9.3 + '@swc/core-win32-x64-msvc': 1.9.3 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.17': + dependencies: + '@swc/counter': 0.1.3 + + '@sxzz/popperjs-es@2.11.7': {} + + '@transloadit/prettier-bytes@0.0.7': {} + + '@trysound/sax@0.2.0': {} + + '@types/conventional-commits-parser@5.0.1': + dependencies: + '@types/node': 20.17.9 + + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.14 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.6': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.14 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.0': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.8': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.6': + dependencies: + '@types/d3-path': 3.1.0 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.6 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.0 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.6 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/eslint@8.56.12': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.6': {} + + '@types/event-emitter@0.3.5': {} + + '@types/geojson@7946.0.14': {} + + '@types/json-schema@7.0.15': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.13 + + '@types/lodash@4.17.13': {} + + '@types/node@10.17.60': {} + + '@types/node@20.17.9': + dependencies: + undici-types: 6.19.8 + + '@types/nprogress@0.2.3': {} + + '@types/qrcode@1.5.5': + dependencies: + '@types/node': 20.17.9 + + '@types/qs@6.9.17': {} + + '@types/semver@7.5.8': {} + + '@types/trusted-types@2.0.7': + optional: true + + '@types/video.js@7.3.58': {} + + '@types/web-bluetooth@0.0.16': {} + + '@types/web-bluetooth@0.0.20': {} + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.3.3) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/scope-manager@8.26.1': + dependencies: + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/visitor-keys': 8.26.1 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.3.3) + debug: 4.3.7 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.3.3) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/types@8.26.1': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3)': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.3.3) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.3.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.3.3) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.26.1(typescript@5.3.3)': + dependencies: + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/visitor-keys': 8.26.1 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.0.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.57.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.26.1(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.26.1 + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.3.3) + eslint: 8.57.1 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.26.1': + dependencies: + '@typescript-eslint/types': 8.26.1 + eslint-visitor-keys: 4.2.0 + + '@ungap/structured-clone@1.2.0': {} + + '@unocss/astro@0.58.9(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + optionalDependencies: + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - rollup + + '@unocss/cli@0.58.9(rollup@4.27.4)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/preset-uno': 0.58.9 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.2 + magic-string: 0.30.14 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + + '@unocss/config@0.57.7': + dependencies: + '@unocss/core': 0.57.7 + unconfig: 0.3.13 + + '@unocss/config@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + unconfig: 0.3.13 + + '@unocss/config@66.1.0-beta.5': + dependencies: + '@unocss/core': 66.1.0-beta.5 + unconfig: 7.3.1 + + '@unocss/core@0.57.7': {} + + '@unocss/core@0.58.9': {} + + '@unocss/core@66.1.0-beta.5': {} + + '@unocss/eslint-config@0.57.7(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@unocss/eslint-plugin': 0.57.7(eslint@8.57.1)(typescript@5.3.3) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/eslint-plugin@0.57.7(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.3.3) + '@unocss/config': 0.57.7 + '@unocss/core': 0.57.7 + magic-string: 0.30.14 + synckit: 0.8.8 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/eslint-plugin@66.1.0-beta.5(eslint@8.57.1)(typescript@5.3.3)': + dependencies: + '@typescript-eslint/utils': 8.26.1(eslint@8.57.1)(typescript@5.3.3) + '@unocss/config': 66.1.0-beta.5 + '@unocss/core': 66.1.0-beta.5 + '@unocss/rule-utils': 66.1.0-beta.5 + magic-string: 0.30.17 + synckit: 0.9.2 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + + '@unocss/extractor-arbitrary-variants@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/inspector@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + gzip-size: 6.0.0 + sirv: 2.0.4 + + '@unocss/postcss@0.58.9(postcss@8.4.49)': + dependencies: + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + fast-glob: 3.3.2 + magic-string: 0.30.14 + postcss: 8.4.49 + + '@unocss/preset-attributify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/preset-icons@0.58.9': + dependencies: + '@iconify/utils': 2.1.33 + '@unocss/core': 0.58.9 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + + '@unocss/preset-mini@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-tagify@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/preset-typography@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + + '@unocss/preset-uno@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/preset-web-fonts@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + ofetch: 1.4.1 + + '@unocss/preset-wind@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/rule-utils': 0.58.9 + + '@unocss/reset@0.58.9': {} + + '@unocss/rule-utils@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + magic-string: 0.30.14 + + '@unocss/rule-utils@66.1.0-beta.5': + dependencies: + '@unocss/core': 66.1.0-beta.5 + magic-string: 0.30.17 + + '@unocss/scope@0.58.9': {} + + '@unocss/transformer-attributify-jsx-babel@0.58.9': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@unocss/core': 0.58.9 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-attributify-jsx@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/transformer-compile-class@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/transformer-directives@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + '@unocss/rule-utils': 0.58.9 + css-tree: 2.3.1 + + '@unocss/transformer-variant-group@0.58.9': + dependencies: + '@unocss/core': 0.58.9 + + '@unocss/vite@0.58.9(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + '@unocss/config': 0.58.9 + '@unocss/core': 0.58.9 + '@unocss/inspector': 0.58.9 + '@unocss/scope': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + chokidar: 3.6.0 + fast-glob: 3.3.2 + magic-string: 0.30.14 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - rollup + + '@uppy/companion-client@2.2.2': + dependencies: + '@uppy/utils': 4.1.3 + namespace-emitter: 2.0.1 + + '@uppy/core@2.3.4': + dependencies: + '@transloadit/prettier-bytes': 0.0.7 + '@uppy/store-default': 2.1.1 + '@uppy/utils': 4.1.3 + lodash.throttle: 4.1.1 + mime-match: 1.0.2 + namespace-emitter: 2.0.1 + nanoid: 3.3.8 + preact: 10.25.0 + + '@uppy/store-default@2.1.1': {} + + '@uppy/utils@4.1.3': + dependencies: + lodash.throttle: 4.1.1 + + '@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4)': + dependencies: + '@uppy/companion-client': 2.2.2 + '@uppy/core': 2.3.4 + '@uppy/utils': 4.1.3 + nanoid: 3.3.8 + + '@videojs-player/vue@1.0.0(@types/video.js@7.3.58)(video.js@7.21.6)(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@types/video.js': 7.3.58 + video.js: 7.21.6 + vue: 3.5.12(typescript@5.3.3) + + '@videojs/http-streaming@2.16.3(video.js@7.21.6)': + dependencies: + '@babel/runtime': 7.26.0 + '@videojs/vhs-utils': 3.0.5 + aes-decrypter: 3.1.3 + global: 4.4.0 + m3u8-parser: 4.8.0 + mpd-parser: 0.22.1 + mux.js: 6.0.1 + video.js: 7.21.6 + + '@videojs/vhs-utils@3.0.5': + dependencies: + '@babel/runtime': 7.26.0 + global: 4.4.0 + url-toolkit: 2.2.5 + + '@videojs/xhr@2.6.0': + dependencies: + '@babel/runtime': 7.26.0 + global: 4.4.0 + is-function: 1.0.2 + + '@vitejs/plugin-legacy@5.4.3(terser@5.36.0)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + browserslist: 4.24.2 + browserslist-to-esbuild: 2.1.1(browserslist@4.24.2) + core-js: 3.39.0 + magic-string: 0.30.14 + regenerator-runtime: 0.14.1 + systemjs: 6.15.1 + terser: 5.36.0 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + vue: 3.5.12(typescript@5.3.3) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.2.1(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0))(vue@3.5.12(typescript@5.3.3))': + dependencies: + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + vue: 3.5.12(typescript@5.3.3) + + '@volar/language-core@1.11.1': + dependencies: + '@volar/source-map': 1.11.1 + + '@volar/source-map@1.11.1': + dependencies: + muggle-string: 0.3.1 + + '@volar/typescript@1.11.1': + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + + '@vue/babel-helper-vue-transform-on@1.2.5': {} + + '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + '@vue/babel-helper-vue-transform-on': 1.2.5 + '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) + html-tags: 3.3.1 + svg-tags: 1.0.0 + optionalDependencies: + '@babel/core': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.26.0)': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/parser': 7.26.2 + '@vue/compiler-sfc': 3.5.13 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.12': + dependencies: + '@babel/parser': 7.26.2 + '@vue/shared': 3.5.12 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.26.2 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.12': + dependencies: + '@vue/compiler-core': 3.5.12 + '@vue/shared': 3.5.12 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.12': + dependencies: + '@babel/parser': 7.26.2 + '@vue/compiler-core': 3.5.12 + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-ssr': 3.5.12 + '@vue/shared': 3.5.12 + estree-walker: 2.0.2 + magic-string: 0.30.14 + postcss: 8.4.49 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.26.2 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.14 + postcss: 8.4.49 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.12': + dependencies: + '@vue/compiler-dom': 3.5.12 + '@vue/shared': 3.5.12 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/devtools-api@6.6.4': {} + + '@vue/language-core@1.8.27(typescript@5.3.3)': + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.3.3 + + '@vue/reactivity@3.5.12': + dependencies: + '@vue/shared': 3.5.12 + + '@vue/runtime-core@3.5.12': + dependencies: + '@vue/reactivity': 3.5.12 + '@vue/shared': 3.5.12 + + '@vue/runtime-dom@3.5.12': + dependencies: + '@vue/reactivity': 3.5.12 + '@vue/runtime-core': 3.5.12 + '@vue/shared': 3.5.12 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@vue/compiler-ssr': 3.5.12 + '@vue/shared': 3.5.12 + vue: 3.5.12(typescript@5.3.3) + + '@vue/shared@3.5.12': {} + + '@vue/shared@3.5.13': {} + + '@vueuse/core@10.11.1(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.1 + '@vueuse/shared': 10.11.1(vue@3.5.12(typescript@5.3.3)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/core@9.13.0(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.5.12(typescript@5.3.3)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@10.11.1': {} + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@10.11.1(vue@3.5.12(typescript@5.3.3))': + dependencies: + vue-demi: 0.14.10(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/shared@9.13.0(vue@3.5.12(typescript@5.3.3))': + dependencies: + vue-demi: 0.14.10(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-url: 1.2.4 + lodash.throttle: 4.1.1 + nanoid: 3.3.8 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + prismjs: 1.29.0 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@types/event-emitter': 0.3.5 + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + dom7: 3.0.0 + event-emitter: 0.3.5 + html-void-elements: 2.0.1 + i18next: 20.6.1 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.8 + scroll-into-view-if-needed: 2.2.31 + slate: 0.72.8 + slate-history: 0.66.0(slate@0.72.8) + snabbdom: 3.6.2 + + '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.12(typescript@5.3.3))': + dependencies: + '@wangeditor/editor': 5.1.23 + vue: 3.5.12(typescript@5.3.3) + + '@wangeditor/editor@5.1.23': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.8 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + nanoid: 3.3.8 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.foreach: 4.5.0 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.8)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + nanoid: 3.3.8 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@xmldom/xmldom@0.8.10': {} + + '@zxcvbn-ts/core@3.0.4': + dependencies: + fastest-levenshtein: 1.0.16 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + ace-builds@1.39.1: {} + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + aes-decrypter@3.1.3: + dependencies: + '@babel/runtime': 7.26.0 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + pkcs7: 1.0.4 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + animate.css@4.1.1: {} + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@2.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@2.2.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-ify@1.0.0: {} + + array-move@4.0.0: {} + + array-union@2.1.0: {} + + astral-regex@2.0.0: {} + + async-validator@4.2.5: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + autolinker@3.16.2: + dependencies: + tslib: 2.8.1 + + autoprefixer@10.4.20(postcss@8.4.49): + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001684 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + axios@0.26.1(debug@4.3.7): + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + transitivePeerDependencies: + - debug + + axios@1.7.8: + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + benz-amr-recorder@1.1.5: + dependencies: + benz-recorderjs: 1.0.5 + + benz-recorderjs@1.0.5: {} + + binary-extensions@2.3.0: {} + + boolbase@1.0.0: {} + + bpmn-js-properties-panel@5.23.0(@bpmn-io/properties-panel@3.25.0(@lezer/common@1.2.3))(bpmn-js@17.11.1)(camunda-bpmn-js-behaviors@1.7.2(bpmn-js@17.11.1)(camunda-bpmn-moddle@7.0.1)(zeebe-bpmn-moddle@1.7.0))(diagram-js@12.8.1): + dependencies: + '@bpmn-io/extract-process-variables': 0.8.0 + '@bpmn-io/properties-panel': 3.25.0(@lezer/common@1.2.3) + array-move: 4.0.0 + bpmn-js: 17.11.1 + camunda-bpmn-js-behaviors: 1.7.2(bpmn-js@17.11.1)(camunda-bpmn-moddle@7.0.1)(zeebe-bpmn-moddle@1.7.0) + diagram-js: 12.8.1 + ids: 1.0.5 + min-dash: 4.2.2 + min-dom: 4.2.1 + + bpmn-js-token-simulation@0.36.2: + dependencies: + inherits-browser: 0.1.0 + min-dash: 4.2.2 + min-dom: 4.2.1 + randomcolor: 0.6.2 + + bpmn-js@17.11.1: + dependencies: + bpmn-moddle: 8.1.0 + diagram-js: 14.11.3 + diagram-js-direct-editing: 3.2.0(diagram-js@14.11.3) + ids: 1.0.5 + inherits-browser: 0.1.0 + min-dash: 4.2.2 + min-dom: 4.2.1 + tiny-svg: 3.1.3 + + bpmn-moddle@8.1.0: + dependencies: + min-dash: 4.2.2 + moddle: 6.2.3 + moddle-xml: 10.1.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist-to-esbuild@2.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + meow: 13.2.0 + + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001684 + electron-to-chromium: 1.5.67 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + + buffer-from@1.1.2: {} + + cac@6.7.14: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camunda-bpmn-js-behaviors@1.7.2(bpmn-js@17.11.1)(camunda-bpmn-moddle@7.0.1)(zeebe-bpmn-moddle@1.7.0): + dependencies: + bpmn-js: 17.11.1 + camunda-bpmn-moddle: 7.0.1 + ids: 1.0.5 + min-dash: 4.2.2 + zeebe-bpmn-moddle: 1.7.0 + + camunda-bpmn-moddle@7.0.1: {} + + caniuse-lite@1.0.30001684: {} + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0-rc.12: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.2.1 + parse5-htmlparser2-tree-adapter: 7.1.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + + classnames@2.5.1: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + codemirror@6.65.7: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + common-tags@1.8.2: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + component-event@0.2.1: {} + + compute-scroll-into-view@1.0.20: {} + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + consola@3.2.3: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + core-js-compat@3.39.0: + dependencies: + browserslist: 4.24.2 + + core-js-pure@3.39.0: {} + + core-js@3.39.0: {} + + cosmiconfig-typescript-loader@5.1.0(@types/node@20.17.9)(cosmiconfig@9.0.0(typescript@5.3.3))(typescript@5.3.3): + dependencies: + '@types/node': 20.17.9 + cosmiconfig: 9.0.0(typescript@5.3.3) + jiti: 1.21.6 + typescript: 5.3.3 + + cosmiconfig@9.0.0(typescript@5.3.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.3.3 + + crelt@1.0.6: {} + + cropperjs@1.6.2: {} + + cross-fetch@3.1.8: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + css-functions-list@3.2.3: {} + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-tree@3.0.1: + dependencies: + mdn-data: 2.12.1 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + csstype@3.1.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-flextree@2.1.2: + dependencies: + d3-hierarchy: 1.1.9 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@1.1.9: {} + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + dargs@8.1.0: {} + + dayjs@1.11.13: {} + + de-indent@1.0.2: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + deep-is@0.1.4: {} + + default-passive-events@2.0.0: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + defu@6.1.4: {} + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + + delayed-stream@1.0.0: {} + + destr@2.0.3: {} + + detect-libc@1.0.3: + optional: true + + diagram-js-direct-editing@3.2.0(diagram-js@14.11.3): + dependencies: + diagram-js: 14.11.3 + min-dash: 4.2.2 + min-dom: 4.2.1 + + diagram-js@12.8.1: + dependencies: + '@bpmn-io/diagram-js-ui': 0.2.3 + clsx: 2.1.1 + didi: 9.0.2 + hammerjs: 2.0.8 + inherits-browser: 0.1.0 + min-dash: 4.2.2 + min-dom: 4.2.1 + object-refs: 0.3.0 + path-intersection: 2.2.1 + tiny-svg: 3.1.3 + + diagram-js@14.11.3: + dependencies: + '@bpmn-io/diagram-js-ui': 0.2.3 + clsx: 2.1.1 + didi: 10.2.2 + inherits-browser: 0.1.0 + min-dash: 4.2.2 + min-dom: 4.2.1 + object-refs: 0.4.0 + path-intersection: 3.1.0 + tiny-svg: 3.1.3 + + didi@10.2.2: {} + + didi@9.0.2: {} + + dijkstrajs@1.0.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + dom-walk@0.1.2: {} + + dom7@3.0.0: + dependencies: + ssr-window: 3.0.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domify@1.4.2: {} + + domify@2.0.0: {} + + dompurify@3.2.1: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + driver.js@1.3.1: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + echarts-wordcloud@2.1.0(echarts@5.5.1): + dependencies: + echarts: 5.5.1 + + echarts@5.5.1: + dependencies: + tslib: 2.3.0 + zrender: 5.6.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.67: {} + + element-plus@2.9.1(vue@3.5.12(typescript@5.3.3)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.5.12(typescript@5.3.3)) + '@floating-ui/dom': 1.6.12 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.13 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.5.12(typescript@5.3.3)) + async-validator: 4.2.5 + dayjs: 1.11.13 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.12(typescript@5.3.3) + transitivePeerDependencies: + - '@vue/composition-api' + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@1.5.4: {} + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + esbuild@0.19.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@9.1.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-define-config@2.1.0: {} + + eslint-plugin-prettier@5.2.1(@types/eslint@8.56.12)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.1): + dependencies: + eslint: 8.57.1 + prettier: 3.4.1 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + optionalDependencies: + '@types/eslint': 8.56.12 + eslint-config-prettier: 9.1.0(eslint@8.57.1) + + eslint-plugin-vue@9.31.0(eslint@8.57.1): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + eslint: 8.57.1 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.6.3 + vue-eslint-parser: 9.4.3(eslint@8.57.1) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.7 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + espree@9.6.1: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + eventemitter3@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + ext@1.7.0: + dependencies: + type: 2.7.3 + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.3: {} + + fast-xml-parser@4.5.0: + dependencies: + strnum: 1.0.5 + + fastest-levenshtein@1.0.16: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + feelers@1.4.0: + dependencies: + '@bpmn-io/cm-theme': 0.1.0-alpha.2 + '@bpmn-io/feel-lint': 1.3.1 + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/commands': 6.7.1 + '@codemirror/language': 6.10.6 + '@codemirror/lint': 6.8.4 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + '@lezer/markdown': 1.3.2 + feelin: 3.2.0 + lezer-feel: 1.4.0 + min-dom: 5.1.1 + + feelin@3.2.0: + dependencies: + '@lezer/lr': 1.4.2 + lezer-feel: 1.4.0 + luxon: 3.5.0 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-entry-cache@9.1.0: + dependencies: + flat-cache: 5.0.0 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat-cache@5.0.0: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + focus-trap@7.6.2: + dependencies: + tabbable: 6.2.0 + + follow-redirects@1.15.9(debug@4.3.7): + optionalDependencies: + debug: 4.3.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fraction.js@4.3.7: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-stream@8.0.1: {} + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + global@4.4.0: + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globjoin@0.1.4: {} + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + hammerjs@2.0.8: {} + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + highlight.js@11.10.0: {} + + htm@3.1.1: {} + + html-tags@3.3.1: {} + + html-void-elements@2.0.1: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + human-signals@5.0.0: {} + + i18next@20.6.1: + dependencies: + '@babel/runtime': 7.26.0 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ids@1.0.5: {} + + ignore@5.3.2: {} + + ignore@6.0.2: {} + + immer@9.0.21: {} + + immutable@5.0.3: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + individual@2.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits-browser@0.1.0: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + internmap@2.0.3: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-function@1.0.2: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hotkey@0.2.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-object@5.0.0: {} + + is-stream@3.0.0: {} + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-url@1.2.4: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + javascript-natural-sort@0.7.1: {} + + jiti@1.21.6: {} + + jiti@2.4.2: {} + + jmespath@0.16.0: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsencrypt@3.3.2: {} + + jsesc@3.0.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-source-map@0.6.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.14.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.3 + + jsoneditor@9.10.5: + dependencies: + ace-builds: 1.39.1 + ajv: 6.12.6 + javascript-natural-sort: 0.7.1 + jmespath: 0.16.0 + json-source-map: 0.6.1 + jsonrepair: 3.1.0 + mobius1-selectr: 2.4.13 + picomodal: 3.0.0 + vanilla-picker: 2.12.3 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonrepair@3.1.0: {} + + katex@0.16.11: + dependencies: + commander: 8.3.0 + + keycode@2.2.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + known-css-properties@0.35.0: {} + + kolorist@1.8.0: {} + + lang-feel@2.2.0: + dependencies: + '@codemirror/autocomplete': 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + '@codemirror/language': 6.10.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.35.0 + '@lezer/common': 1.2.3 + lezer-feel: 1.4.0 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lezer-feel@1.4.0: + dependencies: + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + min-dash: 4.2.2 + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + lint-staged@15.2.10: + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + debug: 4.3.7 + execa: 8.0.1 + lilconfig: 3.1.2 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.5.1 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + local-pkg@0.4.3: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + + lodash.foreach@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.throttle@4.1.1: {} + + lodash.toarray@4.4.0: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + loglevel-colored-level-prefix@1.0.0: + dependencies: + chalk: 1.1.3 + loglevel: 1.9.2 + + loglevel@1.9.2: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + luxon@3.5.0: {} + + m3u8-parser@4.8.0: + dependencies: + '@babel/runtime': 7.26.0 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + + magic-string@0.30.14: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + markmap-common@0.16.0: + dependencies: + '@babel/runtime': 7.26.0 + '@gera2ld/jsx-dom': 2.2.2 + npm2url: 0.2.4 + + markmap-html-parser@0.16.1(markmap-common@0.16.0): + dependencies: + '@babel/runtime': 7.26.0 + cheerio: 1.0.0-rc.12 + markmap-common: 0.16.0 + + markmap-lib@0.16.1(markmap-common@0.16.0): + dependencies: + '@babel/runtime': 7.26.0 + highlight.js: 11.10.0 + js-yaml: 4.1.0 + katex: 0.16.11 + markmap-common: 0.16.0 + markmap-html-parser: 0.16.1(markmap-common@0.16.0) + markmap-view: 0.16.0(markmap-common@0.16.0) + prismjs: 1.29.0 + remarkable: 2.0.1 + remarkable-katex: 1.2.1 + + markmap-toolbar@0.17.2(markmap-common@0.16.0): + dependencies: + '@babel/runtime': 7.26.0 + '@gera2ld/jsx-dom': 2.2.2 + markmap-common: 0.16.0 + + markmap-view@0.16.0(markmap-common@0.16.0): + dependencies: + '@babel/runtime': 7.26.0 + '@gera2ld/jsx-dom': 2.2.2 + '@types/d3': 7.4.3 + d3: 7.9.0 + d3-flextree: 2.1.2 + markmap-common: 0.16.0 + + mathml-tag-names@2.1.3: {} + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + mdn-data@2.12.1: {} + + mdurl@2.0.0: {} + + memoize-one@6.0.0: {} + + meow@12.1.1: {} + + meow@13.2.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-match@1.0.2: + dependencies: + wildcard: 1.1.2 + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + min-dash@4.2.2: {} + + min-document@2.19.0: + dependencies: + dom-walk: 0.1.2 + + min-dom@4.2.1: + dependencies: + component-event: 0.2.1 + domify: 1.4.2 + min-dash: 4.2.2 + + min-dom@5.1.1: + dependencies: + domify: 2.0.0 + min-dash: 4.2.2 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mitt@3.0.1: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + mobius1-selectr@2.4.13: {} + + moddle-xml@10.1.0: + dependencies: + min-dash: 4.2.2 + moddle: 6.2.3 + saxen: 8.1.2 + + moddle@6.2.3: + dependencies: + min-dash: 4.2.2 + + mpd-parser@0.22.1: + dependencies: + '@babel/runtime': 7.26.0 + '@videojs/vhs-utils': 3.0.5 + '@xmldom/xmldom': 0.8.10 + global: 4.4.0 + + mrmime@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.3.1: {} + + mux.js@6.0.1: + dependencies: + '@babel/runtime': 7.26.0 + global: 4.4.0 + + namespace-emitter@2.0.1: {} + + nanoid@3.3.8: {} + + natural-compare@1.4.0: {} + + next-tick@1.1.0: {} + + node-addon-api@7.1.1: + optional: true + + node-fetch-native@1.6.4: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-html-parser@7.0.1: + dependencies: + css-select: 5.1.0 + he: 1.2.0 + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-wheel-es@1.2.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npm2url@0.2.4: {} + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-inspect@1.13.3: {} + + object-refs@0.3.0: {} + + object-refs@0.4.0: {} + + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@0.2.5: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.2.1 + + parse5@7.2.1: + dependencies: + entities: 4.5.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-intersection@2.2.1: {} + + path-intersection@3.1.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + picomodal@3.0.0: {} + + pidtree@0.6.0: {} + + pinia-plugin-persistedstate@3.2.3(pinia@2.2.8(typescript@5.3.3)(vue@3.5.12(typescript@5.3.3))): + dependencies: + pinia: 2.2.8(typescript@5.3.3)(vue@3.5.12(typescript@5.3.3)) + + pinia@2.2.8(typescript@5.3.3)(vue@3.5.12(typescript@5.3.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.12(typescript@5.3.3) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.3.3)) + optionalDependencies: + typescript: 5.3.3 + + pkcs7@1.0.4: + dependencies: + '@babel/runtime': 7.26.0 + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + pngjs@5.0.0: {} + + postcss-html@1.7.0: + dependencies: + htmlparser2: 8.0.2 + js-tokens: 9.0.1 + postcss: 8.4.49 + postcss-safe-parser: 6.0.0(postcss@8.4.49) + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@6.0.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-safe-parser@7.0.1(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-scss@4.0.9(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.0.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@8.0.2(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + preact@10.25.0: {} + + prelude-ls@1.2.1: {} + + prettier-eslint@16.3.0: + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.3.3) + common-tags: 1.8.2 + dlv: 1.1.3 + eslint: 8.57.1 + indent-string: 4.0.0 + lodash.merge: 4.6.2 + loglevel-colored-level-prefix: 1.0.0 + prettier: 3.4.1 + pretty-format: 29.7.0 + require-relative: 0.8.7 + typescript: 5.3.3 + vue-eslint-parser: 9.4.3(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.4.1: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + prismjs@1.29.0: {} + + process@0.11.10: {} + + progress@2.0.3: {} + + proxy-from-env@1.1.0: {} + + punycode.js@2.3.1: {} + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qs@6.13.1: + dependencies: + side-channel: 1.0.6 + + quansync@0.2.8: {} + + queue-microtask@1.2.3: {} + + randomcolor@0.6.2: {} + + rd@2.0.1: + dependencies: + '@types/node': 10.17.60 + + react-is@18.3.1: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.0.2: {} + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.26.0 + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + remarkable-katex@1.2.1: {} + + remarkable@2.0.1: + dependencies: + argparse: 1.0.10 + autolinker: 3.16.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@2.0.0: {} + + require-relative@0.8.7: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + robust-predicates@3.0.2: {} + + rollup-plugin-purge-icons@0.10.0: + dependencies: + '@purge-icons/core': 0.10.0 + '@purge-icons/generated': 0.10.0 + transitivePeerDependencies: + - encoding + - supports-color + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.27.4: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.27.4 + '@rollup/rollup-android-arm64': 4.27.4 + '@rollup/rollup-darwin-arm64': 4.27.4 + '@rollup/rollup-darwin-x64': 4.27.4 + '@rollup/rollup-freebsd-arm64': 4.27.4 + '@rollup/rollup-freebsd-x64': 4.27.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.4 + '@rollup/rollup-linux-arm-musleabihf': 4.27.4 + '@rollup/rollup-linux-arm64-gnu': 4.27.4 + '@rollup/rollup-linux-arm64-musl': 4.27.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.4 + '@rollup/rollup-linux-riscv64-gnu': 4.27.4 + '@rollup/rollup-linux-s390x-gnu': 4.27.4 + '@rollup/rollup-linux-x64-gnu': 4.27.4 + '@rollup/rollup-linux-x64-musl': 4.27.4 + '@rollup/rollup-win32-arm64-msvc': 4.27.4 + '@rollup/rollup-win32-ia32-msvc': 4.27.4 + '@rollup/rollup-win32-x64-msvc': 4.27.4 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rust-result@1.0.0: + dependencies: + individual: 2.0.0 + + rw@1.3.3: {} + + safe-json-parse@4.0.0: + dependencies: + rust-result: 1.0.0 + + safer-buffer@2.1.2: {} + + sass@1.81.0: + dependencies: + chokidar: 4.0.1 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + + sax@1.4.1: {} + + saxen@8.1.2: {} + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.3 + + signal-exit@4.1.0: {} + + signature_pad@3.0.0-beta.4: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + slash@3.0.0: {} + + slate-history@0.66.0(slate@0.72.8): + dependencies: + is-plain-object: 5.0.0 + slate: 0.72.8 + + slate@0.72.8: + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + snabbdom@3.6.2: {} + + sortablejs@1.14.0: {} + + sortablejs@1.15.6: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + ssr-window@3.0.0: {} + + steady-xml@0.1.0: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + strnum@1.0.5: {} + + style-mod@4.1.2: {} + + stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.11.0(typescript@5.3.3)): + dependencies: + postcss-html: 1.7.0 + stylelint: 16.11.0(typescript@5.3.3) + + stylelint-config-recommended@14.0.1(stylelint@16.11.0(typescript@5.3.3)): + dependencies: + stylelint: 16.11.0(typescript@5.3.3) + + stylelint-config-standard@36.0.1(stylelint@16.11.0(typescript@5.3.3)): + dependencies: + stylelint: 16.11.0(typescript@5.3.3) + stylelint-config-recommended: 14.0.1(stylelint@16.11.0(typescript@5.3.3)) + + stylelint-order@6.0.4(stylelint@16.11.0(typescript@5.3.3)): + dependencies: + postcss: 8.4.49 + postcss-sorting: 8.0.2(postcss@8.4.49) + stylelint: 16.11.0(typescript@5.3.3) + + stylelint@16.11.0(typescript@5.3.3): + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) + '@dual-bundle/import-meta-resolve': 4.1.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.3.3) + css-functions-list: 3.2.3 + css-tree: 3.0.1 + debug: 4.3.7 + fast-glob: 3.3.2 + fastest-levenshtein: 1.0.16 + file-entry-cache: 9.1.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 6.0.2 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.35.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.1(postcss@8.4.49) + postcss-selector-parser: 7.0.0 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + supports-hyperlinks: 3.1.0 + svg-tags: 1.0.0 + table: 6.8.2 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + supports-color@2.0.0: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + + synckit@0.8.8: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + systemjs@6.15.1: {} + + tabbable@6.2.0: {} + + table@6.8.2: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + terser@5.36.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-extensions@2.4.0: {} + + text-table@0.2.0: {} + + through@2.3.8: {} + + tiny-svg@3.1.3: {} + + tiny-warning@1.0.3: {} + + tinyexec@0.3.1: {} + + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + totalist@3.0.1: {} + + tr46@0.0.3: {} + + ts-api-utils@1.4.3(typescript@5.3.3): + dependencies: + typescript: 5.3.3 + + ts-api-utils@2.0.1(typescript@5.3.3): + dependencies: + typescript: 5.3.3 + + tslib@2.3.0: {} + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type@2.7.3: {} + + typescript@5.3.3: {} + + uc.micro@2.1.0: {} + + ufo@1.5.4: {} + + unconfig@0.3.13: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + jiti: 1.21.6 + + unconfig@7.3.1: + dependencies: + '@quansync/fs': 0.1.1 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.8 + + undici-types@6.19.8: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unicorn-magic@0.1.0: {} + + unimport@3.14.2(rollup@4.27.4): + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + acorn: 8.14.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 0.5.1 + magic-string: 0.30.14 + mlly: 1.7.3 + pathe: 1.1.2 + picomatch: 4.0.2 + pkg-types: 1.2.1 + scule: 1.3.0 + strip-literal: 2.1.1 + tinyglobby: 0.2.10 + unplugin: 1.16.0 + transitivePeerDependencies: + - rollup + + universalify@2.0.1: {} + + unocss@0.58.9(postcss@8.4.49)(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + '@unocss/astro': 0.58.9(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + '@unocss/cli': 0.58.9(rollup@4.27.4) + '@unocss/core': 0.58.9 + '@unocss/extractor-arbitrary-variants': 0.58.9 + '@unocss/postcss': 0.58.9(postcss@8.4.49) + '@unocss/preset-attributify': 0.58.9 + '@unocss/preset-icons': 0.58.9 + '@unocss/preset-mini': 0.58.9 + '@unocss/preset-tagify': 0.58.9 + '@unocss/preset-typography': 0.58.9 + '@unocss/preset-uno': 0.58.9 + '@unocss/preset-web-fonts': 0.58.9 + '@unocss/preset-wind': 0.58.9 + '@unocss/reset': 0.58.9 + '@unocss/transformer-attributify-jsx': 0.58.9 + '@unocss/transformer-attributify-jsx-babel': 0.58.9 + '@unocss/transformer-compile-class': 0.58.9 + '@unocss/transformer-directives': 0.58.9 + '@unocss/transformer-variant-group': 0.58.9 + '@unocss/vite': 0.58.9(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)) + optionalDependencies: + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unplugin-auto-import@0.16.7(@vueuse/core@10.11.1(vue@3.5.12(typescript@5.3.3)))(rollup@4.27.4): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + fast-glob: 3.3.2 + local-pkg: 0.5.1 + magic-string: 0.30.14 + minimatch: 9.0.5 + unimport: 3.14.2(rollup@4.27.4) + unplugin: 1.16.0 + optionalDependencies: + '@vueuse/core': 10.11.1(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - rollup + + unplugin-element-plus@0.8.0(rollup@4.27.4): + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + es-module-lexer: 1.5.4 + magic-string: 0.30.14 + unplugin: 1.16.0 + transitivePeerDependencies: + - rollup + + unplugin-vue-components@0.25.2(@babel/parser@7.26.2)(rollup@4.27.4)(vue@3.5.12(typescript@5.3.3)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + chokidar: 3.6.0 + debug: 4.3.7 + fast-glob: 3.3.2 + local-pkg: 0.4.3 + magic-string: 0.30.14 + minimatch: 9.0.5 + resolve: 1.22.8 + unplugin: 1.16.0 + vue: 3.5.12(typescript@5.3.3) + optionalDependencies: + '@babel/parser': 7.26.2 + transitivePeerDependencies: + - rollup + - supports-color + + unplugin@1.16.0: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-toolkit@2.2.5: {} + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.1 + + util-deprecate@1.0.2: {} + + uuid@10.0.0: {} + + v3-jsoneditor@0.0.6: + dependencies: + jsoneditor: 9.10.5 + + vanilla-picker@2.12.3: + dependencies: + '@sphinxxxx/color-conversion': 2.2.2 + + video.js@7.21.6: + dependencies: + '@babel/runtime': 7.26.0 + '@videojs/http-streaming': 2.16.3(video.js@7.21.6) + '@videojs/vhs-utils': 3.0.5 + '@videojs/xhr': 2.6.0 + aes-decrypter: 3.1.3 + global: 4.4.0 + keycode: 2.2.1 + m3u8-parser: 4.8.0 + mpd-parser: 0.22.1 + mux.js: 6.0.1 + safe-json-parse: 4.0.0 + videojs-font: 3.2.0 + videojs-vtt.js: 0.15.5 + + videojs-font@3.2.0: {} + + videojs-vtt.js@0.15.5: + dependencies: + global: 4.4.0 + + vite-plugin-compression@0.5.1(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + chalk: 4.1.2 + debug: 4.3.7 + fs-extra: 10.1.0 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + vite-plugin-ejs@1.7.0(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + ejs: 3.1.10 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + '@rollup/pluginutils': 4.2.1 + '@types/eslint': 8.56.12 + eslint: 8.57.1 + rollup: 2.79.2 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + + vite-plugin-progress@0.0.7(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + picocolors: 1.1.1 + progress: 2.0.3 + rd: 2.0.1 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + + vite-plugin-purge-icons@0.10.0(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + '@purge-icons/core': 0.10.0 + '@purge-icons/generated': 0.10.0 + rollup-plugin-purge-icons: 0.10.0 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - encoding + - supports-color + + vite-plugin-svg-icons-ng@1.3.1(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + fast-glob: 3.3.3 + fs-extra: 11.3.0 + node-html-parser: 7.0.1 + pathe: 2.0.3 + svgo: 3.3.2 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + + vite-plugin-top-level-await@1.4.4(rollup@4.27.4)(vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0)): + dependencies: + '@rollup/plugin-virtual': 3.0.2(rollup@4.27.4) + '@swc/core': 1.9.3 + uuid: 10.0.0 + vite: 5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0) + transitivePeerDependencies: + - '@swc/helpers' + - rollup + + vite@5.1.4(@types/node@20.17.9)(sass@1.81.0)(terser@5.36.0): + dependencies: + esbuild: 0.19.12 + postcss: 8.4.49 + rollup: 4.27.4 + optionalDependencies: + '@types/node': 20.17.9 + fsevents: 2.3.3 + sass: 1.81.0 + terser: 5.36.0 + + vue-demi@0.14.10(vue@3.5.12(typescript@5.3.3)): + dependencies: + vue: 3.5.12(typescript@5.3.3) + + vue-dompurify-html@4.1.4(vue@3.5.12(typescript@5.3.3)): + dependencies: + dompurify: 3.2.1 + vue: 3.5.12(typescript@5.3.3) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + + vue-eslint-parser@9.4.3(eslint@8.57.1): + dependencies: + debug: 4.3.7 + eslint: 8.57.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + vue-i18n@9.10.2(vue@3.5.12(typescript@5.3.3)): + dependencies: + '@intlify/core-base': 9.10.2 + '@intlify/shared': 9.10.2 + '@vue/devtools-api': 6.6.4 + vue: 3.5.12(typescript@5.3.3) + + vue-router@4.4.5(vue@3.5.12(typescript@5.3.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.12(typescript@5.3.3) + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.27(typescript@5.3.3): + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.3.3) + semver: 7.6.3 + typescript: 5.3.3 + + vue-types@5.1.3(vue@3.5.12(typescript@5.3.3)): + dependencies: + is-plain-object: 5.0.0 + optionalDependencies: + vue: 3.5.12(typescript@5.3.3) + + vue3-signature@0.2.4(vue@3.5.12(typescript@5.3.3)): + dependencies: + default-passive-events: 2.0.0 + signature_pad: 3.0.0-beta.4 + vue: 3.5.12(typescript@5.3.3) + + vue@3.5.12(typescript@5.3.3): + dependencies: + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-sfc': 3.5.12 + '@vue/runtime-dom': 3.5.12 + '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.3.3)) + '@vue/shared': 3.5.12 + optionalDependencies: + typescript: 5.3.3 + + vuedraggable@4.1.0(vue@3.5.12(typescript@5.3.3)): + dependencies: + sortablejs: 1.14.0 + vue: 3.5.12(typescript@5.3.3) + + w3c-keyname@2.2.8: {} + + wangeditor@4.7.15: + dependencies: + '@babel/runtime': 7.26.0 + '@babel/runtime-corejs3': 7.26.0 + tslib: 2.8.1 + + web-storage-cache@1.1.1: {} + + webidl-conversions@3.0.1: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-module@2.0.1: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wildcard@1.1.2: {} + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + xml-js@1.6.11: + dependencies: + sax: 1.4.1 + + xml-name-validator@4.0.0: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-eslint-parser@1.2.3: + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.6.1 + + yaml@2.5.1: {} + + yaml@2.6.1: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zeebe-bpmn-moddle@1.7.0: {} + + zrender@5.6.0: + dependencies: + tslib: 2.3.0 diff --git a/web/postcss.config.js b/web/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/web/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/web/prettier.config.js b/web/prettier.config.js new file mode 100644 index 0000000..b014bbf --- /dev/null +++ b/web/prettier.config.js @@ -0,0 +1,22 @@ +module.exports = { + printWidth: 100, // 每行代码长度(默认80) + tabWidth: 2, // 每个tab相当于多少个空格(默认2)ab进行缩进(默认false) + useTabs: false, // 是否使用tab + semi: false, // 声明结尾使用分号(默认true) + vueIndentScriptAndStyle: false, + singleQuote: true, // 使用单引号(默认false) + quoteProps: 'as-needed', + bracketSpacing: true, // 对象字面量的大括号间使用空格(默认true) + trailingComma: 'none', // 多行使用拖尾逗号(默认none) + jsxSingleQuote: false, + // 箭头函数参数括号 默认avoid 可选 avoid| always + // avoid 能省略括号的时候就省略 例如x => x + // always 总是有括号 + arrowParens: 'always', + insertPragma: false, + requirePragma: false, + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + endOfLine: 'auto', + rangeStart: 0 +} diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5a7de08267811feb034bb0c54ab38ca417731aab GIT binary patch literal 4286 zcmcJTdr*|u8OGm?f3Tad7j|KHxq~xpVq;A@HfgF7QY~O)Go9%q6O&2POq*#slbPnf zwzf$$rcG^ZYDE+@N@~3q7I49+L1DRyKt#F7{U!nn%U;+^j39aYobU7VmKqZ!%ltTJ zSayHU`<%1G3`F1^k7e(&;Z`VJu(?k;=T7X%N)jqMq!dMyZeDC3iF!z6rw+67kxV&jDKh*=XMMH7BzC%0ZZgW^F*GR;m`LJ8Nxh;MnV_2 zo#Aeu7~L8}V>!_RD+rBki)NV^cA^7!L1e&FY)JDI!(TGDXW-mnR@`bh?a0EnGI=P9 zy>>$Z2m|CjGIt$Z+!8}0*)asCbu>FBggr}a!3yv^PwX`@<_>sE4e5ZqN9V>rmTRUF zbU(T+S`C+7@m92s-#UA`Fo4_`PSqdlNi_8Le1D!YO<=@vm4O z$%$c4iIKfW(ZR8ZbU?mO?%glC2lvBQG7OL4g2E>3CE|D(x!lD@#>|2OxWk0scT#t^ zS6+JEa8?X~2srB%*M&`SJoL{S_(0yf@}t;S27g&Z0Hpg)z+Z89e{|ZcvsAWtlnyU! zrooK~1ov;@oE;J_FsSek>;)U+*tyTdzLW6F6!^;ZVSuI_-@Jq7m6vJu4@{*G56tUW zpGZTSVx!<}kX-N$2;dyp7%$QPemsxlS=d(&zn~%_Fjb*XpK`!o{mnXPeP))mj8zZ^lWb$NF4{~3AH+q%ce-ErK%W3!iN7WAAnu?S-NPqStq)-K z^r;$jQ1|uDpfTeToz0w~uIE_Ym=?0w^$yVAEIfqUV+#(N3e zk2~QhGcbJDsny&3bvhLwfBl_1IF%8kGpjCBvvt~9zrr8d9#JR!m$M(Jd}05>Eb4nd zJ`&DTz3>To1b>z3MIY{C28N5L>h#j;Kcx$R41YcR4PV_s^-rhhbVi8kGeYX7r!U!S zQoWp`s}X+Qa=*iY4)hJLtt9w=1?Lsv?f#1(Q9@*K9WgR|GWA#mr*$@egH|Q{flqJW zfn&Lc>e2!ND{_P?Q{22wTP^vKVHzF$V&C_+Q16C#BfNFp?VUHBP>oj2B zhz=UjK_mQU{=dKMNf%Wv_mX3|SB)O*b?E`FSmwIXFFL5s)z(Cu`t>S;|CO%wi8Gz> zcD{3+@uDaWG)hk4Wq*?l=C;AD68_*>&6hq4$5NbB{u8&riVPuS;Bxqt{>2%98FcW< z-UZpz{a%6r-kQ#JN!+2ZHi^e>j@Xfb z(FH3R_9nI5>KFImbdI(Z5j@?YYO33 z34gFFoDTl5j|!g{5?GNTRI+4*l?*4In&hHK`i1Yt`Ne(~9lZ9R?`G5acM|n*SGN8s znFXUbf8oK55?7tV%W!hALlXom0foB5=@9%tUGVsTz3@jvj0}t(u4OpB%*i{yd6`D*|GZP1pkYzYvxb4teMYa#Zj_Lo>g|rUJiD`FX%!C-Qg-g2Nw4TGLa#a|M&na z8A`8a_#|~g>R_v;>eddvKnJhy{!TWvy`7|kyQ1Zf^VxYMQp~8#D(_{d@N%#l^n?dP zJ>eOEc0bbbz}_Ep9p1mVhmnEN1LG{D9z=$tSMNjqf-V*rZoG@=pcx%l%Ab3d&aIih z8eE{+mp&i+1G+xk}WiODJh<6N)JDmfKzAKZd|2|w0ncYeRMI&V=sBLj;JI14`X znA}4Vday6K$fZk1`Dluh#aSF*>g2+Oy}Ud24Cm@=8E1fdP!-j*CXKqY;$HSP>1S?o zig|DLDt@t+^XG}oKAp^97_-1JPiEbH%mN~Xwb-w{LX;}_oG4M?Bhm>5iNXX9qIrUK L_}7DgzT)vecywrn literal 0 HcmV?d00001 diff --git a/web/public/logo.gif b/web/public/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdbd32c675f85af4ed57021ac0638a21a3c6cad3 GIT binary patch literal 6334 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 literal 0 HcmV?d00001 diff --git a/web/src/App.vue b/web/src/App.vue new file mode 100644 index 0000000..7407d97 --- /dev/null +++ b/web/src/App.vue @@ -0,0 +1,57 @@ + + + diff --git a/web/src/api/bpm/category/index.ts b/web/src/api/bpm/category/index.ts new file mode 100644 index 0000000..1854f31 --- /dev/null +++ b/web/src/api/bpm/category/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +// BPM 流程分类 VO +export interface CategoryVO { + id: number // 分类编号 + name: string // 分类名 + code: string // 分类标志 + status: number // 分类状态 + sort: number // 分类排序 +} + +// BPM 流程分类 API +export const CategoryApi = { + // 查询流程分类分页 + getCategoryPage: async (params: any) => { + return await request.get({ url: `/bpm/category/page`, params }) + }, + + // 查询流程分类列表 + getCategorySimpleList: async () => { + return await request.get({ url: `/bpm/category/simple-list` }) + }, + + // 查询流程分类详情 + getCategory: async (id: number) => { + return await request.get({ url: `/bpm/category/get?id=` + id }) + }, + + // 新增流程分类 + createCategory: async (data: CategoryVO) => { + return await request.post({ url: `/bpm/category/create`, data }) + }, + + // 修改流程分类 + updateCategory: async (data: CategoryVO) => { + return await request.put({ url: `/bpm/category/update`, data }) + }, + + // 批量修改流程分类的排序 + updateCategorySortBatch: async (ids: number[]) => { + return await request.put({ + url: `/bpm/category/update-sort-batch`, + params: { + ids: ids.join(',') + } + }) + }, + + // 删除流程分类 + deleteCategory: async (id: number) => { + return await request.delete({ url: `/bpm/category/delete?id=` + id }) + } +} diff --git a/web/src/api/bpm/definition/index.ts b/web/src/api/bpm/definition/index.ts new file mode 100644 index 0000000..c917787 --- /dev/null +++ b/web/src/api/bpm/definition/index.ts @@ -0,0 +1,28 @@ +import request from '@/config/axios' + +export const getProcessDefinition = async (id?: string, key?: string) => { + return await request.get({ + url: '/bpm/process-definition/get', + params: { id, key } + }) +} + +export const getProcessDefinitionPage = async (params) => { + return await request.get({ + url: '/bpm/process-definition/page', + params + }) +} + +export const getProcessDefinitionList = async (params) => { + return await request.get({ + url: '/bpm/process-definition/list', + params + }) +} + +export const getSimpleProcessDefinitionList = async () => { + return await request.get({ + url: '/bpm/process-definition/simple-list' + }) +} diff --git a/web/src/api/bpm/form/index.ts b/web/src/api/bpm/form/index.ts new file mode 100644 index 0000000..7fce11f --- /dev/null +++ b/web/src/api/bpm/form/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +export type FormVO = { + id: number + name: string + conf: string + fields: string[] + status: number + remark: string + createTime: string +} + +// 创建工作流的表单定义 +export const createForm = async (data: FormVO) => { + return await request.post({ + url: '/bpm/form/create', + data: data + }) +} + +// 更新工作流的表单定义 +export const updateForm = async (data: FormVO) => { + return await request.put({ + url: '/bpm/form/update', + data: data + }) +} + +// 删除工作流的表单定义 +export const deleteForm = async (id: number) => { + return await request.delete({ + url: '/bpm/form/delete?id=' + id + }) +} + +// 获得工作流的表单定义 +export const getForm = async (id: number) => { + return await request.get({ + url: '/bpm/form/get?id=' + id + }) +} + +// 获得工作流的表单定义分页 +export const getFormPage = async (params) => { + return await request.get({ + url: '/bpm/form/page', + params + }) +} + +// 获得动态表单的精简列表 +export const getFormSimpleList = async () => { + return await request.get({ + url: '/bpm/form/simple-list' + }) +} diff --git a/web/src/api/bpm/leave/index.ts b/web/src/api/bpm/leave/index.ts new file mode 100644 index 0000000..4f374b2 --- /dev/null +++ b/web/src/api/bpm/leave/index.ts @@ -0,0 +1,27 @@ +import request from '@/config/axios' + +export type LeaveVO = { + id: number + status: number + type: number + reason: string + processInstanceId: string + startTime: string + endTime: string + createTime: string +} + +// 创建请假申请 +export const createLeave = async (data: LeaveVO) => { + return await request.post({ url: '/bpm/oa/leave/create', data: data }) +} + +// 获得请假申请 +export const getLeave = async (id: number) => { + return await request.get({ url: '/bpm/oa/leave/get?id=' + id }) +} + +// 获得请假申请分页 +export const getLeavePage = async (params: PageParam) => { + return await request.get({ url: '/bpm/oa/leave/page', params }) +} diff --git a/web/src/api/bpm/model/index.ts b/web/src/api/bpm/model/index.ts new file mode 100644 index 0000000..63b6af6 --- /dev/null +++ b/web/src/api/bpm/model/index.ts @@ -0,0 +1,78 @@ +import request from '@/config/axios' + +export type ProcessDefinitionVO = { + id: string + version: number + deploymentTIme: string + suspensionState: number + formType?: number +} + +export type ModelVO = { + id: number + formName: string + key: string + name: string + description: string + category: string + formType: number + formId: number + formCustomCreatePath: string + formCustomViewPath: string + processDefinition: ProcessDefinitionVO + status: number + remark: string + createTime: string + bpmnXml: string +} + +export const getModelList = async (name: string | undefined) => { + return await request.get({ url: '/bpm/model/list', params: { name } }) +} + +export const getModel = async (id: string) => { + return await request.get({ url: '/bpm/model/get?id=' + id }) +} + +export const updateModel = async (data: ModelVO) => { + return await request.put({ url: '/bpm/model/update', data: data }) +} + +// 批量修改流程分类的排序 +export const updateModelSortBatch = async (ids: number[]) => { + return await request.put({ + url: `/bpm/model/update-sort-batch`, + params: { + ids: ids.join(',') + } + }) +} + +export const updateModelBpmn = async (data: ModelVO) => { + return await request.put({ url: '/bpm/model/update-bpmn', data: data }) +} + +// 任务状态修改 +export const updateModelState = async (id: number, state: number) => { + const data = { + id: id, + state: state + } + return await request.put({ url: '/bpm/model/update-state', data: data }) +} + +export const createModel = async (data: ModelVO) => { + return await request.post({ url: '/bpm/model/create', data: data }) +} + +export const deleteModel = async (id: number) => { + return await request.delete({ url: '/bpm/model/delete?id=' + id }) +} + +export const deployModel = async (id: number) => { + return await request.post({ url: '/bpm/model/deploy?id=' + id }) +} + +export const cleanModel = async (id: number) => { + return await request.delete({ url: '/bpm/model/clean?id=' + id }) +} diff --git a/web/src/api/bpm/processExpression/index.ts b/web/src/api/bpm/processExpression/index.ts new file mode 100644 index 0000000..af6a737 --- /dev/null +++ b/web/src/api/bpm/processExpression/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +// BPM 流程表达式 VO +export interface ProcessExpressionVO { + id: number // 编号 + name: string // 表达式名字 + status: number // 表达式状态 + expression: string // 表达式 +} + +// BPM 流程表达式 API +export const ProcessExpressionApi = { + // 查询BPM 流程表达式分页 + getProcessExpressionPage: async (params: any) => { + return await request.get({ url: `/bpm/process-expression/page`, params }) + }, + + // 查询BPM 流程表达式详情 + getProcessExpression: async (id: number) => { + return await request.get({ url: `/bpm/process-expression/get?id=` + id }) + }, + + // 新增BPM 流程表达式 + createProcessExpression: async (data: ProcessExpressionVO) => { + return await request.post({ url: `/bpm/process-expression/create`, data }) + }, + + // 修改BPM 流程表达式 + updateProcessExpression: async (data: ProcessExpressionVO) => { + return await request.put({ url: `/bpm/process-expression/update`, data }) + }, + + // 删除BPM 流程表达式 + deleteProcessExpression: async (id: number) => { + return await request.delete({ url: `/bpm/process-expression/delete?id=` + id }) + }, + + // 导出BPM 流程表达式 Excel + exportProcessExpression: async (params) => { + return await request.download({ url: `/bpm/process-expression/export-excel`, params }) + } +} \ No newline at end of file diff --git a/web/src/api/bpm/processInstance/index.ts b/web/src/api/bpm/processInstance/index.ts new file mode 100644 index 0000000..06392bc --- /dev/null +++ b/web/src/api/bpm/processInstance/index.ts @@ -0,0 +1,109 @@ +import request from '@/config/axios' +import { ProcessDefinitionVO } from '@/api/bpm/model' +import { NodeType, CandidateStrategy } from '@/components/SimpleProcessDesignerV2/src/consts' +export type Task = { + id: string + name: string +} + +export type ProcessInstanceVO = { + id: number + name: string + processDefinitionId: string + category: string + result: number + tasks: Task[] + fields: string[] + status: number + remark: string + businessKey: string + createTime: string + endTime: string + processDefinition?: ProcessDefinitionVO +} + +// 用户信息 +export type User = { + id: number + nickname: string + avatar: string +} + +// 审批任务信息 +export type ApprovalTaskInfo = { + id: number + ownerUser: User + assigneeUser: User + status: number + reason: string + signPicUrl: string +} + +// 审批节点信息 +export type ApprovalNodeInfo = { + id: number + name: string + nodeType: NodeType + candidateStrategy?: CandidateStrategy + status: number + startTime?: Date + endTime?: Date + candidateUsers?: User[] + tasks: ApprovalTaskInfo[] +} + +export const getProcessInstanceMyPage = async (params: any) => { + return await request.get({ url: '/bpm/process-instance/my-page', params }) +} + +export const getProcessInstanceManagerPage = async (params: any) => { + return await request.get({ url: '/bpm/process-instance/manager-page', params }) +} + +export const createProcessInstance = async (data) => { + return await request.post({ url: '/bpm/process-instance/create', data: data }) +} + +export const cancelProcessInstanceByStartUser = async (id: number, reason: string) => { + const data = { + id: id, + reason: reason + } + return await request.delete({ url: '/bpm/process-instance/cancel-by-start-user', data: data }) +} + +export const cancelProcessInstanceByAdmin = async (id: number, reason: string) => { + const data = { + id: id, + reason: reason + } + return await request.delete({ url: '/bpm/process-instance/cancel-by-admin', data: data }) +} + +export const getProcessInstance = async (id: string) => { + return await request.get({ url: '/bpm/process-instance/get?id=' + id }) +} + +export const getProcessInstanceCopyPage = async (params: any) => { + return await request.get({ url: '/bpm/process-instance/copy/page', params }) +} + +// 获取审批详情 +export const getApprovalDetail = async (params: any) => { + return await request.get({ url: '/bpm/process-instance/get-approval-detail', params }) +} + +// 获取下一个执行的流程节点 +export const getNextApprovalNodes = async (params: any) => { + return await request.get({ url: '/bpm/process-instance/get-next-approval-nodes', params }) +} + +// 获取表单字段权限 +export const getFormFieldsPermission = async (params: any) => { + return await request.get({ url: '/bpm/process-instance/get-form-fields-permission', params }) +} + +// 获取流程实例的 BPMN 模型视图 +export const getProcessInstanceBpmnModelView = async (id: string) => { + return await request.get({ url: '/bpm/process-instance/get-bpmn-model-view?id=' + id }) +} diff --git a/web/src/api/bpm/processListener/index.ts b/web/src/api/bpm/processListener/index.ts new file mode 100644 index 0000000..dabaa47 --- /dev/null +++ b/web/src/api/bpm/processListener/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +// BPM 流程监听器 VO +export interface ProcessListenerVO { + id: number // 编号 + name: string // 监听器名字 + type: string // 监听器类型 + status: number // 监听器状态 + event: string // 监听事件 + valueType: string // 监听器值类型 + value: string // 监听器值 +} + +// BPM 流程监听器 API +export const ProcessListenerApi = { + // 查询流程监听器分页 + getProcessListenerPage: async (params: any) => { + return await request.get({ url: `/bpm/process-listener/page`, params }) + }, + + // 查询流程监听器详情 + getProcessListener: async (id: number) => { + return await request.get({ url: `/bpm/process-listener/get?id=` + id }) + }, + + // 新增流程监听器 + createProcessListener: async (data: ProcessListenerVO) => { + return await request.post({ url: `/bpm/process-listener/create`, data }) + }, + + // 修改流程监听器 + updateProcessListener: async (data: ProcessListenerVO) => { + return await request.put({ url: `/bpm/process-listener/update`, data }) + }, + + // 删除流程监听器 + deleteProcessListener: async (id: number) => { + return await request.delete({ url: `/bpm/process-listener/delete?id=` + id }) + } +} diff --git a/web/src/api/bpm/simple/index.ts b/web/src/api/bpm/simple/index.ts new file mode 100644 index 0000000..6e1e995 --- /dev/null +++ b/web/src/api/bpm/simple/index.ts @@ -0,0 +1,15 @@ +import request from '@/config/axios' + + +export const updateBpmSimpleModel = async (data) => { + return await request.post({ + url: '/bpm/model/simple/update', + data: data + }) +} + +export const getBpmSimpleModel = async (id) => { + return await request.get({ + url: '/bpm/model/simple/get?id=' + id + }) +} diff --git a/web/src/api/bpm/task/index.ts b/web/src/api/bpm/task/index.ts new file mode 100644 index 0000000..d4c1038 --- /dev/null +++ b/web/src/api/bpm/task/index.ts @@ -0,0 +1,113 @@ +import request from '@/config/axios' + +/** + * 任务状态枚举 + */ +export enum TaskStatusEnum { + /** + * 未开始 + */ + NOT_START = -1, + + /** + * 待审批 + */ + WAIT = 0, + /** + * 审批中 + */ + RUNNING = 1, + /** + * 审批通过 + */ + APPROVE = 2, + + /** + * 审批不通过 + */ + REJECT = 3, + + /** + * 已取消 + */ + CANCEL = 4, + /** + * 已退回 + */ + RETURN = 5, + /** + * 审批通过中 + */ + APPROVING = 7 +} + +export const getTaskTodoPage = async (params: any) => { + return await request.get({ url: '/bpm/task/todo-page', params }) +} + +export const getTaskDonePage = async (params: any) => { + return await request.get({ url: '/bpm/task/done-page', params }) +} + +export const getTaskManagerPage = async (params: any) => { + return await request.get({ url: '/bpm/task/manager-page', params }) +} + +export const approveTask = async (data: any) => { + return await request.put({ url: '/bpm/task/approve', data }) +} + +export const rejectTask = async (data: any) => { + return await request.put({ url: '/bpm/task/reject', data }) +} + +export const getTaskListByProcessInstanceId = async (processInstanceId: string) => { + return await request.get({ + url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId + }) +} + +// 获取所有可退回的节点 +export const getTaskListByReturn = async (id: string) => { + return await request.get({ url: '/bpm/task/list-by-return', params: { id } }) +} + +// 退回 +export const returnTask = async (data: any) => { + return await request.put({ url: '/bpm/task/return', data }) +} + +// 委派 +export const delegateTask = async (data: any) => { + return await request.put({ url: '/bpm/task/delegate', data }) +} + +// 转派 +export const transferTask = async (data: any) => { + return await request.put({ url: '/bpm/task/transfer', data }) +} + +// 加签 +export const signCreateTask = async (data: any) => { + return await request.put({ url: '/bpm/task/create-sign', data }) +} + +// 减签 +export const signDeleteTask = async (data: any) => { + return await request.delete({ url: '/bpm/task/delete-sign', data }) +} + +// 抄送 +export const copyTask = async (data: any) => { + return await request.put({ url: '/bpm/task/copy', data }) +} + +// 获取我的待办任务 +export const myTodoTask = async (processInstanceId: string) => { + return await request.get({ url: '/bpm/task/my-todo?processInstanceId=' + processInstanceId }) +} + +// 获取减签任务列表 +export const getChildrenTaskList = async (id: string) => { + return await request.get({ url: '/bpm/task/list-by-parent-task-id?parentTaskId=' + id }) +} diff --git a/web/src/api/bpm/userGroup/index.ts b/web/src/api/bpm/userGroup/index.ts new file mode 100644 index 0000000..7d12755 --- /dev/null +++ b/web/src/api/bpm/userGroup/index.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export type UserGroupVO = { + id: number + name: string + description: string + userIds: number[] + status: number + remark: string + createTime: string +} + +// 创建用户组 +export const createUserGroup = async (data: UserGroupVO) => { + return await request.post({ + url: '/bpm/user-group/create', + data: data + }) +} + +// 更新用户组 +export const updateUserGroup = async (data: UserGroupVO) => { + return await request.put({ + url: '/bpm/user-group/update', + data: data + }) +} + +// 删除用户组 +export const deleteUserGroup = async (id: number) => { + return await request.delete({ url: '/bpm/user-group/delete?id=' + id }) +} + +// 获得用户组 +export const getUserGroup = async (id: number) => { + return await request.get({ url: '/bpm/user-group/get?id=' + id }) +} + +// 获得用户组分页 +export const getUserGroupPage = async (params) => { + return await request.get({ url: '/bpm/user-group/page', params }) +} + +// 获取用户组精简信息列表 +export const getUserGroupSimpleList = async (): Promise => { + return await request.get({ url: '/bpm/user-group/simple-list' }) +} diff --git a/web/src/api/infra/apiAccessLog/index.ts b/web/src/api/infra/apiAccessLog/index.ts new file mode 100644 index 0000000..4fa50e1 --- /dev/null +++ b/web/src/api/infra/apiAccessLog/index.ts @@ -0,0 +1,34 @@ +import request from '@/config/axios' + +export interface ApiAccessLogVO { + id: number + traceId: string + userId: number + userType: number + applicationName: string + requestMethod: string + requestParams: string + responseBody: string + requestUrl: string + userIp: string + userAgent: string + operateModule: string + operateName: string + operateType: number + beginTime: Date + endTime: Date + duration: number + resultCode: number + resultMsg: string + createTime: Date +} + +// 查询列表API 访问日志 +export const getApiAccessLogPage = (params: PageParam) => { + return request.get({ url: '/infra/api-access-log/page', params }) +} + +// 导出API 访问日志 +export const exportApiAccessLog = (params) => { + return request.download({ url: '/infra/api-access-log/export-excel', params }) +} diff --git a/web/src/api/infra/apiErrorLog/index.ts b/web/src/api/infra/apiErrorLog/index.ts new file mode 100644 index 0000000..59ee214 --- /dev/null +++ b/web/src/api/infra/apiErrorLog/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface ApiErrorLogVO { + id: number + traceId: string + userId: number + userType: number + applicationName: string + requestMethod: string + requestParams: string + requestUrl: string + userIp: string + userAgent: string + exceptionTime: Date + exceptionName: string + exceptionMessage: string + exceptionRootCauseMessage: string + exceptionStackTrace: string + exceptionClassName: string + exceptionFileName: string + exceptionMethodName: string + exceptionLineNumber: number + processUserId: number + processStatus: number + processTime: Date + resultCode: number + createTime: Date +} + +// 查询列表API 访问日志 +export const getApiErrorLogPage = (params: PageParam) => { + return request.get({ url: '/infra/api-error-log/page', params }) +} + +// 更新 API 错误日志的处理状态 +export const updateApiErrorLogPage = (id: number, processStatus: number) => { + return request.put({ + url: '/infra/api-error-log/update-status?id=' + id + '&processStatus=' + processStatus + }) +} + +// 导出API 访问日志 +export const exportApiErrorLog = (params) => { + return request.download({ + url: '/infra/api-error-log/export-excel', + params + }) +} diff --git a/web/src/api/infra/codegen/index.ts b/web/src/api/infra/codegen/index.ts new file mode 100644 index 0000000..b0e93cd --- /dev/null +++ b/web/src/api/infra/codegen/index.ts @@ -0,0 +1,112 @@ +import request from '@/config/axios' + +export type CodegenTableVO = { + id: number + tableId: number + isParentMenuIdValid: boolean + dataSourceConfigId: number + scene: number + tableName: string + tableComment: string + remark: string + moduleName: string + businessName: string + className: string + classComment: string + author: string + createTime: Date + updateTime: Date + templateType: number + parentMenuId: number +} + +export type CodegenColumnVO = { + id: number + tableId: number + columnName: string + dataType: string + columnComment: string + nullable: number + primaryKey: number + ordinalPosition: number + javaType: string + javaField: string + dictType: string + example: string + createOperation: number + updateOperation: number + listOperation: number + listOperationCondition: string + listOperationResult: number + htmlType: string +} + +export type DatabaseTableVO = { + name: string + comment: string +} + +export type CodegenPreviewVO = { + filePath: string + code: string +} + +export type CodegenUpdateReqVO = { + table: CodegenTableVO | any + columns: CodegenColumnVO[] +} + +// 查询列表代码生成表定义 +export const getCodegenTableList = (dataSourceConfigId: number) => { + return request.get({ url: '/infra/codegen/table/list?dataSourceConfigId=' + dataSourceConfigId }) +} + +// 查询列表代码生成表定义 +export const getCodegenTablePage = (params: PageParam) => { + return request.get({ url: '/infra/codegen/table/page', params }) +} + +// 查询详情代码生成表定义 +export const getCodegenTable = (id: number) => { + return request.get({ url: '/infra/codegen/detail?tableId=' + id }) +} + +// 修改代码生成表定义 +export const updateCodegenTable = (data: CodegenUpdateReqVO) => { + return request.put({ url: '/infra/codegen/update', data }) +} + +// 基于数据库的表结构,同步数据库的表和字段定义 +export const syncCodegenFromDB = (id: number) => { + return request.put({ url: '/infra/codegen/sync-from-db?tableId=' + id }) +} + +// 预览生成代码 +export const previewCodegen = (id: number) => { + return request.get({ url: '/infra/codegen/preview?tableId=' + id }) +} + +// 下载生成代码 +export const downloadCodegen = (id: number) => { + return request.download({ url: '/infra/codegen/download?tableId=' + id }) +} + +// 获得表定义 +export const getSchemaTableList = (params) => { + return request.get({ url: '/infra/codegen/db/table/list', params }) +} + +// 基于数据库的表结构,创建代码生成器的表定义 +export const createCodegenList = (data) => { + return request.post({ url: '/infra/codegen/create-list', data }) +} + +// 删除代码生成表定义 +export const deleteCodegenTable = (id: number) => { + return request.delete({ url: '/infra/codegen/delete?tableId=' + id }) +} + +// 批量删除代码生成表定义 +export const deleteCodegenTableList = (ids: number[]) => { + return request.delete({ url: '/infra/codegen/delete-list', params: { tableIds: ids.join(',') } }) +} diff --git a/web/src/api/infra/config/index.ts b/web/src/api/infra/config/index.ts new file mode 100644 index 0000000..c78c2c0 --- /dev/null +++ b/web/src/api/infra/config/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +export interface ConfigVO { + id: number | undefined + category: string + name: string + key: string + value: string + type: number + visible: boolean + remark: string + createTime: Date +} + +// 查询参数列表 +export const getConfigPage = (params: PageParam) => { + return request.get({ url: '/infra/config/page', params }) +} + +// 查询参数详情 +export const getConfig = (id: number) => { + return request.get({ url: '/infra/config/get?id=' + id }) +} + +// 根据参数键名查询参数值 +export const getConfigKey = (configKey: string) => { + return request.get({ url: '/infra/config/get-value-by-key?key=' + configKey }) +} + +// 新增参数 +export const createConfig = (data: ConfigVO) => { + return request.post({ url: '/infra/config/create', data }) +} + +// 修改参数 +export const updateConfig = (data: ConfigVO) => { + return request.put({ url: '/infra/config/update', data }) +} + +// 删除参数 +export const deleteConfig = (id: number) => { + return request.delete({ url: '/infra/config/delete?id=' + id }) +} + +// 批量删除参数 +export const deleteConfigList = (ids: number[]) => { + return request.delete({ url: '/infra/config/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出参数 +export const exportConfig = (params) => { + return request.download({ url: '/infra/config/export-excel', params }) +} diff --git a/web/src/api/infra/dataSourceConfig/index.ts b/web/src/api/infra/dataSourceConfig/index.ts new file mode 100644 index 0000000..55bd6a3 --- /dev/null +++ b/web/src/api/infra/dataSourceConfig/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +export interface DataSourceConfigVO { + id: number | undefined + name: string + url: string + username: string + password: string + createTime?: Date +} + +// 新增数据源配置 +export const createDataSourceConfig = (data: DataSourceConfigVO) => { + return request.post({ url: '/infra/data-source-config/create', data }) +} + +// 修改数据源配置 +export const updateDataSourceConfig = (data: DataSourceConfigVO) => { + return request.put({ url: '/infra/data-source-config/update', data }) +} + +// 删除数据源配置 +export const deleteDataSourceConfig = (id: number) => { + return request.delete({ url: '/infra/data-source-config/delete?id=' + id }) +} + +// 批量删除数据源配置 +export const deleteDataSourceConfigList = (ids: number[]) => { + return request.delete({ url: '/infra/data-source-config/delete-list', params: { ids: ids.join(',') } }) +} + +// 查询数据源配置详情 +export const getDataSourceConfig = (id: number) => { + return request.get({ url: '/infra/data-source-config/get?id=' + id }) +} + +// 查询数据源配置列表 +export const getDataSourceConfigList = () => { + return request.get({ url: '/infra/data-source-config/list' }) +} diff --git a/web/src/api/infra/demo/demo01/index.ts b/web/src/api/infra/demo/demo01/index.ts new file mode 100644 index 0000000..982049c --- /dev/null +++ b/web/src/api/infra/demo/demo01/index.ts @@ -0,0 +1,50 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs' + +/** 示例联系人信息 */ +export interface Demo01Contact { + id: number // 编号 + name?: string // 名字 + sex?: number // 性别 + birthday?: string | Dayjs // 出生年 + description?: string // 简介 + avatar: string // 头像 +} + +// 示例联系人 API +export const Demo01ContactApi = { + // 查询示例联系人分页 + getDemo01ContactPage: async (params: any) => { + return await request.get({ url: `/infra/demo01-contact/page`, params }) + }, + + // 查询示例联系人详情 + getDemo01Contact: async (id: number) => { + return await request.get({ url: `/infra/demo01-contact/get?id=` + id }) + }, + + // 新增示例联系人 + createDemo01Contact: async (data: Demo01Contact) => { + return await request.post({ url: `/infra/demo01-contact/create`, data }) + }, + + // 修改示例联系人 + updateDemo01Contact: async (data: Demo01Contact) => { + return await request.put({ url: `/infra/demo01-contact/update`, data }) + }, + + // 删除示例联系人 + deleteDemo01Contact: async (id: number) => { + return await request.delete({ url: `/infra/demo01-contact/delete?id=` + id }) + }, + + /** 批量删除示例联系人 */ + deleteDemo01ContactList: async (ids: number[]) => { + return await request.delete({ url: `/infra/demo01-contact/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出示例联系人 Excel + exportDemo01Contact: async (params) => { + return await request.download({ url: `/infra/demo01-contact/export-excel`, params }) + } +} diff --git a/web/src/api/infra/demo/demo02/index.ts b/web/src/api/infra/demo/demo02/index.ts new file mode 100644 index 0000000..736a123 --- /dev/null +++ b/web/src/api/infra/demo/demo02/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface Demo02CategoryVO { + id: number + name: string + parentId: number +} + +// 查询示例分类列表 +export const getDemo02CategoryList = async () => { + return await request.get({ url: `/infra/demo02-category/list` }) +} + +// 查询示例分类详情 +export const getDemo02Category = async (id: number) => { + return await request.get({ url: `/infra/demo02-category/get?id=` + id }) +} + +// 新增示例分类 +export const createDemo02Category = async (data: Demo02CategoryVO) => { + return await request.post({ url: `/infra/demo02-category/create`, data }) +} + +// 修改示例分类 +export const updateDemo02Category = async (data: Demo02CategoryVO) => { + return await request.put({ url: `/infra/demo02-category/update`, data }) +} + +// 删除示例分类 +export const deleteDemo02Category = async (id: number) => { + return await request.delete({ url: `/infra/demo02-category/delete?id=` + id }) +} + +// 导出示例分类 Excel +export const exportDemo02Category = async (params) => { + return await request.download({ url: `/infra/demo02-category/export-excel`, params }) +} diff --git a/web/src/api/infra/demo/demo03/erp/index.ts b/web/src/api/infra/demo/demo03/erp/index.ts new file mode 100644 index 0000000..c641ed0 --- /dev/null +++ b/web/src/api/infra/demo/demo03/erp/index.ts @@ -0,0 +1,127 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 学生课程信息 */ +export interface Demo03Course { + id: number; // 编号 + studentId?: number; // 学生编号 + name?: string; // 名字 + score?: number; // 分数 +} + +/** 学生班级信息 */ +export interface Demo03Grade { + id: number; // 编号 + studentId?: number; // 学生编号 + name?: string; // 名字 + teacher?: string; // 班主任 +} + +/** 学生信息 */ +export interface Demo03Student { + id: number; // 编号 + name?: string; // 名字 + sex?: number; // 性别 + birthday?: string | Dayjs; // 出生日期 + description?: string; // 简介 +} + +// 学生 API +export const Demo03StudentApi = { + // 查询学生分页 + getDemo03StudentPage: async (params: any) => { + return await request.get({ url: `/infra/demo03-student-erp/page`, params }) + }, + + // 查询学生详情 + getDemo03Student: async (id: number) => { + return await request.get({ url: `/infra/demo03-student-erp/get?id=` + id }) + }, + + // 新增学生 + createDemo03Student: async (data: Demo03Student) => { + return await request.post({ url: `/infra/demo03-student-erp/create`, data }) + }, + + // 修改学生 + updateDemo03Student: async (data: Demo03Student) => { + return await request.put({ url: `/infra/demo03-student-erp/update`, data }) + }, + + // 删除学生 + deleteDemo03Student: async (id: number) => { + return await request.delete({ url: `/infra/demo03-student-erp/delete?id=` + id }) + }, + + /** 批量删除学生 */ + deleteDemo03StudentList: async (ids: number[]) => { + return await request.delete({ url: `/infra/demo03-student-erp/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出学生 Excel + exportDemo03Student: async (params) => { + return await request.download({ url: `/infra/demo03-student-erp/export-excel`, params }) + }, + +// ==================== 子表(学生课程) ==================== + + // 获得学生课程分页 + getDemo03CoursePage: async (params) => { + return await request.get({ url: `/infra/demo03-student-erp/demo03-course/page`, params }) + }, + // 新增学生课程 + createDemo03Course: async (data: Demo03Course) => { + return await request.post({ url: `/infra/demo03-student-erp/demo03-course/create`, data }) + }, + + // 修改学生课程 + updateDemo03Course: async (data: Demo03Course) => { + return await request.put({ url: `/infra/demo03-student-erp/demo03-course/update`, data }) + }, + + // 删除学生课程 + deleteDemo03Course: async (id: number) => { + return await request.delete({ url: `/infra/demo03-student-erp/demo03-course/delete?id=` + id }) + }, + + /** 批量删除学生课程 */ + deleteDemo03CourseList: async (ids: number[]) => { + return await request.delete({ url: `/infra/demo03-student-erp/demo03-course/delete-list?ids=${ids.join(',')}` }) + }, + + // 获得学生课程 + getDemo03Course: async (id: number) => { + return await request.get({ url: `/infra/demo03-student-erp/demo03-course/get?id=` + id }) + }, + +// ==================== 子表(学生班级) ==================== + + // 获得学生班级分页 + getDemo03GradePage: async (params) => { + return await request.get({ url: `/infra/demo03-student-erp/demo03-grade/page`, params }) + }, + // 新增学生班级 + createDemo03Grade: async (data: Demo03Grade) => { + return await request.post({ url: `/infra/demo03-student-erp/demo03-grade/create`, data }) + }, + + // 修改学生班级 + updateDemo03Grade: async (data: Demo03Grade) => { + return await request.put({ url: `/infra/demo03-student-erp/demo03-grade/update`, data }) + }, + + // 删除学生班级 + deleteDemo03Grade: async (id: number) => { + return await request.delete({ url: `/infra/demo03-student-erp/demo03-grade/delete?id=` + id }) + }, + + /** 批量删除学生班级 */ + deleteDemo03GradeList: async (ids: number[]) => { + return await request.delete({ url: `/infra/demo03-student-erp/demo03-grade/delete-list?ids=${ids.join(',')}` }) + }, + + // 获得学生班级 + getDemo03Grade: async (id: number) => { + return await request.get({ url: `/infra/demo03-student-erp/demo03-grade/get?id=` + id }) + }, +} diff --git a/web/src/api/infra/demo/demo03/inner/index.ts b/web/src/api/infra/demo/demo03/inner/index.ts new file mode 100644 index 0000000..1000d9c --- /dev/null +++ b/web/src/api/infra/demo/demo03/inner/index.ts @@ -0,0 +1,81 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 学生课程信息 */ +export interface Demo03Course { + id: number; // 编号 + studentId?: number; // 学生编号 + name?: string; // 名字 + score?: number; // 分数 +} + +/** 学生班级信息 */ +export interface Demo03Grade { + id: number; // 编号 + studentId?: number; // 学生编号 + name?: string; // 名字 + teacher?: string; // 班主任 +} + +/** 学生信息 */ +export interface Demo03Student { + id: number; // 编号 + name?: string; // 名字 + sex?: number; // 性别 + birthday?: string | Dayjs; // 出生日期 + description?: string; // 简介 + demo03courses?: Demo03Course[] + demo03grade?: Demo03Grade +} + +// 学生 API +export const Demo03StudentApi = { + // 查询学生分页 + getDemo03StudentPage: async (params: any) => { + return await request.get({ url: `/infra/demo03-student-inner/page`, params }) + }, + + // 查询学生详情 + getDemo03Student: async (id: number) => { + return await request.get({ url: `/infra/demo03-student-inner/get?id=` + id }) + }, + + // 新增学生 + createDemo03Student: async (data: Demo03Student) => { + return await request.post({ url: `/infra/demo03-student-inner/create`, data }) + }, + + // 修改学生 + updateDemo03Student: async (data: Demo03Student) => { + return await request.put({ url: `/infra/demo03-student-inner/update`, data }) + }, + + // 删除学生 + deleteDemo03Student: async (id: number) => { + return await request.delete({ url: `/infra/demo03-student-inner/delete?id=` + id }) + }, + + /** 批量删除学生 */ + deleteDemo03StudentList: async (ids: number[]) => { + return await request.delete({ url: `/infra/demo03-student-inner/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出学生 Excel + exportDemo03Student: async (params) => { + return await request.download({ url: `/infra/demo03-student-inner/export-excel`, params }) + }, + +// ==================== 子表(学生课程) ==================== + + // 获得学生课程列表 + getDemo03CourseListByStudentId: async (studentId) => { + return await request.get({ url: `/infra/demo03-student-inner/demo03-course/list-by-student-id?studentId=` + studentId }) + }, + +// ==================== 子表(学生班级) ==================== + + // 获得学生班级 + getDemo03GradeByStudentId: async (studentId) => { + return await request.get({ url: `/infra/demo03-student-inner/demo03-grade/get-by-student-id?studentId=` + studentId }) + }, +} diff --git a/web/src/api/infra/demo/demo03/normal/index.ts b/web/src/api/infra/demo/demo03/normal/index.ts new file mode 100644 index 0000000..56a824d --- /dev/null +++ b/web/src/api/infra/demo/demo03/normal/index.ts @@ -0,0 +1,81 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 学生课程信息 */ +export interface Demo03Course { + id: number; // 编号 + studentId?: number; // 学生编号 + name?: string; // 名字 + score?: number; // 分数 +} + +/** 学生班级信息 */ +export interface Demo03Grade { + id: number; // 编号 + studentId?: number; // 学生编号 + name?: string; // 名字 + teacher?: string; // 班主任 +} + +/** 学生信息 */ +export interface Demo03Student { + id: number; // 编号 + name?: string; // 名字 + sex?: number; // 性别 + birthday?: string | Dayjs; // 出生日期 + description?: string; // 简介 + demo03courses?: Demo03Course[] + demo03grade?: Demo03Grade +} + +// 学生 API +export const Demo03StudentApi = { + // 查询学生分页 + getDemo03StudentPage: async (params: any) => { + return await request.get({ url: `/infra/demo03-student-normal/page`, params }) + }, + + // 查询学生详情 + getDemo03Student: async (id: number) => { + return await request.get({ url: `/infra/demo03-student-normal/get?id=` + id }) + }, + + // 新增学生 + createDemo03Student: async (data: Demo03Student) => { + return await request.post({ url: `/infra/demo03-student-normal/create`, data }) + }, + + // 修改学生 + updateDemo03Student: async (data: Demo03Student) => { + return await request.put({ url: `/infra/demo03-student-normal/update`, data }) + }, + + // 删除学生 + deleteDemo03Student: async (id: number) => { + return await request.delete({ url: `/infra/demo03-student-normal/delete?id=` + id }) + }, + + /** 批量删除学生 */ + deleteDemo03StudentList: async (ids: number[]) => { + return await request.delete({ url: `/infra/demo03-student-normal/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出学生 Excel + exportDemo03Student: async (params) => { + return await request.download({ url: `/infra/demo03-student-normal/export-excel`, params }) + }, + +// ==================== 子表(学生课程) ==================== + + // 获得学生课程列表 + getDemo03CourseListByStudentId: async (studentId) => { + return await request.get({ url: `/infra/demo03-student-normal/demo03-course/list-by-student-id?studentId=` + studentId }) + }, + +// ==================== 子表(学生班级) ==================== + + // 获得学生班级 + getDemo03GradeByStudentId: async (studentId) => { + return await request.get({ url: `/infra/demo03-student-normal/demo03-grade/get-by-student-id?studentId=` + studentId }) + }, +} diff --git a/web/src/api/infra/file/index.ts b/web/src/api/infra/file/index.ts new file mode 100644 index 0000000..374f8c6 --- /dev/null +++ b/web/src/api/infra/file/index.ts @@ -0,0 +1,46 @@ +import request from '@/config/axios' + +// 文件预签名地址 Response VO +export interface FilePresignedUrlRespVO { + // 文件配置编号 + configId: number + // 文件上传 URL + uploadUrl: string + // 文件 URL + url: string + // 文件路径 + path: string +} + +// 查询文件列表 +export const getFilePage = (params: PageParam) => { + return request.get({ url: '/infra/file/page', params }) +} + +// 删除文件 +export const deleteFile = (id: number) => { + return request.delete({ url: '/infra/file/delete?id=' + id }) +} + +// 批量删除文件 +export const deleteFileList = (ids: number[]) => { + return request.delete({ url: '/infra/file/delete-list', params: { ids: ids.join(',') } }) +} + +// 获取文件预签名地址 +export const getFilePresignedUrl = (name: string, directory?: string) => { + return request.get({ + url: '/infra/file/presigned-url', + params: { name, directory } + }) +} + +// 创建文件 +export const createFile = (data: any) => { + return request.post({ url: '/infra/file/create', data }) +} + +// 上传文件 +export const updateFile = (data: any) => { + return request.upload({ url: '/infra/file/upload', data }) +} diff --git a/web/src/api/infra/fileConfig/index.ts b/web/src/api/infra/fileConfig/index.ts new file mode 100644 index 0000000..6a69a47 --- /dev/null +++ b/web/src/api/infra/fileConfig/index.ts @@ -0,0 +1,67 @@ +import request from '@/config/axios' + +export interface FileClientConfig { + basePath: string + host?: string + port?: number + username?: string + password?: string + mode?: string + endpoint?: string + bucket?: string + accessKey?: string + accessSecret?: string + enablePathStyleAccess?: boolean + domain: string +} + +export interface FileConfigVO { + id: number + name: string + storage?: number + master: boolean + visible: boolean + config: FileClientConfig + remark: string + createTime: Date +} + +// 查询文件配置列表 +export const getFileConfigPage = (params: PageParam) => { + return request.get({ url: '/infra/file-config/page', params }) +} + +// 查询文件配置详情 +export const getFileConfig = (id: number) => { + return request.get({ url: '/infra/file-config/get?id=' + id }) +} + +// 更新文件配置为主配置 +export const updateFileConfigMaster = (id: number) => { + return request.put({ url: '/infra/file-config/update-master?id=' + id }) +} + +// 新增文件配置 +export const createFileConfig = (data: FileConfigVO) => { + return request.post({ url: '/infra/file-config/create', data }) +} + +// 修改文件配置 +export const updateFileConfig = (data: FileConfigVO) => { + return request.put({ url: '/infra/file-config/update', data }) +} + +// 删除文件配置 +export const deleteFileConfig = (id: number) => { + return request.delete({ url: '/infra/file-config/delete?id=' + id }) +} + +// 批量删除文件配置 +export const deleteFileConfigList = (ids: number[]) => { + return request.delete({ url: '/infra/file-config/delete-list', params: { ids: ids.join(',') } }) +} + +// 测试文件配置 +export const testFileConfig = (id: number) => { + return request.get({ url: '/infra/file-config/test?id=' + id }) +} diff --git a/web/src/api/infra/job/index.ts b/web/src/api/infra/job/index.ts new file mode 100644 index 0000000..ce05c54 --- /dev/null +++ b/web/src/api/infra/job/index.ts @@ -0,0 +1,68 @@ +import request from '@/config/axios' + +export interface JobVO { + id: number + name: string + status: number + handlerName: string + handlerParam: string + cronExpression: string + retryCount: number + retryInterval: number + monitorTimeout: number + createTime: Date +} + +// 任务列表 +export const getJobPage = (params: PageParam) => { + return request.get({ url: '/infra/job/page', params }) +} + +// 任务详情 +export const getJob = (id: number) => { + return request.get({ url: '/infra/job/get?id=' + id }) +} + +// 新增任务 +export const createJob = (data: JobVO) => { + return request.post({ url: '/infra/job/create', data }) +} + +// 修改定时任务调度 +export const updateJob = (data: JobVO) => { + return request.put({ url: '/infra/job/update', data }) +} + +// 删除定时任务调度 +export const deleteJob = (id: number) => { + return request.delete({ url: '/infra/job/delete?id=' + id }) +} + +// 批量删除定时任务调度 +export const deleteJobList = (ids: number[]) => { + return request.delete({ url: '/infra/job/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出定时任务调度 +export const exportJob = (params) => { + return request.download({ url: '/infra/job/export-excel', params }) +} + +// 任务状态修改 +export const updateJobStatus = (id: number, status: number) => { + const params = { + id, + status + } + return request.put({ url: '/infra/job/update-status', params }) +} + +// 定时任务立即执行一次 +export const runJob = (id: number) => { + return request.put({ url: '/infra/job/trigger?id=' + id }) +} + +// 获得定时任务的下 n 次执行时间 +export const getJobNextTimes = (id: number) => { + return request.get({ url: '/infra/job/get_next_times?id=' + id }) +} diff --git a/web/src/api/infra/jobLog/index.ts b/web/src/api/infra/jobLog/index.ts new file mode 100644 index 0000000..ed54761 --- /dev/null +++ b/web/src/api/infra/jobLog/index.ts @@ -0,0 +1,34 @@ +import request from '@/config/axios' + +export interface JobLogVO { + id: number + jobId: number + handlerName: string + handlerParam: string + cronExpression: string + executeIndex: string + beginTime: Date + endTime: Date + duration: string + status: number + createTime: string + result: string +} + +// 任务日志列表 +export const getJobLogPage = (params: PageParam) => { + return request.get({ url: '/infra/job-log/page', params }) +} + +// 任务日志详情 +export const getJobLog = (id: number) => { + return request.get({ url: '/infra/job-log/get?id=' + id }) +} + +// 导出定时任务日志 +export const exportJobLog = (params) => { + return request.download({ + url: '/infra/job-log/export-excel', + params + }) +} diff --git a/web/src/api/infra/redis/index.ts b/web/src/api/infra/redis/index.ts new file mode 100644 index 0000000..f27be77 --- /dev/null +++ b/web/src/api/infra/redis/index.ts @@ -0,0 +1,8 @@ +import request from '@/config/axios' + +/** + * 获取redis 监控信息 + */ +export const getCache = () => { + return request.get({ url: '/infra/redis/get-monitor-info' }) +} diff --git a/web/src/api/infra/redis/types.ts b/web/src/api/infra/redis/types.ts new file mode 100644 index 0000000..548bfe9 --- /dev/null +++ b/web/src/api/infra/redis/types.ts @@ -0,0 +1,176 @@ +export interface RedisMonitorInfoVO { + info: RedisInfoVO + dbSize: number + commandStats: RedisCommandStatsVO[] +} + +export interface RedisInfoVO { + io_threaded_reads_processed: string + tracking_clients: string + uptime_in_seconds: string + cluster_connections: string + current_cow_size: string + maxmemory_human: string + aof_last_cow_size: string + master_replid2: string + mem_replication_backlog: string + aof_rewrite_scheduled: string + total_net_input_bytes: string + rss_overhead_ratio: string + hz: string + current_cow_size_age: string + redis_build_id: string + errorstat_BUSYGROUP: string + aof_last_bgrewrite_status: string + multiplexing_api: string + client_recent_max_output_buffer: string + allocator_resident: string + mem_fragmentation_bytes: string + aof_current_size: string + repl_backlog_first_byte_offset: string + tracking_total_prefixes: string + redis_mode: string + redis_git_dirty: string + aof_delayed_fsync: string + allocator_rss_bytes: string + repl_backlog_histlen: string + io_threads_active: string + rss_overhead_bytes: string + total_system_memory: string + loading: string + evicted_keys: string + maxclients: string + cluster_enabled: string + redis_version: string + repl_backlog_active: string + mem_aof_buffer: string + allocator_frag_bytes: string + io_threaded_writes_processed: string + instantaneous_ops_per_sec: string + used_memory_human: string + total_error_replies: string + role: string + maxmemory: string + used_memory_lua: string + rdb_current_bgsave_time_sec: string + used_memory_startup: string + used_cpu_sys_main_thread: string + lazyfree_pending_objects: string + aof_pending_bio_fsync: string + used_memory_dataset_perc: string + allocator_frag_ratio: string + arch_bits: string + used_cpu_user_main_thread: string + mem_clients_normal: string + expired_time_cap_reached_count: string + unexpected_error_replies: string + mem_fragmentation_ratio: string + aof_last_rewrite_time_sec: string + master_replid: string + aof_rewrite_in_progress: string + lru_clock: string + maxmemory_policy: string + run_id: string + latest_fork_usec: string + tracking_total_items: string + total_commands_processed: string + expired_keys: string + errorstat_ERR: string + used_memory: string + module_fork_in_progress: string + errorstat_WRONGPASS: string + aof_buffer_length: string + dump_payload_sanitizations: string + mem_clients_slaves: string + keyspace_misses: string + server_time_usec: string + executable: string + lazyfreed_objects: string + db0: string + used_memory_peak_human: string + keyspace_hits: string + rdb_last_cow_size: string + aof_pending_rewrite: string + used_memory_overhead: string + active_defrag_hits: string + tcp_port: string + uptime_in_days: string + used_memory_peak_perc: string + current_save_keys_processed: string + blocked_clients: string + total_reads_processed: string + expire_cycle_cpu_milliseconds: string + sync_partial_err: string + used_memory_scripts_human: string + aof_current_rewrite_time_sec: string + aof_enabled: string + process_supervised: string + master_repl_offset: string + used_memory_dataset: string + used_cpu_user: string + rdb_last_bgsave_status: string + tracking_total_keys: string + atomicvar_api: string + allocator_rss_ratio: string + client_recent_max_input_buffer: string + clients_in_timeout_table: string + aof_last_write_status: string + mem_allocator: string + used_memory_scripts: string + used_memory_peak: string + process_id: string + master_failover_state: string + errorstat_NOAUTH: string + used_cpu_sys: string + repl_backlog_size: string + connected_slaves: string + current_save_keys_total: string + gcc_version: string + total_system_memory_human: string + sync_full: string + connected_clients: string + module_fork_last_cow_size: string + total_writes_processed: string + allocator_active: string + total_net_output_bytes: string + pubsub_channels: string + current_fork_perc: string + active_defrag_key_hits: string + rdb_changes_since_last_save: string + instantaneous_input_kbps: string + used_memory_rss_human: string + configured_hz: string + expired_stale_perc: string + active_defrag_misses: string + used_cpu_sys_children: string + number_of_cached_scripts: string + sync_partial_ok: string + used_memory_lua_human: string + rdb_last_save_time: string + pubsub_patterns: string + slave_expires_tracked_keys: string + redis_git_sha1: string + used_memory_rss: string + rdb_last_bgsave_time_sec: string + os: string + mem_not_counted_for_evict: string + active_defrag_running: string + rejected_connections: string + aof_rewrite_buffer_length: string + total_forks: string + active_defrag_key_misses: string + allocator_allocated: string + aof_base_size: string + instantaneous_output_kbps: string + second_repl_offset: string + rdb_bgsave_in_progress: string + used_cpu_user_children: string + total_connections_received: string + migrate_cached_sockets: string +} + +export interface RedisCommandStatsVO { + command: string + calls: number + usec: number +} diff --git a/web/src/api/iot/device/device/index.ts b/web/src/api/iot/device/device/index.ts new file mode 100644 index 0000000..252ea43 --- /dev/null +++ b/web/src/api/iot/device/device/index.ts @@ -0,0 +1,169 @@ +import request from '@/config/axios' + +// IoT 设备 VO +export interface DeviceVO { + id: number // 设备 ID,主键,自增 + deviceKey: string // 设备唯一标识符 + deviceName: string // 设备名称 + productId: number // 产品编号 + productKey: string // 产品标识 + deviceType: number // 设备类型 + nickname: string // 设备备注名称 + gatewayId: number // 网关设备 ID + state: number // 设备状态 + onlineTime: Date // 最后上线时间 + offlineTime: Date // 最后离线时间 + activeTime: Date // 设备激活时间 + createTime: Date // 创建时间 + ip: string // 设备的 IP 地址 + firmwareVersion: string // 设备的固件版本 + deviceSecret: string // 设备密钥,用于设备认证,需安全存储 + mqttClientId: string // MQTT 客户端 ID + mqttUsername: string // MQTT 用户名 + mqttPassword: string // MQTT 密码 + authType: string // 认证类型 + latitude: number // 设备位置的纬度 + longitude: number // 设备位置的经度 + areaId: number // 地区编码 + address: string // 设备详细地址 + serialNumber: string // 设备序列号 + config: string // 设备配置 + groupIds?: number[] // 添加分组 ID +} + +// IoT 设备数据 VO +export interface DeviceDataVO { + deviceId: number // 设备编号 + thinkModelFunctionId: number // 物模型编号 + productKey: string // 产品标识 + deviceName: string // 设备名称 + identifier: string // 属性标识符 + name: string // 属性名称 + dataType: string // 数据类型 + updateTime: Date // 更新时间 + value: string // 最新值 +} + +// IoT 设备数据 VO +export interface DeviceHistoryDataVO { + time: number // 时间 + data: string // 数据 +} + +// IoT 设备状态枚举 +export enum DeviceStateEnum { + INACTIVE = 0, // 未激活 + ONLINE = 1, // 在线 + OFFLINE = 2 // 离线 +} + +// IoT 设备上行 Request VO +export interface IotDeviceUpstreamReqVO { + id: number // 设备编号 + type: string // 消息类型 + identifier: string // 标识符 + data: any // 请求参数 +} + +// IoT 设备下行 Request VO +export interface IotDeviceDownstreamReqVO { + id: number // 设备编号 + type: string // 消息类型 + identifier: string // 标识符 + data: any // 请求参数 +} + +// MQTT 连接参数 VO +export interface MqttConnectionParamsVO { + mqttClientId: string // MQTT 客户端 ID + mqttUsername: string // MQTT 用户名 + mqttPassword: string // MQTT 密码 +} + +// 设备 API +export const DeviceApi = { + // 查询设备分页 + getDevicePage: async (params: any) => { + return await request.get({ url: `/iot/device/page`, params }) + }, + + // 查询设备详情 + getDevice: async (id: number) => { + return await request.get({ url: `/iot/device/get?id=` + id }) + }, + + // 新增设备 + createDevice: async (data: DeviceVO) => { + return await request.post({ url: `/iot/device/create`, data }) + }, + + // 修改设备 + updateDevice: async (data: DeviceVO) => { + return await request.put({ url: `/iot/device/update`, data }) + }, + + // 修改设备分组 + updateDeviceGroup: async (data: { ids: number[]; groupIds: number[] }) => { + return await request.put({ url: `/iot/device/update-group`, data }) + }, + + // 删除单个设备 + deleteDevice: async (id: number) => { + return await request.delete({ url: `/iot/device/delete?id=` + id }) + }, + + // 删除多个设备 + deleteDeviceList: async (ids: number[]) => { + return await request.delete({ url: `/iot/device/delete-list`, params: { ids: ids.join(',') } }) + }, + + // 导出设备 + exportDeviceExcel: async (params: any) => { + return await request.download({ url: `/iot/device/export-excel`, params }) + }, + + // 获取设备数量 + getDeviceCount: async (productId: number) => { + return await request.get({ url: `/iot/device/count?productId=` + productId }) + }, + + // 获取设备的精简信息列表 + getSimpleDeviceList: async (deviceType?: number) => { + return await request.get({ url: `/iot/device/simple-list?`, params: { deviceType } }) + }, + + // 获取导入模板 + importDeviceTemplate: async () => { + return await request.download({ url: `/iot/device/get-import-template` }) + }, + + // 设备上行 + upstreamDevice: async (data: IotDeviceUpstreamReqVO) => { + return await request.post({ url: `/iot/device/upstream`, data }) + }, + + // 设备下行 + downstreamDevice: async (data: IotDeviceDownstreamReqVO) => { + return await request.post({ url: `/iot/device/downstream`, data }) + }, + + // 获取设备属性最新数据 + getLatestDeviceProperties: async (params: any) => { + return await request.get({ url: `/iot/device/property/latest`, params }) + }, + + // 获取设备属性历史数据 + getHistoryDevicePropertyPage: async (params: any) => { + return await request.get({ url: `/iot/device/property/history-page`, params }) + }, + + // 查询设备日志分页 + getDeviceLogPage: async (params: any) => { + return await request.get({ url: `/iot/device/log/page`, params }) + }, + + // 获取设备MQTT连接参数 + getMqttConnectionParams: async (deviceId: number) => { + return await request.get({ url: `/iot/device/mqtt-connection-params`, params: { deviceId } }) + } +} diff --git a/web/src/api/iot/device/group/index.ts b/web/src/api/iot/device/group/index.ts new file mode 100644 index 0000000..4debe8b --- /dev/null +++ b/web/src/api/iot/device/group/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +// IoT 设备分组 VO +export interface DeviceGroupVO { + id: number // 分组 ID + name: string // 分组名字 + status: number // 分组状态 + description: string // 分组描述 + deviceCount?: number // 设备数量 +} + +// IoT 设备分组 API +export const DeviceGroupApi = { + // 查询设备分组分页 + getDeviceGroupPage: async (params: any) => { + return await request.get({ url: `/iot/device-group/page`, params }) + }, + + // 查询设备分组详情 + getDeviceGroup: async (id: number) => { + return await request.get({ url: `/iot/device-group/get?id=` + id }) + }, + + // 新增设备分组 + createDeviceGroup: async (data: DeviceGroupVO) => { + return await request.post({ url: `/iot/device-group/create`, data }) + }, + + // 修改设备分组 + updateDeviceGroup: async (data: DeviceGroupVO) => { + return await request.put({ url: `/iot/device-group/update`, data }) + }, + + // 删除设备分组 + deleteDeviceGroup: async (id: number) => { + return await request.delete({ url: `/iot/device-group/delete?id=` + id }) + }, + + // 获取设备分组的精简信息列表 + getSimpleDeviceGroupList: async () => { + return await request.get({ url: `/iot/device-group/simple-list` }) + } +} diff --git a/web/src/api/iot/plugin/index.ts b/web/src/api/iot/plugin/index.ts new file mode 100644 index 0000000..f68b5f9 --- /dev/null +++ b/web/src/api/iot/plugin/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +// IoT 插件配置 VO +export interface PluginConfigVO { + id: number // 主键ID + pluginKey: string // 插件标识 + name: string // 插件名称 + description: string // 描述 + deployType: number // 部署方式 + fileName: string // 插件包文件名 + version: string // 插件版本 + type: number // 插件类型 + protocol: string // 设备插件协议类型 + status: number // 状态 + configSchema: string // 插件配置项描述信息 + config: string // 插件配置信息 + script: string // 插件脚本 +} + +// IoT 插件配置 API +export const PluginConfigApi = { + // 查询插件配置分页 + getPluginConfigPage: async (params: any) => { + return await request.get({ url: `/iot/plugin-config/page`, params }) + }, + + // 查询插件配置详情 + getPluginConfig: async (id: number) => { + return await request.get({ url: `/iot/plugin-config/get?id=` + id }) + }, + + // 新增插件配置 + createPluginConfig: async (data: PluginConfigVO) => { + return await request.post({ url: `/iot/plugin-config/create`, data }) + }, + + // 修改插件配置 + updatePluginConfig: async (data: PluginConfigVO) => { + return await request.put({ url: `/iot/plugin-config/update`, data }) + }, + + // 删除插件配置 + deletePluginConfig: async (id: number) => { + return await request.delete({ url: `/iot/plugin-config/delete?id=` + id }) + }, + + // 修改插件状态 + updatePluginStatus: async (data: any) => { + return await request.put({ url: `/iot/plugin-config/update-status`, data }) + } +} diff --git a/web/src/api/iot/product/category/index.ts b/web/src/api/iot/product/category/index.ts new file mode 100644 index 0000000..cad17f5 --- /dev/null +++ b/web/src/api/iot/product/category/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +// IoT 产品分类 VO +export interface ProductCategoryVO { + id: number // 分类 ID + name: string // 分类名字 + sort: number // 分类排序 + status: number // 分类状态 + description: string // 分类描述 +} + +// IoT 产品分类 API +export const ProductCategoryApi = { + // 查询产品分类分页 + getProductCategoryPage: async (params: any) => { + return await request.get({ url: `/iot/product-category/page`, params }) + }, + + // 查询产品分类详情 + getProductCategory: async (id: number) => { + return await request.get({ url: `/iot/product-category/get?id=` + id }) + }, + + // 新增产品分类 + createProductCategory: async (data: ProductCategoryVO) => { + return await request.post({ url: `/iot/product-category/create`, data }) + }, + + // 修改产品分类 + updateProductCategory: async (data: ProductCategoryVO) => { + return await request.put({ url: `/iot/product-category/update`, data }) + }, + + // 删除产品分类 + deleteProductCategory: async (id: number) => { + return await request.delete({ url: `/iot/product-category/delete?id=` + id }) + }, + + /** 获取产品分类精简列表 */ + getSimpleProductCategoryList: () => { + return request.get({ url: '/iot/product-category/simple-list' }) + } +} diff --git a/web/src/api/iot/product/product/index.ts b/web/src/api/iot/product/product/index.ts new file mode 100644 index 0000000..496fb04 --- /dev/null +++ b/web/src/api/iot/product/product/index.ts @@ -0,0 +1,82 @@ +import request from '@/config/axios' + +// IoT 产品 VO +export interface ProductVO { + id: number // 产品编号 + name: string // 产品名称 + productKey: string // 产品标识 + protocolId: number // 协议编号 + categoryId: number // 产品所属品类标识符 + categoryName?: string // 产品所属品类名称 + icon: string // 产品图标 + picUrl: string // 产品图片 + description: string // 产品描述 + validateType: number // 数据校验级别 + status: number // 产品状态 + deviceType: number // 设备类型 + netType: number // 联网方式 + protocolType: number // 接入网关协议 + dataFormat: number // 数据格式 + deviceCount: number // 设备数量 + createTime: Date // 创建时间 +} + +// IOT 数据校验级别枚举类 +export enum ValidateTypeEnum { + WEAK = 0, // 弱校验 + NONE = 1 // 免校验 +} +// IOT 产品设备类型枚举类 0: 直连设备, 1: 网关子设备, 2: 网关设备 +export enum DeviceTypeEnum { + DEVICE = 0, // 直连设备 + GATEWAY_SUB = 1, // 网关子设备 + GATEWAY = 2 // 网关设备 +} +// IOT 数据格式枚举类 +export enum DataFormatEnum { + JSON = 0, // 标准数据格式(JSON) + CUSTOMIZE = 1 // 透传/自定义 +} + +// IoT 产品 API +export const ProductApi = { + // 查询产品分页 + getProductPage: async (params: any) => { + return await request.get({ url: `/iot/product/page`, params }) + }, + + // 查询产品详情 + getProduct: async (id: number) => { + return await request.get({ url: `/iot/product/get?id=` + id }) + }, + + // 新增产品 + createProduct: async (data: ProductVO) => { + return await request.post({ url: `/iot/product/create`, data }) + }, + + // 修改产品 + updateProduct: async (data: ProductVO) => { + return await request.put({ url: `/iot/product/update`, data }) + }, + + // 删除产品 + deleteProduct: async (id: number) => { + return await request.delete({ url: `/iot/product/delete?id=` + id }) + }, + + // 导出产品 Excel + exportProduct: async (params) => { + return await request.download({ url: `/iot/product/export-excel`, params }) + }, + + // 更新产品状态 + updateProductStatus: async (id: number, status: number) => { + return await request.put({ url: `/iot/product/update-status?id=` + id + `&status=` + status }) + }, + + // 查询产品(精简)列表 + getSimpleProductList() { + return request.get({ url: '/iot/product/simple-list' }) + } +} diff --git a/web/src/api/iot/rule/databridge/index.ts b/web/src/api/iot/rule/databridge/index.ts new file mode 100644 index 0000000..d4eb636 --- /dev/null +++ b/web/src/api/iot/rule/databridge/index.ts @@ -0,0 +1,127 @@ +import request from '@/config/axios' + +// IoT 数据桥梁 VO +export interface DataBridgeVO { + id?: number // 桥梁编号 + name?: string // 桥梁名称 + description?: string // 桥梁描述 + status?: number // 桥梁状态 + direction?: number // 桥梁方向 + type?: number // 桥梁类型 + config?: + | HttpConfig + | MqttConfig + | RocketMQConfig + | KafkaMQConfig + | RabbitMQConfig + | RedisStreamMQConfig // 桥梁配置 +} + +interface Config { + type: string +} + +/** HTTP 配置 */ +export interface HttpConfig extends Config { + url: string + method: string + headers: Record + query: Record + body: string +} + +/** MQTT 配置 */ +export interface MqttConfig extends Config { + url: string + username: string + password: string + clientId: string + topic: string +} + +/** RocketMQ 配置 */ +export interface RocketMQConfig extends Config { + nameServer: string + accessKey: string + secretKey: string + group: string + topic: string + tags: string +} + +/** Kafka 配置 */ +export interface KafkaMQConfig extends Config { + bootstrapServers: string + username: string + password: string + ssl: boolean + topic: string +} + +/** RabbitMQ 配置 */ +export interface RabbitMQConfig extends Config { + host: string + port: number + virtualHost: string + username: string + password: string + exchange: string + routingKey: string + queue: string +} + +/** Redis Stream MQ 配置 */ +export interface RedisStreamMQConfig extends Config { + host: string + port: number + password: string + database: number + topic: string +} + +/** 数据桥梁类型 */ +// TODO @puhui999:枚举用 number 可以么? +export const IoTDataBridgeConfigType = { + HTTP: '1', + TCP: '2', + WEBSOCKET: '3', + MQTT: '10', + DATABASE: '20', + REDIS_STREAM: '21', + ROCKETMQ: '30', + RABBITMQ: '31', + KAFKA: '32' +} as const + +// 数据桥梁 API +export const DataBridgeApi = { + // 查询数据桥梁分页 + getDataBridgePage: async (params: any) => { + return await request.get({ url: `/iot/data-bridge/page`, params }) + }, + + // 查询数据桥梁详情 + getDataBridge: async (id: number) => { + return await request.get({ url: `/iot/data-bridge/get?id=` + id }) + }, + + // 新增数据桥梁 + createDataBridge: async (data: DataBridgeVO) => { + return await request.post({ url: `/iot/data-bridge/create`, data }) + }, + + // 修改数据桥梁 + updateDataBridge: async (data: DataBridgeVO) => { + return await request.put({ url: `/iot/data-bridge/update`, data }) + }, + + // 删除数据桥梁 + deleteDataBridge: async (id: number) => { + return await request.delete({ url: `/iot/data-bridge/delete?id=` + id }) + }, + + // 导出数据桥梁 Excel + exportDataBridge: async (params) => { + return await request.download({ url: `/iot/data-bridge/export-excel`, params }) + } +} diff --git a/web/src/api/iot/statistics/index.ts b/web/src/api/iot/statistics/index.ts new file mode 100644 index 0000000..1ca00d6 --- /dev/null +++ b/web/src/api/iot/statistics/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +/** IoT 统计数据类型 */ +export interface IotStatisticsSummaryRespVO { + productCategoryCount: number + productCount: number + deviceCount: number + deviceMessageCount: number + productCategoryTodayCount: number + productTodayCount: number + deviceTodayCount: number + deviceMessageTodayCount: number + deviceOnlineCount: number + deviceOfflineCount: number + deviceInactiveCount: number + productCategoryDeviceCounts: Record +} + +/** IoT 消息统计数据类型 */ +export interface IotStatisticsDeviceMessageSummaryRespVO { + upstreamCounts: Record + downstreamCounts: Record +} + +// IoT 数据统计 API +export const ProductCategoryApi = { + // 查询基础的数据统计 + getIotStatisticsSummary: async () => { + return await request.get({ + url: `/iot/statistics/get-summary` + }) + }, + + // 查询设备上下行消息的数据统计 + getIotStatisticsDeviceMessageSummary: async (params: { startTime: number; endTime: number }) => { + return await request.get({ + url: `/iot/statistics/get-log-summary`, + params + }) + } +} diff --git a/web/src/api/iot/thingmodel/index.ts b/web/src/api/iot/thingmodel/index.ts new file mode 100644 index 0000000..5deaaad --- /dev/null +++ b/web/src/api/iot/thingmodel/index.ts @@ -0,0 +1,88 @@ +import request from '@/config/axios' + +/** + * IoT 产品物模型 + */ +export interface ThingModelData { + id?: number // 物模型功能编号 + identifier?: string // 功能标识 + name?: string // 功能名称 + description?: string // 功能描述 + productId?: number // 产品编号 + productKey?: string // 产品标识 + dataType: string // 数据类型,与 dataSpecs 的 dataType 保持一致 + type: number // 功能类型 + property: ThingModelProperty // 属性 + event?: ThingModelEvent // 事件 + service?: ThingModelService // 服务 +} + +/** + * IoT 模拟设备 + */ +// TODO @super:和 ThingModelSimulatorData 会不会好点 +export interface SimulatorData extends ThingModelData { + simulateValue?: string | number // 用于存储模拟值 TODO @super:字段使用 value 会不会好点 +} + +/** + * ThingModelProperty 类型 + */ +export interface ThingModelProperty { + [key: string]: any +} + +/** + * ThingModelEvent 类型 + */ +export interface ThingModelEvent { + [key: string]: any +} + +/** + * ThingModelService 类型 + */ +export interface ThingModelService { + [key: string]: any +} + +// IoT 产品物模型 API +export const ThingModelApi = { + // 查询产品物模型分页 + getThingModelPage: async (params: any) => { + return await request.get({ url: `/iot/thing-model/page`, params }) + }, + + // 获得产品物模型列表 + getThingModelList: async (params: any) => { + return await request.get({ url: `/iot/thing-model/list`, params }) + }, + + // 获得产品物模型 + getThingModelListByProductId: async (params: any) => { + return await request.get({ + url: `/iot/thing-model/list-by-product-id`, + params + }) + }, + + // 查询产品物模型详情 + getThingModel: async (id: number) => { + return await request.get({ url: `/iot/thing-model/get?id=` + id }) + }, + + // 新增产品物模型 + createThingModel: async (data: ThingModelData) => { + return await request.post({ url: `/iot/thing-model/create`, data }) + }, + + // 修改产品物模型 + updateThingModel: async (data: ThingModelData) => { + return await request.put({ url: `/iot/thing-model/update`, data }) + }, + + // 删除产品物模型 + deleteThingModel: async (id: number) => { + return await request.delete({ url: `/iot/thing-model/delete?id=` + id }) + } +} diff --git a/web/src/api/login/index.ts b/web/src/api/login/index.ts new file mode 100644 index 0000000..15f6aea --- /dev/null +++ b/web/src/api/login/index.ts @@ -0,0 +1,66 @@ +import request from '@/config/axios' +import type { RegisterVO, UserLoginVO } from './types' + +export interface SmsCodeVO { + mobile: string + scene: number +} + +export interface SmsLoginVO { + mobile: string + code: string +} + +// 登录 +export const login = (data: UserLoginVO) => { + return request.post({ url: '/system/auth/login', data }) +} + +// 注册 +export const register = (data: RegisterVO) => { + return request.post({ url: '/system/auth/register', data }) +} + +// 使用租户名,获得租户编号 +export const getTenantIdByName = (name: string) => { + return request.get({ url: '/system/tenant/get-id-by-name?name=' + name }) +} + +// 使用租户域名,获得租户信息 +export const getTenantByWebsite = (website: string) => { + return request.get({ url: '/system/tenant/get-by-website?website=' + website }) +} + +// 登出 +export const loginOut = () => { + return request.post({ url: '/system/auth/logout' }) +} + +// 获取用户权限信息 +export const getInfo = () => { + return request.get({ url: '/system/auth/get-permission-info' }) +} + +//获取登录验证码 +export const sendSmsCode = (data: SmsCodeVO) => { + return request.post({ url: '/system/auth/send-sms-code', data }) +} + +// 短信验证码登录 +export const smsLogin = (data: SmsLoginVO) => { + return request.post({ url: '/system/auth/sms-login', data }) +} +// 获取验证图片以及 token +export const getCode = (data: any) => { + return request.postOriginal({ url: 'system/captcha/get', data }) +} + +// 滑动或者点选验证 +export const reqCheck = (data: any) => { + return request.postOriginal({ url: 'system/captcha/check', data }) +} + +// 通过短信重置密码 +export const smsResetPassword = (data: any) => { + return request.post({ url: '/system/auth/reset-password', data }) +} diff --git a/web/src/api/login/oauth2/index.ts b/web/src/api/login/oauth2/index.ts new file mode 100644 index 0000000..f4a67fb --- /dev/null +++ b/web/src/api/login/oauth2/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +// 获得授权信息 +export const getAuthorize = (clientId: string) => { + return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) +} + +// 发起授权 +export const authorize = ( + responseType: string, + clientId: string, + redirectUri: string, + state: string, + autoApprove: boolean, + checkedScopes: string[], + uncheckedScopes: string[] +) => { + // 构建 scopes + const scopes = {} + for (const scope of checkedScopes) { + scopes[scope] = true + } + for (const scope of uncheckedScopes) { + scopes[scope] = false + } + // 发起请求 + return request.post({ + url: '/system/oauth2/authorize', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + response_type: responseType, + client_id: clientId, + redirect_uri: redirectUri, + state: state, + auto_approve: autoApprove, + scope: JSON.stringify(scopes) + } + }) +} diff --git a/web/src/api/login/types.ts b/web/src/api/login/types.ts new file mode 100644 index 0000000..113e89b --- /dev/null +++ b/web/src/api/login/types.ts @@ -0,0 +1,35 @@ +export type UserLoginVO = { + username: string + password: string + captchaVerification: string +} + +export type TokenType = { + id: number // 编号 + accessToken: string // 访问令牌 + refreshToken: string // 刷新令牌 + userId: number // 用户编号 + userType: number //用户类型 + clientId: string //客户端编号 + expiresTime: number //过期时间 +} + +export type UserVO = { + id: number + username: string + nickname: string + deptId: number + email: string + mobile: string + sex: number + avatar: string + loginIp: string + loginDate: string +} + +export type RegisterVO = { + tenantName: string + username: string + password: string + captchaVerification: string +} diff --git a/web/src/api/system/area/index.ts b/web/src/api/system/area/index.ts new file mode 100644 index 0000000..e91a499 --- /dev/null +++ b/web/src/api/system/area/index.ts @@ -0,0 +1,11 @@ +import request from '@/config/axios' + +// 获得地区树 +export const getAreaTree = async () => { + return await request.get({ url: '/system/area/tree' }) +} + +// 获得 IP 对应的地区名 +export const getAreaByIp = async (ip: string) => { + return await request.get({ url: '/system/area/get-by-ip?ip=' + ip }) +} diff --git a/web/src/api/system/dept/index.ts b/web/src/api/system/dept/index.ts new file mode 100644 index 0000000..c0959f4 --- /dev/null +++ b/web/src/api/system/dept/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +export interface DeptVO { + id: number + name: string + parentId: number + status: number + sort: number + leaderUserId: number + phone: string + email: string + createTime: Date +} + +// 查询部门(精简)列表 +export const getSimpleDeptList = (): Promise => { + return request.get({ url: '/system/dept/simple-list' }) +} + +// 查询部门列表 +export const getDeptList = (params: any) => { + return request.get({ url: '/system/dept/list', params }) +} + +// 查询部门分页 +export const getDeptPage = async (params: PageParam) => { + return await request.get({ url: '/system/dept/list', params }) +} + +// 查询部门详情 +export const getDept = (id: number) => { + return request.get({ url: '/system/dept/get?id=' + id }) +} + +// 新增部门 +export const createDept = (data: DeptVO) => { + return request.post({ url: '/system/dept/create', data }) +} + +// 修改部门 +export const updateDept = (data: DeptVO) => { + return request.put({ url: '/system/dept/update', data }) +} + +// 删除部门 +export const deleteDept = async (id: number) => { + return await request.delete({ url: '/system/dept/delete?id=' + id }) +} + +// 批量删除部门 +export const deleteDeptList = async (ids: number[]) => { + return await request.delete({ url: '/system/dept/delete-list', params: { ids: ids.join(',') } }) +} diff --git a/web/src/api/system/dict/dict.data.ts b/web/src/api/system/dict/dict.data.ts new file mode 100644 index 0000000..730e194 --- /dev/null +++ b/web/src/api/system/dict/dict.data.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' + +export interface DictDataVO { + id: number + sort: number + label: string + value: string + dictType: string + status: number + colorType: string + cssClass: string + remark: string + createTime: Date +} + +// 查询字典数据(精简)列表 +export const getSimpleDictDataList = () => { + return request.get({ url: '/system/dict-data/simple-list' }) +} + +// 查询字典数据列表 +export const getDictDataPage = (params: PageParam) => { + return request.get({ url: '/system/dict-data/page', params }) +} + +// 查询字典数据详情 +export const getDictData = (id: number) => { + return request.get({ url: '/system/dict-data/get?id=' + id }) +} + +// 根据字典类型查询字典数据 +export const getDictDataByType = (dictType: string) => { + return request.get({ url: '/system/dict-data/type?type=' + dictType }) +} + +// 新增字典数据 +export const createDictData = (data: DictDataVO) => { + return request.post({ url: '/system/dict-data/create', data }) +} + +// 修改字典数据 +export const updateDictData = (data: DictDataVO) => { + return request.put({ url: '/system/dict-data/update', data }) +} + +// 删除字典数据 +export const deleteDictData = (id: number) => { + return request.delete({ url: '/system/dict-data/delete?id=' + id }) +} + +// 批量删除字典数据 +export const deleteDictDataList = (ids: number[]) => { + return request.delete({ url: '/system/dict-data/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出字典数据 +export const exportDictData = (params: any) => { + return request.download({ url: '/system/dict-data/export-excel', params }) +} diff --git a/web/src/api/system/dict/dict.type.ts b/web/src/api/system/dict/dict.type.ts new file mode 100644 index 0000000..af6ad5e --- /dev/null +++ b/web/src/api/system/dict/dict.type.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +export interface DictTypeVO { + id: number + name: string + type: string + status: number + remark: string + createTime: Date +} + +// 查询字典(精简)列表 +export const getSimpleDictTypeList = (): Promise => { + return request.get({ url: '/system/dict-type/simple-list' }) +} + +// 查询字典列表 +export const getDictTypePage = (params: PageParam) => { + return request.get({ url: '/system/dict-type/page', params }) +} + +// 查询字典详情 +export const getDictType = (id: number) => { + return request.get({ url: '/system/dict-type/get?id=' + id }) +} + +// 新增字典 +export const createDictType = (data: DictTypeVO) => { + return request.post({ url: '/system/dict-type/create', data }) +} + +// 修改字典 +export const updateDictType = (data: DictTypeVO) => { + return request.put({ url: '/system/dict-type/update', data }) +} + +// 删除字典 +export const deleteDictType = (id: number) => { + return request.delete({ url: '/system/dict-type/delete?id=' + id }) +} + +// 批量删除字典类型 +export const deleteDictTypeList = (ids: number[]) => { + return request.delete({ url: '/system/dict-type/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出字典 +export const exportDictType = (params) => { + return request.download({ + url: '/system/dict-type/export-excel', + params + }) +} diff --git a/web/src/api/system/loginLog/index.ts b/web/src/api/system/loginLog/index.ts new file mode 100644 index 0000000..41d0367 --- /dev/null +++ b/web/src/api/system/loginLog/index.ts @@ -0,0 +1,25 @@ +import request from '@/config/axios' + +export interface LoginLogVO { + id: number + logType: number + traceId: number + userId: number + userType: number + username: string + result: number + status: number + userIp: string + userAgent: string + createTime: Date +} + +// 查询登录日志列表 +export const getLoginLogPage = (params: PageParam) => { + return request.get({ url: '/system/login-log/page', params }) +} + +// 导出登录日志 +export const exportLoginLog = (params) => { + return request.download({ url: '/system/login-log/export-excel', params }) +} diff --git a/web/src/api/system/mail/account/index.ts b/web/src/api/system/mail/account/index.ts new file mode 100644 index 0000000..97b574a --- /dev/null +++ b/web/src/api/system/mail/account/index.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export interface MailAccountVO { + id: number + mail: string + username: string + password: string + host: string + port: number + sslEnable: boolean + starttlsEnable: boolean +} + +// 查询邮箱账号列表 +export const getMailAccountPage = async (params: PageParam) => { + return await request.get({ url: '/system/mail-account/page', params }) +} + +// 查询邮箱账号详情 +export const getMailAccount = async (id: number) => { + return await request.get({ url: '/system/mail-account/get?id=' + id }) +} + +// 新增邮箱账号 +export const createMailAccount = async (data: MailAccountVO) => { + return await request.post({ url: '/system/mail-account/create', data }) +} + +// 修改邮箱账号 +export const updateMailAccount = async (data: MailAccountVO) => { + return await request.put({ url: '/system/mail-account/update', data }) +} + +// 删除邮箱账号 +export const deleteMailAccount = async (id: number) => { + return await request.delete({ url: '/system/mail-account/delete?id=' + id }) +} + +// 批量删除邮箱账号 +export const deleteMailAccountList = async (ids: number[]) => { + return await request.delete({ url: '/system/mail-account/delete-list', params: { ids: ids.join(',') } }) +} + +// 获得邮箱账号精简列表 +export const getSimpleMailAccountList = async () => { + return request.get({ url: '/system/mail-account/simple-list' }) +} diff --git a/web/src/api/system/mail/log/index.ts b/web/src/api/system/mail/log/index.ts new file mode 100644 index 0000000..13172a7 --- /dev/null +++ b/web/src/api/system/mail/log/index.ts @@ -0,0 +1,30 @@ +import request from '@/config/axios' + +export interface MailLogVO { + id: number + userId: number + userType: number + toMail: string + accountId: number + fromMail: string + templateId: number + templateCode: string + templateNickname: string + templateTitle: string + templateContent: string + templateParams: string + sendStatus: number + sendTime: Date + sendMessageId: string + sendException: string +} + +// 查询邮件日志列表 +export const getMailLogPage = async (params: PageParam) => { + return await request.get({ url: '/system/mail-log/page', params }) +} + +// 查询邮件日志详情 +export const getMailLog = async (id: number) => { + return await request.get({ url: '/system/mail-log/get?id=' + id }) +} diff --git a/web/src/api/system/mail/template/index.ts b/web/src/api/system/mail/template/index.ts new file mode 100644 index 0000000..c6dae68 --- /dev/null +++ b/web/src/api/system/mail/template/index.ts @@ -0,0 +1,55 @@ +import request from '@/config/axios' + +export interface MailTemplateVO { + id: number + name: string + code: string + accountId: number + nickname: string + title: string + content: string + params: string + status: number + remark: string +} + +export interface MailSendReqVO { + mail: string + templateCode: string + templateParams: Map +} + +// 查询邮件模版列表 +export const getMailTemplatePage = async (params: PageParam) => { + return await request.get({ url: '/system/mail-template/page', params }) +} + +// 查询邮件模版详情 +export const getMailTemplate = async (id: number) => { + return await request.get({ url: '/system/mail-template/get?id=' + id }) +} + +// 新增邮件模版 +export const createMailTemplate = async (data: MailTemplateVO) => { + return await request.post({ url: '/system/mail-template/create', data }) +} + +// 修改邮件模版 +export const updateMailTemplate = async (data: MailTemplateVO) => { + return await request.put({ url: '/system/mail-template/update', data }) +} + +// 删除邮件模版 +export const deleteMailTemplate = async (id: number) => { + return await request.delete({ url: '/system/mail-template/delete?id=' + id }) +} + +// 批量删除邮件模版 +export const deleteMailTemplateList = async (ids: number[]) => { + return await request.delete({ url: '/system/mail-template/delete-list', params: { ids: ids.join(',') } }) +} + +// 发送邮件 +export const sendMail = (data: MailSendReqVO) => { + return request.post({ url: '/system/mail-template/send-mail', data }) +} diff --git a/web/src/api/system/menu/index.ts b/web/src/api/system/menu/index.ts new file mode 100644 index 0000000..5a80668 --- /dev/null +++ b/web/src/api/system/menu/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export interface MenuVO { + id: number + name: string + permission: string + type: number + sort: number + parentId: number + path: string + icon: string + component: string + componentName?: string + status: number + visible: boolean + keepAlive: boolean + alwaysShow?: boolean + createTime: Date +} + +// 查询菜单(精简)列表 +export const getSimpleMenusList = () => { + return request.get({ url: '/system/menu/simple-list' }) +} + +// 查询菜单列表 +export const getMenuList = (params) => { + return request.get({ url: '/system/menu/list', params }) +} + +// 获取菜单详情 +export const getMenu = (id: number) => { + return request.get({ url: '/system/menu/get?id=' + id }) +} + +// 新增菜单 +export const createMenu = (data: MenuVO) => { + return request.post({ url: '/system/menu/create', data }) +} + +// 修改菜单 +export const updateMenu = (data: MenuVO) => { + return request.put({ url: '/system/menu/update', data }) +} + +// 删除菜单 +export const deleteMenu = (id: number) => { + return request.delete({ url: '/system/menu/delete?id=' + id }) +} diff --git a/web/src/api/system/notice/index.ts b/web/src/api/system/notice/index.ts new file mode 100644 index 0000000..c486639 --- /dev/null +++ b/web/src/api/system/notice/index.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export interface NoticeVO { + id: number | undefined + title: string + type: number + content: string + status: number + remark: string + creator: string + createTime: Date +} + +// 查询公告列表 +export const getNoticePage = (params: PageParam) => { + return request.get({ url: '/system/notice/page', params }) +} + +// 查询公告详情 +export const getNotice = (id: number) => { + return request.get({ url: '/system/notice/get?id=' + id }) +} + +// 新增公告 +export const createNotice = (data: NoticeVO) => { + return request.post({ url: '/system/notice/create', data }) +} + +// 修改公告 +export const updateNotice = (data: NoticeVO) => { + return request.put({ url: '/system/notice/update', data }) +} + +// 删除公告 +export const deleteNotice = (id: number) => { + return request.delete({ url: '/system/notice/delete?id=' + id }) +} + +// 批量删除公告 +export const deleteNoticeList = (ids: number[]) => { + return request.delete({ url: '/system/notice/delete-list', params: { ids: ids.join(',') } }) +} + +// 推送公告 +export const pushNotice = (id: number) => { + return request.post({ url: '/system/notice/push?id=' + id }) +} diff --git a/web/src/api/system/notify/message/index.ts b/web/src/api/system/notify/message/index.ts new file mode 100644 index 0000000..e407c77 --- /dev/null +++ b/web/src/api/system/notify/message/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' +import qs from 'qs' + +export interface NotifyMessageVO { + id: number + userId: number + userType: number + templateId: number + templateCode: string + templateNickname: string + templateContent: string + templateType: number + templateParams: string + readStatus: boolean + readTime: Date + createTime: Date +} + +// 查询站内信消息列表 +export const getNotifyMessagePage = async (params: PageParam) => { + return await request.get({ url: '/system/notify-message/page', params }) +} + +// 获得我的站内信分页 +export const getMyNotifyMessagePage = async (params: PageParam) => { + return await request.get({ url: '/system/notify-message/my-page', params }) +} + +// 批量标记已读 +export const updateNotifyMessageRead = async (ids) => { + return await request.put({ + url: '/system/notify-message/update-read?' + qs.stringify({ ids: ids }, { indices: false }) + }) +} + +// 标记所有站内信为已读 +export const updateAllNotifyMessageRead = async () => { + return await request.put({ url: '/system/notify-message/update-all-read' }) +} + +// 获取当前用户的最新站内信列表 +export const getUnreadNotifyMessageList = async () => { + return await request.get({ url: '/system/notify-message/get-unread-list' }) +} + +// 获得当前用户的未读站内信数量 +export const getUnreadNotifyMessageCount = async () => { + return await request.get({ url: '/system/notify-message/get-unread-count' }) +} diff --git a/web/src/api/system/notify/template/index.ts b/web/src/api/system/notify/template/index.ts new file mode 100644 index 0000000..c6bc548 --- /dev/null +++ b/web/src/api/system/notify/template/index.ts @@ -0,0 +1,54 @@ +import request from '@/config/axios' + +export interface NotifyTemplateVO { + id?: number + name: string + nickname: string + code: string + content: string + type?: number + params: string + status: number + remark: string +} + +export interface NotifySendReqVO { + userId: number | null + templateCode: string + templateParams: Map +} + +// 查询站内信模板列表 +export const getNotifyTemplatePage = async (params: PageParam) => { + return await request.get({ url: '/system/notify-template/page', params }) +} + +// 查询站内信模板详情 +export const getNotifyTemplate = async (id: number) => { + return await request.get({ url: '/system/notify-template/get?id=' + id }) +} + +// 新增站内信模板 +export const createNotifyTemplate = async (data: NotifyTemplateVO) => { + return await request.post({ url: '/system/notify-template/create', data }) +} + +// 修改站内信模板 +export const updateNotifyTemplate = async (data: NotifyTemplateVO) => { + return await request.put({ url: '/system/notify-template/update', data }) +} + +// 删除站内信模板 +export const deleteNotifyTemplate = async (id: number) => { + return await request.delete({ url: '/system/notify-template/delete?id=' + id }) +} + +// 批量删除站内信模板 +export const deleteNotifyTemplateList = async (ids: number[]) => { + return await request.delete({ url: '/system/notify-template/delete-list', params: { ids: ids.join(',') } }) +} + +// 发送站内信 +export const sendNotify = (data: NotifySendReqVO) => { + return request.post({ url: '/system/notify-template/send-notify', data }) +} diff --git a/web/src/api/system/oauth2/client.ts b/web/src/api/system/oauth2/client.ts new file mode 100644 index 0000000..348aed5 --- /dev/null +++ b/web/src/api/system/oauth2/client.ts @@ -0,0 +1,52 @@ +import request from '@/config/axios' + +export interface OAuth2ClientVO { + id: number + clientId: string + secret: string + name: string + logo: string + description: string + status: number + accessTokenValiditySeconds: number + refreshTokenValiditySeconds: number + redirectUris: string[] + autoApprove: boolean + authorizedGrantTypes: string[] + scopes: string[] + authorities: string[] + resourceIds: string[] + additionalInformation: string + isAdditionalInformationJson: boolean + createTime: Date +} + +// 查询 OAuth2 客户端的列表 +export const getOAuth2ClientPage = (params: PageParam) => { + return request.get({ url: '/system/oauth2-client/page', params }) +} + +// 查询 OAuth2 客户端的详情 +export const getOAuth2Client = (id: number) => { + return request.get({ url: '/system/oauth2-client/get?id=' + id }) +} + +// 新增 OAuth2 客户端 +export const createOAuth2Client = (data: OAuth2ClientVO) => { + return request.post({ url: '/system/oauth2-client/create', data }) +} + +// 修改 OAuth2 客户端 +export const updateOAuth2Client = (data: OAuth2ClientVO) => { + return request.put({ url: '/system/oauth2-client/update', data }) +} + +// 删除 OAuth2 +export const deleteOAuth2Client = (id: number) => { + return request.delete({ url: '/system/oauth2-client/delete?id=' + id }) +} + +// 批量删除 OAuth2 客户端 +export const deleteOAuth2ClientList = (ids: number[]) => { + return request.delete({ url: '/system/oauth2-client/delete-list', params: { ids: ids.join(',') } }) +} diff --git a/web/src/api/system/oauth2/token.ts b/web/src/api/system/oauth2/token.ts new file mode 100644 index 0000000..ac89ae8 --- /dev/null +++ b/web/src/api/system/oauth2/token.ts @@ -0,0 +1,22 @@ +import request from '@/config/axios' + +export interface OAuth2TokenVO { + id: number + accessToken: string + refreshToken: string + userId: number + userType: number + clientId: string + createTime: Date + expiresTime: Date +} + +// 查询 token列表 +export const getAccessTokenPage = (params: PageParam) => { + return request.get({ url: '/system/oauth2-token/page', params }) +} + +// 删除 token +export const deleteAccessToken = (accessToken: string) => { + return request.delete({ url: '/system/oauth2-token/delete?accessToken=' + accessToken }) +} diff --git a/web/src/api/system/operatelog/index.ts b/web/src/api/system/operatelog/index.ts new file mode 100644 index 0000000..3ab90eb --- /dev/null +++ b/web/src/api/system/operatelog/index.ts @@ -0,0 +1,30 @@ +import request from '@/config/axios' + +export type OperateLogVO = { + id: number + traceId: string + userType: number + userId: number + userName: string + type: string + subType: string + bizId: number + action: string + extra: string + requestMethod: string + requestUrl: string + userIp: string + userAgent: string + creator: string + creatorName: string + createTime: Date +} + +// 查询操作日志列表 +export const getOperateLogPage = (params: PageParam) => { + return request.get({ url: '/system/operate-log/page', params }) +} +// 导出操作日志 +export const exportOperateLog = (params: any) => { + return request.download({ url: '/system/operate-log/export-excel', params }) +} diff --git a/web/src/api/system/permission/index.ts b/web/src/api/system/permission/index.ts new file mode 100644 index 0000000..b3c7696 --- /dev/null +++ b/web/src/api/system/permission/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface PermissionAssignUserRoleReqVO { + userId: number + roleIds: number[] +} + +export interface PermissionAssignRoleMenuReqVO { + roleId: number + menuIds: number[] +} + +export interface PermissionAssignRoleDataScopeReqVO { + roleId: number + dataScope: number + dataScopeDeptIds: number[] +} + +// 查询角色拥有的菜单权限 +export const getRoleMenuList = async (roleId: number) => { + return await request.get({ url: '/system/permission/list-role-menus?roleId=' + roleId }) +} + +// 赋予角色菜单权限 +export const assignRoleMenu = async (data: PermissionAssignRoleMenuReqVO) => { + return await request.post({ url: '/system/permission/assign-role-menu', data }) +} + +// 赋予角色数据权限 +export const assignRoleDataScope = async (data: PermissionAssignRoleDataScopeReqVO) => { + return await request.post({ url: '/system/permission/assign-role-data-scope', data }) +} + +// 查询用户拥有的角色数组 +export const getUserRoleList = async (userId: number) => { + return await request.get({ url: '/system/permission/list-user-roles?userId=' + userId }) +} + +// 赋予用户角色 +export const assignUserRole = async (data: PermissionAssignUserRoleReqVO) => { + return await request.post({ url: '/system/permission/assign-user-role', data }) +} diff --git a/web/src/api/system/post/index.ts b/web/src/api/system/post/index.ts new file mode 100644 index 0000000..297f893 --- /dev/null +++ b/web/src/api/system/post/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +export interface PostVO { + id?: number + name: string + code: string + sort: number + status: number + remark: string + createTime?: Date +} + +// 查询岗位列表 +export const getPostPage = async (params: PageParam) => { + return await request.get({ url: '/system/post/page', params }) +} + +// 获取岗位精简信息列表 +export const getSimplePostList = async (): Promise => { + return await request.get({ url: '/system/post/simple-list' }) +} + +// 查询岗位详情 +export const getPost = async (id: number) => { + return await request.get({ url: '/system/post/get?id=' + id }) +} + +// 新增岗位 +export const createPost = async (data: PostVO) => { + return await request.post({ url: '/system/post/create', data }) +} + +// 修改岗位 +export const updatePost = async (data: PostVO) => { + return await request.put({ url: '/system/post/update', data }) +} + +// 删除岗位 +export const deletePost = async (id: number) => { + return await request.delete({ url: '/system/post/delete?id=' + id }) +} + +// 批量删除岗位 +export const deletePostList = async (ids: number[]) => { + return await request.delete({ url: '/system/post/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出岗位 +export const exportPost = async (params) => { + return await request.download({ url: '/system/post/export-excel', params }) +} diff --git a/web/src/api/system/role/index.ts b/web/src/api/system/role/index.ts new file mode 100644 index 0000000..aaba4ea --- /dev/null +++ b/web/src/api/system/role/index.ts @@ -0,0 +1,66 @@ +import request from '@/config/axios' + +export interface RoleVO { + id: number + name: string + code: string + sort: number + status: number + type: number + dataScope: number + dataScopeDeptIds: number[] + createTime: Date +} + +export interface UpdateStatusReqVO { + id: number + status: number +} + +// 查询角色列表 +export const getRolePage = async (params: PageParam) => { + return await request.get({ url: '/system/role/page', params }) +} + +// 查询角色(精简)列表 +export const getSimpleRoleList = async (): Promise => { + return await request.get({ url: '/system/role/simple-list' }) +} + +// 查询角色详情 +export const getRole = async (id: number) => { + return await request.get({ url: '/system/role/get?id=' + id }) +} + +// 新增角色 +export const createRole = async (data: RoleVO) => { + return await request.post({ url: '/system/role/create', data }) +} + +// 修改角色 +export const updateRole = async (data: RoleVO) => { + return await request.put({ url: '/system/role/update', data }) +} + +// 修改角色状态 +export const updateRoleStatus = async (data: UpdateStatusReqVO) => { + return await request.put({ url: '/system/role/update-status', data }) +} + +// 删除角色 +export const deleteRole = async (id: number) => { + return await request.delete({ url: '/system/role/delete?id=' + id }) +} + +// 批量删除角色 +export const deleteRoleList = async (ids: number[]) => { + return await request.delete({ url: '/system/role/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出角色 +export const exportRole = (params) => { + return request.download({ + url: '/system/role/export-excel', + params + }) +} diff --git a/web/src/api/system/sms/smsChannel/index.ts b/web/src/api/system/sms/smsChannel/index.ts new file mode 100644 index 0000000..bdfadcd --- /dev/null +++ b/web/src/api/system/sms/smsChannel/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface SmsChannelVO { + id: number + code: string + status: number + signature: string + remark: string + apiKey: string + apiSecret: string + callbackUrl: string + createTime: Date +} + +// 查询短信渠道列表 +export const getSmsChannelPage = (params: PageParam) => { + return request.get({ url: '/system/sms-channel/page', params }) +} + +// 获得短信渠道精简列表 +export function getSimpleSmsChannelList() { + return request.get({ url: '/system/sms-channel/simple-list' }) +} + +// 查询短信渠道详情 +export const getSmsChannel = (id: number) => { + return request.get({ url: '/system/sms-channel/get?id=' + id }) +} + +// 新增短信渠道 +export const createSmsChannel = (data: SmsChannelVO) => { + return request.post({ url: '/system/sms-channel/create', data }) +} + +// 修改短信渠道 +export const updateSmsChannel = (data: SmsChannelVO) => { + return request.put({ url: '/system/sms-channel/update', data }) +} + +// 删除短信渠道 +export const deleteSmsChannel = (id: number) => { + return request.delete({ url: '/system/sms-channel/delete?id=' + id }) +} + +// 批量删除短信渠道 +export const deleteSmsChannelList = (ids: number[]) => { + return request.delete({ url: '/system/sms-channel/delete-list', params: { ids: ids.join(',') } }) +} diff --git a/web/src/api/system/sms/smsLog/index.ts b/web/src/api/system/sms/smsLog/index.ts new file mode 100644 index 0000000..f989171 --- /dev/null +++ b/web/src/api/system/sms/smsLog/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface SmsLogVO { + id: number | null + channelId: number | null + channelCode: string + templateId: number | null + templateCode: string + templateType: number | null + templateContent: string + templateParams: Map | null + apiTemplateId: string + mobile: string + userId: number | null + userType: number | null + sendStatus: number | null + sendTime: Date | null + apiSendCode: string + apiSendMsg: string + apiRequestId: string + apiSerialNo: string + receiveStatus: number | null + receiveTime: Date | null + apiReceiveCode: string + apiReceiveMsg: string + createTime: Date | null +} + +// 查询短信日志列表 +export const getSmsLogPage = (params: PageParam) => { + return request.get({ url: '/system/sms-log/page', params }) +} + +// 导出短信日志 +export const exportSmsLog = (params) => { + return request.download({ url: '/system/sms-log/export-excel', params }) +} diff --git a/web/src/api/system/sms/smsTemplate/index.ts b/web/src/api/system/sms/smsTemplate/index.ts new file mode 100644 index 0000000..2171ff6 --- /dev/null +++ b/web/src/api/system/sms/smsTemplate/index.ts @@ -0,0 +1,65 @@ +import request from '@/config/axios' + +export interface SmsTemplateVO { + id?: number + type?: number + status: number + code: string + name: string + content: string + remark: string + apiTemplateId: string + channelId?: number + channelCode?: string + params?: string[] + createTime?: Date +} + +export interface SendSmsReqVO { + mobile: string + templateCode: string + templateParams: Map +} + +// 查询短信模板列表 +export const getSmsTemplatePage = (params: PageParam) => { + return request.get({ url: '/system/sms-template/page', params }) +} + +// 查询短信模板详情 +export const getSmsTemplate = (id: number) => { + return request.get({ url: '/system/sms-template/get?id=' + id }) +} + +// 新增短信模板 +export const createSmsTemplate = (data: SmsTemplateVO) => { + return request.post({ url: '/system/sms-template/create', data }) +} + +// 修改短信模板 +export const updateSmsTemplate = (data: SmsTemplateVO) => { + return request.put({ url: '/system/sms-template/update', data }) +} + +// 删除短信模板 +export const deleteSmsTemplate = (id: number) => { + return request.delete({ url: '/system/sms-template/delete?id=' + id }) +} + +// 批量删除短信模板 +export const deleteSmsTemplateList = (ids: number[]) => { + return request.delete({ url: '/system/sms-template/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出短信模板 +export const exportSmsTemplate = (params) => { + return request.download({ + url: '/system/sms-template/export-excel', + params + }) +} + +// 发送短信 +export const sendSms = (data: SendSmsReqVO) => { + return request.post({ url: '/system/sms-template/send-sms', data }) +} diff --git a/web/src/api/system/tenant/index.ts b/web/src/api/system/tenant/index.ts new file mode 100644 index 0000000..c51ec7e --- /dev/null +++ b/web/src/api/system/tenant/index.ts @@ -0,0 +1,72 @@ +import request from '@/config/axios' + +export interface TenantVO { + id: number + name: string + contactName: string + contactMobile: string + status: number + domain: string + packageId: number + username: string + password: string + expireTime: Date + accountCount: number + createTime: Date +} + +export interface TenantPageReqVO extends PageParam { + name?: string + contactName?: string + contactMobile?: string + status?: number + createTime?: Date[] +} + +export interface TenantExportReqVO { + name?: string + contactName?: string + contactMobile?: string + status?: number + createTime?: Date[] +} + +// 查询租户列表 +export const getTenantPage = (params: TenantPageReqVO) => { + return request.get({ url: '/system/tenant/page', params }) +} + +// 查询租户详情 +export const getTenant = (id: number) => { + return request.get({ url: '/system/tenant/get?id=' + id }) +} + +// 获取租户精简信息列表 +export const getTenantList = () => { + return request.get({ url: '/system/tenant/simple-list' }) +} + +// 新增租户 +export const createTenant = (data: TenantVO) => { + return request.post({ url: '/system/tenant/create', data }) +} + +// 修改租户 +export const updateTenant = (data: TenantVO) => { + return request.put({ url: '/system/tenant/update', data }) +} + +// 删除租户 +export const deleteTenant = (id: number) => { + return request.delete({ url: '/system/tenant/delete?id=' + id }) +} + +// 批量删除租户 +export const deleteTenantList = (ids: number[]) => { + return request.delete({ url: '/system/tenant/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出租户 +export const exportTenant = (params: TenantExportReqVO) => { + return request.download({ url: '/system/tenant/export-excel', params }) +} diff --git a/web/src/api/system/tenantPackage/index.ts b/web/src/api/system/tenantPackage/index.ts new file mode 100644 index 0000000..49d9d40 --- /dev/null +++ b/web/src/api/system/tenantPackage/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface TenantPackageVO { + id: number + name: string + status: number + remark: string + creator: string + updater: string + updateTime: string + menuIds: number[] + createTime: Date +} + +// 查询租户套餐列表 +export const getTenantPackagePage = (params: PageParam) => { + return request.get({ url: '/system/tenant-package/page', params }) +} + +// 获得租户 +export const getTenantPackage = (id: number) => { + return request.get({ url: '/system/tenant-package/get?id=' + id }) +} + +// 新增租户套餐 +export const createTenantPackage = (data: TenantPackageVO) => { + return request.post({ url: '/system/tenant-package/create', data }) +} + +// 修改租户套餐 +export const updateTenantPackage = (data: TenantPackageVO) => { + return request.put({ url: '/system/tenant-package/update', data }) +} + +// 删除租户套餐 +export const deleteTenantPackage = (id: number) => { + return request.delete({ url: '/system/tenant-package/delete?id=' + id }) +} + +// 批量删除租户套餐 +export const deleteTenantPackageList = (ids: number[]) => { + return request.delete({ url: '/system/tenant-package/delete-list', params: { ids: ids.join(',') } }) +} + +// 获取租户套餐精简信息列表 +export const getTenantPackageList = () => { + return request.get({ url: '/system/tenant-package/simple-list' }) +} diff --git a/web/src/api/system/user/index.ts b/web/src/api/system/user/index.ts new file mode 100644 index 0000000..36776ea --- /dev/null +++ b/web/src/api/system/user/index.ts @@ -0,0 +1,81 @@ +import request from '@/config/axios' + +export interface UserVO { + id: number + username: string + nickname: string + deptId: number + postIds: string[] + email: string + mobile: string + sex: number + avatar: string + loginIp: string + status: number + remark: string + loginDate: Date + createTime: Date +} + +// 查询用户管理列表 +export const getUserPage = (params: PageParam) => { + return request.get({ url: '/system/user/page', params }) +} + +// 查询用户详情 +export const getUser = (id: number) => { + return request.get({ url: '/system/user/get?id=' + id }) +} + +// 新增用户 +export const createUser = (data: UserVO) => { + return request.post({ url: '/system/user/create', data }) +} + +// 修改用户 +export const updateUser = (data: UserVO) => { + return request.put({ url: '/system/user/update', data }) +} + +// 删除用户 +export const deleteUser = (id: number) => { + return request.delete({ url: '/system/user/delete?id=' + id }) +} + +// 批量删除用户 +export const deleteUserList = (ids: number[]) => { + return request.delete({ url: '/system/user/delete-list', params: { ids: ids.join(',') } }) +} + +// 导出用户 +export const exportUser = (params: any) => { + return request.download({ url: '/system/user/export-excel', params }) +} + +// 下载用户导入模板 +export const importUserTemplate = () => { + return request.download({ url: '/system/user/get-import-template' }) +} + +// 用户密码重置 +export const resetUserPassword = (id: number, password: string) => { + const data = { + id, + password + } + return request.put({ url: '/system/user/update-password', data: data }) +} + +// 用户状态修改 +export const updateUserStatus = (id: number, status: number) => { + const data = { + id, + status + } + return request.put({ url: '/system/user/update-status', data: data }) +} + +// 获取用户精简信息列表 +export const getSimpleUserList = (): Promise => { + return request.get({ url: '/system/user/simple-list' }) +} diff --git a/web/src/api/system/user/profile.ts b/web/src/api/system/user/profile.ts new file mode 100644 index 0000000..7ac8df1 --- /dev/null +++ b/web/src/api/system/user/profile.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' + +export interface ProfileVO { + id: number + username: string + nickname: string + dept: { + id: number + name: string + } + roles: { + id: number + name: string + }[] + posts: { + id: number + name: string + }[] + email: string + mobile: string + sex: number + avatar: string + status: number + remark: string + loginIp: string + loginDate: Date + createTime: Date +} + +export interface UserProfileUpdateReqVO { + nickname?: string + email?: string + mobile?: string + sex?: number + avatar?: string +} + +// 查询用户个人信息 +export const getUserProfile = () => { + return request.get({ url: '/system/user/profile/get' }) +} + +// 修改用户个人信息 +export const updateUserProfile = (data: UserProfileUpdateReqVO) => { + return request.put({ url: '/system/user/profile/update', data }) +} + +// 用户密码重置 +export const updateUserPassword = (oldPassword: string, newPassword: string) => { + return request.put({ + url: '/system/user/profile/update-password', + data: { + oldPassword: oldPassword, + newPassword: newPassword + } + }) +} diff --git a/web/src/assets/audio/response.mp3 b/web/src/assets/audio/response.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b7cb77763e9079f49ba9b7bf434d7a5a7fb0f6ee GIT binary patch literal 1736109 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�}) zMf2W_(_VF)9j)1@=B>Ki{cVZX0~`EsrNX5X0sE-n^NcGzCsIgn;11;5NG~Xz@ zO<#spn&hM^gAapVhqOpeqxCA2PF~tIC>T@PD^l73I z7jT6XGc_lb!r#z_RAg}Cgvk7Xxz;M@wmT_HeF)6~+$bmCD`p?L>a1uXp2k>XCiCS+ zb}zU-1eZ2){Tj9S3G-y5ihnUzDfw*iNNYK@{fEQC(kD_+ffm1vrPAMO7YiFL@GH*c zqrl$Jm-_BcKfmCpTN-_{_9HN^Y0`J}fna54)1~~t&-1-u=I;)-yVr@oOx?FdGnfHF zbio?vJbFm7lB?Hngi1M<$g=$fyR9lqSvOSe(&~$vd`drjfOb+zl<|_+t_a!9wMmF6 zhc;LyDdl_8g5!C=v)Sq7QhX4}D6q_|bn#<|M`6lu*WpOpd)!EN<&*vQEUlww!yH~e zKQ9M{K5wZ$`|QHuZ^i2I^)J`g8}c8E>ehGur|rL&ZUU@*vN~Iv0)?s#M0zEcS@_jC z>N`QVJ(IfisG{=B0G4h14+Xq78MF$_^ND?AU8s9@j=MOhr&4w61Mah_>WdODTZM*r z?PB7;PI+E451(Z%|_x|F%kqhjNIK^5AAgGWS z$Z7->SA`Nk_Fx-ID41uX_G={5A0z5uQ3h!i3a6FkF*AE6UkUMu`Nt0>2#r@suh?1O z8!Y5cz64VmJX6Pfs>C};GU2>kB)Xr?asRWtpU?KF@oXZ2K@sYjA5qH9(u%A)##*8KBteH|<9tpt#YGUE5Ve7XYB zQwldPkmAI^N1H;>@%{cAzI*CmuY^Yj!Kz8DLA7E@Mamx!N60{faxI|*&uiwDX^&uA zrem}u#&&uQUH;$HTOj8^iV&cHZoYU&EQhNZ*6`M{L^TeZ8L}{;Mdhtf7kL84Tmb3N zi)X{fGqvk``Np*q1E~uVZ z@hzDXXYBxp4G9z%APuQt-X1I28|<)oXGavUDFKBWbdGcoO4L)QF<`7xj0s8pZh3vyRC9b`}lCQN>EVzfiC zNQW(-d+iA}!^5M7G|@2QIpKQHj1tH4U&kyxDR5*4TgU~4B8IryNcRzZ$dKjW9531iX#|?`=)S9 zo>;h)Xd+5Q9plIILAfW5eiY;p<0GQ%$+X^T_}ym(TG^RnYYr z5lQf%0-5p6ot<$>j&*2eSwxd#f93$Ax(tY<2&RSiqw!Tona~PSTXfA_{?jPI-z*#j zj^7Ox&jJPupGl-wDqVuS+|Q`_T7jY7yX8@(}Npr|V?()!00p+JcH3 znu4b^!W@_(l!d15W%*a980&*2a12Vk5|Mkmi0uLp2Gs37gm`2LGNX>ZCE#w~_-lLk z`c)2nE_rT0@i$@;f72p{^R5SPqG2BVKJ+*=7^w_M!B7SVaeTG_Bp4DkWV+4RN7_eNoQNxaOWCGqEVP3BlfVgoICX%63J^+}C_hd}H+wM>V^!}GK(3S*rSc zx%{btlj%%{ZZ-6jRy21?PVPq3XO3#ODjAFf(D{c@dl2+2L>UkqVX35Wy0Aw zEtQZ^GP@HM3M-EMY}O(J+I*ZJ_q**boKl@1_Nq^eKOeghdEb zm>zcF8@$yTk9g*+m2PN96J|+ViMz2_SsX94<_K=$mu26Pjr>JfQSsZRsfbApwU6ql zsDtPBuR&ScXZT{=GdX(AjMF%0wcUDHa93AfOhwucuZ=1;B4=qTm7nw)1qd@19ac*< zR&8y;$xoJ$I9B^0IRR+6?#ID3LC=0iCpu1Mc6xi|`8%{C+niLc=H45c@PIGFYa=#7 zWCjU+{5qXK7Z6CNM*E`M08?43EYtS|QL?ficFKOlSL_7<`4|w1N%l5c9SjUf}-d4?knbhSoH|Y{C`$-UzteW5jo~I@W z15sRGv}3fa(3WM@ca^M*EX8eav?4{e4Ut7qY03DrrZy(}9fJmHa%vEjU(g8jsOsr-Nl2U(xwe*4MHGq$6ioynH$@Bk z86NxOOm4HjJSy&IA`dmV>?o7u=z=n-ESe>5d_Zs?NEwM#kQxVR#+H_Rb=!^q9mK#g zjEmNR$js^4zXQhJn+ag~2qCdJ4APeDd?MI0*O~)6 zq|N%~OOTU%C`9DC^-wDyT2mEiVS9uoUG1Exoohq5-$=%llHT%Kk-Od&Ouf0j$;*7w zMLen;!|#pOAGYm#8M3%x)g}(`f7@%$e_!#PDZ8Gvst00#OK_9fqE$0Wch@4whe{mA zaUUE}I~Xd5xjkayQz4>k&~hLisLCh+uA@(TU8$lr5}A>%rH+9r0U^Eq+X$X^q~T%C z-YPmul;Oazed@ng{80tHP=X1;O)npEZC-t_pv28!`HqzojKvSjQGUe3YIg13Pw+_@Wc-XK%ybh&mzm z=z_?{B>Ro(-d8N72bQ3^J$~Yo(acuKI6^N9!`Ft$SdZg|QEOIN=#if=r$?ANm z%sI&ONq|W$!z@;DU_hS7;-x%wq#OQjmKD)@ZAJ$gNYIM^;+dadO^a-DjOs2)wut<# ziMjhCWxZ1l>`a|#sv^}8^V81dH1#i6VbdqNX7yNFxuN^|r#H4tVQNCnlFLUwtrmJO zdR2XAeJ8fcv}A1fLf8g&Yf9oD$hLZ$fjvzCV4%I~72#}_*&RpUvlWM(&$_ls{d0%t>V2GBB0N$^?`9_O=&iDr%wS z9CabWLP1_7s8Rq5-?+SSBArGsF*+28;aq(-fZHHN77WPs*KIKqO8E3U4G=Z|fO=jT zmv_CSP?ev|r{qIXYRfBma3E-55w)5sah{014{F;m$Q+EaJNb}X`N3ez>dVK^R*^aJ zv?VZ=H&qr1(Z!S-e9Q#nAClOc}5Pi8@TIpo9#Qq}!bz`ym!9{~3o zuKKA7!HgJxKQJ-zk_h=d#t&DOU7nn^gpo%8%5dTvXt6d6`e;(AtS5A5?x$ELq3NDB zKU^VnUs*Q?fg*bY#YCZ57+n4H<<(;f$4N4-A^hw~x=ht80?cMv(Zi2~lI}inp`z21 zt78QGFJ;qgESDGZ^53w5>5^7fPk&nbvAz?hk{kamvXy-7HQ2y2wORiCder#M$Q8H3 ztt{-lo_yDLk1VG3h8v1B&o+O7kLX$@NHri!@WaQVeuB#(Laisiu$Tf3G|y6AkyL7*G>;Q<|wjrrz|(ZG)I?B zFg6J%E-XK;quVKZuA8Kiz2GQ@AUV1XE}lt&oq(=(xnfzBzUX}6SJLcW57UK<75;Vi zuJ{_WP>^*}RTgh;v{a?=(oAl`U{~$F{IJOT%4Y0!rQKehv+Sm+_?PE@s(9@`Fxrj4 z&_yv(5>UX(MGT~vlR-s|C38BKgynHDb{~vF4>nZgRt*o(xr4X3BM^+_p>1(&vox>? zfpMZ;@1}tDvRWheD&6$pjb^d(O7?kE?w<_{VR8-+a^exDF%N-v#@zReX?^M)z8_id zq~!Lq8E{F-v4=@9jhXtYJtU)0Yf^-1ytzcyZesi99_zEIxErFdAd0Oj-xC9l{_&HF z1g9c&&z{OdUooxM(mdrQ{N-a=!$Uf5pMPqb67^ABFK7LD+ssv2h}%>KhlhxtWMk-? zR+|oG&3ZM14%>t=h6;Zjo&H8+7FPGDPjsDMMcpB5vSC%wkEtqO5s#8d9O8SHgvo`K z(O7>7_G5$(0Dp2PomsJYB2TU@k1P&=2ccP_>W)Vax~&GIPd0A~p{wzh6;ieEWRznJ z)QM{rmPbh{7@)uIah|`|RgJB)%T&$*jaqI8=#PDtHrHY|lRxvl* zvv`8w@K3$0gee=XvH=45=@x6*jH$bC2L)g4OEs^382x%>_|oa}hKML+0_6nPj3m%> z;Uc#!;5*JnGzd^%*O#VQ38pF~^ad1U1t1WB$iGkeF`Z}WT~*LbqHV}=F7fmD73GdfJpOxQ#)7Efc@RuVU3^HS7b*W=g-#1hoT7rZ-3(_@p`D0!bU&-rhdcR zM5P;xpqa0yu4GkVPD?Js!+^15GD!5HQ(Gg?NC}lQ3cl7_UeoeXn*X5RSdJ$si9m`L z%RLtPvQ4J2ChB6>jYZ@oWWGkEP?~~iLLHKp?)XSP+eIvfmAe}VFTN&z*IG!j31g}n zNGKt~Eu;Ka1#3HN61O@yl!#(UDS0ujGroTVU2BkP7!<+?F+?#5PQoof)kI|=mEriu zPbUBtL>SuR3RD=PPF$J3^Cfb9KlN70No}sq5!Q|G^r*dx+{HjUgrh1E3I=zl; zMRC%8njoHd#Xf~|)K|eK>;9xW8e(Z0D%O@BS%JAb}yS&IRB^CyvwPG(Vn&^`wsR z1_}>lY+i#Ngi+~XN)$x*a%H6!_h|Alk+=YeU^6HB>AX{F=nXhqV)p>l%S(B{Vm`^ovmo*`H`eJN zKf3@p)_C=dTVURpN#*_pw>CME2VA}9X^;Z}mq&W$cBhsYXQ{q#d~RA<_1d;IWlMHY zdQG*xVvY>}Ig5)Wl00c#5>73)EbhVn>jPGQNnTgZ8g&Z9ARm_+a0MP%6hZ{ydv`-Y z1ZoZj69fBCz@a634K7u<5TRY~JflQOSguxMss{lrR=cU1Bj8L24!@X+LaK23jI zvJw*N%+tG{baeXsKKg~{i0vsY6T)XuBrRUutGN{tQdWi>1H1-?6TZ8ds+(CR%O zZQTgBGEq+>*g2?&kk!1NH1pb5e`v3f|2}-x zaxqUKGf$bKVSk5D1s#*i|Nhhk#%LY2?DU<)9TTlXX(2V(NPKj5m)J03TS>`Z4UNoh zA$0=5u-0(?>wRaOO6K$rY8&4Vm@45jXbQ~gFy`eS)fGENlbYnVT%GV_iPJt%1PVYD z-VhQ@+0GY@g-3*j0x`$Z#UM@l1yP764B|x(!^$;>Z@nK~-_;&qiN4TNJx;?D@G(6q zjT!nF&Z!vMmJ_DGiM5u2%4uK6${*4C)nY?2B4~ai7UOm0SohB9Z@Ng&-Nag-y(IJGNxh0oP_zN6J~5kT!gdkvF;=%{AVxj1np$ML8fP%u1t_ zD6o;X?&AIZ4T(Yp1~9=W90goPcGIzQEVf=qOcNC*THEnpb&d)=Je_8~Xx%Syupvj8 zfBbw0p(!JD&KyJ_*31);rtiwg2@CBnaB8L_R^`kp4<{|qofr(qyi5s z+8Uu1mJEn!X8HW4Lnlv%A!Jvp^+VmAanMK0i-*s&Pt`6ySG1i05g=5kjk_^1J~4Ja z4nY2Dm9LZ(H72Ai!4$iBnfpXwXbTII_6cc$-r_I5)>p)3437on9XEf*jRz|^8`n&H zJWi9=v8iy)Hh0sqjIST2V%R+h3w36KjnCCD$UZj_`sd>cTrP?ATB&Swcu-w1hz$^# zHP>J6FElh1TofF7Rd?+&>vwzXQsu;z>n_mvzwwI`o8Pu^>At{(_^Wm%RlMf={jq@MT1s#9y+1vtef z?%qGOJG@dm4~q~8H1JB7=RW%W<>h*GPxejiyDE`Ok*SnM5u3s9d=3fZ8bOW4$_Ad% zxOQRQF6rG z==|nWjfU#lCa>qrg!S)rJsPWsqe_}K+S=!2;P--GtL1#3uWtU_FJ*cqDP|`? z-ov(kBhY{=tap<+0c~7ybnDuZef#`ueGFT;zDD6`f?R6*JX`|{ad%~wIr#0Kcm&-J zpL_9S&Not{>ifRWq?@;-(pz?$;Ai#@3T>t|F%WWHIj~rj&TJV$`#hPAmpK>k=uJNs zeK!lfCozty@YYFmYmkJx%ORDpUzRu0s;s6^$c!I+2Lbg7-Z){rgRI&SzBm)U#n3*KVv9Yf-w%=#ao&j*5{~150i)9yc>l*$<4{hAFrGsW^c2iw` zPRDNsQ^H7k%m@si$UlA_!kCNUdS4t~6vNRr0uf<3hx zeL7&^`AvIvJ@}Fj$;6?E0l_7dK0Htb0eE2uxOb+0UCNl9T$d?zT&;dCA0hK3s4t2H zt+W26@zUs1Jjc&84l;b!kCfg-2fv~)q_<-y;&O-m2Y`U)rVGb$_$>ogCZ&7Qcg2Ly z?y{SERr=~;`WiCZ3TlFWRitnI`RaeF2dijSjLOf6HVoAKS($gjtkB@u{ipEM9{~GGJ=R5(IP(nRy#@w=4bP@1}`_{;N}u3DKc@S!WA6(!8r{fq-1WH z3{{>ZE!98$p6(=qvQT7%gEIw~DO_GZK7ABhdNPUOea9hkoD=(%#1gUVi5i;YjtfO2 z#3n1L2J^&m;SdOpoCnZVyN}51>t7&@3xdd-WnWjjxX(@_mN2ms<~S=$PgE8KC+0f3B8$wLdH&4lGPfNXjLq`?VcO|5L#l)+RadUOe13 z>Wv2GC0iiQc$cvJ^ihCW(q(S8AHHT|4B(58S#?F{#G+d)*KTPh=LM} zj4F4DkSj|0zPE4OyxKn|FaIu+NhEXGMF%^^9$d#9ZX8fls<`W7!otK>z&mApuA z$_G7cU&tc0`D=CuSzo!y2Vv8taPp5jB}V&-@47koeJh5U-}-wtk5Tra{+dBq2;uQ; zXJrb^61QGE@TKAEZIGW)u~cm55uLVIVGy?vitSbpP%Y@cNjqs!XLa-Vgq)l6xK(oZ|Oy@tH2S2l)HUfe9c7Jnx>=7+DaX}r8^_XJlNPxzq zdn}reB424**J4A#@~gHKi;|2!P2T3CMT^i)%=YYMfPc+J6*pFnWTM_x?pYu?^^!J4bvRl1Gu_kg{e553sd%>$?aLV5rZhjn_mm8nt1y`h+^ zkKc~ZRG6Ml`fzJRihoe{(qCjn;W%}GHlKLS~28KK5 z8Br+pJ^+g&ZBt!>(&)6mb57AkC?(bcu4MJ2SDX4qX9i{Zd$VJ zxWaNX4Bvd=HKN)J8NKx&Eok$5h|7AI~S(l!ppOU?52=IeFWONgFH@^)YdLpT{av@!}(f z4>sirvepd}51}i@o7|q8yM!LpLsVvMQkrS7==LUJ30)y5zk8C}2-=j1=}qQ`bdTuS zzXbd1oNWViYF_##ayl$!rZ<)3{3@@u1*!g=V-FFuWUQIGdQ_zupdKDmWn8#l7pID5 zC_iSg3}Y=}%)@^}8@=T|g_i{1QiuJz^f1(}C{mQ!$rs^A@X3^EaLxL4)) zzi}me9N+(NThLbdF5lVb;cU;rORF5aAq)&s%9NIOrzkr{pFhTeLR5AC#$m2i_h-bX zS5C*mWXp5qI0~KZ4JVaxcsp+vsdC@ngD?wf!xkoI5& z6E0vTMu_Dl1xS$wgr}T{FCQLr&S_?=fCPr;A?-ad(G$t?`8(#Pu%?1jB7{(|g@wPm zOQ-24rJ>Jhb0W&AHN)xC7^orEmOuw-Th~9sGL~l_w87D3sycU-`bc&y{9Ak7xf|6otWV1fEEg*J;_rui(&EU^JO3UHvUS)@{5=!;;$Hu-|NYcaVEDbI@9|~}Kw29B zK;e|B?%gAhoNllnH+dyVzNI@(FApp>&5X+$w zS?+<{bQu=FKi)k3{LS&S+7x3VZH@T@K5_z}hYd-O2#cDO#|X8^&<})qNize8MiYpz z34!*QfcFAEkG$G1>lI1#1v62d4k=@#R}o|8OEjV2Ln^{tBI{WB*$QP4uASJt`QCTK zfdmUoUSa*IGE;osIM%vv3w6@OI7$6_a|ZsdGcAsNxV>oPmRD2RmF`GJ!$upx+H%0f za7JOTuhh#a3O{!HKpx%kIeLMA{A@>~*THp$lQo-E81w2eaB(RELKWXzFAdTYvwKA0 zRr|od8Ah75eBz~^Db{TL{gpczJeL-|KKJ(yuPIgIlQ56L-0Xi2`xMnyf(>N=6qquA zqU2AN-|J4`Iw~`+!9F)s-Ee_rAjexDYtGRc^n1VhR`m1xJ-@p0b=Bead+2p!k}=de zL_kL~TOf+Z$n@^%`1AcK08{$k@rL4|^Our#A@*(17(!=H7I-L9%*b(2lQBeaCk){X zr7S*<=!Yu&WNAf>AlpeO5afF-Lmzkw*7$3o3C?G(^GJO*`RTAd}2)j zRlGt(1pN1$E^_4%=@s5Ug$L2qL-<}u5NS;fIZKz zQSjfE+{7Dwpr~%^Q=p~tKfzr})^kv?`L$JLxmbmec6=^uJS5!aP; zuRpfyBk#mLCtsdNOFcc^hjWyu8iVao000#)PjGyc2Z&*smySyGYla4Wj3b(EisBy3 zxIR4u=&r30g4y`?R4iidd-vMphdin0 zgxZu+CMRe;%4);Fu;L^262k}KP3Uq+y=YzBK+5cf#!v4C*9L{|{V8?EAZc26_R4)^u}7(ZTlN*9NIEV-q4 zu0aq{Og(NeHa;g@j*l3NP0BQ_jcs^^nlO~E7uC>{3Us5Q0LSE`Q>lZgofte0@tbDu z2i1;e&D@N{4{p^MY{AxxkPaffWaHvtpvSY5x z*;YvAtO5}f!X{L)J5w=1Q3a%6z+mWMP_(12+zB>8T^=pI{lqlOy@BqHJ_+I~v90iK zMZw)^g&Crw0vcs;D>7p7X0hda4&AkEN#81_XLH@khH<$(EwrT(mWLY#lB=He4-5PD zgB}IQ6ozYf^AeU$#31)y)+{0`RmT+OI9?LSG=W~6Aa!zcF`=vDzE%-j>Lsu*!;tK~ z?aw#R1S5?r-VN1PE@I9*3{7~Wl3vQkEc-j=1?ojx3Bj^bT6bw~-d`>UGz`-!1Ja7N zLM)>R{l!B=!|c$Om?0HSvCA^o8WspR1tqizS8{TXEPcNi7*&e5z^LVtRuic$0zM`(@lh|WAWnE zzrCaI4_Ecwv0T6iuePK^f0CCk^V6m?t?=hO3FEqdeHKzIy2@okI}BvvS+W`7_-m#1 zV7TKW^8-eLC>y~I`Fnbwi3tEkp|I*HkpU5)y>DoP;l-`W^|&;&TH4Y8k^128nRA8(lR;BnA3YIeMu^TWBLg?VZmOjv zh#)kL+u{35V;kN4h${B0cJ6Y?3M$jNBd#3EY|WyI zrU%eFsVUCi7LUJ?$manGKpB0%$7r5@1|_%%D{DX#x6+h7^+fXfVxeM*j=)Tzs3GM} z8fbq_)BWA~k>}6WcRc0#lVhJF*Cm4fyzecUEBcqFde@axYbgk;o zeI+*c&V4nBT_CsP!Nc=WwFZ?7Bdl~v3w`6y`4BYQjeAI_S74odtXsUlyOTfrsjI!2 zQ8U%#Q+3aseI{mNT(lZmBG$a?A`C@FA` zuFX2XfjJZn?4uJ+Y&)yc^X2%v*hO*4{#VLgj zy1XN3^|@6fQYB?Q?0zPD^|JZJaRe@K0Duswj6xdx8T)erwrnV1U^Ogao4{C=99EXj zhc8azDBvvT@Ks@9mx@^4v|K47-%VrqF36v!RKrJ-7m7*us;I(jwZue*N>vSZeWfDM z|L*alJvU<(pZ5|F551W@MZ^TA75a7pq@zMGQD%ZV1?P#Fet!euM1vhHZt8eJGZw&}WcWUAGBSb{@Q^ z!9K-4(0ykmuDCJ%g#S?)hciRl&tZB{HC@ND(6i_fb}HFGEjoM9T(G*>vmJcX*h4;b z(a{)`&!}6g5>rT8=gPyIWcmQw0HA|VbpG*k5{GUD*FE!BpEr<;Ymg#vCk^#b*J#>^ zWzVQRzKNsP+DK0MZCaMx;k$M%*p=GmEl^z4FJ(%M9hi`u1&|@D38I^$R|aaeigb{mj5~o7|Q%Ba>1M8MjVr`T?LZrU~Rxp+(|2Z7njdU5jR)dT$mf)EHZ&M-gvhGP`#e~IW>V|Rzx zbAm4>yjlv#!zGp74@%;zC%)TZ$vhQp{n0rUXf{`d=FhsfFa za*#`nbZHa?v#`o2BQKres3!hVK44dPI=5X-iO;?rdE zb*Eq=Q2;`WU8o8v#Y_qCXl&4xI5zPfPRL{`pkl6FAap)*Ir14W;xpSLo zl=#j?KEZ|F(YK({N=)UPu3Dw-V@Ye# z7gn!zenhw1D)6aw?6km1*i*!2KM<->XxSCv^lw>f&&GG+FK6~H-x2p`1zTd4=h^DU za>Y@SeC=UVo38iVQc(+Xqw(C@n%(%BRZk)pf4|b z{Zu)d_6{2c(6R6)rF~MywFEv-#yu?+qB+4L#gH9}U8q`gPP42GCUCH}1nL~lg3Uf% zG35dnAV&hbgXuTMtEel`DZ7d9u34}G&nRYXo3RSg(DSIVZWvi^`7~_W`HFB^InBO5 zN-J#oi>wSTGG(waxhX61V6oCzv8w!M0(>G_oM&C8c`M@;TjQ2Y@tW0*>N-dFO?{o? z$8C+pq8U*tABn9zqOYMr?srr`APLw8#%%e&`h!F-f$QMp2;3M(PkoXIdquqEVASy3 z|8OO9^hH;QjB2vQ4y3H+elpXkLT(F8`DKf|V%vy~pZb`uWweYVVAmcR+pBA6``&J$KXaC~_aN}1 zMglM3+g0x^c8oaxlKx_%QLmtxSW^(EY#aNCecm@!rb}#N8tCC0_GO`5Cgz{c*>{FZ zi=w$2-j-NiS z5*;mFnh}pTj=U5tM~MwEpk@cYJV@F*7+SM|Lq06II>C~w#5KIOUNO9}u*Pw$^RZ9; z_{D`!vcSSDZ9a6NcD@O-mIz-@+z_e5*^a=ftEp#HA<`xkG9z4H}47 zP?T~lROZ+(Q`6{FG?2yc3E0Pe_I_o=2oX2Z_*#rA?e+$lx_GaY(MJq>XuvIpF!H+s zEPZ8PGK@D6(MTa{gxFI*%X;7`wc~0Szw^D^T1HzlC;BN!s9MZW%d^}s zW@ou@-(Jq8Cr!*f5d8QUwD?(G6X}`u(k}WRKNsleov#<92fiTzP)T>%*L?-l^$ zD3hUn!$pCyA_xiTrD1@5k5Rd7U}%D{5n*o*j`1&u6rKE<;D|SF4lCOP(Dd7HOdR!u z6$jmQjd_^$Tx}Y2TMj672sy#K%#CYh@<*je`PW_+`*3{cD$SGNCe{k3@SKqa(7&=E zJuJTeIW?3mA$8U6U>L8bBGnVa(x>!I67S>R3Pt=iv5RFMKiHPfPq(cV|Hb3)nOxXM zb37uGw8Bj;T%CdqukZZ8n4oG30EQqJ?OT5Kt$EzQ`BE~}$X9l_zpZjBZ8Sl9IrCNh zVZ16m8(dd84Z0@pHn^)aBJl$EW6$TH0kt91h`XR>l=M#h2 zU~FW?k>ICrFdhpE48F6=_Vt!Do*WpdWW(nFJh zJGSl(yQFEBNKa!p{ERetRcC2r%1n~-ysDL%gAMS(utMNID(Qm(Ny>nRvyOF9bPeCE z^08+HRKW_e_G&jGo)cboe=au&V(Ti~sDFREx{x_ZC}$!JdX9GaGv7j}kYyUl5M}A1 zsqEYnNPAdq-c>45jG@*oIv)T4A?vtKl41DA&mKBjE?m#aO_N^D8v8r%i6Xf{fJQ@~ zNT_*oEn9TO8bYo~Cgq&A&3lRWqTXEQ$GV4B_|zySb`r)T^EzNk>0E-Dg4pm_sxByZa2t8Au&$B4Gds zspKvAYVU|n1dJY$KkzmH1$f^s8hyoip>{S%X3z*-J6%@X3@JWGr~07=npv3mi2n*(XopN??pZa{HL z+){=oxueho&9t`k)zOZM019Kf_>a z8-KY@+TW%&U~xk06#DTQyz#BafkVUF zf(KKh=+iqKs+Qr`Y$RGmntCXFnH$}W8tS25ZnXdSIf{DLFLXJQh1v}Fr}9{FxyfWg z|MkzI;snqB=jQtABnw{vdNHHp!Z6)dxD795*i5Gh)uC|*Js%4A5Q=Tk!;#dTX8l{U zC@i9yJIAO&jtUfsJL%1K5VQMbww?G7SCybm#m@$us>q zB{A-fRJTIrWSs3Z-;9PcGJ?5{r)bKsXjsOmTLqg(MhLD4p*y_bj&%7p`I@PAss%5g z4uwBt68owv2tD;h;wRhjJa{?)*q}K6w6Z>iMXZ6J!l(3E(<7BU|dG86_Hx zPo^pvJb=P`(Dr-IMPM#g==cU7b9lHSqtJm5doY%(3@l1H)S6T;q5{e;O4 zspPk3N8GjuWt<5pFn2hn+q{!ycadRd-YyYdT>Qt+S9J83aD#m=! z7M~=zCRr1m1+vSFY0|ZZ(-Q9`{woIP4*>zl@*f_lB_?Aq^@@2!`D42&F8vjw%aQUb zl*w|)jw&*aN>gM6FJ0j-J=X})9>0c6b&l%De~wspK0d9}SBX7@JXMeaW2EU(P(?z2 zv;!2=P~_Ge%t8*y|m(ygf*#(QDQS8> zXO-QDzth#;CHn&qFHAhhf`HrKxhK1)s+>RoN{TW%iBKS_q9oPx8uMfddZJNbU%0Nn zKHMLTu|QFiT$6~d`XNp|iarJ4`ZcD7!BkoiOEAeSgNy4&1U#5U{#@4p%H)2c-h+kx z5>FMStMhm;Vm7dxphbQn_2nM9exT^&AhwOD$<%n_MA2Rsv4V(3Idoea+W;`~;LMqj z6{DQ+!zL0kAcd@ls<~LXnuzZ@zJ+D7b_OaX2D-#nZ2Y#U z-ST`9z^Q3FrNguQApD(b{`EUsB+B#Iw=kMKwG!a|A3p$Q$=62vJZjo%;n-Wx`Y9zt zfNo+R&*U58THY-Dlt2pFxo{wv1=d-V>Q!2x281@e0e_@qG=TbxhE*!&jWY*JTKw1L z4y>?tHMQs?&~kS7ExW0hoiSAh$sj9Ee5_i$JJKCuXMpwe6ymZ}b1NGQ2z{>oG_=|# zi6Am}km9zyM$V>40u;M_iFY|n0hgpET}2gg(>Ru%=VNTeW^S!l7`rd$v5n>PDPQJS z5}%HmQcw;zhsI)8iqVF6-y) z7((B`L5fq|KDAM~vXWeU^}7DHiY3@Ob;I!}qs6(7v?Qp~uIRCpe_w#64$EB9giauB zdR~Z%NWr&Rns5j5tfY{0%4{O=BVJA5X=yVO3@A9xfcr=t4G7y9i3$1)qlmQ0%}uWC zDLLq0mA33;8wAKovsu+?RAMlP=d6|1*!}(Zy6$f276}J1)xyI0DOkAzkVItxV3UzX z0&vbmswdHq&sR_#o`975L^a3Nbg9i3htwl3JGl!sL`J?)bXCQr4-APfNNztY)7G%< zGF?%Jzn0@vJ|ytI9&o)KzQgv5$nZab&#@a?m3K)(gQdDLuA}!A2cyL~M}{S;m6X~A z$4PPF5ru6xt{nMY>mPzM0}skHd$nKg(i4{Jfq=4>HpH735~#CFkD2GUZ_AI@Thpjq z2^mdr+1#^AO%DV$TRbT-GbvsUDRsnsR6`9@2IRp0$4@w#lZC;so7#=~u;V8Li#H{q zmkwUjwu~0hnZ)z{RRH8e9vFWI0!AU^LG`KO7kJ5AFC^1eR@QT_c3Is>)2&4})TH%- zGG+{=6)`Nn;c#xm8Db&ehpuAYqA}Cov&RB?6ny$=_UGyQR*foP{&^1MAicwI4MQRa zh|#bB^k{+tq0d`bVYUN^50;b|z^Uo^KbeAzC)K-+u}5P`Wff2j-eO{5-~7mVseln4=Rr>AmewKkECwz{B?-!r><9xE>3r^r)g+xnwb+(@n(x~|ch6pp zR70rV>@EG4erjDx*3Sw?avJ-cN5&BMf3iCYinhv4(y5=#sj#x4dHSjL+;SN@v)eN zGtI4KX0v?F##JE5k=0b&7BEa7MF*jg{fNhmBA?`f%&CPGl|!G6JsD)ChsG!EsXODk zCVCfMIvV(^%#Jqd8)G;fc6`zr(M--Zovao3mkv?-4kc=6r~BB%c&Zcg1p-a8U1Y2q zE_(e-WNXQa!Xi@>xT(d0yb=K~@J?fcc{qPu7;~j5#9hxlWKEcvd|sZ-v;M{F zpxf|aX+bNEy(YVPVh1e-pg7&#_?bmP8DGd2EzHm=9mI?{F{aH4EU#+K>w>m8HbKLRXa^&xU}rUqtv7Q$J3{W`_pH26d$o@ zyO~2TrMraj(qFfFJ6S1IkDiJuHY=Nr<0XGR+c&v*6YmTYKofD)-w&(Li4bTRjps4T zmpoF*ORsqf^v6+0aqwJQ)#<}3CqTmlOQD_7M8H9eGfSD}y@La?;=8hx!gHvg$=eKe zdiA2Pq)L3)D}!*vseZxo(-v`GyGd!Q&f?0gz+Qhp&PZ-1S(JiLi%Us|uqx5;+k-RX zw#qr_mK$y(u&ATZ%o0bk{GxALM-p96B)}dPOAmQ_(~-Tx!hVmgLoq^Y8o-Rz5Q#aT zuhgW=O!A~?KnvbAiH#dRC*LK6aCf3Aac@;K6?*Rsz}53?-nh+8hTJ_sLM|Shwe0GV zyZ`}#MH?Nkh@`v#2L3|MEE95o5P(J~ixqE3O)DFP?I$$PA%JPzUU41Y38lPM@od^i z&{0Ml#z7rL=O?@hOvFGQukX*tf;V9T#+$zFb@N}E)}eL}=&qA93N`K5ze#iOY#PKD>#lu{%X-us*aTEU&dh7T`^A?-u$-lnhlkK8qKuklFJwG`B7ibNjFCu3?`IgkJFjk8xKq~Iw zws^?vVe-DMqGGa6t^%SIr{I@Q~$FOxdFFE~c?a8)4&Ky&ZKj!8Mv_zX1Hef~Fj+kDFUqd4PSd0|VnY9ytO z+P9tS-ZJ`xs(ju$eckA9NyuS?n*%giJboM}@n;)8F7((gR1My=F~fAmV>(z=>ic9( za~1pxHV$v!YJ_!HSLr{5{Z%ULs{hiL4c);yw$6{Fn)r8rodD2{;d*NR>h2a1Jqb3k z8Dts(I$TYgG73pf64ANU@qdN+^F&G=8390S^h#z%93`h)PEQ_<(h2)XSlH!R^o-0)Y$}GU(+Rv56kc)(Zdc6F$#*L}^2zYZ?~hM+ zA@?f)?B}}xKp8%Op@f&qSq>jiE?zN9H(vleuSknA;2Me5yHr6El;8-3O`DKL>3$0f zOM*-fbXmTq)JG>)dyb}asDtt8CbSImjmH~Yy#FI~yi>pwe#p}2sd zxO1ES!zROn1*6{P+p?FDfY6QuD_k8rLK{8>S?Tqwpdk=Z@p;S_Wgy13akA|MYYx>w z9}F_N4a(!`Askie~0HJzQ(P(=4Z2MEC*V306%~t3lqapXp=c=bwQ8Z`7b&b4jbh< zamObb8@ceUfFWfEVNIWo8Okqr*`rqCQFY(ye09&zz>^NX)Ex=dB~eG6WPyUsA{s=& zCN&Mes+*(OXhm}$%1fg>-ZNE zk=ew3E@t(8JSs{=91_p{1N89b>Tp%Od2p6V2h4YFwxdCBZ2}W z#I^U&rDQX z@NtX_)DvN=7%$*1h^>sverS$n2$E77?Kc>9oTSAc4J=^7UQx4I)4psYbixyMbJrc# zdCyRc5GK*u>r)&W=41BZ7mdts==rVv!8@|$to}!{9=_B%IDo`4fU>h=T49@5%z*sps6#9^ zJ}5&!Wj7SSg)0lp!oh_re6i7yY_{3k7t#5-+F(5|G>{^$K`M~|YwMq68LQsMoqP^OuG{QN*cKeqUvf6O>yD$$0i zoNO>agIhuvD4S6)a1&>~zJ5CQL(>{RxMH#ykBFINpYoexsjSasjJty+M!}Cc%a&WZ z4pdXjQfGfnG2)n_TE@2aq{j;$LE{LDtrl-Dtj`>NC9gd2@8zOC=~&PGJbN<|OPZ-e z^4MVj1z?5Q&=GYn;^s6dFCcQlJB}hT1$5yI=$N4J+BiCPY1FLzcp0slN7;y^eXZW8 zN3D-C@G4y;EZe4&*F zRc2A9$Q2l%b@SvUuUDjH0a@5i$efZ@pFdqFzyIWzglpu%V}M4QwPs`T7nUM-#v^sz zi|9s$fYw|ZWMBv=`U%kLh2ulrEjWnnK9XCu` zxWQS}>P0N~_h`BJfpTives;sw%<7#y*yob3OgQ4`X_rnOgl6@>`V)rs-z(iZH=#C7 zo6{{sWHy;Y{PX*3V^TSpQzAR}YlUp)&_KBHuDQFYT5Z}(tXGV)uPYdwj|2^-s7}M_&#T zHg7D>%gesOU&(Ci(0hC9b%qtrFw#@-DFGv}gwsNC@5KJElzLglM`<(p!su(1*jLiC zUX-F&e1S|ZX*a!z=R+6D+fjnmmtV{IoV!U!E%iUa)H?LJlwS5!@lhmK=pr}yrt1|^ zmwRUKNtP^?$!9Br2u#OrO+)B5LRGx;++nzw=L4#rh$O-TY;o#HCY>=1(<8$oHzdnve;ptv|Ec-BV#S~XrTPSZNBiY@t?sxI{tMKV> z@w3maxR}wK{1;F_4jtb#@|a|$r&J6F4cHToOMsYyo>!uH4;IV6Gxn&H_UsC1RjuUG z&yTG#a5RY(015+5i?(Ro+Km~p;wII*F2EUjNpX_PZ{{x$4L6CxhN?~^YTa(44}z%X zyO#l83*gI>*=5DW+7hDm`Bq)g6o_q&iLrtBm%%Q3xeNM+*X0`l4gdH#L}FOG8JwvH z%W9#T&fpMGkm@*?IY0Y1MDd&g>M5E&=1WPs#gt#!FE5NM6|jTXrsHncSJtkrani#9 zvV=0C4;nQEVCP*-TvBN(`6;=0&^zWue~;NAYndwa8BT((FE z<2Ba{#30+Gv99TWq~Zj9W0go!q2`@iQ_(1N^3RspzCgoS{7!p@!3}vNQZo%?#!;vD zKr*Vy%+*Pof&)(1bfzo&61pGXEU z0iZ2(@VqQ_al-&$CjxVH`=}c>Q!_qPm9IzbZgJBSzlgO_6Be)HlY#WdYg3vbv2Ix_ zsU6eeZj$GluNfqH%iI3++V8sOUFrLXllAixz|6DwjzpG)6Au$ap)!&CV5qGjN`Gmi zgzkZX;RBY%mHJ>ZDpM`#sYZ|OsHhlSiWyR-yh;NxuNHsou!j*O$~Pqc0`g$y)0xeM`+q%#^cVscb&yk=azg;In8+Pkx6v_t0psSUPj{m z4yl$?2Syew{mIU4`_286;(t%~?7-(w;m`xXB*)h)>g6H>1L{cJ3|bBK_9hZdxODQ) zwU-}K1w*CPMT3Dwa~c|v2AkD&uJFRZBG8oK`e8?gNce{JN1-4Q&X&xYz?3Op4uNmG zIT4yk<5SV}S`H5vIL?02)n;4$mI9c0 z{r~^~oNLw>$O|hS3oX`8k$x6P(3oK0D$5x7rT}xjg`M_w1vme~OL4v#i_`h`tG;(}FKaXDVS9lTwhr>I zdh`M9Vk8<?G1|Y9?`PHs3tD4hF9G9>c%;g%0F{|u;zC957!M@ z3gy~_+>{H~-97n9Iy8LS*cA^ap4RE&p|sMU3eI}e+VV8+_kNrU%;k#u$Im7JZRC}{ zm7DyI5u~T^x&NVv4b@2O6CISxuKVL$-(>wUA%lB#HfPx3db$M%Ee>iUJ2H(R9kUsRrspWcH8008s^xcu*U3>;i2z5jD&FPWT;zbk9P^Bt-)Kb9{DIBN z=%CG^w-CYFI?2NNgs}Hv{nN@I}r4w zv_XIp8+38<^`9vd-ySbt&(>w(8SBy9jE&M*It5v>aC9K#k+tz3?25i9$q9TrxdBK6 zFpZk|w%GRK?e{eDnG#$$PA(bXL8lbh%q9!&2|D}D2A-89s8W-axb4oBGsiWo0mf(L((Apl z&xxO^-?0@$*4NVg?WTkMlvu*X>pfh(92Tv@qwc@?v(;$!Y!IxbXuZY>Z~w>7=O~2$ zxW1aRP?N^Ul)uek7KKltDp%8X>PvjbHfLCuWX?wM(Y-1j+n2egC-rZye-{HHk?~-> z83+g^45;a|z^$F&xkUsnzww0!e9vL)ZB#VtTELYdY))W^D1(zy9D|$L&hNeFys_S{gAz9qV86f$~q16x^EqOvl_# zub@n(DkZZnQC2Rsv-_f2^~z;WSMqKmt7wL&2;aXwp4$hzefYrHg^ISOW(66H(|DJZ z#yJ#_SlWI-@}oky%+#}f^%WP^=yu2NUtb-GIv995(_&fCw8&Zn=YSI=&FzR9^_A9D zDzm?k!{^rb`K1|d0wCD_c4X@SF{DqzWYTfW^G=)Enhz9kfo$oso;8^?Era^9T8GNA!h;>%{T6GreMSV2Q}~w2!7+FStD$R^$}EczNe2HP4n6Y6!e*c<0-2U`Bp5Ml$D9 zj@Jj#jvkgEe zdd^=YYZj}Hihf6gZ>b%_XT+LY}BhM9|2rEv=GD0taq3p0qGQsy2xK>r4vD-J&2*J$V`WOK@}t)_TN8m1t3Si&cl*c=+h|J0Hn=A#_rkhM9`@MrV?psX?Ti(Fk{9~!>qlWNr>bo*!?!miQu zo93d^voGqjtLo&t=Jt@5Q93VM4)(-dq_436j$ea@7ETB@2hO&uQf|M*<& zoL5&_=+30JmMjXVT{jw=0`?GbqMWDY{)d|28oT-yU&l-5ps4W?3Gpt_C5j0t2|dA~ z?v%zdT|^rm=Nv9`rINEA#mV{swU#amQatVr3N_azfJq_Gq^Ky4QS z1~51R6v+HNlT_*51hyu&bhnCl?m|@)oR-Y4EytY;H>OzAw^u?ho*Yv)4Zp4SMfPxK zDw(JD=1#D_d$}<8Rma^&9w(EHpT5Z)2iDE-3`BBVrlmxHG-kGjrfgH$Hh>+vDDyC*CPMACd5JF@8L;?Td~XW z#mddf{~OIHwXJUrP$LIIOGb)!(b2tX8PF#D0;T7ZaL~|85|sy*c2bO*Z?Y(%=CwuB zFJd%s!|HO)ZgNx3Lw``AWv;r`3lsggJ`c7i-i<0}Y4;WUMk$(w-Q~E~} zsSTK_nPO#jV@E1_nLDC17tQCrO3{Wu15hN#qTN`(DJS!ab#0^lA4})hU0K(4>z!oB zwvCFNRBYQ$Dy-PHZQEwWwr$%+B^C3{{had$R+}HLHrAYD^xg+3VScL3Jk4!|YPzE& zGszCC3j5BE;G3XGkJ)Mz{b96vII?+6+h@YpG6WhiG&sgZ;McJxOsXCbTY{feQ=|K{ zU@1z$L6o)z3C4;Oq*-uCwY+0Hu1U@u!V8IZ`(`Lv*$ygbx|*-GD)yu-MjKV(ma^D|w~;y}y)0NBI$JB5w8^rnSwCKrx9MrWx?`*C_&LM9OPE%LtHSLghg3C@ibhBsO}U@ zNZ^OXk@4i;Hsb&igZRCQYsgoUUCYKCh$l0@-HqCRRtei@pV)rcP8wMEYz9dR6 z)ZdW#*m6`cI2h@c%z_&g@Z$st_`kwQ%L7Ro!HwJT}{D zx8-9m-0*hc=*SLTeczz~-|Oar`xtaBAq%uJej2vwNtp^iwNr`G}v3h;VX4bZk(=ZoRY1cQG^s-cy13xDqAzK)^p)M zpb>p%S1`m%0crzL@UXB1?DWkyR|g}Pn}kK_8Xb|<3HZU<4v6DK7P3Z44HgH@7+9@C z2PyL{f&WIf06%}V@l{G_L$MU*x-m1fXrGAwoljZ8n;uKln6 z^ap?+{aVm=6WKKi-N66uKVvTWDymiiKs?DW*lTA2)uydRR|=f1t4Hfr2PrK{zi5vf z_>P3DuD@>hzczE>m?qqXwT|3fX>6WWmNCh@KK|kAuCP^Ry(JJXcW3_Ea?G4@Uu{ZC z(X@QnIqLkEU;bz5W7gy=QfgF7@LJ8;+@a(Qrj04Vjqa{DPBm&Y@ zN#=s#V%3 znyu|pdVJ3BcpudBRbKV=u7WsQKmyQ*0i(161=s+anEB78YGG}PE>sxJ`c?cM6&WQxF0Pu8*!s5^o$3WA=ag zjXFOlSG^@4OMO6Zq}HFwQvi{>zsXuP0F;ZIwueOkP+U!7Yg(F@(uWFuFOvcxz@6U=1Q6NBsvgkanO30SZQPzj- zvP@@yMve&@+N?65T$!L~6b3-XnD=cFYKX=`WX}kcnM^=_I1r2=NLj_}+z)3e7R&aB zNh9)~2?fK^P8!m6@@o?%=?|N<1X@9H>E*pp^;;9*jl5b zgZ<`?lUrVon3HzP@-Ms;f*6S^jhsq(5}4Lce&RYMUE$SY@{T#rx2C9O_!i29>xh^~ zJ7u6fPUc{=rCBu26!eVMnEH|D77^8 z&?>3RQS#)(vYFc8uplfv!z&MsN7}-)ACVugK(GL%x8b*zYF8fypbU5k9%clRB0(WT z(^K}P3@sReR0&3g6^u+ph(4;C;gqaXn66t)hu>$7ah>z|x3#4|v52Cj_#`Bm{gN#) zV{W;~i=Ox{E3N2b|US{FJDWSkMjr6@1+IMp#HdwuUqA zUp`h4vefCsN|deckV=tw^Unwi)$#JB&@PjUR@VU*aP#+A4b${L3MGH>h(!jr`f_oL zc*kH>a@eigrK1gR3wlk9WahQiHU{U_5pOED-WkXw)&i?7v4T-FoCYnwP%vjEm$#}T z4zP-nM`pe-pIY8(Ds_#RD&=La+Xqc6x|MORqaKO@A@CxgFa))i%O$2rB9&zYZOU_u zb^AYK!`;pbW+4eqo7UX_X<6~=T2cX3B4~I`8y=1zvA(oU$^1fVs&Reo7qfXE%AP(z zkiVt0u%+C+wY!3|E4(P0&mojV?+p|{q5#)(N)kp&246fw0V>gjB;;h!D@O793Kj6v z?rv3P*+E%dY3g};v2b`LMb(T-r00fmqv zq3`wLlG*bOZ|EuWwt;j$o3|2t-28}ycPGB3OA}XK#)>WkXMIpafXQ((5DSmaND=Fq z;{XLsJnUtPHZT&@OW0=gelmaNMjQa68wW9wVnVi`Jc|AIo^F|CMN~v0`t6y=SMGbC zo5wGCORjPdsPCC21?#aHsDXhgGEfYHk`%yn8c))H7z&B@<55IaOyGP@0SXsSyFLh~ zAo73xLo84TGBZ`}Z~cZeaQw^QR1Z@!TNSVTku zmnqyItDDMI-0#k7ll)lJ#dcaAgc3GPs2 zY(S?Cz1WI>Yvj49xN=&Z*G)^l%j5DkDa=EI`3gWvKp>O96aWl }wO0eR00g^`2 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%0DOGb8`zhMM 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

    =)zE8UZrdaDYGB}p_;VLbh943%yo5iN{Qbl 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�S6k}N) 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%0A!DSdF`BgW|I2#J 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

    I$sNtV(Z{OdhLZ7L*zK#Lt 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 tN36pv(FDHaxgY9)S{S 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

    x=8ZJ zK-b9HO)o#QG+D+<;%Uyr17;y`3~sc*`6wNDGhBr zD3}iMMsR>1=LJY}U}>Bu>HUZ=kVJzb=(IfOABnwh2}#s=D?KglDCK=ILYCNIyX8&$ z-*+HkX<(=oyrC1HtYH5*PDN{#3XFQzbC%yb?};ND80WOPv;oL*j%deg1g)<`|NhbK zfG7N37q|%=Kymv|fBMc3F!4P$ z$}wk(y3&44|8q6!fb=MNHbMRF0+s7LE6jo%G-G!uzSOW5-^_KZ^_x zK$D*bxn>r*5&PZ^;Kp!*kADM;Wx;H0rS$mh62mQD3fO|ws$k!RQ4E$2D@yC$i<`Le zQT*_apOhup&a;Z;o%=ARuve`S*@URUy@Fb7)u_M&%8PpP@mv|7W-2$?Ezy!s*ltqf z4bAANzX}Go40a^J7Mj>X(U^;0@o`%YCr3o_S{3rgce=0mCsy*iv%Qw)+Du}!@6*&% zU8bz2@yeUkBD2V(%S<}mm5t*A z4|`+wlmBeZl3TF`J7X^UJ<@Z;+qMw{J~iBQU46Gsysm2!jSBZVO_or8%R`gW6i@Cc z+c(L63_h%j`l3m?S-E98@Xx@hqb7~V8H;9~NaRpaReDX(>W>3q->!>_YL8*<@~YAT z-J-}3SiB_RS=&eimzu^Fpw6A@{( zcG)@$V#o+$NUSj?L&V-At>vhYRfYEW2NX^0=;XTi1c$4Wk%Erf`B-QjV)3#a=nSkv z4TNdv>#lPK!*zYI>$Uw;h`t3NpeMpIUv1!l?~~Ms5xsc;=t?hVWd95aT5J>lt8SZh8^ z(N<@z2Pj?H6N8R>{EHQxcp-O-gPFakC0Es=3|1K%P6-KVGnM#QMG5!I|1j8gqtIyCqBVn6EAsTNH*96iaQ(SuP<2ql z8TmAhM9*6XRlkYZMv(XV1cJ{URpd#PUSjd+d%3NuVS#*tS1O+-*UXlzA4f}pIS>~R zW`39L+wh($yL=!e#Uw9F1ZRw&O_d_^H3{GbQU;)`*}(Q`6vNW($Zl-6KZzn!hm^1M$yq}&4>8&CzaCk(MOq1qh_$&~b zc;7Eha~LM81PjUtQ!ATXczInv7zhV)#jN^0Rx@?vD1ruqaMfTUl@b+k#3^<2MBA(Z zuVUHZ(5r2{Y!YlkjRij6*F6MvoyV-!SPewXeD@+9&5UIkvz$>Q3SNvtcNGHXw1fsy z|4bd#OnrX`SE0@u$#-?G&{oQ=#TCg5%!7&d&o$N-u`2SGS}Y@<9oky`SuQsKx|YQx zy0R?!p`4I00xuR7BQUItA6kno@DO)AJyEFRzV@Yo*^j)fFtcTGF|ff(I5Ps_N+2Ru zB{DW}>0Elf#+49xtCzK|(z&L)n=*TpDy?j51(y-sn8cZgsqW9WO7TuNPnye%5^k*8 zt`nwI?HQa9LKBJxZmUs8;Ol>^pd^Py0gCKxS_JvL$; zEmuqDR73Kq70THu2pUaA@}II~Q=N=zJ=OD5_diZPT3>cpk$Pl!zzvR;d?F)?lyPQM zT;^6+J)^L3G_6#AW$lRd+2gNmtkLU!iRAY>m1$@{(vLRM5OSWDcWnA&nmH#kHn|Sv zM8f9422&uhNz(0O$Ts!aTp<+kOT^AE6@};Q3XX3s+N$#i&gG2f>I-j%&>Kg*W>oN- zhk5&-G9Om0-lwhSn6-Q@iuBQD1fns=*j7)^-NV04PjvM%ZJp-tE}kICSbfA!clFpM zeXg>gCm&^5nIf4Sd!AhT_SR~jrYhl_2&bF&VFd?h96}C(DkRt~fblavB^xJkr!70m zh8*?B+@DsEQ$T;1=U-dcCv~DXQWX5h&tVWy*--l*tGH?GWX+4kX$JI{yU`Vur!9R$ z-Ae?8Dv)w@E3oyCIU27=S5HjrfOu;((+Hx1HFb7l6A&Z9G(l%!NUy5o#^`P|tz(Kw zP`b0;aYdC%aYOvW%Zf6ai=;%7fo&_?$f&yR-1p1vj&JG?Sng6^E{2x{f_vSOQDb7k zL74Pk$ssNZ735JQ_0v>3V&L>3QzoR;*3Iz9&{e4%1e%Mux78lX=-F-~L-h@YtyTpza)bNJLift=6cV?6;#0G7nek zU|WR@3mCnnXo7C}!(T{@2ILkP_{<4y^wUP1oGBI>f6jR=HD&k6#LLjT6stabN{1vK z!Hc=daq{gujIURT^xdWLfD01N9Vzdm(il#}_tiMxe>Jx()ij^`V!tlzy{eZ9Wg;3;#Y#TBI?_Lo$o)G{fCR$KVZvem833iFX!o%A!QQm(($>|Q-n%tL3} zkjN6HEv~=CMFY*h2GWweajS@$AzhCctCr3vV`~mZ#2{qndu(9{q5}zuB*d^5IG?kz z+gX4bQ-p$E6AzQthVMFMylZ=UODa$t_a8soK|nY?tqVD(`N&#EVdKFiXu7-AB|FwR ze-jgTW{D05A=~C8mnv5(8_|s$Th1GT!Pbv@gwNzd^5AEh!s@(Gx^$}6o!;z78I9pE zSE)s_&g!~7ye9?Kc@e$zEr%Sl-Wsc=0E>&pn>XK31q>>k=6FpQU3^O|k%{ZYHpGzk zcO&{iM87vK3P|!btRN;W8}$yAmY#!rj+#6<&auDEs`pNDk|xbj%d|$GW#)-Z=gKfG zUdzYXI^Syv1rxJv50Z+$En+J0e+=!v;CP*0jSAlJzu!V~ut^V089VyA&Tw~oWAJyvFG{^Ug{^r`}$1t;| z_Y?;?hBzD_tmQQL5{mO?{ARB*hB%=TXijb>)6&MinM<^x-0N!PKv;iJAEK>rAlWvQvu-M=jN*|6mfp zTwA!{-P@-Riwtq39}SsaT?ivVTE3T)3<|UV@v{Sf`zNERu1H!Ec6xzkK|KP64>qc6 za@Z%MtZh%l(A}1p^f{_Z6LuxkW}JdHxK%|;rV7mnx+>JT<_db%d3twhEKI{C4CRGO zT#JtJOty~e|5=rGkzwd5U}~R9JD>0jzqKZFa6>l_{RZ6sx9SN$icl9@?FxLLxtmw{VIM1$VDd0Qwa@A270!9 zh7BsN7+)tDPZCf-OWog6e{?zo#<}*xZI`-!;uU2e*m`}^ET3TtaD97>QhA>Gd?)no zmQpxL-xjX%m-dIAd4=>yx#a`NY1F{n1Pqi>1U58^=5R|!ObbibBX=~IMw=s}Hd74X zjDqx~*yHH7V*7#4@GbUEYk$K~qveSn_?q>6v-clACjg+J(b9z+893zC=@+HT z^m+G@;WnN9YAJI=S==u;plotZNE{Ue00hLk{AT~q6bpY67XvJ`gXJO+`|%_vbqN+L zc3dQ+=!H--UwBY&X7J+COWpCG@5x8pV0?}{$Ov>7U#Xh1--o->WvTO%>g}diCr~u` z`?m#t)3|q^*Ll{DYEsxH17 zydyl2QC4vln*jTLN)Kz0<^17zzBX+?o!;33hn$NfEyq8D-Qs(}zG>2j zpq!i!rG2ffT5+*?J8FemtC25!KHXI$1=sdV_Y1djy+OZ~_6FTEvaR1FPrC%YNyG_i zAo}C4&_6RDUsT32ZgCTyKRikxe96GL?X%Xfr2)b?D)k_;#;5x%-9pQ-QMeuZO8UZD z%N_MIIjk2_yD-Rn3A5pAv?hR#nuYMNHm}m5GXL>&76gnj{_p;Cnxu$=VG-4aL26@o zN#!c{yS!dF483@StvmK?j)%OgXgN=o)gw{CIf%s!n7ap)!}x{9%$He|_E}jWsY$C= zT#Sz&2K850{tUiyB6rx8{G)B?W1#D2_R!aIU=if~m=a6v^E=mos3wdX&5r0Kl5AU)KTTm&#-C4X z|3=;WIkbN7ad-5&W+r9PvNYbL^Wl=ylh^s+dOIy#@u2rl#E6Q~u>ae!mv!Ll#r3hd zRaTV2)AhvlLR&l0pHjpiF#v#W01Jk04I1alPK6a70odTwIp2(--{ML*)UYs=Z|@;4 zM*TV46q%o+a3p3X<;`fXu2~7|u*kg;QoI`)UqRSPtXk=D@Ih6FXd%fpER+!LXVD*4 zk4I~2`r1b?*`Vr}+4XHf)ZXbTVTASX$fZW2-+q0W+!*`ZZgdinc-QIwm`!*%)<1v0 zmA+MJW6OObt@ObZ43XrJSEi9`4>~Do(c^KyWrKaJE{FZ2-7P$J3LTHF$dc^-jGLq1 z>$YY$Jc1m1!O@>!+_Z!C35d&8Fh8ZUwd?&eW%isdwD{$InF&(8=(9e#p6>eo@nHbKC}{ zr#871MmeWoWO@ltH0%&o`$zm_+e&OFRsL{4lQOMXP`()>Wgu~Qmu`lk z8oTi36tLjG-8p-vj82@<0J3(3}@v8HU$w0;^1z+um zjof(MhQEYzDlZriPJ!z!Hw2T=9nfKP3rnnfuTE?vhc7UMl$9ePm#2-{Cu4^lP>I6P zj^XiqY8Ph#d0(248y+4)6$hPLHS?=Ug2jgijCJ`|tyKd#aCKcEM+-7I8_+WWILEkM zV;A(x;!Vh|SK@Hr_djt3oqUc#pb0^SplM#85Q z)#N~IAWls#E7@~KgyUheAgISi5`%CufZ$*Npz=ZglDf6ErvWTuScvt`XoAn+?r>8h zdnLL-uBiK;mPp8CS5H@v`-iHg8>fer%eubva7giz5A@CbyR`N{`gTO~*vX>GIAg3) z@O5x~i&DR!1JI@g0@h521%*W5_8!0%?YgUjqCit@cLbCHniEnS_X&9T^Udp~1T#5O zX)S)`XeAjWL`yHD#Tl|r=3k{UldZ>L@0KYs+?-{MkHB~^ia)jBWo(LSWd2x}^AwED z$t4OtJJff$`jzc03qIYBeRVK9c5qPj4x{~UC3Wk3@?&K3;N@w`s;2Su&>+0rN>w)6 z=dFy$2Ml<>ao7;Hno{}Op}9%naxo1CbmurIn8{qd^JBgr1mE_qzhG6c){h{1GYQGS z>hial{yJT38(-^|$L57Q?m!8`Gv|i(S92l_pWMOSQF5LtV;fHMMy&J}={MlxB86?D zh`R24FMWG^KtN})L1CwZr#jcPbi+2pg+V3&08rTzVDbn;dT~%8_lT;4Sa2WU;lzt? z!Bl+jCDKfyNuwc!>Syb|iH-njbU!9SwSXmc3@UmiyjTrfqoIkMY_i$PK3hD|$MtO4 zi}n>}f|J58_p~{dq$9j0;uT+Y>qb~q;O8mBO%VqANhi*ig{h|Z38yaG`&J)yz4t8qcu7k>Wr$#(QgFzn(U0^-+RNMq;oy+ zj`DVPtB+&3=m;p}DAqM;{k11}QcnSV>t^40?YO&`thsPO$w5GE9f~0OdDE;Eu=OC# z2PDKG^elC27%_sxq$*6W=)1ZzDOeb-`GYv??r*GWmRtu{QH_Z{b3W48q`@OsXlVD# ztC1bPSQ$h~zh!YqseXA-o9`Tm0V@d41c78g@ML)V($a%v)<5n<-+*`tN1e^lt6yGE zZ?9Khy8p1x4CLMvzTQsUWgKmUHj7gb1ic^NykbutC`Id3L{%|N)=_EQ^9~UcP;_K$ z2R){%o;^k^2~vNYNn~O4v5cuqb9KaWWZ}Bf(pQ^ko%xo!R}zhwU*#;s}yj?_6@)7W>b74JjmSf$+)*XEVH~)s3|h~-bjK|iT(_!WTX&7_U=sYKYkto@Wqyzl=ft8w$u#u z@BH961nR&0Cj=L#GC05UGh3}17M9OmtT=sH2J?-B2Z)Dzc+IYqCPqRq=~{OxHHjTx z8I=W3a9j(42iq|n8#xCd!l4%g5%hK5&Xmo8zKi7 zOCr$POnqeo)_seBuHSyH#6KMT8{)Bz6!%rncM7sp)15Di>tSff;K+xq1x|$79V*B) zjR4p1sFD;X0?p53;bmrvIhlFFmS(4`9c;t7eWnyZ}ij7oVsM?UZY|Oz2}Oj6ZQ_Jcw*)`_HQ-Z&oD9m-VS5S*oj0C-8q# zfH$|43}L^uqzh3i8Xvs}YYAFjh5d?EO&!2eM1Z9Z{_)Gj5L-&Xij zNFM;vLZSaW6b3gNi|EG)5J`cE?g#;BcTpDxa1SoGMfj=*jCaXZS6sIx(&i|{0XHsT zCtUnsD_%*FZN-TN(shMc{ly1%B+!0UZFy}vtN3+a2!$i%}r z?%(b&;49(!u%hI~(_C9c=6ALV+Q(Y~E! zE?Xge{0B&d;uw>b6?KV*)tyoZlCvTIhBBZN2O1OVa$_M$f}Kwo0a_C3A#@Z-e}4=Z zG=%A+S9Bh-+2>=%qJ*f;KFw~f1&OKM{5z8ijm_e!LP( z302LKAEyWXuzLTJ_KQ;3+28@Sluo}liRoG1n;&PdUT413IPe#PIKm}J562vT!|bdbq!IH z+T!)&`K#df-3+ve?1b-c0GKpuAZ+aCfdWn{ZA=fOQ)Jamg)HEI{Okn*Pd{m2(DRg- zQsr!$T&CcbyKBZ%6Ghh%T)6#?S>5B(&Zp-%B?u!iNPXJ4>f>_f-yA;z9n)B|UP9;L zy@!Li8kgO{%e+Z9KjeDTXp7Yz9Pel~DHrRI-5t#kFWn|5zxEaRvsWW=q16pLR6o`4 zt)C-A4MM2I=~rcEx9t!mYXGQ}MdU2N+b)BQ>w&y91UkjF$=j}hc>iAFg}%aa-)0%^dJM3Hu3s-8Gx4oWY#dm@yJ z*B^xD^ol!9O%ol5(d`I05jIDgg%3gIZm}+;Ecw2_J$`;m1pth@Aa-nH5SO2bVl{E) zxQ&nAJWlishKM@^4SYY~C9qEqJFY$jo3avo0TfU6g_z}}xDqx~nMNGk&7 zIcME`)*c@V6USeNtPAz*Q6eOui3nV(h%R-K>jAV#c?`uR*%6WGsUWFRu~Z5!u=}R7 zB}51OZW|MlcfU3j4g>=bAyk`-_kw0l)U{J`7H8?4qOu5l1hLyo|M7DW1YB0tzF^{^ z(3V7g-+#8phxdglHTeY>q@UkM#(OoOm4=dy14Wtl@J@YGI>aDGE@2BQhm$QrZoB|uj{doSyJ_cYr z5>ZwYFEamR?8LQ=LxVD$)iQrIKM=L)&pAp`zD$u$(y&4Ji}~Iftu%aG?P!ve!CQ+Q zmB{#O1lBp!cvM7MqN;yJCXc(yTV82cQc**^C5OC#Nx+mlFuIfPYK>lIXw&FNx}f5e z)QZ>M-Jfnik~^O%g*peH=y%PgVjN;1CU>_u;j!W{7J+X-l(KDN7t){vs6mYbr5t`k z*uR_GW({i>2I7SoAqI@IPxjbtPNq$T{O5<*XE9rjM8I<+i1|VAV?eTW`z_BfTSaYWiKF==c6JGh#*%*ipIp`W zZa=n!H`)l8H)k-Y#j})28E3Q|RQmrqFs?doKgt$cs>?W7a7Jl;Z138Sov3bDA^b;W zZ>Bq~|4{+=h*ah)ss!0IfBnv2I4l|?wz{PIp`GrnNSW$!{TH88eoRPI8+~PFl3iL; ze{DEu3qkC-fa`!pLz3iDQBWZUCo6)!bLy)NF~$mbr`~!ntXnYW*36NI*&z;(8Ae@u(jzV3(pq> zE+OtLOicGNVSo|0snQ+M&EiTXM^Fiy(3^0hq{B@a{q(u@Hhi-956>mQ#959|)qD0) zx+uX*jkm!{wxGGHuwpOw!IjoT3TL^=)ucn$^QBp)ok4gxAO8uLi2c3IgCn3o8Vg43 ziwg@f=5qruaHuh**DRvJ$;fNgAfz+b^5{hG)-;S4hw#sY@hlX6;X|dESzKFlXBiEH zTj09ZOBgtdeLB~U>(q9U*Y(QlsCOJ;mcP&~%!*=34~-~S`%wbi zxWz{q5=49K*(@fxbf5E)hZc(Bu!Xc#o?2XdO$v$3hZ?%bo{s@ddPg@R+yQ`28dnt!FXRT=FB<@$VzNc23G=wUm z-fwWTx5_zDoCp>q`7jm=a#>#cl_Wm9S&F*AKqN9~A+>gxqAw`#j#o=twS6{~d~jXL zaQ#v-R_Ku5!s*kT9wjdANzq&tO#=Xj5dSL;QFPZz<7FuFX4$O@uJKT_c4N?}bl^@J zL)9|;{!V$+Z$aGuD@5*IjCAR#c;>VQC9&ryFiobYFtvq$8A zNtw$JN0SBtYrRioc16oqcIFOUHTjW+%N-Hb2E+b3cqJ1iW*ISRqkh=e(r=bdj=8+_ z3Yq}sDd`!!FlLJnd}TsLx}=e*tF~FSXS&5pE=$(NDwMf9uyD#=heV-{h9YyS*Ggc1O%VJz3k!i4qk;hg3K};_*INeuSASsP z-ApviRJfar4|D2GF4ORIgLUJ+E{K_dYPlmzbgFW{PLLsv1Vta87bCCVsC|hwA?;6! zIAY`E&do@+U!IbNxoqi`S|o^}WAgax!_-K5Vzi;}?IV~CIA&nE%8aLhb8J}v664^B3W;F=WG8ZlN#OE6#Bt9Lu zzETHgHLatEDiBnd?8XoV1peac=df-R(~?Ps7K>4xC?Q!5XjbG!g5nYxbKznaL{O}W z4DckSv$Rbza(i2bj1hqEZ7ieG$=E#?9s`U;^XW8YFH4mq9=2oYml@nIRP8o9M`xDl zl|odes<_9)EZtNXS8Ns2q^27%V(APbPJL8{ZBi(5cdZXVwAb0P&mLO$O*CY0OX6Z&pAtoh-_sorURrC@|>!tv!7SU%t z2IRt1v{I3x{*3#m8qW6R>AT%ABfAe$UMvW{%kc=9@`5#KJ9D{-DT@CI49lv6OF@g% zKYz`_$1i-M=ZNBmlHVTISFaCcccXZe%e+3mNOTsqGUatX;o$%4TH*Ve6;mJ3Cl=b% zu$#moVo{w3pIhHgqOsQPL^!{K=)vV6glQWG_6|M3$F zFJ-n=D)*7Xz{B&rNQIQ~6<&~N;6GQ)jji%!sNYJ@u+?(ix1mq<2eT``Muc3Qh^#>UQVhkx?16V#wIs*@B4MYnG2gkxr8wXa4Px(Z3~Ox+2GAJSHZz# zti@}4c_G_e)-0V`ojjbl+$ROy)EgK{mvft|B{Aotr{&(i(UShu5uiw)UEU$*f7vUQ z>)*BAj?fxSftaNvO=qr+G_j6>YS<9AZ< z3cU!$yBJtzg&bs9@_t5`xYvpl^}34O&@hP)399J3e+X`+T}`U{mj<=QkbM03+Ng5w z`L>$$zH@AXXrf193?>ixgN}^CM+ns+z{LfSmw?zHFffGG2=FkgDCR+grbgM`Snbq| z^lJCBU(>29d8rD-s}(0;)sK>DT441SMQR*+R|AwtD(Mj9KLl7tBzzT!S9@xfJuq`h zp3pVfTh!xAh!;5Q(U>2yMfW=k_!eExmh@S(E?Vj12Op1#C(;(99)=xPd>c(phf>Zz zKRow163%BFswO>552#Nj0-s;9y0+3ymoMAS>iK;u zN$u+2?1V!E(u~z>Tdi8lxj%-BFQsG(hla_;sB;q(R*hm7hc-pbC&IwM@rA5zJ+cL5|sHhEkG!p)DQUSy{tO*_W3QbH zUU98IIZ2BW&%{;%;!+@KD6wt!p?O}59o>>wHRDeBGI2D0n`_$#26^pA$jK7wMVaBR zpd(jE`z#};vWnaLeEwB%JOBLK(5x#Zk&*F4%!}=^r8tiV?|S zaac$;I|vFG6q};jb-3gs@dBicGl~xuVTYoi5x}`giD@8-M8UAI`H#LQU(cCWnzN zRu-n>>M-I5a!QbA2*~XF$rE`r5We3H?5n6)gycD-llq}5w;JSc3|1##5aEmg?}{GNfgJd~;7Mg8c0{@^SuScMBv5D?<-j1eEht`* z)?0)$Oq`wEnri&{ZUG{1$}5xb|lu@ z<_-$iz+fM4h6!1uqz8q~Vk08=0RVY$B1*z_`I?`ws36U>^OwAYlF1T6aq@wX)*S1Z16Rb^NsalC&e&g6=-t4^HH>&uOvRY?h z0Uxs$*mk?};pi}{Q3?-^!?6J_j49m2kGMZ~hzO{zF`MEJm z-|hN$O-(DaMwC8$IKS<-TBeKR5rr$HxiA%q12fU&$~Z$i)C=P1~8 zhGodLIt45=kb^c?y%KO=j9e$VX<=J@d1E4NYM@Z1tBpk`UlwXGQ!Es#Xv>U?ORq3I zH=Zm3rR}a1=xB<(ehmyL477hW{5_)`Nvcf!Jq3|w;va6uG<6t|>FY-K$2)MC(?FeU z4ER5O4q<^eM$2}Jq_bLw@A-o?NxJU7ib`KMgQE%R{KFFRIz?V>9uD$;qq!65n^Ut9 zq5}5^QP>9y)Z20Jm|C5)?T6OA3~aFF$ARGDs;cTbDIV1iS#Ls@3+iUxu33Ehw+AkI z&BPpq)hDniD9J7uUo``18%=oxeyBJAg8%@OY3BtarV$v9Vl!jtF1`hMSS*h!;!zc! zxpCJbRT;F`T8;MrPMIB{WHXgIWZ4q}$RC4l%Z>r52RuN3LjnxdT!myfzM`n>yQO(f z{+!ZJo`Bs|8_T}D!Ur64rvCo!6k#NU#9gIjT)52Ca^uyZGI{-Pim;;cRmG5OM4BTq z%Lvv`;o66#e6#@2K4b1w7jJj;>1^D)rI0hyPlveu((cBC5rg1n9uR4c0EPlnKmoVI za~iO5ACW)7q^Z~k(1$AVsI`8L3WQUdQR5W#p!w(TiNHNRNv$y*mc~P0mV0g!g+e8n z0ZG)A@|z##$3FAO;8n6%sC;|r0|W&D3`T3?XfUM#V@P8RT!^9U>@db)D4|A}HNdTi zNyrhlG=xPz5x&hC5Zs7TRK`Yu9JJI43v*wzl_pSX?gR;GiAdZOy@gzuEL z5e!QI@v|EO|M}D6qzbpOdbrPx$*CfNRIo~XIhmMaYF%%54wYcQKCL`R3YM!aCDd>r zTNKbwt&XV@@5UmKWBfw;Cr!KP-` zf>>;O3nmZc40d%_J%u9g_R~Yz7DwE)#Lt{LxyK%nqgNhpIyrLkoQcsa?t0Web^+$r z0P`Sb9YrPy10EDYQ>59%%wT(vnv?Q}phnvoXb9gKHg*#XHnG~H$zezN`b=^Js-d7& z5IAATNS;LMPNZ!|A%{ix?ugr15%KSS8qB+mH9Q~rt4RT#-#nVSxhjzP!zNo_+A4|s zBne6!Or!E2m^8lDQ(B&i{8QsJL9$}6h44(JMtDL;-Z%nytSk9Cx!a*kaS|NYN?0Ph z?iA+rfqcZ)3cP!-0a^y;{ISvSVd8`8W@#xFhS!|yZNDEC`enuali^ov*Kp zknElFI-NrfbN0+IeuleXFa%wqV&)r;wTiFc30*bNf3^O#k*F-=Up`xUp=WF4J>bM9 zu$+)&tMNVX?dO@y5&#kQJ$Pp=slyR78kegwC2cB8SxmTO=v~<|WU5d`ugs68&etXW#<=G}m&ZOy4qNpces!MI()9GLW5b0&nj`U#Ol8dIQ%Fk*S7zeUF` z9G1WX2}bDh%vJ2R?1xpT=mNighE3^lle5DMb;Zw&PPqvsIgtYq=g?l$CSw7lsH~t! zTR2yUI~*s0EgheeaJvFQErHWMzT1@XswdVuT!K7fDWatx`2RS%3Wg@QHaZ4_(W4uQ z(cLX$ba#i0ZfOZoy1TnOq#Kd$ZV;4~mPSS7xhF!wZT8fGSpUV9t9%o6 zGlb*oIDH~^`Q5F-C#Kq8VUs^z^Q)fLey3u=x4*Ua`iA%>{4k-JrMx0pN> z(bN~)d}d(UdLN}EGQ^16RwVkb8T(q|J!(_0+Uxbf__^2{E9fpRMq*-hX79;? zrH35L^&)hTR#_=x*=mhM`k-3%f zDSYCQyU#h3~PDF~T9MgaokPsszz z39#F|C6DLwNX@Jn#H}2-reeRMQV`K3T3Vqk$Li8)Lfd0Etz=~-qyq&WKw2ZrZ)RJ9 zClz@^U`CBS*g<82adC@Up4c9`q!bJvD;(5LkDJ>&WsQVpwD}k90IoV|_6lqLZGR%2 zwS{lNB{BCGShcrY6Q}L18l4t9r zF7>^iLviH>0Hj#n*2Q>vQw7NmrMahxwNWufQt&dRWx>7)#4ytl#XCf{Wu}|LORh*s znM6w$a-!lGBF_-5lgypFU>>SUa1nUs0lX>xSB2UDZb|C!{cBBIsNSD@z6$`V3{5Dh z`-cJfIbErs-7t}?#H7sTgFQ+NdU^~H+EQzjCmkk7gpatHPvhD$_$AAKIIa<&GOcmf zB%Y+~NdiaC!4z9wG$|?1WaU%pss- z@*-VD1T$`FXH^p{zXU~2vAm0ZC#*`ST_;R(Gjng5%&*}3{hP!axa;2gUTN)D(aC+a z@MKmQ2}r@9Kkz^NoCcygn=RD%s_dFsWq*F@U#1WVLewI5qG%FMFYn3L&QU6@R5FB> zZU1C;*oDGmnt7UeVb;=d^CQONmeRf>Pl1b}mp^Q*{*G{;OUCN}z=TLZoLBm?ucGIR zgRDJ2NZ5!B`b5;k99SB#O9WI@5U%NlXVr1VNBYDJ|&%60`-@fvrs%vH^ zZ^x3pO7+v(RE4)wJEgrnW&}@5(b|rA`2tf@%(+lahM%ZFLc5v`Df>;k(*CaYp*#MD zR`nk9eZ8o7CqZ@=mYSrRVd^CGCwWv#ILs+#3jzAnbJLT|i(Twht+o)qQe1zQMq z|Eo&-qr&$zuKrszfQkl>#tEeo(Hh>mDlrtUw*^a`E7wIn($jU?Ug0jpV z>zg&1Bvv|&Ke~u;3W89>_ZFcUyJboi{`NpXCinaOBChhG;QeimURh^jt5@b@*NCTU zdjubO?d~|ueUbh1fB0Dl1{Iqd_>-EO>qBc^A&&J3rr#l)xEB>olWOk5$u+)*#n>L9 z@Z-FQF(CCUt;DKc@LqiDfN(>r7N+XgQCRZ}A5BNL`$=@r*OJbfdby;9ib<(I=0bDJ z!!Za{0n&_~3GEa9XKSnBVG~{4YlY7mj}%=atIrS5i?_=t@%;c40EQCkpE$ZoSTO`u z)jbI1g=oNuj&&fz|NSG3dpT^L4|ubY$vpNp>N=RV|1X- zsM9$>&dP~n;S~c;^JW3u)XY}^AGs-Yc!3Ej%Zm$gc26!A{ryItSkB?0_`Sd%x$KRT z$>g~5ytn09S@)J7N8V0P9ZJ};**+aQFq=?Pc3<2Upa!KXka1J#3=RAlm`qFr2kGDY z4XCtWu_&kojsX?cVuTXbtZSo&>m-zJ(U7}|5>{Q?kKRitX&Yo6{dD8`9X8Fui|Xl& z|K?5q&*!V+DKe>tw|{*p)9e&ODvTt;-W$K`{SycTtYLw-hRA6QU&;ufFuQpyMbY#+ z9aD^S{slzM4iJ~MTsn|7Yb>|a*@#9^w{fPyx9F&E!;-&xbKskQbzY6}i&IRNyeR0_ zhm*rEa;k5TG7%n`E2%x@uxi|+uf8psY^turLW$7#j)J=5?MIRJlo%;OdElLmY? X?dM632vRXCjON|A2frK=)>4%f>S7*t*B`WP@Dhy)}6ZiWM*DLj-EbnJWq!IeXXV?LzJa-O3ARsO%I!FDR8y|6PkW(=e3 z`=kDWyzC~7$|$Xjp)(KNPUlcZBXskt#=J0AN|^7SWj5r4 zh`fijvj!`EYv|H>XY^TI?A#lPW_z$gCVRf9pc=Yh8Nni52BoSa!%UgP=hR@dtwa4h z9ImumJg)EL2@YJ?bbm&ms&>Wu`z;2G<22)msG)%xQM&17>JD8bA*ns)fTNfGUL;G_ z)cPKLXd=)O=DHo3n$Vt{slX$b+)yW&l$Ia)XR~SOmD17nBW)W=T&%4Y(n}!G%F9D% zhLpg`UdEzsNm8@#t~0zL7%Pvfg!?$@Ux18+Y37}^Npa;yMOm-%?Z;*VP%uzKLpn#N z6D2*GrV==Y{ng73o6*b_GO-_z!%@?)M56&gTYle!u_b%CVZTP43c1yM!L!w|Yo;#K? z@7!rbs-jNWJ&D`&h^6P&zD}6wo)EqTf19#eBE4Z(E{VQ|zcc@as*m>9tp^kaqm9Yv zW_LKzD?v38DjmQuY+qr&_&@wy0#OM~mZe|zXFCSJT*Of+(Y(JQ`)58W6MV;p7yW8U zVF)Mt*KZm^o%OBy$#h$p;!ED*br+;T08no#q+E@fqEY`|G$hn3UtKbA-~5zt)&aX{ zXuxx0B{wPCD1&!^ zX^*)IWf*oW!U3#FS>QmzS8U0|%Q}b20jY(0pPe|J9{iR{-pa^3`|FW&(9Rm8MO_ms8OIxmi4T~DDk7-=H!uI8vW zXp}zt*oDEI)o_Knl;b{8)-r~PLRM;E<f}z(2tCn0cbGo6~FZ@q3Nu!50cF!t$Y;yI>{gqfc znOa6+b)_HBwbZsfD~&h27))E+(6)DJdrK`hq6xLO#Jo*kP|Coc-XrVrd?Eze6)G37y!B0b_&h zlL)2MgF|f?EyZ0Sqri<(W-jdRstA)i z2}+8%V&b}H*1Wr!u$-waVo}J+lwdx^u%#}IKzXV8TbcotH2gm^?xYh{%vKa%Ozo$Y zCtlA;?bTSt%&2dUKgO?HHumz=g+((00`ROn}EEL zmaX+-xd^0ESi>VNac~2huPw|D8wmi8mgoBzxW3vS_5AA*TB!Tv%!NBGka8 zbvm*_6Z(nfFwj_D=fb)WrdOP_Z%{%T?QOtqR>AwEihq@pU&HwACkb{LR2ir$p226b zL@>o@#&NuPqIhCIWyihYvvy9@+^HC(Z+}uLRXVX^_^ifnzFc%B~N-Nt)7LsFFyK2PLLdPVoLR4 ztW@--&Bj{I@#^R;$M81(5-gW>xQ` zWvB{ulv;GR6C-k+94ql2d0H%A_-x4*`8%{ky2~aAgSMS_N9JbPKyb#1M@l61YL?kr z>#JCjvG+T_yru$^U@CVQU7!N!g}J`0B9Lb(M+%LXl;{ton}U@<=*YQ)hV>~JEofr$ z7|=so!wKC+TNwwY@SJz;`z)u&Ga3gNcsn9#q7!4rh-9-n9qP(2{t3?gRa6c}8*GX? z%(aR{_}E&#PS6xbS__Bi>25L|wxG4d7HGVV>KZATkdDYZsCop4tVjV0;lA=fT9aSN zAw*0>(Hok>uRtk`6AMQxo|sCE5^pY6(UM*xj43*e*59f6Jc)47h)WU!C`pgPu&*_9lZy^rtNOs<;z4Ye>CEzWx`|IN?P-g^u+LnFaJ8ZW`U#oBE^e!iqVsEUtiOrrz-CAI{{?Rs$&BM*CWN7 zW$Np*W*SzB5>@Cce-nM~ zg}RZGB@zZ2Pj$?o>mc3668{|s7p#z$%zZQ`X>}J-)qK4_Jw*z})bVBDS&mR_*zXXW zT`9jpgUGrcMjzqG<%~nv*g0X7*1g*@($P8n&4&V_jR*O?_p1Gq)?S^6F&K+}^@tF9 zx;($$@j~`aJT#s!_weVM<4xzM^{ab}<~P6V*6p%$*Ny9MUcD}~1>^flnJf0WmkaTo zLbyAi+%!3#OkQgRhdSV*%i++d=r&xn@$9^!Tmj`UVRtbhi5X(N+xY8DNLNwIZ#vvi z>4TPLc2<I%$e6L-qH@ysSR5=9`D~_hx(}A>m_<{gV%rGW*Ul1kn zuS_zGKyeL#-Prh2mm17o+k(aa^(j`o`ky~gF%;?Prn(@Tg`j*`Lc?W+YB)a4s}lwl zOQPBuo#rC8%uma~r$}{wx@~qw$)X-twv+oknyM#8T2xd7#-8M)G`W-Jf}<>Olvut9 zAb-g5aeIg0A^G!;zbUCgZgTWGUG(j>;C*c||Lwt&vXIUDbUVRog#V|c&6P=(7zW8S zcH2Ltedr7zFo3m2@{2m@2LiVL@N*ap>M+r7|I^;fp6f{p&A6&p4aB(`ADlIR4%zW4B^b@-Kovoxd#N zA2`dbRX;a1)<0kT+VlcM1Os3UcUbcn$cgzSG!5HPi6h99v6(hI+gA1v^X;r65Zh?t z7wbQML}anal0RSisHXz5fkD}p*URHU-`|-x%M8w5r|1cs{1enQ#+h#^*Q6r@*v92Y z`z7ZIQ7Y?|X+9A3zle^#sj}WX@J9aAS+;UtP`F<3Q{y@uq!VLmC0t;Lj!l)1E5i>< z>aUiU(~|39$hgxOevBE@Yn!nCVJzMKqxZ&}p+~)^R5yWbI#0MGH2z&}wj3qyM4 zRF9^xQMz>vG4-L?%g&Z~<+q7uuaXTKWFD3hbvDw~xT(oS-P@DDMI~u%4oEaW0-)-Y zJwQTj2^$nJ@ix&u_qrhOpaZrr$G9e*48}PP89M9<8K%&AXWm3p%7KDdoFs7%Eh>|L zfP*!*Y@{_f5=Cmfoz?u94~B%DWTiiPs<|{WN?|y& zo2?kTEC~n@u{r5Uc5=EO{yjGA{2d1(pBJ3ZdD#2C>hTKl^KyENMLbiFtbmP{TrHau z_p_{o4r2oWrUpNRAr>dV8+ySs1^R#g`wL%%Zoc@{UMSIA#%S99(2Pj-qi$@^O200- zV`oH~uOxGm{6MHlvus$`Mrfgk8V}sd3+w!8mrdW+{bMlC`uCS_4hMCKZ$h$&VUlLb zrbbOTou)T|oUth9^K)&}@@~F|uQO601~EV$69bF-C@n&7`)LohDjZZ@Y#Pizg4K<$ z;rZ;f2E-=QXpFdP6s_M!%$aCw3g$ma76zV{^Ptoa*8M39*rSLW`HrvQxFJvQZa0lK z{YIb8Ej)8Dxm=rv-M)E&)b}ES3Gw^udT15BQ%4fsjny?b3B4NXe3b<)UF%y5g$;PO z26rP(mI!;0myR@nvKH~im=j^yxtLN`DQ49@g}^bYOcOFDt9jKmnBLuaEI~ObDN}mT zR-cJC0OI-LYNPqmQKn2xh|Zhk6G{uQ`fL!OfNZEU0lt;9 zHG>{ymj@2=l7r1;ob1KbtkCh6({PPs`pa9-ImyEXYyvpfoBt}gkoz>o*p>SQBxr7kOqw%of+Za(4ta=i5jz+tGP%fXEL=($2%IV)i{s%qr_jG zDw8eH&3$rRX{ps8C`yknQar_3uo32Qz#T}ZQ1mh~aLtXXh7rQsbtQC0m0!)=qo#hH z7Mv#O8JC5nvYAj+;2X={ryt!zV)y3 zsL<IlZ#Uj?IRI=K~+-%LkCAEKBU0oWRGQSakxptH;O;%__D{3j!4%I^P%^X=l|(VO{&L=_0Oc|%=N(IJWwU0MQZxOFHdP|i*I zO4bEF5FagvVuS5f)&qy{a_tS}kjlnXN#n>7yspKHC_`puT!Rwi5qU-gmjIu8JBYwraWA?4iIx{s(v7ib}5llk=+Df&MNPGP@ z!FykDXU1x?S&aoPZL^DRy#TM1Mlq%U+kZ#inXP^1JHd2CZ0A6+hBk6e)NIh-ZUodYYUvTYvyQ|-yh$2|FO5@r9xO7bY%h923UWxa+ zETY7n-#5b4j|7cU6ct7fs3d+ZHg+T^jAOlHXJBRXK}g>zAKu*;A!ZUnK~)EACC_cN%h=+775$&$YL#s@jhgiKZ0e72)M5keiTWbb6Nm+azDK27mbB z`CQrnwPL49Eo8JL(`f_|RvHf+;++_w06`|rz6Ve|ojj>|qe;5jHy_qBzNReJ=ltzG z)UD1^Qj0O4Yw8qGqoHLT3}q8!5?(g6T97EAxy5O?S^XPa*C}G4^I$>qmOR}X_&!hM zpqsotWxL9zHa4xlJH8;k{C&FZ^R)Iuc0kOrZ|$!*@Iu^cy7x~|#6BC2_(bk1%Lc%_ zv_BSI$A*omRb`|39h=gNM0a?3s9s>^XqbeLsODPuh{-Wd-E~L+JN0v!^l8z)6z0q^<>G(#9TcnKZ5l~C}-Qe`CmXXa(IiHfQ zX`$Q(j~3CLU30el5qJ&;;HS_qM2`(62l~~JDrD9q<$^+_!b4O{WFheW$_|HM=Cu%L z;JH97A1@Hy_#tr)I!wc@b!wo?Fi7ADD{4~c^5C|0+b$0(;c4}v%yH2$tz_gr5I=Vz z%=O?Je3xsF?VD|w_&Vk0`dC&%IVrjn6|;m%WgQ}oX1;=Wsf4y3C-%kKOg=AfLNO}K zOPx~)nm}KO;vleBBan%i$jgI;*C^A4`A)!c<{aJSOol}bm${CjqAlM#&-^C8X?Skp z^sCM810VpYFd8IKz?0AG+J%Jn5$-}P1#~aks2Y!U(r~=r(-0cr{jR%KE2oe8cYCzu zr)kon0XvC(mlt0b{2yPg1d;ZefMh3x-!;-Ei zBEPMj)w!W%XRIb(m43qY^C?K$EjV0QrxIW z^`tFK?^}HmT2r%Ed`!L{Ek%B66`LsNqjMz&fc~#Pyal4dtriDg_8*;4@}G#kaMG*@ zwYty3QNa*L{=eKlNNHO#X))^1PC^==%h<`r``9?Ceou0`LFsy+gxnF2u!s)5ScQ`i z%z*67B`Jj@iVf59`fczcL(2sd_v`z5RBmMG%}+`!DyPavU1iyr&&v+?&Qq@81zEsI zWEudVu|>o3O@#t6GrxThH7n_d2387by&<_b!8C`ZQnpEWN$8*uGE&x*3LwmWBu#iM zbSwhl0I@+Xt2)LJ%pa20skXSSQfG#g`-_{xs#NN2q7R6X=BlHw^l^CdUiph1IBckyf;eQ~#5!`Jrn%-iC#*g^U6 z&gXcsAdpYh%f@Ul;e_Jc#$!!@~ zhxeyBd|m6&U2m~ks&or49D004Jh=W#jZLv4B^x}l!kuiUMVcv_6R1H71EVnFB#_<# z%o}J!u?OMig+6jj{B{Z>=KRV;m`t=_Fgq3RHsA|x@F+95X=8j2-1_F%bY_mPoA;NQ zTj2fcsP`(m8_w`xoxi~>qzPZD)NWy_k&#e1ZYPhjaEj~T)8=WL%(u;{M|(v?oz%VS z)^T!}8jne>s6go6Ik>R@riZ~2e=j4}yv+#_WkAxyiPO!; zJ)2}jY4D%`ph2aIaD(N;&+qqrGn9rP;IUg4TiyTrcXogvA(LfG^%wo&pz<3`tXCuq zn(8k0xZ^SS?41#%cTThH!E{06aHWucn2-z-Uot|?Yt_r`uLda(xV~49=t%GS4ib4DMvf1r zdErb2j!vnU0A zeHe%PoL{1ah0_rV;fiQ+kY}~_T9?Ebw+!3umOBoKYzw3}y3T*(yU)xj?Y3ewtKw6Z zJDVL#ZOw>axts8J%*?jp+$E5EH~iZY=Q|hay5Ia^*3)xd+e7=mRDT5Y7-NKcxx*zS z16ACHb@opmDuDtGO!KqK=L~K|x&a+Tj0m4BIw^5M1;p9Q9SfU-cWb!Z%@BMZ{mD=b zJ!b)A|2Z}A+Oxaeq+NjRRcryOpkwO06Ze^J>W6fb>lB0jbJDygb0jd$OHjbm^cu|& zY?@}BEi8DHNR?T^jw&M_r3$6tC1R^|QM|Vp!tiMWBREiz_U^VVnU3090aQGX_8V#} zmyCm9%1k);G;~Y`l|gxIU8r@XcJC}s84Io)6Ufq?v(~{leWc%!$?Y!5JvRD`ORh$w zTngpaI`>X2r49wgNyNoaIV%(myKXFmV2=82{OJGu-LEy^yFn@f)41&5boYJ~qNF%Cuw}fbqa5h|g5%3m~0!-`pPwsxe2~sQ& z1^^l+-ZM%Bkj>lkih^NSI8w|ItV`BnI}#Ht#T@z^51k~NImMXf+{v$E?27&i6~+1z z*$v-4#54 z!F=8_nz>sY4Gb#6$Nc8y^{L&gi!Em*eBZ148AgNNrbu4dQCP@&8EMd54zR+7!iH}n zW#EB<0$~E%R*Xypg=c+MDDdF7GTTSgMU{l?lqb_g!QTUOBB4OM%rUm#D81~5uNoFi z$5m}qQVHD9*TwIZuKatkXY%?3SIAv>Si-Hj|MEDrN+@eyy%r)eV;+`$9kuwy%(w{Y z1Rs1T+GPOe^9@6_b5O75I7nLY2-D zX9}cl9x8Q>)S9))4lEgEm8qaL1DQ7YMr+y#@_-I9dUSZH1`nH^2!c27WW>W9a*jq$ z8;lb2KE2p(ftdtzV7vtDheAm#I~M$5DAp#{ zP!K8pJ`$*|8HA4(z>UZVfaFWivI3}|5C!cZW!hN`@3KK@8xe+9hGGZ4MHX* zDX=(%X4-&>Bi5Xx{t;r zt5gMS>MLlc%a%N4*e9J+(eJ?x<|e@sQMlLR4=c5m|EMWQqNMj)@?&BK?0B6+h@kCu zMMGyl)}i^1Pr69ap)XsIX2fC)H3@iJ0X-}P8>Ea<^PLY2fD1%;qoGV$@lfm}HV|@O zl>|zwWLrCx5q%2k=*d;&oM%f#@w^f@cKz`+x*Ow&)7&YU?Y#olnX?0jtoE_WN0HVl zw~YB^Z`;tTZv~Ru)sDo0$>6ThE2RMA0~}4_FZ5pP+n-Fb~B*sryocv(UF61>*Km>#M#|J{gRIq^zSQi=C=8YqI3>k)Dl(ZkyBs zy{ulP@PVavex+ks;G%?vn zts@;#H)w#VS0&PYIK#2ex-M1cGC!~nLoFiVyLuTt=vikjdA9$}pKkz=ftk+UTmCuS zq3Cl&NIH31h-q!(!#E#4+vPp>wz(b&DBOM2tMpHnmXD<7Kirw5g4X=^7b^gywZfO8 z_s`d#ln_Hyz)dT%iS?y{mNR&S3xXeupzL7PHK{dWZ}@47&l_W+W*9YS+Vq_L`n7FF z2=y!7$&XCoTG!rc9_r7}Pp>0bkuc+|006w)Ogt>bO6YY4CaRpp>f8BOqB`_4%Leg8G*wOUL))N<$dWD#_)Ju%w0`fyWuky_^pje(7^QTjE?E4ZQ{u& zYg{qs4j@_?$24M&5pdw$aQ^=3M|v*zpBO3WAEeZjQU2+Q8z%h5o1{~W)DAFjYsDTJ zIycv2S`i{q7UsT^oKiqA3=Bg75QbN-N5T6B%Z`fU2I-DXXpliT9C@NMnmk__(;1sC zd=^tF$-r)Vo4HX<| zV(KS{I%qcHll#fwBy&w=uy>20z)O|(Af>hI84bKsLuXXqEx&{y#4_3`ItwxY*W9{r zk*#y?(zXm$bb(bc=*ZlStC~w2XdnTA=j>l4=zz%czF#%Ub5}Bk|HIElAj-ct`j(0U z4W=kHSTFb?6bLY!F7-unNvLsq(T{Q9tF(}|OiBgpN=1ap+N@UEF&b7RF!Wt+1^XpW zj^j+S^{xxW8pr<(S6T~4k4&!;qz+31Orh6WAI_@B=%tQnmoy(^%>w|uY33{QR(xO? zjF2cG5$a$V;S~fx!-GYTCNZ3t-fZmotsN-?8Fb*Ptz-REV0NLq&c+`jp9tij!i$Gq z&xupyl{1K5Dj?5^cUXAqPEaT2$|Rb2CwdX2b-+ySi1NvX>>{s4IzxoYs*A#ESPs~R zLJ!vA!B^~NZPf(A|Hgp1>F>+&mWf%Q{C~Wfx!|EnOiOHoA zw1;^%$CdMnH@TdsRB4jH-+yGpqv(;V0GBQdCn`h*c?yR&9r~CJl(A>g7y#)x_qn?% z+Z?=oihX(ujD;7X4C$+p!g|W#?m%@gs;1^)2o~@qBkv{Qg{lZ(XoG)cu)zXZc;9G= zhEx5wPbFC1noPik|LcftOfOZEI(+EZd@tK~ZMUULad46wwn+lLeJ6>2EN#|S6$1Wd z)N8W|35JBR0i<%PbRJMqzm1f~(^5>p2Gq?JwvRO1*+b4%X0bzGA6To1#Lj*`_AQ(G z5t$yN&>@$zSCw8|1c2Q1At6g6Gx%zCaUo+O^+9yHa}~AdF#Q2Z|KaB}7*t}WEA1q( zU{zAR#m5CD+Hur%e)+#hPds(bXf#9#w9*H{NkvQVg%4akF)W~SVC)?@doDladO(6# zf8flWrcOn8jT&=jderk5>iQPJk|&oIBfUG=gXXg2Hy0LOAz3c$H0<}*IJJ}b#sza+ zi&yUqmVxo1ePe(QGZb!59q>p@^!cVJ{nxrR8NJ3YD)YNZ zyp5P*pRt@br3Yk$5J5HiQ~oJpc({u&^deyRv;yt5;FE{mmGAAL{ku=&0kavmn^EhZ zgZc01b)B)*@uO4k7NP$dV2P;6pvSgLW&YVMo8L(Qb~CZ8s=sH`!YhcOt{9_|&B8ES z-tV+G%fdXoDsY|F+|h=pf|i+Y@7VsfpK&n_j6C=IzmAnFrqnw)=4d7n!Y6WBNPx=YT@7j5C|S# zN-bB4SFZ+~eH6$~IN(G&o`wJs-Si)RUh)t5-{@J| z3(}aBW}hO$QwbYcrqD^TrHcDR@kaFY90f5e62QAaN3gBd|1>Hj}$=M?qLz zwRTc!Jk^jX>qNgtIk!K2RD1Wd6w|CQFv~hdo>Vj=?hePoNa2x*Zm3^L(9+2Nq1LTh zyg2lCiP0ZV_2uiD>jG^8X3`c;7LiC*`wdpTWVlD2l-#?zw`JdJ@3K_0=DhvhWqEpT=uF~}xH*2q&@CZLI1 zc|lZOsPj-CM)8uLljAk#6fD&go;V9g##`*tZ1kdYq|3UxAG<3oXI3ne6h_@8E*#5< z{Cj`S-V!-|F?_gtI>Iu?1EBKb;by`$P-W)8;CcOAC(Sfs1iXkdZ3%(sBL%g#rMeQj z&Y<}+(y0Q6j~G#xmV|`jY}>V+)kp+Dus>hwGohpZ@Ip7Tu8Y>%`=%o17|n$)Xe}ys5X&Z>-owRoV58quMBL zWOwqee8fN3aDnN4U;5gl=i9ga!Vii5dte7}a{^!{18vi_XMzAfN|buQ52?Zqr^>E3%GR&e4pdtji8<3e zaZKEB=9=Yr!o--f|1v0aHoFj7C=a}i936dBx9E)KjrFXVv}?jxU$f?DNwM;2LIP^M za6WhuUPuj73MxZ5Dk!9OPMq%6h|ofAvOt1Q&{2#)Qf>-BS~M^%swRjOw$S~+;+ZzJ z__wn+TH%}4*BaVp8E({{2JiA}UZ)NCYW!Yt@hrm_@IQz!Q^ArQ*9uqG&Yz$rX8xQ_ zzvfJKJfWMM!{HS%#>u{v)VojpKDupdTEP|UEm#RBNQ#y;^|VTiG^uz5e&w-pdM9q#Mw;@tz7Xmc zI?zdhizZC?IszkFlVQ3$&ymHofOW{UEVaC0@ZY!R@0a+iC;(zqP2@0mA+S^dlXD(0 z)+hz0*tQrNHg{~jrN;eGQl^2oBdnwxYT?DCUQh^#=cX{X6Y|En$ohy~fweErsw$rg!ymE8gQ4u?zO4Xiznu|!Qk z@yEJtR;=i8`zxELy}ug;pW8S0?u3$?#chKPo=}uFnrUE)7fH21KKn%b-2d=%1Yp=S zU)*yNggMKLP9s86b!a_wIeO-UTwd^#8n0m)|1C$fihtWa@&Y|gL3DPL&ZV2%PDBEe z+S?En{WX^&>yohHhorh=KH3sAyi)OAn{}HT22Ki1@n=?9%qEACVx?%ltmFWy{vEB+ zW$H)@lIhzFu?w5o870Gq>5BI+HS)Wf_o!FZpl#T>F1c_X$A|Dd2_1bSzs^4u%NR!np=l{EIOk@>+1#&y1V`lmW|&dN`|QBPJRKG7SVK+f~_j%L~&0 z%BJNOg=}XA#$m9sow5zP!s2fme?_*2z6tt35%*R&jaVn~kmTD)h<1Y9!}x#yUov|D z6iVfn{1#sK@X3h@tKkXtbuYu((zg@DpK1hBamnJPb$A(HYd7f_3-UvZ8xg~sS1a7MR14B`AEjwfB*Q`9&45i<&KO1 zYA^sGR-1r-?md_ei8u$)@LnepK@%NEqtMsKWA17W#lXTqGSJH6LD7tA+3s6Bg(&-) zfXLZ_`}1vMJAJG2ups<>XOW8o-$a~OtR`q=Dx)?NcS3M1%SubEKh=A|gTFx#Zr zAo}QZ_K5(0kvKwbIX8u)mW9EI|4hIlMRYSRQB=tY-a|ZC0o!hIreE-LQ>xd=5Ns|i z*b=00&Z$fONn{`;AdAPg!TcMA1F2Gj%mjlFOP{Paw8sE|icbc{hvKLH=udj|O5dOd z>V>wH7?n8Cu8(T2`C=PwK8mQ5Is{Wj6oQ&)H|BsU+lAGRBL-U$JJOxdY^aJ5}$4&z6bLklQGm%XC?1QoYbEZ05FkznyV*hq}W-g?FW@!jNZciHWo%-3V} zR~hG7a5|h=ZiS(6S*kd!bu(7FMs!h)4#d6R@5OIEOFd~}i`)l=&TF1HFSIY#fAi-! z7!}oYVKPBr&dzRP7D4|~*5#od&+UtD9p@xY$<3V;SV6-g%a* zRnYZHUB&JtfBWAN5-`#*~!VXLy+6*|sT+5tYq9t!JC8PXGPLZx_#7u#wtd zY;!zhzI1JQKrc6!v9tj2cFSU-!z&Nkrkw9UyGBYJ15zK|2Bb zlLY)2&q8L6>_9=(@@43lJSrKPFT3)v7`wvK!|>e9M)bt>2Y$v+yOq}wnF@uOPvyHY znElYzqI%B!531FGNFZs|hT`37loaZd1yQ1{PRY8N4m(q45@6H$E#6&4i99CEad8Op0dqxxa zxs8btrw-_&afq3s&oXFRC3_e^X?qGKl6=ULYr9afM51r;A zIvS}<+Ubl~nu({PmYElaS>E$WaTmK9W8U$9ew5#|=QFx^VbpTEdS>9Nlx~dH$^7bk z`1EH>EN#N>n{D3Fm*+<&n0nm_pg4-v#m0supC@EUZAhaeQCSG6GA9ZowNssYbugK3 zy1aQnb{@V~_XeHPDR!t+ryRNf^J(NiM@cH&WVOQS?an9fw(Z5E2}@vTOhHyNlgEZHx0?X{Od=) z^~$004{s{GBa@0T6@R?+rji#M63ol@?L>-cPifax($j%d5b;~t=hLd3A6TsvR!Oq_ zy%n?IgkzW2bM|q?Ku6G8>V~hov2u+an%eaxpH!`Jc<6e$#YJ2ywIr#eOT+H*>%cl+ z#MZxT6wRWp$t5EbDKS)W*^K{Q7&|mO4Z)9&$B9q~XP@{N2Gnh5fJ2iMiO`tAGVO4= zLJ4$+ZfzJ*c_)&+R_iBeNR@vAhpfSDMwQb|F2%6d?4ISsL_a~K&%k8<$Vc_lXAk$8 z;!pDxSNl`WXBYg-2)5HgA(ZQWVOyG}pE7O~E)!8b$1{B1kzw~-q*HZSWW=9i!c&V0 zQt6;)_!BSE8`e-I02>%+{*q{**quPH7K77*#!(s5#8+5}i2YQoX3n=VM za>llh*Ym`3!}ZM2#~E$qA-SccaTn(~>`4p@q`k$8T?{|hIjSuzhbQz8@A9jizt27f z`b-tPj>f#v2qZ!oo_oh}D|qAZ{qUn5kTECnMG{WOooXV-8wP^_&F_syUJ(jeqyMTW zbEM99xwQBhI+}*cgZ9v=)k@}WP{B!Pww9{Hz0@uS^Xd*(t6)nOHwrhZk!;`5MNRE(O)+R9}_G8=x;Vjj6H6uhZ&8+f6G{ zx7G}Ipm}^^gj+X@3QJAGZ3%AImQ!cEFj8|Ius+b7X*wY%;m4r4T48%=SQl*p_XVqf zq?jxK8Zv2S2o)iFR0OaI^+}1;PMBPLFrx)H&sxobIZfnA*^$?l#3NyY8RZcWKbCcA zMNng%?q9Ub% z!T|te%VXgQ+b@}lWhrDF(g)#W<#Ji(gN)c}Rwdbknv5&*FUOYMrg^z(i3FvPOzRi# zE*x{-p+OXR0fMDgP+gjYYE&iF?hscqyvob*KIJaGdIphRQVmYWe!VKbw0)zacI`{0 z?vc3JTmHLpH+TMMuYp~SHzSPgjx`kkI}GTNf=ZxiKCD7FoD4&!)e{ii8(Rf~jI4oB zdxe8qNhqP?-`I)L*gLL9EF{QL&d7Q{zB1llMQQPco2*`Hbt1&I!(-KV*WXiv6NivM zH{U!ZVF(TXk;R&hs*=!wO9r9LH6<+xi^-(*c;|HKH8!wqzKtkTDH13bWqw7qi#Ug? zE=f%r3V;gf$aJ1d7u%y?eJ)qC_2bXM6{w=Xv+ypjuS{9=D#=~Dy5U-+CZL!8Xhg4M z7fNsGB&H4bA3xUsV6%y?F_^zO80opd;zUgo?5>}{1+AZ19QY%1n{n73v=p$*$ivUE zc>w~2L3`4029e0t&|->6Rt^C?D-NYjIn9J!U-7;;* zK7@!@f3S6Fo!H&j{Cu-?t%8|9=5C;oMaQt}xHgu$TEz)h7-3umI@Ek%xNZI367bzd zNYc*6LJ}lobeNjwRThwK(UwpVr9zky7OPYFxkMVcnYnImo1B>%SA0NkHSOh2-R!=5 z4vTIDeFOr?GthN)GfN$mIy`_te&$?5Yb3e(V#b1m0ZS=Zi8w=pY|^Yw_^i>R z0j}V}U0ye~uc8f^m#VcG<&Q3@h`Yn9X_dpF*q1J57*T8u!;xG8=JaIFfu>l3XFmzl z{$vIU>C$ErSDrzXt+;8Y^FJK8Oj_%;e0vO3SJ`tuC>k-(-S`;U2&+r562*Oa>q5>AbAw zhFT>(3k8JtKYq@_=|atPl~u^x{1j0NEFuDMEZnsdniqyBD!?7lIsOgYDy_K`*bys6zXIi zzgDc40-kRBv$f~;9Cy+maLzt0TmLQW-&Ay^ z`aq!ucQ6CIV#ZZkF%ZHC9qDWsc8z_bZf#5u(4udq*F#|GWqa=QMg8MSnw!IvP4bn= zSWk1LYSjcR!^9jtEX8jSU?m5vp{@C*hIYO%!)KChSkh>5H`{9Yo=ByMV!MyXL>4Bw z-u_yQd_3~RJ=T^^}jg*I2t8d*UW9Vr<7um9E)Fm94RK81X=p^&v7Pyt1qs0*wER{I6Z729Zqj6e02Fc^sei@O0ykmIQb!LSlgoqHBUIx8!{LIkU0P#934!g;fJ?^#=vgHgnR4E^htV(7}T(DJ^kd_ai5X` z$_eZe&dnW1K9{b)RW!m+x|BL#&cq;;mi&+s02FU$wH*|<@H%2(Qx#UkJ+NioUjJom zUhvI|S=*>w3B^WR_FCJWu8OL?f>u1YYwk3A=0^W=#e%2}Ja*WcC_nbfQKGXY<O$Sh}TnB&*B2tn*R(2t;l; zj_}wXbg;AbaC=NDISSOnw1XPq;7h?c$CjgfSMBk62UK8!+S>i1o zdEY$)nI!xfw~uo#+#>{Zit*E*WZ~uOY{#+5MCES7C~*p_3{SvtfdSE>iN6|2nQ*=f z9}awSt*o~%tp8d2p1JfNKbNq;y^qU>ehRl9ic|UGw81#D&MFQ2v>OZMwat&jzhp1Y zey(l~_Zi(8Gk!4~Qy{>r@v26*?Kt&2acyY$CBB;-a-Z4ovGn!_r|ROdo(^x&jKkPV zmEuA<5vleHs(g&^BcKHc4c*xBS>)8IpYS8d1~a|M?fR5tMlujB4`Tx8`r zvUbIVA*-X3RyZaMMC2sM-oTsOKxrdri22Y@r+EeqJO`pLQq@&u7 ziND2>Vfvt26ILX)qV8%3gZhY-9C4NZtLJ@wFy*(lm#?7!jbs>r)5v#`aaoldsVJ$i zd=+pSemDS)*K&Xn{ZJ;*ZE9A8ZJGg=pec-MQ1VB(LcOPlcGdVkPCZ0cG{p;QOY-7u z#u+C|yjCt&pZ@Uw9fkK)GbIRc{m0K$C~(Di`4G%^8&cI9WD)CQ!k(g=AkH1DlX@d|$6$?w zTaAZCL>iFKL`Tc$xQs`}y_7pofN2F`_LjA$yYKVfT%zFK5``?$F78_9`o6L7z(nwh@<;f^j6 z@V1Xlsjb<~%{uVv6f7N*-qq1EWY;Ov{`&3uG4X~MFsQ0$LWh%#!+|*DcNw~^giL(k zfjb75KSsxN;O3@FqH@#WFVRFD7=bl_&j*$ha18Ld$?q6Ii|_E7aFm9Sc+14o|LFY+l4Csw29UzDEWNxYi!IEj@qW<~lTngyu^`ABTE zArK3C*gcu05|L0KmNKRwpPQMqSBy)3HFqCxnqQ=>VkF5YF0L}b5n3Ocfx#etdq%k@ zYTI}yPE9FPt}-(8X&OAKN+a+eKT803C-e172HPb=IZ<)(2tUmRZE!r1dsq;$Q~MnT z6Z=36|02qxCK#4ENX&H>&>KZ-#?BdL zcd9;n69Mv&$uf~4pt5nWQIer1uu#Z)2k*W)p!dX5Q2|orBJz>qkiw$XcyN&rzD|q9 zP|v0eD4pMBxM@XMhi#`PlR81llm&(+D3rBK$1(@2Ipd0Tll)fDR;VChqzE@BgLEX) z$MUisI~|xceKy>>EY+u}%g9)9bN!i1bQ`U7&*#qg!_qxvz$=bEffuD7cjzN-6iJ~p%NvKM3}YR zU_pJXGO4fp6+M|Nv}O@^nO<(Gh1i0))pF!F@`!_Fsh0;^kd}Q`ER~;v{ai7jPU#2u zFn{(6eU`aRWLO#pQhIE!P-CcBlwsf#SJ}*|vKLjHH&(9JFZshN{yLG_O1p{G117xq zx$h*uXFewRwbvYaXjsDpd}GMd~9eJMikD$o^}M+ zt|EEyJ`!7gx{g6d=);l~YC0w6|KIN?0AQWDp%pUkt*af&iv>dzZilmZeEIxjdae`S zBYO4cHMxyNwJ&fk3b_ot-AJM3jUcD9sFA2@9ALdt0nUhX_C)2jD`W?hX3rBEv3^ps zuau!R?q%ZBzhOj09SVR|;I&#~(vY?#F}JCS!c8UfT@4H;*I_t}3q8P0qc%H81Ld$M zX;0}l1qdDSYTcr1`pxvHaEs|Qv05vc7HnE56SJAoZ=Q=KSvrI0(V{XyPq>o2Y&zgV z9Z)NeEfB0xA9lRoo(P#{k6GW2m>{B2&=}mc0;9JuO>~IIj2)!0`Alg4k*H%+1)qB1 ztd=@>ZR=P=;&lyW%3fzIw1S00KHO;SYDd2tYXn4t*4CM%#-JGuK*EmfCo`A9W}Sn? zJnHWjjlLhCpH<05XQ+TakLxa-j?7SM?HtI;1Cq8A!36D$i;vxJqVjFe7~^>V6}3Wc zrL(m<7W}>Xk@{9)BN>dsB^GOk$)wZx?dl#eGcA^gzM3YyIuvJY46C%JGNuJ~G8&p6AfX%URSLAPLOC}GgPh%sO10gsG&%M#{&nAaPv zK!2JzSKe`|Vo>QjTIsg)uW(94S2{hp5V+v(<38e-cxkWQ$YmQl@!i$6<6H3G)8Ai< zwEbp<&Ypj61>eW-F!X3~$P&yO#%=3Gj%6#D8r*la8%jx<$1y>@^m5tFzvkZM@95rx zg{Hr#)Qn2gJ8hzF15@+*n&VUX)&Gk>x3Kh8wtBN2G>YA<} z`B8-MuplViVIz8+pYprXih^XmMy&!2Bw>iVZzYG3VIYVoRD&87lBF!wuU$UBq)uAP zai?b~z8+M?ol(?OKvoj^v_Ckd|C&h8382kB*E};B3GCti9ckkX%HO=@D`CPRH6RQ~MGw%g~7jHWjA3wyCoBXZwxE6hE}XX}dc7yw-SfRO_RXvz{Hp-+_8% zk(*Mnlzq2@P(X|Ddpg2WN(j|rwNh`u^r~7CfL~qS*%PhqHVy4EDi$(4XJ_yRGRiVLeq&` zy*|4ua^QHezCXmrfD?LISt5{|<)Ud^qt`al_DNg=6IiLx$|7s+;YHdo6@I8Tin)1Z?AkX0ZF0+ z97$gj@S%|_#9h~W98cn#lgBK>&lJmR{=a?((ET&j8)oCZ^_e8;5N8;`dh)i2r<;eF zpl0=sEV-ptTy*&%WVBE!tx(-OP`&AC;%=E_^PsMe%S0M1ig+a7Hm-(zcdeaKq{&Qz*bjaQm%74 zGYj88@fF7qPJlG@v!Jc#Sw8!MRR=O8QE3`cmT4pKfvS#h?a4pG4{DEcyFE^FGALgA z*=HelklwMCR$(s2cs&fFSPr3#&PXIzNAu^@&z^Ko zEIBCU8{9B*r8$9Xxi7mu7|tf2oHkVyd{S=wtzwIQEH$x9G)AKKNx~}8%hD8MrPs=y z$$#fp*@rloc(xupEP~I%y_`H^|174@C0GQv_IL&uuu@8>>mySwW{H>438pgXA+$q2 zQP<#wg_r+c8=xu``+|wMd=C140Y~bkte$vG7X0kM>Lj4{+75P4b`ez;yonUZq73XR z>Unv2!<+ujh2_+8wT4PGQu&Tk9_-U)()51PoDhixfIXJQP#L5J$r?3;;_;ujT#6(O z(MLa-NNyT4pxHpsc!svf89Z6EcO6S)?-iBwSrcWXzQ=DoEES$~>suA6{^w@V?2>8 zt%-8%9^&gLM6gcdKRIp>7YdRcN1Ar;{eAMb+rOPr1-WA+z;$_a_)Icd88$Au-yJpS zGv+xFRDkb&zrr3=pz6xVy#{${+4Xw!l>Uc@C+SCU{`uJF z}ROOK5|FWmC(-{25;7E+>r$snPKb27s{F>J4y{o|Rc8PY=jll#94?#oO<*T4+ zm5+sONPtr)Z@)n+O;Dw=i92 zZg$1rB@Q-`x%OuYu)}mi)S)UOsf;+Ev8grqq|uUTSI)g+usB#r=_Dt@%vUnIE-uAR z$k8g;sCflcB7T5zg7XUfu7rdYjo}ydiEW9|wzhbP6A7}*k<88M@x2Y>5ET9Nb>#A# z8R3Csdww|hl^H4i#ka-hddeATPl)`{i{Zna*W$l6bksT=ggfs@wU`xfs7ldMRM(Y5 z7hyR9Ku)w}5z5T&)(`CuC^n9GrK`Q3OPvSA6|<;adrasC$ zf(Hqi>I$+huER9?2PWAdCNu~i0N@y2$Fl#ArsN2Yf5Nti&alrvOQxdUl!R%ae(PXk zA-olrK;uA4E@{#lqz=;L+mfUJ8|O&h85Dd9geYRf(ETpfRB}|yo(e`lKMulVF*^S} z{EJ?uq(F6U?Hs<}$_y`ru=I6I)T+rZ#dIyWx<-Hr00gdE%!i_NRHl<56{8(K-Uug@ z7M82}hP6p&_NlH~Fg^D6J%!@Couea79CBK`&h%OPJvrUh2iWf&6=S6`h7pV)r-=>I z!!0^BkocJ&-QHmY+Au4N(Xf@NGmQ{}j#b_3FF!E;Oz?}i82y$Ax|hM zuuWk5vfSFTJu)+tUGO74KC+;a(|?LMclVR?A4#-gq!=kzaf~)obkY(e%7|pXm|p}K zepwOlIRK2DMr>sOgrS-Kslda|jG82GRugSEr7{SZvA+vp8&A-kpdr@`deRdqnam{GSIBXKnJKh~nX!yJM^Xnz2tsrUe zV`WI=Y;vqe{1tJ$#`#cZ7gqOk7a-LZpPmLl1t**y&X9<3sISR)qC^0|Q}Iz!;R`M@ zT34HCoH#_ZK+e*T2NHUz_2_d&UJ-w)uo0m@DC8~DHd+)EQzaRB)4RZnJ!fZ%E({5* zp5oSKsHu}5h26u|ws!H5u4veELYdxtBiaqQ#RDKm82DkrWH25$5rV!dt+x^m`x+PYQOs1EAw-W&$o`Vnr42pltIcnxO)WObNR!?uSi-34AzhXp zn(pnJns8i5%~EBt;9+X0-e)Lx_fTL}f-9+V3ahjd8phyBanQpjV!G4l81L^>%r6$0 zENo!v6|f7D6Fw5}l%XR^G1*XYvAFr3L#Z5r31Ht9RX0#d24Dy^Fe2MW;b$@0|01sl z_%)#jJ6%wxdbxvs(sHc~^+S?rp{{@@j7&9pI8FZifBjzQ{DR9|--;8u0f@-5YeAc< z!|$!tz%@UF$;iAPMPiQ+&zWc|GfYFUWL{`Ftx*zQhe1gGO*hVjZ80Nax$^f{m66nF zT6G?0BT)UY`Uiw4wWxlq)>(KQ&l?HNuFBImQ7mIY5A{dxKX$$^+;K+(wa9}ylEtt> z2zS}Vr7V?fCSrM$@)3WXPgv>GhdYY>+PLdj~t!o{RI%n{h1plh~3+HRsyum;3 zOAC%)DePOgt8?IMji

    T%Fs0&hN2Omlo` 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

    sgKU3@<%gv2d*FE z;3)%XdW)+nnInmJ+=K1x9gd7AsfXw|jHNIuMVp(a<5fFag6hun+1|P^=tnog)j@wjDG=7|NHY1Rl7P?8*%Y zs`!HEBry60=&f7pMudIwLDTNz)tu(xd<4bJun z@f4BEXh*}^hX*?QW0ntN3(TWhe4CU%U7V_iigRXs_sfojj=lPCRy5;=QU}Cx~ zE8~gW&6<`uv0LW8k>`E@$O?9KVZMFK=Zc^E{5T?$uOJhTPQ!-XPLC78cHrqpFmEX2yi^6B~zq)6V1 zZ+y8b_~{$rV-Z7{nU&Y#we?|vn#!_o6#$qGN(GSAl_)_GRW|pNCYRJIaA|Q`vJ#^I z*jD|=&s7LQh`Ej;+nfG$grwK{Bo&`L*f5TELp&Vk>^3q%FFI)!>Uqm-Yx@1bN6`F( zMU(&>Vo4LW%HT9|4lYLXN?D29oGdaY>X)2-m!~9%6A)a_$}B?~)>PLky`roA^;LSM z3IwhS0*C>k(TLcYW)HMy^+v-`yi%!dwQ$qLI1j|oI+aM)t!rRwdOkHnqT=hf?KwI6 zn;8?7DUs}P{TP;0OQnQmbo-JcLM+9>Hdklx?v#2SJ!&0eY13A0Dw4sM&W74AE2WV& zE(*HnjnkZ=A1pa0L^5BpG15C3#uo7O9*>216=yH)n~kq6D*wtlJYA-3eG)AWE##D| zCa0mJe|*ZzsP0N~P-;s5gN_cvN;1`EIF7oVJw0rh zv}phe!Y65hCMb#e+FJCGv^W>-50@3gV&Fmq4T!aGdESA~m9&!NSX^Ok-?~O5e8iFN zJ{q47$xA3pc_VTdu(-l=j6b}}$*FyNtDccpw6xvNL*?{#XtD~x2XM9NYAUF9C6TBf zwZ(fiJ6R5t4m$rz!lmvfuq~a?TTsV^ffZPF3`(lipw_Umtf!O&Ho|>-n8I|oh;`P~ z4SiS8MkSxHTF<L~C6#f&@3gKeNx>{{Bp0i)tf8~9&cmAeYVG-@fbFDo8HSmy zB^k|XqhZaAZs26$SDuf}5=2y49GPoc8OqWnDvh?yAu?D=01#$cRg_FT`d=88M3~%~ zfJ*lN^WQH32+k(U=WM(M4oE0d)-LorTp}Kk1 z)fe5uYV0&>^RAhP;PZ`C=uB1!tK&zni<6-$nytke#;2R#dv z>c@XSG{Bq0M(u<}r}Wi}RMe{O#9b}7?*Jr^#Tr8aW8@KPTOX^hqrdM(EDA7lzUnPqo`xwna zR@H-i@tg8XWI|1 zysC+am9~c&)z+eB#AXNCvzP5t1Qd1v7>*PUv9}ucK@u*43CqMRIxZAnYg%lQ0t1EQ zh%vPhF1$A(lMDZvsRLbw?Hq&d&F}`^nl!Prc!0_7!;d;>&@QKNr9Gv=ujXTLE9~kj zbE6Jf08cK2V#Tm`x>%md&wDF%e0)B7{PSN=L9guKM5+Ums7*oZcl{d-no1jileX8& z`lWaOo-|%xmjg~+AN-+tvF?4IFsl55Pqe>3e+d2ZTB{X-K0F-jj#6MX%FZvIspVm4 z=>Ai9BkBMCE$0A)7_((ZHkBlcF_dfby-a-K&;P$4OCWO!43Alb>dVYu_q%s4+aJAI zfHZht>P|!?3c1mphauV}qa}yFix^)jb$cNtSTw-J%S(bJeg7iD{`|yuKS6%bh3SP= z5z4RVwY@~KXql$|RxktL1hC2)WQZjqny{&g;Q8VuGX7wm0XYOGtD@P0X0v!cYWene zHsY!kDy?2VJ*-*R7=y zr2&UV3lH#~h};w9?1>CHQrrSZ-_jyBI0!&*%}2|q4`cEU8T3rkXu#e6Q^UK>i}y3J zvjsZX6m^X50_=e0a}6h1cc=dLaJ8#(?v|hFUjH{TLew77AqW)trVd;fD2aTv`dp*+ z%yzVeDiiz1;%9;8QiMblg;q~66+8&cSWpR7L82ZW44sT~4x!ew+3{`-p5{&sgQQ>z zj;7&tQmfzT^~}k%fuu4QK6q!+V8J`wS)B?_e-~gX$jJp~r~Ia8FvqJ=luy0;fzNe< za%!|nPZo^sk$>g=!$|^jr;I}WS1ox5oG$W+sO8@!swP!>Sw`cKg3r+X)!1w1#!8TiZA`CU|yL zj_VcwJ)5tz3YW=9F<@Ybq55xWSg{wbqHk^%iiARUqhTlm>vHuju1qg-8j(KGnxrUn+u zn{Z9)*X#D{t0`4cO(+t>$d&J26@J&}vKJt%O;r!d1>KCV0TFK4Ojx9m&YU0UsnKU4VZi0J{WH=o-EL$fRqIMdv!NxJN^c57kA@W28NVYYvfq3ReOh(Pa5n z-o^Cp8%?h{KCdB_Kl^UqkL+)_k_4Q7i6^p78!J?5p0@2)4>{TEvvs&o*M{IFQ7Kiz z4T2p_)&51G|Hsdpe$dkN?fsESvWP;(G!IY5?+Dh7XI~#k#C7y~%m1R)a18yf#8ai^ zn@nd9h$Ko?2$SW>aiKY;N35B&l21mJYhuLzDh@-=O3dg@E?Nkl9>H_?ConLGU7g01 z8?LzAD38>3wEIv9G(F`KQRi-v{dAh*mvZNH_Tim{6p!A#g+5*BiT{tTMbwsm zzpj1WUr#Vkig!a+h~?<`u^`!@j!V=l*y@iyefuk(RG>BM}RSIH&lnaZCeS68WlC z{jy6uI5S0IKPiiRWx|`!n2_?LYE0Cb;$)<57Kk)(8CfM|+5AaGH%2wDQ*xNoE?(+5 zkB48xNtTt|7~YlUbYzce+ZlCy6`G~UiM)mc$2#nnrVlhS{d8|VMj_Uv=dX%L-h7w!KRM=fD2tTOToDXPn~Bo_I2ouKlsz!2>* z-2)PGs*dviL;AoqO zZ`HA9tUil0Y?9}_&A!d<3%TwNYZ8C52sHN2jw$H&y-wKr@)2hE8?^cQa-Fm)b=Gb~ zl-;iDPnEx?At5=_+!TK)oV+&`nITB)zsaVnP>%uRB}TCRE*sDh{|2T4Fb`6*4BMz> z$zRmQ4|^=)n)5sP7S%6?{47u9trDPf)?LMdt^PQw*>rtCD4Z@(O;J|lvknWnDf9Qs@_fZ!Bj!MIF@IbrC{=MI1-%% zx&$6VE}L`S_P?CZ*B-BOXmfAo%XE0u>{hZ^RRn6;N`EJHZ4oc#Q@;X0v*M$}AxMbk zXv*QbDQ&oVEFMz&*kS^br*6?QbktZhvkn>vL4(Dd<$~f~(U~_*UN#m4@2bCl+v2lc zOgBoL*m2BKtXPiiiNFYFZS2wcLw8&=fBr8xgMpJX>>FJ&g|=k}y*kdZlvPm~d1UZ$ z(rTn)HktH>P2n#uA`8xI)y(N?X4_{^Jxv;WJW| zss?9@{daB*n53W^1xZo){m0J@0O6Cl&VTnmru$Eq<}{5&*jd`nv|Hl!1yzq3>3Vu* zX~hc* zhr>#lQY~!Yl=Fx8;Sp7nBCv?C5CY8TOZvCQfA~tQnV1^~$x+uI23QW2%0_I;;oG;+ zq~J1ke*%zkCjB{QtT^LOSS%G@Z23AiTD4B4Z8enZ=%_i1U0V$^^&;ft|H-KRd-Z@r zPZ0z&jM(@2U7cnyTLU$uGRoqC0SaOwis{zJ7;RJ3;vV zO|}(GuP7i*g$xAq4)d53qy94C1tR3zECZ(th0SK&QfXtbt<;oSmUOSQZuFiBLmU(? zWhk_`Miw;2X zf&)$wI;rzauyc1yDS#7nO>aI9YuERyTlF*1#1+>%w-VTN3ae76~FGcum z(+!{8Kcq`#i{OMl2=BlUEPJIaND1&42*g@BFUPI@7IW!a zZn5uJ&H2uAhstCY)Q!eS7GXK^?446^!9GxX1y8e=RKD9Oz5Cb%rh86b{%GcxOgBFy zIhuiZ|F|5+F(yob1*m*)QCm0~Op_BGI8C&*y)xGM$&+EhSl4jIx1#&LS+}ZcBy+H> z#y#lT#c%f=pW1i6-nYf$Sj*cjMpv6;4>jLP<(skL=*R+!LnylcSe9J(r*~CtsP&>{ zJhGb;_Zl+@Nx=XNdd_CD5YAvCD{iMfkXTJwH)1{^kz{sXJWO75TI>nfnlxb`?qgY- zT18Zpl7LlLXVJ}M(w0Ui1DNF?2<6>m^sXfe-6j1P{pJ89yU82(VD^p5pp4G1r|tn` z_1HM6aP+Eb>9b|yJ>1(CjCoW95|kV4fx}JgH6@5AM@u0A7@)F3)}i9>90dxfgsKk$ zI4Vhy=qjH5SO_iDQLsm#$6-TW5k-B>iF)0FjLknr@RskgY1{`z771FI^}aZ_b4@=M zZHc!2BN((T+I4uuA}TPRjiu)uc&5_yB%!Pr;8ta^W!3tzxc?4TS6K9Y;y%);YFqG4 zcN@D&T}z$NSrv@kLDNQMUUl*xKW8C`#HNe;swVZWvLxNs7Q=W0q5AP6B;s{d)h}TL zvy(66O6=^=BPp;H;?p!4UO1M19U9|}gn=pUcA2|r5dJ(_5}Z^1p| z!YfIgKNTv<_r);yz9&9M@J_YkOO!xn*(Dg~R|8J$Szkuq>-mPEo_nFEV-s(9U-}C+ z)Wwyfc+2J4K@J7i?5)YSRnmi~OPGHH7A4bQiA&56!@!ESK-vH)+S~YaC{uw!BFcCTM}d`Yj*Ny>*fD z!Y|jYHg-C3pBn<1s@X22+xzG%ytZ)svLOw-u{*dV+8(jW$~RJ4|CH+GFMZi#w0@Sd z3?gcx$WBG!|Moipg5=(25IDWj@A-!yA3XywT5WRBAc&cQ_GWX18=HEq1#n1QV_=;4 zmqerQzMjZAa_wN!bz+FjYA9=!K$^PSv>VNjD_lGaT|vC>5|!B<>YCCb7#Rl#4SgHG z{)OTn#?zaf*s~={pLvf2y{&)66j;=0Pyu3}eEEg$tYkvrKwvVA4;aMeju_@4=%mEJ zBl>5t{1oDmS-kTzV_DW3#Pt9rt8>?mJ9P$e#*w*n<$>^|lEIYe_wS6~YYCv`uB?en zY29#jJaLw8M;xo6YdLSsBVV?tL%sa4YU(D17Jq)j{*IEP=m{4uv4HZi)ybrZhFvn& zaV{R9%j6;DreQ=WJq{F5Z})9YH1^BYHB0x^9Ph4?ujVgi8L5+s)`jw$K7qc_a8J`s z6dSNT{vK)SA(6wUDnFO&?9oE#IA8h%lXE=~*WX(P#6 z0#jMSo(6rnTD2sgZVy%=tGhcggnll106Q}o@dzx!P1P&u!1E^4zZ9Ap2EaLJ<*hiI z1zzmuh$vJxf0O+h;dxM<)yZkvOqjpn{qfm6sdQb&(7>K${?sGa?Kk?>S0>TlV@x$( z`=x}ny;%(#X?48P3PQ&TxQ*r$*~J(_mtq2x20DzhA2|n@#7S zs>#}{J?Be+QCyICiZD*@gAN$Ftybm6;x+X<;;i{76ha57^g?8ElF!;6f($2P#-a{R z6F2+0Uc2{~vcV_~Pbvd#w=!o3C5qO0Epk zQg&{i#BPgXqfz3~N@sZSmas!9Qmp>tX9)m$e7ip+Hk>sdV^XyaPkGDF)nySO3I0gt z*pP|}4xvHSUDkJ38lX8GakvDslSi#aC&Uyl7OpW-pk2zLeIY#N46?puisy8Dm9Qjl zu;85iIf2&q8E|})_z;cwgC{sKaYimJ+b4pcF)JEs~K+P(UY{oY)sY>GQ z`q!_A*$cD9uca%u1zPB)44ouAhjlwc{v1M z66!RT{s}UT%E0?87k0o;Dmf&B&VWERY%1di^7~qUrTX71Cu(N15<3}_f|>6Omql({0U6X{P}s)JmgPo60$+MD;HuP zXw~{j2tU(Z?LOh|9kJ%`ThhF1qA?43~2d1 zA@L-fnP#r5OSH=5h-g?o#Hn~8*{5QJ(TSt0FQX~uR)a2*Dqg1&{uvY0ecuqiAOy3p z;M2d#uz$Pt9fccbmVqEoWZ>$*9sc}!VB94Rj_>B54co{8!Y&#u+~723xQ*?~3)K!t z3Eo@??8;KFu#D;{oRm4WC*%=f95w8=_cwPwCp;RCwO5<3`OaIpPS-YgzeK^~6ra$X zA~`MM<{$t7*N9=5o*8{>|6%EpyZAW$fBftM5m3x@&foT@7GrM)`@mtmQxEO8@0WaW zhNIV8e(qz0M%EH}kZ%Q@%la4n3@}-&I;(nPJCR&2XIwG4sTXJPBHu0aM_b?Z=kFuU zJHHQ*Z+>lgbbR)hM1Q$IbR-j(8%u?dQlvr|tpH;jmeCXsRW%r#C1C)DPKc#&Y>3({ zc1*4G1t?U5sC8xzS3rE$EDC@Owac+dnB2(q9Sp*MQ2aofHy@xK!iO;g#vRqGpYE=b zXHFj>z|SA?Y{`k;r&!)sH1V!yj>4xGTtA#7+o(6dC*S?5TpLduse|X%uAE_Ls{=RB z;%Pp*KbUv&dRUURdao~}tVxhUk&S6L^PVH$_=7*gjOArUoY?fcSQ8fHG4`RiyJ-Lb zDPlRSK{AcT>+`}Xmx;F?W|#re$0O`g2fKTHTPJ{wyaCZWB2X1PXV#4gmhhvez8Aux ztDWz(QT3+GZ8jJofzgT3Fnyz@!(onQ+pl-~_2r!bWd$HfZm(Soz!Yu~@keYIE{xJ< z226AVMvg@6RT_Wp?o1jcQU@6Q!dkd>3!9(p~io#b)~b~2?%xKoy? zAUKQm_h37;Dh_g$mVi<>7|z(+my?8To!o(O#-ZqNt5?!&J}1CzP?u zOqBQki8V%c+-}ucE3=k%D!pC%`-R)v=5%adW+ryHqZ#4>y4x;=UX>wfrFmL&F}-bG zabkg5h|x4yXFoyGaHu^(33=2^MeJpDI#D+=5HdJmBvk_of?B@SmgUIe`3S6yg!&^I znsz%oYju;(x!g}x^lHy(r}6hvEw?mIH8rWJUi8Yzi$fuSU$gPL)8jsY*MBPLaUl~i zGSTr-mHvIyWm~r&T&n)7$*LxYk@b@v7wIEBfU0mVD+r1pN;*R@hB!${>+Z4~jfhZ` znAqUbv0Qn2TFMc&S61|ec-&35zW2jy!7vWw)&uZ`X2iMA)bR7=@4nB}sb9G9wGB$L zByq$nP|#0^)nxC}?*E-`dDk3sGQ8>e8EEOFh@yjaxIqJG_M=jqh*5}xp>4R7>P6U6 z;yVmz8$5x22;d{56h({cjlaje$@rmaKFd0d8O;%I_J-efXH(EONBtX4Ct7li6>BFR zbE^(q%)c^KluoPam-YDIV7ek?)gI#6A^W*gLgYDf@P5qK*W3M6*6n{u&c2tGXm7PU zB}ZLO|5vn(?;Gj(;V4Y~JBJc27)|VkUI!zN1v8vMD3vU&?Kn~Qt}_q-kOqL!TQXH} zAkNNz5QyOkV;L7}&=g{uTa66eWUqRTjXF6#Zv4m3J^*BIy77!jdSf~^$z~2r*HI5P zL?@=u|4zxMUXloQYae#|Rr+}k-8^6BT}JE|jD-Ow87(LP5Gm$4O20|VsIA9g`d!Wc zMZ!KyIjr@N6<_0Qb~ZeI24o|)2)@>KVFoe3BYJC0D$>{UtGAYP!OwE zg(0J$0WvS3gsN=>j7y3MlKDH<9vhtxDb8E)&t7fmN(IUODF`R!i+X2c+M1@?=E=fh z5I<~Uq1AQ8;CKF4WAlmj9AnFVC^5;I%+riZ>tJ2p1ZEBhBuR3#vlZa!ef_cei6((@ zWVBQ#n?a#3weX=Y+W5-GF>l|H5|dn^(fJ`8UBF*7+M${jKP8o$YDPladVZ9mt(@=N z4W%Co&rIpfslUw9D;jM6tr`&-4=85lmW07I{bg!DUWl;z>X%6XWeqAo!ZPcsYmBYM zM5TC2qp(D=sG=k$6rQIOnAE5#P9{l)&tmb38Xi!duzP=1&Zc3`y0s zqQ>?M0P0<3Lk)zhIInn9E}L12s)7UXW|NMH_dpnvI>o}o!gjVXEJ8z@QE*heLra)} zp|!YrKK;F#6&o6MUhjhikgymJg^7A6`?wG8+&i$@Z8%?laMRGwj-dY9{GgPan#=)e z;+i(4U?Fd8N(^^M_Trsf>TBL0gk9j&JiM=V{eAtpT0e0&b+3(Bu-n5(c-SO;LAeDp z4IfUHH5o$vW(~?BV8hknI}1|ANiy*e9=WOonKb!J1 zaL^L&UVL`ST_d0-! zvqwzIgUI)M?UAH5xSZ7zGlLPw-DJmi+F>l}EAvn8$K;f8YOmbXm@8s`Sr*mg1%RvT z@@A9Mm4|7z`pSkBj{lXSwYAtlFo({cCNZd@%A(v~Bw})wLF1vO=DLl?dMxIxl*R1# zme9=$!(!W#07yxUvJDy2OYGy{_cNx$tuZQI&mFEVM`3}gg=~>9bE6FeCwMmRLPdV= zP4=bjlAcfb&pus4m#(YGVGL0Kpctg$53p%W5pG<(3>1a~7L@;h251^!$gbamtNQRT z@JD?9&&e5IdZ_E6?5JMv+3-eewTmHU`x2jc_&O*pV|#In@G7utj>Kh`d{jS;_4I^> z!{|t;Z}JpirZiBxk6Kj8uEL zyGRgpewyLW+4q*HzGtyy<5QwAK04>bOJD1ic;SKn-k)m#BEIS3h7(_kE7HVYtD#m+ zuRzmFw504dXpsIB6i1g10J+1Fi^+#;zFB zm7(bZ3Xqq=Nl5Z=d0}oKp|j@b!qoWT1-XSHN5o9*kUBGTjT%f^V1uOM{|vfU4$ZCo zAy^#mUpwYWr^H#LJ5in@*N>anN6`o?R^XIr#uT-Pl$YtwOG{?Qjv4i~xeHbCC8HPo zL6;K$hbYw{JDS(Am)Bz6c(kbWSZ03tyO5za&sIg2f0?4L$U$cnbHtOx6I{C;ZID4w zRyZOiylNbWxE?`iIgINutBabkM;RX!bl*khtY^IlGr0db#* zI9;^6ae?7SPMczX0gEEX7P12+GS+}!^hP}n=vtvFqgwtggdrVKf=%a)h_S-~50DA? zhMhpn1|1J?j^YTa+`DW?bs~W33F(mmq^z~p;oTi@V(G0y1;6&W7y@7|ye=H`I8ySo z8qcTjXog*EU7lggzXB?WmxQp5N>VDfhzP#A1xD;V{vA>+mh<6?$ck^^0+wSloIi~iQX_vJeAL>7KnhnEqdk(FY{Q+1Z8sjG&S?GF4Pkb<*aGPYE}iDwVTo=(iB z?tI)!t`0NQ_l*(W2rfQyVCb26Bp`F)ned8MJQK#D(5rKNgbyuI+dn^Cf@U(jK?JC< zz_74_LXz#O8YtZd=>ap7BK#2qUIP6XG$?DIs4opz6wELk4*1tqdo&&H49?Jq)Rb$e z&t#Up&h!&1OMcb*FyA&prBR;MW?{>)Seh82dV}mU7YzJ7hxC>(d@>$J2P3g|Vxidg zK=G3${N@gVNo5O6?x8YK*L#mKx4`LM-a1l$_&UoO#%L{^n^o9jG`k=|3;>J`c-y%! z7_3`K3MBjGk2KL{Og|)Oa&3yy>gb9locYvJSuRN$(@^}kX^f>W{qi9f^RqxcMmWx?uK0+)|ANQS>06XzK!hif627zw=-+v_;7q4%MMAsAS z25U^SZ$+0w&Kn{y#$h@m^pB5I^ULBGyO0hIML3?73wNvaa#1|+EWeUT$gR1o=l%Eo z&^Us6jy|;p-5=4)SUeBocR`_q?d#u;2PVgV3v}6`meNaBzLVTGzH*+x5Pa`Yu`Vs7 zB>m9)O&6!}QXzNE*o#(qw6MNRv68Bopn}tMzP!0H6O0s7B+c^U``Zwi8}a#;T=$BM zX+7f*ajan8d9*v~1L(x;K85XnOr2F&TV2<+g9mq)LU0HacS>+~cXw%Vhv4omrMSBm zT3m{|Q{1I^kzyaud;JH04swvQ>}#yK=UQuwdxDG>V-Gx~aR>T7@(wR-`FhJNt*e}r z#svS;_*?bM)#mP&!?5e+l++WS!fsT!MzS}Jn~aRL&4kX+t6#QoE)Zne;&!BcM7`#z zK4DE8oArk)4A3pppL#VYrSK*jd7cp`HDr>(s(Z*kyWEythv3e#)%O(iDCT_3>GvZ8 zhFshwLqhO(rK>%SOp^jJPumn@#Gjr}bB|SR$@`zX($4L_$7lw6QXU>FYMm_He3H3Q zEz28%K{7|f*l`rxr-kt0=xQ*@`o7#L1wlbX9ECEgT0gpaC>v z>5i7HHDk5ByV9~xTI=T89Kp=X9ewmqHS@m|V>NwpmmQ&kaz(p;oWC&6bDk}$vwv_^ z`Ig=Po1gy48yaUr@9>Lg=>GHd}!!EoQ^R7=UBe`o5x5s*5kn z+zIn@?jJH;#Ep#|;lL`Cp_1s-x+VBbKb``}{Z`IdU-b-%wOtVKw7_Y4e4Fq&fXrnpjkLvGu}K<)}hZ z=G2=hTUjsdcNCwPGkzsoJmGN6^fxSM1_#cfF|}adfANks8BMM-Ol!ZDv_^KJ;Yf=a z5zgoXz%u-=`cPtVBG?w*K*-R)xb0ZgFF0T&u+if05C!BY9L&xZe>f)zb*`dpr;_WdKbb3Wn*me~!)bf*>W9)(ypSHO~?4!-tFlky5E01#Rk zji*-&ZFpB!=lE=(@Md_Lf|wp>r*d;0ZICoLK}MAb!zc~C(mhh-kr~X~8ao{n&#iY? ztBWlf_ygf-tg^z$bjqW`%y)FAM%_9adyxBrmSx$AB>5rAmAP}-#L%Hi^|KUwJ%0+=(e`c9zP-ja5`?@z;Y<$*6+=D>>>E|FA zKHgx#URmrqo;mu@dwx)*#Z+6N6Lpjs3~mW899f&x+0(Ak1DuV|>a6CHDhoIYk;3!1 zRX5zR(FC&o4&Z>*!oKZtPF>=35&TzN3>K2EZsa4-gLeCTP-lz0)XVDE2ZA>w`_Wpx z+erd>KV0|Q4WW05XE{emwMY-h7czZ1t^^`-(S`#M_zLLM93efLIg!W_K_nv}jv^m~jid-7PWhy6z{Igc#MbXS(<>QQ!F0K8xq|M>^ zr_7PKtwP=Tj~o1b)yKB;+h8%0Mp1aIuN)W{xX@k4g+3OsMG_t(Z7d6zC=fahYcL%R z94^eEZH#lL2jtksjU6dFVD5U-GI?}hFnTCU9s0Bx+pqp{t7rMS@!;l%ZAwaii=<0q z%ukb%m;NA8_#JoQcrw!(+iZ^ge`IkSxAeZ%2mGmn@#4yY7gZ=|2Tb}pVF?XkHoHAyeq1MXt+ z-e11~G^>VMrynH~jgFYwErT10!h+uYKQX-;F{dpNB{p87L`&Vi5K!ne4AqyXI-{KG z5(d#*Bf+aDU<$FcUyZ5<%YsiYoK#g-@+C>45W&A9Hc6=iD0?gY? zs~s3gM1-DWq(wAPhU43VE^9GlCk-*&4iX7qGYYyU08^3xyJ#0%xwyV7HQHuzphh{y z$9$_U-CC}LT3)*=tilUZk;ac7h)RX{&t6}C{N*avU;ul9E!=#Cl+_zU)vwB|wa zIEeCw8UiqhcTG+l-{#5K)HdzwWbwL^y!!r(wA2) znE&*%1wgPe(cV?ysaFm`IWs-5AyUoIj$@~Y@{T=u%qW!sz)S;r-c6P?$6eV#hlYXy zSdpX*1@0{zlYH0*Y(sYeC-Luc;lK#t%q??vw7o76nTe~lB-|htSAJ^mwcOnuTru1Q zZG(B#db#H8#?TUaxfz94hc~K~!=H=WN+dKv%2dF2j;)rRDKrE)0erYE3s3|`qIwch6MOt!m{z8h<0;oGC6 zn^MJ)AONO%H`iru`xEVAwOk4Lu)`!#ZP(h6nOq!q>XKg6T>I#5SmIG-3kw#=N(Yg@ z;if%vT$yNePI>uEl+;ELP6bTR^9N@s)sV&ehiN1_B2g}e9%$d;7q<{d$(?k(5#AkC zoK1Vk3lG+NzOY?TO#?9pZ+<*l5xsv!Z-jUAQ-p*~3v41C70zkv7@=(iqT|oEvX_q6 z)3^UVf87|;!-`%4mcuvs*~VGPI!1E;-b*{(E+$fF^m{MsTE&|T`>n< zR@%bzm?PqB=5kRxP4nd;L76Z8b`VgMjaI1k>!ikJ18lE|9@y7Eey=6KhS$TsyRK}zFtc_GBgZ-R z26;L_T8KX&OF4C2xI}jP`o#o*`StTw0np0X#&w+2ARSat!pPJ{M zK5)2U^Z<<`SP_rUruN$6*eyk*SxnlJVu5w3=B|u^jMqoW5K@|G|6K~H=GM7+w|b?h zhWZOb7hooSs(yOCThvF`wO7{ewum)>k1C96Tq0zA-TYzwHnV{)#1I4qpt|*;zAs!% z5;TiQ*l1pAp7(I~kIH;}oZqwz!&t(WbR6<#|luzk$L4AOM3%(P% zh!(2veQQPp0SgMR`!+`G&nf8vv7dT!5to0l?wvnQ?WbQnS3lxvXLzT_&8wH-a@?&P zNz=nUHLx%jjqW0L;8S&x-j@;a6WEtMTa##HthRL86j-=$1N&eVWeecjbQLAHdylZT zPQm}v4-_HZaN+c`Qlcr1zKHEXBi^I8ehs^T>}NuI=ZI*Xy-=26R{jzUI0B9@e3*_( zAT@l`463KI-GX9LQQTI_YRnKuiZlz}bbV70G8cjmB#QS#f0mvGcG>r;zd9P}@#(J!|2ku~vC{sSwvF=5=!THVW7LH2>FiM()Ltf>d%F1{)`VrbRd>(|e2 zIwxb?#i&h^0BpGTqJtz&)oG3dgM?D93PtSNf!$U`NG*A9;o!hTp+Fm3>3pj|$3I1E z`LjX%2)Icff^yUU@pR(U^P7o!ix~RY2&iHeSRw+k8A^)lSo^*?w|`G%dQ}}0Zg6!w z=9edIyL(zcOoT6aIo0NCZB{{|)MfSbv*88xM6~ZxaK5nTPKum$yBOZh9-E7-rL31R zlccOFA{{le^|>`HJeA9We-nNgF1-ExQ9sa|!U6^ZmN*K>2AQ@>+Vu5fNb@7`+S1$e zn;RVafBM-0z%RbvzccXE8q?_ePHekM;Z1w(ZznBa_-Y`Fi+L0 zcC4bhsmW(Y;#}ek^sk9B(%yDqxoN43Gu7KyUPP@g#~v!@8PDRsF2f4;=fZ_ZkhrhO)gsL}oS?&R2XQ$PE!0ds&ue?nYTh6;XL{(E}J8 z+un|#o~`|%eqi*Z(>k0yR;h>Gb37E5#_TM@c5f2{pCK8wNX>su)#|55lNb-zUF~1b z1UxA@z0{#DN)^lx{gs}(?6|gM4iC2E!um52y}E2E<_di@bv7g1d?Au4YT6s*m*1Zp zSCE!ijdiagMeh$OHZ&%a(2Mh(v2e5ARN!b~86peFB|FWgW*KxnjvQqykHW7_Ep@;= zuQBhoRGB$>(uZS>rGpY5^j&fGTg8RX>Na8Ggi$02@l)Tvh>jj`#MQ*ExBTdsCa)cJ zWiq@C%sRq<8NjL__nL9a+mbB+05G)Bklfj+aFKxwSO`e9;tW_E(+t@andODO)dQR$ z6jLRaxRDK+9aj;z&#SzW+xRnmc~CLLn#)f)opKqRg+D-SfPW~@qn*d4OMD&N5j;+r zUt42U`U4Darn+JF?A;xw{^+$?A%8BjHJ`EH^isLV)emTFtFsoAn0H#$+9a-Zo7wCO z$h-c{ut6DPN%*}K+-GLDDU0!l7^i#;5KrX70cgnbpQ$>3uifu?44xB=lNj2=F#I83 z9mO%ewEMsF=RH^ie1nCXkKFafhbZS3eT{gkA)0aZKE3Ca%>F5;Djx!=Fu{#3#ZoOD z#D+0bMGfK3qmP#9M`!d+H?D#&QzV0lOf>JaXEHS)+>VSI^MeMX$;S$se`hRc zN6)EbQ~e+oe&3e&{Byq_w1jYG&PZ5|^L)o6u8J!o)PsvBu;)MI z`oUGR#Mg;csPW=&TE~xMR*Q}*+4#zwYm)qqqpEw`gS+^{r}J>|`ou1iMehQ65{($k zTrNQZYqmpgxEv!BCA5jMw>1j37FGklRu%v*2(SM%mZ>D142o%qKGm3shoUs|joMx| zbJP<^1k~SjHs57^y@@EC6WLZVLuAY?U?beq;o)CTWuj_#voS85dY|j5i8fmbj__i~ zxO)d0*IPK~BoL@oqJpY^RpI{}Nd9WeS40t})e@$0 z;y=&{LaCJCDju?I70Z*eLAM3`2f`t#N^UM@kw z9U?(AbuUoWY04%6k`jgy)NA1e#ZNwAXy&467UL(f(vjV3I z&y*VPM=p$14m5F8E%}gpj^5F}il`~rSFH2C>~?^8wJx8_WdD3e%Obnn0o~2i{Lah% zMws7lNC{$~c|UB1&u3Q`K&;mQ=if-SVy6MJuUAiBXxZD!8?e@__MP@_la=qk zotj#}WcD;-C5D#%`9t|ZV@s~&C@PBp_MTo?0L+Z~?wzt&+x#$ZPUwrV7J2Ryd}lC{ zatO>gyT$%$;}>(|lja#_H+&t>9}y!cHz|S9sVo1zVi$?sXx?^wxl|NMgHVh(?K7W$ z0-AaH_#frl$}%T0v)EF6CUOi=D~|Obc6BK}f=ZG(6+4dN`X=No4$BgiEwW8gs<1$` zs~24<+(_Uu(vf|}<3IhJ0N_jY=H+Fj^0OUKI<0|5m@h%*XKbxv_-x>ph`8^?qTtw{ zpi>Q(q;#(7ptld8t~&S3Y7+B6@Z-!7+j(S5@%URC077w;{XE)11@#ykn!*e>9g>0R z;9uAV7_KcifiYh$)e_yKl{DnjaDyV3^WE}|h0LV&B5aFPMdf66=%{>X8A?sgipE4y zR^+w5@bC8{uzFjMMNwP0v$k-pYpJ!A&B!JFsGew{OxCa$7e$dZv|HgKNYNP0X>Fm( zB7Gx$Ji;OfemUTBfFza#0|0}pGhCH67%^B@+&x8c4N~c`aUAbKt1-@9qAq_*AfgQ0 zs_^e>NezsoVVxjQWd%siR>`x*ts?7Tc|MnRGV1?_*(H(-xw6gU^L;XA`XaADYB@_Halnj0TyJ;}TaG(axe)U|{>gz9)r793z0DB7=s9z`NF1 z#Z`(|r9D08Iy4e}EKZPl5ocSi2M4&TllDFJ%mvQV)!rc*z42{;j$Ypu z?qHcka%)+5y`3P^u|US`Z(FXgGJVU?YjLR{ihrX$Hscdcrj;jujbw?Mwo|+luTz(& zX}e*EE!bYWPQGeB+%-mLGCP0@F#qt|SU{e%^M~%P6E{noe$vcRJK88!OmlLjLDkIU zwo&!KI|X|)@J-}@JNN(h_0;|O4eb8b{r~;;dT;n@m`jPp2j7?ogZADT;tvz?P{Eev zUt+-vb5sZs$#5jrqaktV#OW*KmGd)8gz}kQG6E@oQ5J4w+Jw_ERLs%kf7un(?CF*D zYLN*hu;FtNgGm4e(aG@HY^mfE^21lVf0zrZ9yQ04`GEc@-a?3s*qT)b->3im9|HUN zn7H-+(h9}(mHK@(D9P~s36?A9`1{Dv-_&wYWi+P66d*jN!F{H*EBG0GDX(oTB_;4} zYNN6LzyA3M3VaCFJ-3GdmWEgTCT##XBkrF&BcRCAaSq*$Jpc_6@du5k&b~^FU^Bd6 zV4#4Tl4^W8Pf7Wk=UWEdkGR~o#T*=NB=(s;S;o@cd;^mr;}TSpDczPr#QeF`(i6K` zO=ldE*f>C?Iz1wYY!e~vR#+@}bY6VhD7)#%fn8_C)A977XFeFEnM+VH0bCo*2LNS#>Ht<$gleQoOCR_ zbcsy3Rz9Q+1b(i1`Dg8s7X*H?U{+V zZpC>x{3QohScM%wE8_ggruul5j6A^Ttg^>}S`IbU7)4a}U?L3)_BL?0 zTr{az%h20_436L^7Idm8<(UlO2G(+;$5x%rO6A=L{(Vyxwk}8c5{;D)yO&fv63=0s z@zBG50QaAMA^-@c2HO3MQiV!|Pb`+<9ykkuma#u4g6uLJ+{2NNz`C%LBB8_dus9N; zAGX~1WrJws!FT%O+W-(J0oRkkPsJ8AD+XbGanCR-X*P)S0=_lUqd zgYuRYrFEZV?X~9@-mAkj{s{4dy+$R+ll=7eK5gjXe14AqBcXA?>)Mhv=e2{cDNPJ* z1)_)=@&%*+Dy`_hZ{05z+;b|hslYJif$CP({N}RxCMr@C82!OAxCv@OhayM7(RTwK zD#d+An=$;z=lyIkj+=uPSE_OCaG*UfQ$P|)b@i^SeSKjj@fXi|emp~W_oi!iQ8!!n z`Y9lu--HCEobAgRT%smIZgLkqK`OlcnLc+miVYsXmsrx7ot!RiKo4(8WiZJ8`w(uy zA&ilgM0TWGGh676W3Q#J>%&d5SeMYOvStnw6}`}&n(W;ewbsxl#yXu4Gle*9$}(l6 zk}(eW8qLlqBc+z_RZS!8ZAw*5jhAvM@m5pj&nNf z3L!El#rzi?aU}6FC_5x*YK4Fwt7O4Okx6gStj3;0#qnHI1UXEedY*?k@$&XcY8#_% z(K)f>_N3}R{rnewRMFY}C~sy6`-EwYCWD_AXnNKlAZmwU-xAS~@AN7Zy?yoR3jMfn zv1WvT4 zpP!5TB!(=5jk}jVT8)jC&C_c$ee;%db4~E;Rx8RYF=G5YO`b-!p20v$06?OY;_K`+ z_+C#6_(&5nN=3D6A)}CjJX894PEZg~Dlqof%n(vEj{bf+7o)Onsz(m|iQRu^w%P3i z!TqFAz!MXlq55kWas~NN=1gee-U^^wTwx`BWi) zBnj9D#2^HcIL-R^LnN_nHl0Yjfut7?n-N}OP2UQ4~q)Js5o1f%<#yh1FW$RzcF>7~xFDW;KT{{5TSlV(*_3trPfNwSX{oc2R$` zY6znOtfre?vg+ML?k{9+4t&@*s~9r`cL+!A8yzOC{J3t6*Kk2xxGVT>$1LZafyjIY%2s(=a!}HGCL`ZzzH<=;CJkc^t2+{~0cFGEch60`^cfx9wxm zl+>aQn<$GxPNLP<415FN$z~1j4&FfUWP>Jmc*F^6$h6ZBnqDAHw5-tB4ScgVU#H!o z?D_>#j1eZW(|T-&@d+r=Q=VRB=87)a5bLkc`Kbz9fNRTe<$Ek}!yUOc45a}~641NL zY65@)r0!J3Kr1rw%VC+39A-1%kov~YSXf1s*qRr?rU%qmR7|>Gm6zhsIQYeK={ynq zZ_|v--&sxfEk)sGWoi;iL{`pm!$Rg`HJg_0H5X>+8E^q+n@0PubKy1pMJ8V#uh*3Cc4;MoQl*U+r?2B+9}R+IBZ3+O2yp3_aF zu7w(Vi$Bi?z$lIok(h=A;WDcuD8_rY#oI( z6sHEVO$kNmdr}Z`%$|(7w-)C1N%o1uxl{FJGc#dJ%}Zz}Qb%;3=nIFAibN zx81@B=DzE;$}(!zH_kQnDz*Cjd=d9-_Zqdiz1c;|+3W~upHiJ%$y6xaat*xjWHDSR)S09ZyWEDt~Yd@K#XYa$5whYA}EqXacxvlsuD zbt~~$F~kNpG91JdDeb*HQNxG5`b1Lg`~ut0r8bIOn0?4=-+Jdz5EV5Z`Lswdzl=rS zsMvBeFTQ=Q3;1aLraTcW=Q2u_-GKMITEeHmI?+v+2w6~-6WVvJG)5c2y9aE>W-B5R zs{II%*jAyccX9_8{4Vo0B8;Z@OO4;8J)cuAEb!WnpGyx$DmiN;X%P!P!-XS=Uh*b@ zrQBWT`Fl9_RAQ&VwhM~!i6p2BdWrd}i!@{`!6Bzq{Yc$~a<}AM8=4?{T>Ny^Iy_q` zpFX}IpzL8`K=>a&+~S@8{L4_sSB59qQc|zm*1Qpy+u8b$De6clVdZ0S^l&a0j9S=x z>KQ;mPm!LVxd5<-FHA5n5BVHut&mn5!2i5P_6t`)2aLPGH?Aq{aHE}2FX!_k1F znScy$`%*VKA)W8n_-Ls|SJj3soYHD9nt}U7-{feNjG>;mTUe_j|i?1OYz9E_zk}>knBqn5Q zOlsPgZ~uTMP1hCzS?H`X^9QSFNh)V==Pt)?{HaR{Q{=geJzHDu7VEw^I<5Z5{86xQ zLg4Y6wWm&b;O51|b=S;O5F;~@(?qt8Wur-pe(I1f59L=DRkWm36tqhlb}W7rvR-v^ zsb)LUNS9n~rtj$MhasT=rz?5_x|2RbTsU)=Wqc^V3QcE%G^KlxR7?^*X~3jD2L25M zT}LQCwjhp`ZisI+L9F}q4=BCU`|aI5?uTq8PZERkgCF{)GG&8+ z`X8v^)ciN;Y9JS_8X1kp=QX>u)0UHNiw|l%?zF zk^SrHGZQ(i>7Nbg$}R(g_FTom+85`gf6NmzfAHuhtPw6N2)GipI&N3QG3$xQ{t3oE zShQ6Zk|Sr`UY;fK7acvsck1HAg5Ldxc5wb}V+pW=f_d>eEp-;M)Co)gfg9TF@&GFh0d=6*Y5s?d|R&^0;R`@P5LtFeL&F*80?((I#Own zihol!JBofhm}8mH^}j0HKgRtnB%2)Nat;Zi%8|&(-wr027*B+#g^D6~85Jj6fLCa@ z*)*Kkp$s)f>MdfiM?y@!O351?)ZMKZ#I|-3SKF z)`7pV$G#F)o%Tw_1ile?Y(iD?U!IF^uJD!nclwg^q56WX%$y>8LQGV-07e-BWUP0M zJxEp8Qx2mJEWwsT2RXj@PXmdl8GUB)MMzSSD4P^8bfX8#=nEpwvo~-@i=VcgcRM{Z zygh+mKLysfy1~OX>RXiPzI{8!9(#KVF#hlGXXzi9Qo#bh=RICQ!2gK^4OTqJf}M9k zUrJ(1VFlz(V;`y^W>c);M>&()tK*Y+7Ott5zRGFPuhu@iY16b5|C8$}N~T@SI#o-n z#aHXk^5c(BBd%L5KIC>=%@U=;CsX!vQCS^Bc?@P?Y-hIN)D1uJNW+E{(IPr)SDVm` zJ?Yh?xW~&sGq`K&6#I%YK>)0vv^G3SLLN*5W2@<< zw6fGf7JqmwQ-{CnSgFaW%?@Tj{l|9jzys=y984H2@Cs(b1ctP+>+{LtGK=`w_3(+#ip}vNe=iyCJ%fFbYk5J1w;Gxv{NLXwNbSC*$TNGAQ@iRe4NeE1#%g(-@cyLt69t?V@Me=k( zp`o}|sNuv4YN##p{H#_oMIBcMpMTt@J6GnU9sf1&ECqu{=qXN}{oA!EFwKE7{|G9g z{eGT}cV&+xZ78iS`B8s8J}A!l8MDsF1AD@vm}Aw6Q*E2mox0)`@Wm4W$^v zv!nADRV*KI&nyg4P$F2^ae990vT-Vvn@+oy%0((jWRh{nV5zubA|yKi2+ef1#V;b$ zcY4Epw7_ivFS>L@4RWxN>;M2tW+a0{ST(|+yc;@|BQk6#fZ5b0la0+ZpOPUTTMAUc zHg&x39ArW#EUOwLNuBY#?vV-t{u`~OI8Mj$hr@Pr%CPC@RaT+AwnG|TvQ;9qZ`ihl zs%w0;Q)urF!#y~eG6t_EYD3buucbL!nvqnY!dm1-Q*&b!{%b*5*G1W%1pcuzdv)XI zBXBR{Hzi`MonfQW2m9SuwUoSD$`%t91O>qRb7Ko#q$(H&iS+L`>mkqnghsKh*v^e- z|9NnkfvuY00VCeK)jHhll10wAd?3*@TGMQ?UrQAoO@YHom{M&{EK3})u8S5>fW>5Q z5qRpIRyQct-Pc$Uh#Az0sPj)Ts?*_O2Ov*F-bVwNn)M-v23HXGO%20)1A`z;U;ssC zm`Y7n@~1Eu9fjJgybwT(S5b%FNVvz;mZ#4RGmhae%>m1_oA9}GYA+es*D7>%<&o{2 z8~W#wJ|A~&LDBJiQiEexks1Z%o++MlKaO2Gx`Tp$10m3@qyH{Mhm{%zmT67ie`SZwiXp2!Ra# z?OV9)FKcAE-gI5!q@)K&6^6zC^z#RRKyAEaZp)KsBO%vm3hKk#ch!$$^XZMju5u0s z^+?D>?8nqrDcIr+$3B%y>RzpQkEEc67o{TYXGD**DwN4&m8LfAu!rf*1W!PUdpi9; zh4aaeCs_urZe+s(u^lCRi|JslazjWk0pQ{$29idh6&st5P^(fa`_B=Ffl{ex5_rc!GAen>`gb zlWWfNZqYDvVqg7O)>vTEo|8lW1fj8H{4F|5jSWt!B`$atC#wI3b+eCP;i3%v>s8YW zV`<9p!iy5M^1c{{9^*cT>#44th#3iIF@`8Y*l~fEcB_E;Y?>C&2*oe_%v3FAjuprH z78IQf!v}abwzF0zMo!j@mR6MWNSe`g*e}uKM1=7$iLU|hk}C=x0bRUV388G4iPDVj zkvMOg`1XNdPIprJFYRN^bc5_yI(=cQ;cl>fDETq~gL)m8e0v2PAeov5f+L!Rh6H@m zIxZcoc6l%XBAPHFAxykUY3B9>Kw_0Zmz{pc$@1GzVxA)D#9fB61g_x30-pj}2u=Cj zHSSBR++%~%VB4+Xg#()v@6f++17+NcnK~?9io4r&UMbpEvgRe_l`XYr&BZ+8zqG43 zMoNOoULG4Y<4yYHt%~0F&%1L3!I$r>gU%f--xINLWrodkj|2MBWLf3=cQUT!s zg|=hmnql&k^jZ&nh*>qg z`|Wx@3XvlhiX%?fpK01gfLMKN3HE>bIf6lu)z{p0kV-b8Ssi=l_Yx$zYN8AI^d{rl z{|zV68H`bl>ro?c(JF(*S>JXh*6Go817@;$4JMZ?1?&AK=#||7WiHfJMl}$ch=W(~7P3Fm{SdwKYRERZtv&g%QTFq6gFJLwn zv#d6*I^Fj*-dLyn`1xwo+Om;VT|A*IJ8CEZZ`vo7DYjm2#i@?NSWqrkszL=zeedj{ zNR0!5G$?sB9ixZ)aP6~(qvAMj3U~t06SxKfS4yruX!XNtpA4kJjo_u!p;4@csi+!jBVIBas+vnI?rG6N{Pk5SPz> zskLb3m|fU2p{xbv$*S&X{MGmz;=5WnE!DUBH{^6QBs?lib>h?8Gqs=9;dyrB0z`GD4$Bdvk!u|n~ z(qkX1GKVYn7pEqlrDUY)nbx31hC(l@N?r0(W?tZ1s5Qp7(amF+oBGsbCtwaouOS|2 zg`1%8NjC^JkKw{U2Cx^J9wy7uz$cRRpMLhB|M{Qo!Ai;cH1G4f_q~Yz^B-<=igu;{ z=}gD?-D%?ei>NXu0Tj>=k^oiVTVc(4FrcR~5ga@~v;Oy*ZJHBNMl&TW&h1-SXjM&b#6iI{PgL-e(8Hnz>2X%&2zv}G}&O;YBZvS z8roMPrQQS>SR6_hN+?ivjU^o-3iE+TXO4AGj_sIgy_ShKFCI&*C{A7G81;(f>)F)O z4@|{B-#S|@2soC^9;X+5Rva4~6fTT_*dpzX(-AAP_&hBl#H0S`^0@lFXV{q7=)hlW znXLP)eTF9a?~XbEJU0Lq6ABrmL6o;apqT7sOt)*P1_&bKz-;vw$b_`Q2RWstHgZ_S zwQ<^U*eaN^k;!quN{F3oGpgtQpvyZ`2&JVssNMD;X^Q{79zH3bp&zk?BkHbJnBy=Z9AB{#8&TK5dZhJAbU# zE2D}fG=5k$dN2%Thz*zzG}+?i2_Uu>X4Qnjqg#AI`x}cwZ>H%(NH|(85)ehGK^KpV zgl`df%Eb2~ePJQmj@yI~p~WW2J3xy7T&Y)ft4S2+d81~G6KYzFe(jc{iNgZGu=FBA zn<0Y*+(Gram$3VnrSGdWyG~;I6{gi`UBQB zPGh(GF^mcFlq*F?Hp@Ko{w*A<(p$C_zb?g~ z*;@LjKciEhsSNh54h>s?xlvcZwH{B-si=docDVpkFrYGe4ul+#d?5EG2+}vc#|9tnHT6kSV z{}edQN61;U_*zNUbdFmEO{FFOmT@O8JsSRmH>~hy$ zP_%@qso+r*d5q^3Wrc8~P;WE|CUZB;Zi&t+ zpO42CY^eOGsvK@G+cc(@BVUb zxIIvh%k7rUISiDTwLJF5xeif~73~L%iVP1@u`1o`hbp5Q*=GB~{Oq(bwopUE=-3u? z9c`rc0%C>$UFDnwjf#KkQtcw^iSpxiavr1c1*!7uIu{xzj6<0?ibMhl&hF*ep`9dp zBE@la4^_FZ$yInoQ=*2k*s}1FiA4?tUvxMINfbbBZz=|CKzIPEQ;eJ2E;4&0&|yrh zKP%_FyG`zrU4c>_=Sf8;tdV3!J5O%Bb|DfCxs3BSg;R5a*&|NN<5NlZL3>Ga18!y#?Awg= z`d@fpy$?itO(mIpkpg$>Jmtm;K%O`zR9D}e0gScDGiA?T8UKR9C`;RC^3I$$)fF_Iw)?;Ovj|0Se4l^eAXRT^jq>Nc{~^@< zkKYm(8r7HcX;Lyw@3vvCxKYv}2td&w>TAw)RoTWk=o+}Nb1Gaa( zl>G_=kgl-To%Zk^%Mht)bLULy$Q#rt?LSy2a8u&@fLuur1)zK<8qt}Kb#?Hvp|BY+F=`CBKto)HTCzc-bB`rTaL{K+e8s+c1-;!oPL+e zWRGL-kAi~QbsEynMH?;J5*^pMIl|U@xXF?*t#P2gY8QGj2K!QBV=`d@O$F!|vAFRcD1rPaaW};XR9w4S z37p>+ZBy2|1Ll21KNVB88uGhaIqs*U#8i~cyE6v&Di_OLHsv#c50*^a7Ix%7{9hIs zLm2=(PXFTA64AUQVkR{hWbux%aI&0Wf^QTuS2tMKQIZ*P*{(Ix8M4AW9^qfq@kn=6!xUm6%3vq#FhOkDo9FMUXeq*_Be7)wf)Ie}ARp zzWAEP{+#U%$*}h>MbVKTb3E24f9EsP0AaC&(S8svM=}X(0Z^D?Z5ft{e?ox`Sk=Xe z*hz2%T1z?|b5=k>fBb4>tt;Mh?lfE;0z{Sp0|T2#RFIwhiz3+HZo;<&@7BE2d1cK7 zN$}M>{)6$G|K?^uG+{Og3>vV4q2SRr6;h!_jC6}J?P780hX&+BekQ`m9iSvUHEp1Z zk53AnV2?8-*>M=WK3sa<)x5E*3D((D(#8jz2*YN;U%5pn!CS0P0 zpyja<=pxy6O2bd4(n_^!yhzKSq*#*{_(|5tNaeMu_i5CG)!bot!Qh_fN8x0E(X990 z+o}FD)iN=tm#5`xJw5XfrH^u@m8UEB3%!drRO2* z*-FY_^ipO%BaQb(95U*JtG#vSyzQI;%@TXnyDb28BLY91B4QM3dhw1-#a}}7wf%cZk)*Ygq6B~4 zB}-Q|31h9wgMD$pSNlo}aqS$<$j8Cj)=^1sDhJ3giA@9obQWO$^N-pLW!yDeJJghG zvKqzyXcdkik>B>dJezBWem%0t(Ozk`};y(K7{$%u>QS zm>}@^IPO&Mrsa4qpG~20!0m*Uqn@>FE^8Z8_eZMHaj?GYo1w5zCT$XHRUk8-IG6AV z-p5YwuX=*@!>Ow&Iony=Id@)kYq~ALBnP{)ped2GyBFNO4$50L$NO~0Q(%9@4(e$h z{UGCy#7{%N_xpm=hlB)n_lupMcTJBkf`6(#_9FPJe10o8w@qin>#YBB8#>yTu>^Je zOC_2X1OQRY3Llh>IM8hXTRdhc!b|dbX-7X>=xgjijIAfocK{T*rmndD9BHEW{k|k4 zak#s2(r+F#QGPx5z5O#R$LAUND@>-HSN8ARzl@wdp>!i+`w^Z17>?z}hjPPv1EU0h zbo7`nwm5GxHog>OC>)P$Nkr9#m^>_DFvbo{4xkYVFhxxnvKdP>nQjj1Ppi06TPOVO zyF`6?+E1+RFL^`)kC2m5eb;%MeXiI%`^Wul17QDzPlCNFVPGQqm$R`1!oX_7akO@K z5<01sOsi#kt;9x1JbE-j6m7CR@Ft>af*hut8v8{&!q7PIo9W&cq6`I%uaLhEl)GO6Su$U&bJe3YgC0=XCZ)t<)29*(3tfUc$yY5v6>50u_gL zhbRwMB77`aKTNW{4u}NQa8GEe=yO|a$2ozd1hwRejHk{#kzWjr!l}-E|I952&af&P z1o#;8?Pi5wGtPv9fic{o5rKn|IKVGMVR*!#MY0_1ugp1e=r7xjF?+#mf6;Tls;hhu zIQe?aJ?~{4OUU%F6Z-lp7qXR}z)L%U?pr2kYOavZG8? z>ri>-aTzO!Y;_~UwG|qM6FDuhg1&uY2EQ)BM!DiM_KP6|8p=+*f;QAj9{-0Qq<-+y zY;}rVFxAvX^x5hnlk`)VJ_mCCD$J;>%+51^lSrW_M^%Da=lFOM9 zC-L0+FP;?(#L5^xAwO=!!&l<1JE5mLua-mT-(SV)qUuicfGWTv@6a$=d44Ohq;)U3 zQ@yKCzjY;iW#y-N*3MWqd-T;L7QAZh4cJGTq<&Bgb*2(5xk?&=xA@#l4Sx=2D~u?Z z7jm-vT(w;^;x_jZ*V-LQwJ>j@cJ`Q;q@miZHGR$5bm48R1^EV@2I;A60!l1~6it{F7Cb8A!o6Th|SyAQx z4giADo}nK6Ls19AIa&6SWDunJ_$~L1i`X^7IPxW4 zo7h^IZVJ0sTR-Z{onC!nibY~dR4NVmxWiFZ%scbD?jUC7w#zAv;cZNh)o;HWg$#${ z#fNiq4&xS8>Kbt~$M5La&24eECZC)ne#h-Jhm@8iD&0eq@hXlXAbBKZALAkn)kjJz z)_L(p2Uq^e?2_GF#XAj)b1cKDL{u}233g>0GKg9)3v7>z4QXlk-NkomK>FYObrg#B z+hpAZM3WkZW9ngrwo15Rhsp9ZCsSUumbf|=Jc}J+-w4e;e!Au@#SfS;IPC* zKrE?=2-+((fEp)E6zm{(+LU+7swSfcv5RCTbOjK8EaFPh=6VNhlgv%O?F*pjvZMoh zOt%lZPTJv5(Q8*BoQp|T_^ny!OA)=@(eSq4LYEC?JNfT(;paL*m|4nq4yR8_$&eSs znZJ^RExipxGwTF}ZfYH})D_o*WV27GZ&oe7l9p}6)$KTRwvSzQA*$6R5Djy4_CoHt zMJo#D8VUTf52TP+O3^M<1i!gvhqwZDUT99-RsaDm{Pb;RonF6U2Y5`HtBG6``GUoHEcs%f^GCPvrt0DHjt`NhOA&LZ#UE^^;FQbw1Sh zM6l&=*bY~z{l0FfO>`fVz)zll$oDfAt9IVz4L)yVfXR`5m~y%u_p)a$A4_d(^Sf%E z=N`$|f|DMae_~x`|D*Y?A};I*Q%-0Et2W{~bBl%$o#~p?Z$bv%;UXNii0zE6 z&#+^Nh%|NR!ESsT_T!D6fs4Ljq0*1ATWotwE5E}}NLRa6<_G^UjKf2xnuLcB=STS_ zx+_lc-T|+)rMZVILO}px)E&L)Arw>+QlQ00B@7W~_^3=c9(II+Jg(>fhCBso9K15I zF$%3Y1(0cG??;PS$_M+cBxu1gzIWZ!=-(K;7%qsGYWo6z>916F{Pql9md*J18M^89 z2fXy#*9NF5TGiG~o}7W>$PgAP}5ZiZbPst!pA{ z)Tj>A7bT>^>&}WOe=t+ODqii18NpP@BvZe|{4* z`AE=OcXHJDUgc>w*KjPK0c}M*4q3&q1|a@Am6bAhA%;^@Qe-`+*I3F#4H)4aK2C8% z8Vni%h9bEyLd~}uw(z^nDxH{0M+=0lO_aLY(sXXCX@+vuQlac5EnIQT=IMcNk55?H zA5MxM?gT?VRw-OMooU5Ybzcb^zI7RG;P}Zw!&|)T^|Z4)qvJZ}Nn`f2)H33~6Ntoc z;r4JWOzEr1K^&X-V%ecYl=k>;E8Pzgy&)5n@-9NE*pKZY_B+;wT|%(k)>Q%h&XB3X z$s@z%txp2vbPS-5?A5kg**_Jk+Ym$$@rj&uQi+4i)m5u_-0qya>3IB$j$6G({SPc( zcyi?$0%WK9AOI+DC^{U}jopuc-#(RIlBZB4^-Gn*aL4a1p5gpBG6(&O)n9`slNFt% z+7Lo0Mzsm1t3D|s=XWohjb(gt`&@7y6^Y5|>+Trfl;KU`wg(cB*(#B@u{HR03z!Or zf2=n#tNkMyU8+P8aw=9BLG&rc$wZzA+`u%OOpQN1*Xv3_iLx|%k-251mngt!bTGCL zwgCsK5q)~NmTs)Ing*LKJOe<16g;RK0Eye+}N zkFe$=^Saa_oxY>^(DO)H7q4d=Pu2iOk-ECB+D{T+iHeTvZ0$vBfn)DH?^u}D^5%p$ zSO{z7mPPN0DBZ17Us^?wpjw6^RS{BH%CSN;$G~`OT=X6T-U2#YR2&`@s>xM4ZA)$^ zn$0HErY}1H^dgek+N=wAFVEmG6$2|Z9`aY&u3XtMLA+>hjlFVOvbRf*8;-y<=n*?* zV^3}t9v}ZkUA&#TQqZZ-ZYK}=+bA5US|^$?w=8=S6LTpfC-%N8;(`YuUZEI_79CJ` z=@wqL{`4}BM%G-o?O^cTds|=dbR1b?lf5eKWOKGl^v1d}sH z&daW?1!dF}=IFx{dnj%(MXFbhvb1{~W&Y};u^L-vHLP{%jPxET^J%BH?Nqz}t~5_x zRQ+CLe=gD6b#@u6@~UOETZv3LxF%wrFsEtpxqW-w^WFk+%QTnE%q(jImYD!>mqwg0 zz|M?%a=NmaOOniiN9;i@=b7LSl=0Jc%Dx<$xR$PzoYn7;m$xBEdfg?5;{rRi@d@`N zAXW#4G)hPaTogntG9B49ZojaNK$oh*hN3GB5YRcNCy|$P9tv42HQ-@K%}!qT$*A;~ z*r}$678)DoypX>Upk|RKouVNr>JO%1C@NfuYG3uYAg2r=ySM16h*C6 zkrWRo&*$YUy-k-4kp_AtyzjoVV#L5Q>qdf zrUwn5@39K3xQWiv!2S`hFRo1Mc}b@9>)<*u@Po;9i8CvyT2J>=6rA&JNQ2B#KAkb$ zk7-syNnfw>-F@d@sW>pI)GOUtHJ%^f&{Ru$+ga#(-FzCmFqYG*sWrH&pg%flw=#Zh z9!AC+wOo|M8%KrYCFu>rFzt&-Z^e?QeQ0J^v4M3Wu|h0ewm!x@1{xoW#G$2Hb%rl7 zN7F?I5lx?}>x`b%uvc}8)r4QJ>T!PJoyv)Me?>Xg%=B9@ous$D=Iz4qs{3!wfEhQv zo;q^zkuA+L#LdGJPB}EJbSVx6A*}VpAA!)f3?mLVNm`{uRA2z20lbfNo^@*U=)V58 z%^0a1|KaB%oGAgx-_TTBv;c0_SRDkBHonv6Xr@F7PIhjX=6;=B8;eR5$CJj(+rez2 zFvw#ppfE*m6zmDHcnR*m9>c1Sr^xL``mtb_FCkRPFZAn`)|Zn|%!+Vn+CA7^<*#_pbK|J3yU$ zoi4bQCX2Up+w6N}jgAXi?5L!v7@?MLiRy64&X_X?ys5ryZ36l$0oDLOD2B2V@}iYY z9y&?JL=4rW?J7g`q^0%kWv4&eNQ;MHK%V>N5d~Xy$kG$~AqB9b$UB7~ucCE)?$)_` zRsQ{~)4OyXsy9G4XXRLr{z@$4Y(w|*>EU~IK)1L8#V9~VD_R0JB8}_GgE6>&6D~hg zqNNn71s4RM65>RmfI>4pUmHt|gj(eWMgpYon?i0T3h`WC^Nuc!Ge(YUO$9VMzQ%pn zZ8S_d5V2!I8+0uWjH4|6u4USIQ)~+4#P@MGXNwG%5@}kVYINLb?%Bq|S-(79`;^nS zo^e(A@7WZ)?B?Cy^ONn}5APBCN1c>d{W2~}vjeK-m4NnD!0;Gj1pth#s{h?`MTqf; z$P(Q4AAXSj&z~*zrd$V-)&f4+^G z8aTK({h|avd`&7h8_aCfjhJP!jw6!TZ~d+1tm|Q^7YPgnkj5RWJdpwg9qi?c)sBw* z(Ddb1tkJTpMf=V+NHe?lDh>WJdmB;MOV(YJQ}(O98XDHk%Og|m93@+ zW4qdyj6$FhRhHc1G7IsQXI;UJgZ=NxiS_BI-?XouYtlwMHFWRZDcr>Q?`-nK=mdDa{uz{FZfygehC~f z9XdU>laK$yPbhkZrM`>3W{X3`WP#mb3rW&D!^>RB0Wa8jI|6(BXE;x;tvF1sAET5HfsdLRDl!xn1!&mWzNSC`~W&S!bv9}L%? z-u-??@^WNLBa+vA;TKW&&(5IuGR06-rf!ip`Mhi;Q79KHyF55jE9g?CX`%N06jH*@ zy{tHJrRl}dXvf&e;`oxtk3&-VhxoXplRKy4qoM23f;uZN_8SVSbKd@6i?Qtz(fljv^;1jAW}z$M2MOz zGm~=l{CT%ZG-vq)Mo)UY)n5jpw#f}Fr?Xi#^eEi7kSkTs$xMuTBAToBCiqOjj{V=a zD0_CE!%=h&hp|+1-Dd=!PXV#qbO69cxMpN!iI*1i6Z~UWVwUCj_$zr1{-3f~BIw{8 zELCy{8oio2|FNmX@OvGtk3opI!vmt!$8_h@nKje5(-B zV-U{LFzIAbq&x26z}o&1pa8Dc%xd6mE+T$|)gVJ4^GliP^%Z@%@_lpnnQW8s3)a+6 zj+Ak;EL7$9dH*Q+Owtm#F{j`Ker?>?~Za8!+{1uFEsfWY{T>y+M|0svuJ(u@GI zl#!db4t)pv|L}7RKo>&hcWcVayrO^l;zFQAy6>c&gv3uav2$Q%3c#{Z-4SU0;jk8x zXee!;yC_7ck)j%y`MF=g_)UCyr($2%*rr_m#fP4jB+{QBA~rFzD;{8PATy*Qn^GnNy%%HcoIi$aklsG?9{MB>1tCKXQ=KN zwhq(ApQQ0MCKS5oky1UWXyG3D7iQR>bg6bBs02xCQ+A0pK5F09iiEO^5G z>L+_7UL=f{sJ3(>+LaR-uW#&umb@^=#lt043&_u?>w5?0B~eR_QZ$~Z&8@D_r5-`T zL*zp)Q%tGF4aYX;O#iOTHJ`o&8=t%!54e9?^}*uW2OAcYdot6Ti;4OhP2(VMJ_d@sm8+HqnsrOy z2pmuc58ZuZqnd&mHwUxbVw{=S8i{(q8801(y^8Oqqb`EwfSNbgr{8c<6Q!Qb z?TxIVtS8BI!C=C0mHmmWuk|??7bLP4pKhom^1hHJ5zIXZ)j|}N_DzbF1>n! zMn_w(&zVkwuESSVp?ekcFQ(-7jNzM31wArG8@x84rx}<5E9(BiCQ5;}lkGy;GUKKH zDILzXR6Z*=9;Im&RV-+~pB>7i7OIX?Aw89lipt>L(!`uHRI?Wp0Jz3@yQyM*6Qi_cea_%i9kQg_dQauq zI#XPRR5*_TftQPMPyDV613P3s?4yoSpg`cFc`(HdqDIu-f6(h0HKbG z)y--p)R<^`BLCs%D=K=PxxTK42F$^plGf@p5JDZMug*gu?N-406X~Bhj_Z`NC#+hV zUKM}n968~c$q}JWqLCSdG?|-?*Xm9Ej(#KN)I=e$MI4lXi=`SgbXk27#A3H2uNUtk zYSHss+xf)KvPD~PkXGvMAeIK(WO_48Z81k#!ba~R&`F^yY5cZtME<2WUJRqB zK1tV~9#u5)xV(8z_my+n!sg}SEgazlIl1tCBLZ|)W~jU}i!qQm1C7C8g2EfYS~t>z z_pz{(d~lGxv6HOV%*OfW8XvBc^t3FjmJU<;^yf0aI27@^^zilEDg150p6>_RL|hgzsJ2NprJDz0@2z@|fJl~wwfu)vjQYC~lQ z{2g-LqVm#cb*1L7^9dm{#S5d!S~+Z7?ma6I@y2D+lKYo`-!)PJ09Ix7c}zJ`h6zir zaNs0)ShQ!JWHvQK4Xy$;NRT02Kv`KQeSsypMg;)S4ON);> z7k*qp{NUt_XwmbV`+qj~DR+L=t1h2@Yq(}TA4W@R6eNj%_~32HTF;?+PKolX$MQAqxw_>!~}v0F$?-mB|l0)2V8 z-iIUU6?K?h;j3akvis%_pn65=RAU@mJWV#XC33We??y{j(JJft@a6Xd^M={g;wQ8h znVQe~&a=v!+yJD&Q%6S=s3rpfso-J)BhYF2+|@D}j6w&bno8h!qx!Wa=234qaw7Wh zZd6>37rwm?vJ0i6qHpk^z*j%UQW{RBK3<>D4=>Qglgp4^BiDGxRP~DIr3B1S#ZW~5 z-pVoZk$}lndEsA)#Pr~vH!qZKwTJ1@v%6&4TFEbc1Yz@&{yiDL424~jP}eU^Uy;2T zzrc$`1FF+NDceL}n9OWx@^FG`Q^C1ArYMt#Lhc(8Y@XF zu3Fh22f?-4RDU17JpOlwYAQz% z`0k*r2?YZF=joaYG8fiUjH`A>4FOIwd)}UK3Z8v>8hlDmU2W5#ivjDzPZZTE>DV zAyAVS#0of4kztOlC&r*mLiErkxII>ui2Wq7jq-O3!kuHab5mYxlA1sG+I&jd-li+ zWtFs{5lS5+XDo4;8~NA*Uty}b%cK?k$*P!weta&$0J%_7wfjf|+(chIz7o(fMd z0m`gR4=oVryo5Iz40C#&bAB1aPfOJ9E>g(|+1yhN_65+&B1876*yl z={~O`H%H&_p!SZat)c-WrT#Dh*@b@~blkoPA%!Acwwgi4RMq`TF+M%*N}YGil~@&e z((xn0Ctq;+-ez0gnJ>B#9(UxNaBVe4y&)ve<0&2n}->iX+9)64J0@5UdVzc-9cfA0&j0k(XoF(B@evet>^lNOaLqkRp; zq(I&Rbb~TA0%UAX&_8t}*}gb#`XfF(;Z0|5X+g7EZ~Xoz9#h@xpXO$q{u>}Z(@&@& zG+(}5-tAYR%L@VV!Jd96>k(gmvloR>udv=+f1eIXEDb`?QHW>*i0p9j_ zDQBNM{AYUO^KKrCcC?a}JGl$Mno`H4ObM0`xo-N)C;F!#a-vee9lVRo@$#aP6OYv@ zz5#4h-}|Z~vreghe3v=+Km05M7?UhaY;gJajAc#!^5N1DM+Mj=HZ6r|rm_8uN;cv& zQ7=}eRB|*YmOf+pD1$Y$UUy1xbz&#*dvq}nLM84?PXtkc21llpU;n#0VYvNCy97XL z$3tP@I52xsq^eFPJRtEgRB6=TI+EIoUro1Q6AA*nh`e$ZMSS4 zAF0Q})Wdzed|PBp)xQTKDqJ(w=#?ZU$x5BlOp*;KZN<+@^xnweI}PyWt6iq#WxzjC zs52u^36atCmHRb%fS34{Mqhr|7H5dV#{SzsYOL5Fa3BB+Aor$iucacV+@%B8wgnyn z=G!tFgZ}vea5ytCQdzDB1IImH2hbMo|Kp?WDjOPBcEPBZoe!Mx8%#2Yi*d1< z6;G&cZYt8z)^K7KiVm3ft%`cpL4+blZ>2y)6&k4@%5KwAvZ~EMo*X}vRh~-?WrHwD z(q&du++L@9EE;2Tdz$jY&UFN>Nzft?T#-Z80=qjGx1j@2fTXwR1=?#o+zpVC$(@D0 zH4rk&T@iCNuMD&q9JWmz`42z0q3CCptB1(_q5YW2g;O|k{}W-6*y}Oyv6zi8rnJT_ z_duV>VozTwa5$G+_E65jcTyO@aBy`d`nE1E?x>4jQ9q|fH%E(RMe#Z}UgMGU zdrxffzNN?OQ!EFAH{`Hai{bt4oBHUePRL6P!I1nxg%#hnjQvgyJtBgcl8z2u88N09 z$Iox>dBFD1iD{UA**>Vv{SRP|2U<*7r?s)Hy*6l3pB5rZvTgxnC9Ua=l5Z@X9 zZ&0n0A~rn*))+LzK2JAI*-nO31kw0ZJu+{MK_v zZ1m1pAgZqD*$+aBOk!p$YR?VMXjG@d8esxxOS=hB5KijOyfivsS?Cqb77v*3HdYZ> zd~5Yd%m~8%PSueKw~P!d<=uYG<_lI)@Y~M0S5#R3{Pz1P`*uGV7_AYR$fYaJ;{aCp z2MQ-DOza;8d^FGH4e_5#z4Vmnv*z?1f-r82oREc%teqQ^LqQu2q$7Mj=!iKG{Q z1Vdamln?s8_67X??NR;r=G?)vUA@51r(qdXl!hG`;b?>lPn($WJ#V0sijxXO1*lRH z&T};pf@N0l2uEZcC9Ok?RpS2F|AeByLE=YEp~NO~^V06r86py3#)0gAvWm_Fk@>k| zT%VkShE9N@$;4EZpBxPq2d6CwwzTGszovebch_|@y1NyCuLXA%ZY0}Kc;H{9EG&0? zR-Cz*wWG$fY;EDO6W5m;FLhs-W5rY~k%OT~8xrQm(LkjlAUH88z#L)avDG*TRC)Si zta`?zg4B*zf2pPIt5KEl{M55o-&~@o5e4x3e?!_Q; zb;b7$t`m@!*@m~hf31S?h!?*%eTMNJ`cfMUlTd46$Eg< zkq&Vx&~@Rm@L6skG`t(uSx_h6IRKa3yUYlT$e=2K@eI)RZk;+yv+V^%`_`IGrRH!a zWEL?4&f2s>r{gTb`og~C%8dSppKk!*x!Jmp2j8_zMbM7ZS94OQDC4A0#L^`sE?(Kq zCD}oEj!l+mmgQRGXQyDUI@1EE)>2X!^ym^|(9VVv5ybRra}J2!c7DPm;W3vl|EpX` zOjszz*eY0y<$SkGaYP%4#r_v`@^cwg9u&~|+%i>1gh38K1qh#9gPpu1Z;+W{mT0V2 zp>!juDDjPBkD=9#2?TQS@-)Cam)ymHwc^t{&wkIU$(a*Y*yhX-!a)R`%v#p|_I=QH z)m-q~4uJ`JM6Lp0P`UE-(>j+!;aqgqTaPcI7cOMd8)C&`UE`F!hPvyUW7~z=*N1=C z+TR5HQ%TNFd2aa8uj26UquO+0bQ&<0Mn-YQ-zU$I0-f^Vm7E5H42_X9Y-IzxtqlM{O@x7$DoywL zb1zdV(>V{iwHNDt-The3ZOp9eqjL0?c3KWuI7j$ zT}G#*T?$VsLG1?oIGZmLx{BUyD)e+H50%KQD#ULU*@e1@V%KjvP+@|KM8|MW+82yK zbn&cf|aPH(fS_xs?G_oSJKaq*PZJ|ar11g8y>O=o_pqt~@1;so4e z`Pb2E1Bf(zP_ZPdW4aE^&N0zA&wckGd&>22td#0PTr$a@e)Ma%@NDt@8HS}@w68__ z3#b$6^2he+woK&pZ0UJ8vg^ zCSDJEUJ3jwr{p=Ubm1KX)QX!u^trNKuLT6fS{;*q>T0dsEPLwMIz-V)M0CI%?Po^1dYC>saPgo> z{VAfsc=l+*O1sB;H6UjaSeb_{aTU+QBJRvu^(qeMmG?Y=R;7v z?!4nh4^1W=a&OT$yR=>V*OtI#vOB9Z7&^Q(Ga@p5^I=T?bVboO$gP7zQMErg7n#Mjm`|RcL&ey-p zDQ>pDU7c!grMsMk<@%qub~ebqle0tESDaxly<6bEn+_REQA;zWw*|b=iF~ zft<$naeIc=9`VhbnDDF}PFsFbmm-I(j3Y?|1sIY{5c zeiu{v8Y@Bky~%LB1w-3@l*{n8wEONI4Ma&PM5~vSu`aM1ZN#Lj{=}*-&2=*k`^6|h z*u>bfMQnB#*=5df1sVS(Bx+iKdQ;|EmZIEk^N?+0Yn*=#e`qd~B0{1zC#XUdUj+-q z7nh#E(rq#5U1AsN^mD6huxfIvt#+&1m*->THZ?e5BfcZeX?>;vy!LejW+PyckU#Yf zs;R{J0qBo$iyeJddMS<7n)&VdOQTW2Lrf?TV7OlJ`z+9cfdV0jnXAEMNDl zQwOKHx@RW|JYDjuUm);47;0W2kIR}PZ8FJ~$}Y7G1n3&vts6YqX=&LLYXLAKn}V3B zUP|R(iaM2ax_Wm2wMZ2xM@BX1!aQC&NppqB|^Y&fZ zGiUth9IJAgpBw+MjE{#QEw|=@%3bbj3G|cZOFS&JU8}FAPw{3i4Ej`DqWdBl#hEb1 zuH}>*H%RHP+iV);aLM8%P)Pa$Lu9F!}HxzL9-?BdDo7PTK2bT*Pl_cut`7ZaRk zIWPE3ut|DgtIhD*85xy9Gzsg>ik8?|5z>Qo1v26-iy<)=p+X6Qf&ocG)#`o=>d6>A zh4=VbX`aO{>Y5mVWx;zXj}}Yp<_b&!L}vMDcld4d0~@r4egnopqC%)NU+(;?2&-OCln}PvUbjeJdsO1hgIyb=7^ie1KI_rVG8nU^$5%mWGZrw9$0>EiZP1#rT$ z@Q(FSEyKO}=u?5!sA=d)oQpM0JpC*xKDd7G!NfY{RCYeZNK-6x)=4$I6FuWy;Adv| z{*cxy(J|TuOV4^QOc!x1`B{ZZAFidN4>S&FRP`MyEq%r}k3P!#JAdmkRkQ2Aiv3;r z>NT4slX=RcMNHSLbr!wkE zKY^@P5E-uUeipNQt)0oTXDvgn*yE)4roZtHlglClDjl4v+x*$Fl}g@%e?Nu1?R=GV^!hOvE?gXo}KDPZ`( zNUptd-M=VO0=xjG?_{+8LuT;9nMKYuS0WsGl&FTjG-Cl#F~-+R%9EI67kOzxQh!fF5SK_FGc{W*$RHV0$=h@F~nJ z3F)8dL(CS4t7b551iA}c^o5b2r7}Z|T%&_(=H8V+E61*gAZ}Sl)^0tE8)gn!DSrK}@1Kon z#(|%J;rt8P?uL;pd}QEPD4;2MDA1w`1jBXWZKa&ox81~6S1W*FVP3UX`z_)NIEyKjwrd{cC_>}Wlw){2rwT%WUqi!2v0`A$yu3<-)j(|Cg~*8bDCKCq zj}O1d_tWEzesfj$!+hl`Q>EV&PvBpLnEJM}`MJ&h4czefdTjHN$r+f)pamj2likK8 z5m6Rz2QP&!w#95DNz85d1s*9-%PKX-Ua}<7r_YJO8{KG}hP6LwH5&C#3F1*Sr{>?Y z)hvg}M{-(JvIO@Q`#l#w0~{eo<7vVusIxatoB!cw1As1o%pWA+Uo?xHoVGhe&hJiE zGq7N+K->$7#7{;*WtOjNdeX5Au|eEA9QbGasBsKtF^F_l$Bd%9jF`uFQlM?y?zD-4 zc}8@Z{e#-GApnB{L&O+d3Qs88=W5Iufl7;#Ye)^-lIdE!3qHhNWYcceO7_ ztwq=v_?hK|i;LLjockYy2Y{a!jX$pspa1&ueCO|eq2jSwR|iO>LJ6hYzy%MUVpHPc zk5g>)%BZPF2=;qAL&U)Y)Rt0`r$q?u$f#V=MilNQXo^C1;>|Ds{M-+{L|-ycm{Hxxg7Lc4PM`|q=H>93{f z9>nNv`lD!e+3#Sn)<#uae{bQK1+vN}XSr8k7H$B>fA~TEzvEi2nQF={nn$S8QgYEi zb3f?2ahryvlQ>r*^9NfU$|G1^X8LWFSboPSFQ`X9zKn>q!wV{0E`BEs=T(tkJ!>6} zUQhuA(#G<5DA(|!`t{Wy*aR8yp^FL$`FL7Vxi-Wc3JiKMdJut#B<>M588MfJxBZ>l zzv9L3Px`pny>g)dp7=l5me|-Cl z!>5K1XIYhwHGeGAe@!>xbblE84t4F(_s`>N{JxXnkSHZ;H{keSlu!z}n`(Izo`~iC zI}xAuXrq0M3E7)l1a{L=_^pDUlhh{CPt|pa^W1Ze*-T`i^*5!Wx*zXn{~?9X`V8qX zMeO&&^=)sCNrXizte_g)IZ_*AaM|N1 zUD+o(#gC#z+6OA^_H#AhixCQ*GQy&GfW4Ab+m7Yx-NA{e3agI}ci!g3-pn1o&zj$K zMl0>FSNz{q%~m~yLSQ+O@&NRa5aJ{=bXib?xrq<7U^EPkM5nyMmd6@yEx!MDhEt)- zt2;M?1AQSzj}(611m>AkSdlmMwHFqat4~C0hjyDqpsbjbDD<4v22#>~O^ScrM5izx zUMQHy_hfHyzEbHO^}R!qmO7&7^4jcd%75BbM5V6sOoXg$QuPT@jh~#?UJf_dg?B9K zd`j2qo%x;7202=aI@qvQZKes?khK%(QlaT<%2DlT{0~370CcxkNdG7W*sChmXFH_+ zv^LCmMnZ7FAo2VzrmP=^nz1Gl=u@|eppX@;nUj9|W+OD(W-+jgb;{lCA1}}D-FC^W zs5K1!kIZh9RTx56H<%MBo1%1QY0&$X|DlKMdl4hut*oK!g#Ml=|`m!r~lN}5cjN9aIV2GQ|cgqDz@ zdZr3~rZ?U>Z zNj&t;tV$Z%Qy19zJ1r*Ns5lDXXON<=ha}KC*(gZ1>Wb;~F6;WKEmU)t*ACP9S?T_u zNA`{6mf7x@B{x^%m(T+(`GN8= z*XfrXhd-44D;L`#t?LK4Tz`jBk6O5~QDkh;G13bJv&{;_KcC;%fw+yR!PNl)PtX61 z>gLCk{lZ6IS82hB5`ic17JhapKQ2e73k=N;fQ^Qmg32l5ERbAd(U}*Xu=hB$ccFZ+ zR#}fFL9R|mpRyd%v^EUhvHVMTdOHMjP~^~73I`pIs#Ud+ELq>n7NqCdAJ6njR-gw(n3NM@`l@s6UT zW%mp&?Q5E6jo3x{nmCe1rGcn2={*88#8jZOd;l&pweY9Tu$ZrC6)%n z&Cje+f^;A;&BYHv06+(!ntBVW^uWy>N4bIK#Nuk_cd&EQW(p_vU0u>QYzmhzTIP1* zmFt=J&@euPJwV+|)QI2eL9{ZdxQRtD$mxw>UkVB}$^R|?{beDKf-24g04!jvL!td) ziC};fkQ65?OoK3)Gb#EtJ!8D}ATx8K{Skc$;|Pjnw(*s#y^(i)84E5ia(8h61`PY- zH+bSOUv%Nyp@H-4voM!7*;km>hkimY6>Ya7)!1{%52wf^hBwKHZ48;teF(l~|^9Wn1S-sc^>vv+t^qIO?|>&loZRRCS=W zS1eEE^W!bz*9SaLQSId*b!%&BAFDu7bRCkwaZl~?yC{uKP{ZPUCyJfxy# zZ|BKEbF{mBcKN1@=Y8ms!Ra&qLn#YPHCZ}XvnJf0@*jRqP|<&xt=KpTrMgCKZrhzA zAdO*$|M54%3)ual;`csZS%Ue9)uWga@!yuzkQbQ0Uh9=f6Q&x^n^(w2{UZ^Sw;p#R zCl7gj$l=5YOd9zew6)SXK{vSUSna6Br>158`&6&z2eDq{}Uizcm z={m6j&!<$%c%G*~`Yc^YT&s)>x)8(oR)=+!OR$u9g7D*$Dl-!b8hH?T2NcOyQM0N< zG$lqCeJ6KD)-~(C3n^)#3*+c#qBg_s_{S(Oi=pj`QHH%A5BU+==s2OFiVaY2OhSYN z@I!ZSA;N7>*EGo`>ISJ(cM2vQ5CSBpGpj`OM+2e2gr4^xb%?1J9Zs{@4xLmd1J#&a{KpuYoEBc z_2zVWn&%!(*HZw?AcVjbnTMk#m&&3-t*(zIlA)@3b{ckI1?dP87~7Ga@t=NnVBp{l z*EAHRQ%uH@N#FS`*is<|*KAv21zB~yb-28?G_6tME8C_m81#{B@tl|5h?&C<+ugoo zzeB9Cgq*c9J^@f~!g19=CEAo5a&lW0G-2%F*4o9e9UV`LkR!9z1i{v#Pfe4S{bPf2sAlBol;FxgK@d{jC(3G?rS7M#Y@B5a=J!hOkIg+t{j`sTqjo9nxzZVt z)7$9DX>qusRF$#Dt(T0b_vx^^FIuoUt^>+1auSCS_vExNuE+_tpJz7(BQI=9J*F;- z+_7o`lrG?OM}wUT^G!Xt?M1CTH}z5p&6`m}#@u(0yHoEb6JSX9^&Tsan5;#deYLa8gukp87dmmQXB!h*;F7L?W70Qh&6f99wf};Q#us?@+if z(|7-vQlmTVw2EC=o_d>y(YyagE(yDqJD=Kic#NO?l!vaR{duu(fJ~a&;}&i*HzCcu zW+HpG3CP=rIf*IS#OyL%L08Mz)`h;DLDFNDP%GIR-SWA0_u}fW|Cz=|o=4AFn!a)% z5(WeSpz6kr@sBC}j^pd9layVxF$t$GH-VO0kCqa{sA$K0xztbbrO6C7h%l?U!QF|a zXp`*#H%Ng@@1|Z)xq>E-5xJ?lYPaVBv&Z__h(U+R4&4|zgCHY;a;LQuEsI8DKDr2~ zAn9(!{(&H1SgttLxvcp3_de^EoAM8|eIK?JM)TN`m+V!8EW*z{uMrybUPXqv(z$q1 z`MM>~9aN?i;(+&IaQTw9CH)*9(Fz_bF}g*9BZUa4fWo?d}y9j7IrqRyGA)|^#RkxlgU7q4oI!;IrJMal&c%~E{N1=w@ zVGf7F^@#JZhfF3OltKaCP6!ByCo=jTh4CT2x8&N$z=ec>E@EKdF6*DpZh!*b=l)+u z4$!EljpS8^?ITE|I3dH zr6x7~k6)K!J-U@^72b+>9b}S7oRlKBMxI%N|cn%TWG~*BLncX--@3MSGF-;A^(E2)|K^&~A!f+PaPonj8H`kqXYL zhznM7qzM=IaOc+{C$cCXq@?I8%aqyM@aD)|MN!M~^zto^R^bv-`1kzs zH&2kLC=3Wj7Ehmx=+nf8Bv8`quuiHqDKr`1p(tD)qm@z$>0CPmgMz}IBvF|rrL37Q zRMPMKNLIeHiIs^{nBtwXxz9k8Tyj_GtRR)uN82v8OPW*Zl03STJvLP?%6n^_d;}Gw;{_T`hfTUv)AG&Om-=aRX@9s3N0S`a~D<+Lgk; zin}+~henvhSW)I{b7PvY#jMnc2b_~?RD`gEm%$;99sUgbF4946!R|Mk!?H5OzlyHE zjb~$q&5-m-)KFDN>;8Y_*ygZ5|eh#=ASpoCA+pUZTq3R z$>FFW_Opf{mOJ+`$>%Qu{rF-DyLZWA+kp+Li4HkyY4IMC5yt!6B`rGK<)58E#>hmt zhzuISGXtLQl?Tp-c9SClBD<;%phhC(a0v^-%)sLEi*ZY8hcEcu)Cj3C+is@C!iC3_ zE)bm8#xv7YhOxVviUwOk-SO0rGTQCcPM(~*YciO~8u4*JU*2OR*&yv1_G-@V*G3_K zVMD_J(hO>!Fc#yxxrzm>U=}l)8pOk>nYa?ffyFE~|CSxhnVLv`gHi1?L~i7-J_jD) zwZJad)Osdw46)MJE$;U$7}+yXBlniiSKE2*c=j0yP=+HMaZvx>VU|qGaE7}Iq9vLZ zpRWJti`n+kE8A9OGBm=wcu(I%K3y*%Bfpd?C_mo(dYtHlj%d4$rW7}^HEvoi@B zzK<$#fM5bxvag=JU<|mWb74U_0a&o5j|VzV-M^+CH$(t;LH1`-x9y5?Cc%_R#?Ms2 ztt1*%@&2im>SWbNwbnvS+%tu*YO6+RCqV|^j*Tck+6gn7q!lnFN|0&PWs|p_9CriZ zO$Xk~4V(v(PXdUmD~WI{@usb*zg5&-f2uc#co9x`M{SVGwr##6aT4gL(eEVk7wsq~ zNgL4sTUw`c=SxigCsmP}%}CBv;$vHCjH{~a(P3NOQ9E)F>K zq@s3>K{Q3FyB!>er-Q(=nYEcR0ZJPeN=T28|4wH6C;|w_!tC$@jLHJV!qVDd)>A7q zpJ~$A)JLry6}C22@v_poWoJnrqT@=-mGcnmtCtuYVN)_H7(W#YrV3M7%rxEwp?0eg z)0-K}@bbpyXc-)ZBn?{z56V;fMpDytJ>AH;37p{JdEw98#!=orGCnP9rbP72tRK zU;fvRFt`uK+Q+P1OQw`Heed(9_)4)_sEu2bHH8dK(Mc1U{wdwJp4RG><+h7t7nEiE#5ynp2mB|E7qn@HnP?F|pmDx=aJk=R~$ZRR?)mw>9+&)N1!+ zws1%+;xq6SJG}b7^40G2e;WXR3Euq`NI3hZ11YkMVEBWh4Gz+gF!5ulD#YsEMBzUV zvMuKPhr^2--xHG4`+(|`+&brO+tutsrO^6m%Rlvr-}V)F?u6T&|7De5DS9$m?MF%hba@ARQ9&h71u)c^MWcXx;?Pua2JjuG z><~lOPh!yZaw-6@@t{yS=kOJ!oFP;@MnPHx7c~|cMMh48S`$El zWxw%D?No*QJhNt#IQ=BZ3o9-k0uiGopl<{fjUq9F!3?~DBbCENaiO?i^UM{;a!Ca( zn5mJE()R`^6g@m&yo}t3HBlHb`o{F(roTvj6p+c#9WQDKtmboRjxN8BhG2Kww$Bzs zI+sNW@E(qc->A+MP}#N9^ZdX`;VT}kzAgGmiW{&)h?PplW)zt|tnYs#7&!LT$Z&Of z^e$lgD01ovK`)vq)e>2Sq~22pbASL=V^u@~n6KsqKv0)uU~`-lY9k zNcZ7n^lX0LU5d6MSvbaxxG<#qcgkvIxQEFq8{XYHq%g&LGg5A6-{Uo?c_=Vh* z3SU!u3a9&4J{VE>Rdf`Z6U0QsfQvopbrF5}p{#@xYn8D3lQLKQsiRRfZqpB==)(*_ z?}@F9MDb@tN_@`iP4VRt*;VZ6+ItI+1s~wDK~9uhewh5P<+!jMTuLT`J>T|`5HHIw zM)yUvmg@o8`mOw8PO(SdD}Ambi_(iIFhXGfqowSv3!erRua=WBU{n?XrA6tyN3c>R z$&TsrUnBn0&j}Rt&v4yAQ98{y{9@OFUJ>UmR43uv6+@HU!lrhU-H^&2*4)DN zAa^Tj0_CdHPVO>g7vfThEkL$|DF7fae0TEC%jzZBkiBesh3rET49OYBB|RChJek78 z^6hQ57;8Swz3x!iT%71sal~hfRCiZfRTa2RO;I(R#H^rJTd*j%x%Wh(L@nOoY;BGv zL^5>NuEQZC^I9Y1jq+6;3|4&~Nc12n1y3;@Lc^v*p@}n-aT4Hx0b6C{gwD7>0NHHI zA_lxLyy!djA>I0o+?3S5^hj9GyCEQr5bDWL98AqdhBR~9I|N3UhhgAFDH8RIWU=os zS%NROGJ;%$#@#7tPV>ZJ+2YF0wsyViN%Jm=`-J9LVUM2y(co-WL76eKsybE0r}a+m zrtkHZPv5F{>i_1wItJ~td>4-F)?CM=BTqBSUg@4&32%b{fph@W!rq1Z=(ebnW$SYRs6apk8RKLuSc*AhWAf-wR5kS+ZK4pm$xrcFM7jp ztoR2K2Q~SW+ImRu`%dKV{WI#CVP3D~7=U(<2loO6{e6iZ&&+Kq6%)+e6+ zk&5abaY>veXEClma(*h95?#`w{-lN-aG_^MH54u!jyCV)Pa^V9V82;NfTn(48b_-2 z%v)Vww!&d!c4TA5+tOk}d++dJZJtXGX%1;r+KOq(D6O)3!>F$ReYCfRYK}yQp)q5Q z6xjnIGJiyd%=F+GBnm1kI}pba;?;RDmg5g2VuiX>P$=6fn_t*^ILUjhm0!|Tv{V(c z&i1c7=i!Xq+b4U!WQw@`XzKGpI}SK=o*W-5g~N>FeYWHCoZ0Tmi(OQ|niR?@c*Ykp zN96F?u+^3SWKwVVM)L_E*5mlu<4d&I@uu83pUIx%|K69NrE{yU6urZ4QhGqcN|Yw zmv7egYDqM8#z0W0Dmez2d3ub=K~|Ch=%omGAT;70LJk^@2{UaiOx1C` z-a;s93|CWp2>S9~fBy6TpqT19z%w0$qaZVzj;>&0I+@iAIZPoj*Y&2OZ5qe)rneV@ zRg|$1N2#wRp{?B&4IjV##r#bedf&6Nu+`X~AtTFXjaH7TG^4lC0pkH_sQP_UX}qlE z$(yq$QD*<;l={K6Mf&DBf^l+YY=^|dKF|sX=6HVvspV}(Si~=^6;rk7S0g)g8Q|bt za2q|_dTD(QE(2!+S8B)N%{<5X$d6sH`nw8BFm(U6F!Qm$&26E+n%5LiyPNj%=!H=s z9xTnStjcA(uQHIVBum`S)7_x4YW;vx5cRxyjIjxeY}l*V`; zW29tZQzUbR*ttR}0M!Yy$bcFhF;)|KEBr*I-lf==no|w;QyIL>s2ux^Z6YU@nFhPy zHtjj7Ly5JS$zlAjXag~>8#Mr2M3k>2;iAC3@)R;&R61+@DH(27i65i{aid^`CbMx#m`9sW$qFu1>W)(PYl=%l3E$(P=reT}xFAU$lVTjFG zbkliOJ5eaZSVbkhMl(HFH+$}1?g=yn5{G5>$0sy==nz%gq}E@9KSM{}j_DLCw zLT`@F3Us##=;-)6t92zICf<_U(OEGsl2KJ{c~WT1-p4hd4^K@m$1XnJeGl5%LG)>h%X*THE$F{S9|xLL?lSYk6yG9&2Mx$xN@k zlf9K&BeN{i97hkrmS4@yuUJ0TF$gOzjVN3E`po@uZTP6vA{o-a29cK++us6xb0yIy5JuykU>YmT{oJ>;uH;7->N; z@A5N5f636FaN(JQzXk}4G)O1c*d%-@NryYK6P$=YLp3#IDh@FodWwlaOWZWR?{qH< zoPmLl6H}Ng!+FI);3iIIRi4V{)pBsJd8XfZW^1#5-d%Gb@^|iyy`v1}mf6m)tWH%5 zN+`+q_DHC@{-M@u&rO_1xD!Uu!UF9Z@eg;4P5fwU}=KuCTTTr-Of4f78koouLz;=V zoCXQ460DS*vuOw3vS@k00Ql+OM&LSeuF>Qtc_QLsqIb2iDP&^_cV(bEF(EtHxJQyd zLwLu~^>5gpKB6)uWm+T9cpUJ2 zetoLdhk^M2qsd)bSE{(Ue4lfkPpDFvj4 z7{Pv$p7zbgDc5iZKD5>5^f+RP&r}2bvE4H}EwTqOj6y9RUsluSB*t$RPPgzJUOVwy z5_kGvtC|r9S8+89^J4*LH1SlLxX$ zrECH+^{_CA9a{SlwW_KR7YQAlvaPua*N9dQHe$+Luaoq*rCrsFuMN4CSVzOx**dG= zRQqUVG`0LC9YSNtNfWJNu8b0K6c7X-XyOBBN{!RDHmXCK!)nRuL0)#NxJnS2Pg9XW z%HE_m^q=>igIApbzo52F!1U_b<`jjYiU35Tu0FvhX9AgFz27o{F)-v*06;H8OZ<4d z_dQ~rIT41!!jCz9M_Cw+N@juMkMug>qRSQcDuNf@LO4Q1j`GURyvg8k`?ysa{tsXu z9|g`VnOAg58qr;)SB+H@D-o6D4jae<6cd)du?z%@FJ^}pSFKCJ1cu)$b>*^~gbp2+ zOx=HT#|KEt7;!?QlRTTQG~|C^3}{r+rVcwYzm!2R$>5R)+%^TlNdP%RAtwWk!rBVk zh8B2s{#+P($xMZ)ToGI<8KMT}RaFubw$H6s9>cDoaA^rl^aHR`km3Q=S5 zf2eS-zWf28U{Sq~q|+-XmH(%olQ1~8_eNHc2cjDx-)luNfPWXFT>o`rvMQ~H`@Me$ zc$_f%o+5INOh*h%A@`{igMhMDXwA)?P9-y(|4=_a2gm8>*qfe++ z^&e<+ya_zj>&M7+7mw0QOO~*kz`yIM3yR|RYR9K$l?*G+;wCLvtRZ$`Wzpi{O$myF z5_c&qq$i&@Wl_}6RWTOO<2G;p)6X6(oTRCig^S{XX+-X>1(QB5Znzfedwzij&1G8@ zl3q?)cltL;sO;Nx6fBHJni#r4F1K#@??>|PneNmjIW<4-XoyhHT*6LYyvITr63|GH54=meCf}yKcMY^WM+&psZx)-TLhCD}}Zf zN~5^PC%+CvC*!%0{@{k5ACpeA&jEvm_ZDcXhn*61IBiNlB3C(Z-@d}ou|WZVfU;tn z=CYeiqIN))xF!-QPK~y>x;a}rOC_t^Qa-#mp9WB{11 zOmPzB2@zo-&ydybsXcEgaa(aIT&C1K)luz@5)HyHRf>H)6_-2}9GwgziWD^DTLjqo z6RxP6yoPt%7PI*(EYp!Tf8ofZ{D8VvioiVmmK`}HXFu&2((FLyne=(Y5a|;kQ-#;`J`=+ zu(@bhs0si9ps92)r2Z{)2|*b>|5txlOtoHBxCitkeFv1_Cdwx@RdWS>kii^OVbCcA!Ct zzo(*mUgT`<`aTr`4dN(tnPvXH2z#IQ&E3g&I{@Cv>Fm?Te=HDSfKt>T;C&J0ZA$kb zOt=z(m^36!tY`?o9Vc^6V4;GBL;sKbcP(T8&mu&BKu={4kSP7{IAl8D@-bH04byxJ z)_$g@{2CuV>Ud7pqo$eu#AcBUxH%S9aB#Gjjr5l*xKU$NJgylW-lw1a z4lW~A&E{!)w5c_T^4#Ul{64ZlehMMP?;^cIWzY&IX*Zw6AiVkY2 z;l&xt(vOLmPQsXV;8n+yqY@PSpMGTC`E~E}7y4B4y%zMgc$+~g%uOVrg@ug0(TU&T zsYS(_Af(H*3cP6AY^`v7FmM9e6}h4*nd}W^K6KO3HB-|vl(>4tNZ*^3oE_Wu?tp}wbkr$gZgOqYq>WAjaw zl6gfbXK=&pU}OZxoZ1-u_)NE~0!9u|hPvRjzc=$+Eegnkz{3OYEP`=En$Y0f7irKbz9PL($^o&3QF2 zRy`X2<1k_o+&o?jv&OC3)@G?3Hr?}roFDwA0pvybCGdgzfAwJjpbW3sgVX8I5pdo# zY1hulc~hTVUhA)F-*O+&n>CE78ozm{z}h&@l|*P_z3fw;-TsIVqJA`Oj+aleut{GY zra@ar_H>7F%n6f_CK-_CyB)+}fhJuhx==+e{XCzEeMmS#+2mo+b!o%2nqZ=ac&TR! z0K@@+0T>x$b1JY;7&D)&EQ9~k&mj~JY^-(p?jO?|HbA$!vc#)*Qf?6R!|W}zZ+p*A z*(Y=4W3l$M-0r!m^41mqaWD|UA0|<4|7sr48=G_R?G2r*Qf{?P{@6{8{CLBh z4;wMb;=FiwGm$8%>Ue^}W&82ult!QKgojP=&<8A&gNG=>Q=x+%+y<9x`VM~q)mRos zU#f=#z_Kkr>xVvCSGnolU&bJUP@~cSv6^K6KKdD^sanG-8mi#F3@l-`@3=nRh{o|z zoM+0#H+sw;yismYZ&#NJF5%hB#t^W5Qaa~M4--7R`n^)WnyA)%`7$4kHtRg6ho*YG4{TQ&*bp`Ma#sypV6ZMf|ek#rhMO&+I;ap8s_lnk*O35)(X-MMJPCALuj< zikGcpH%m*t!?ffE5gY%Y(!&(6@rGkfOs*=a*z z#Q7BAzD;lszaxonH+#?5fvi`3(%L6Llf=B-v~~p{@io~Fg5Re^!w~s)uYkcwQm?dm`M>_g!IrdpROij5}aTa#v&X}G;s25s+QXw6v; z|Jv99ifgtQf3_FgAjPVv-XiG8gL%XeP?m_;vc&i($%Alt5SJTvg{5g!9-d)UY!|*_ z-bZQo@an{j&juHgBeOg$%O+Yb_KZG?gCS?;mva932KEbMkIk2rlR}R*004JPzazuQ zq~cnA;i7<}>pBL@0>6GPQtA6EhR1Rj%Cn*3tab#S%d4r^jQ8$7=7AxDVBVTyQ$a>T zx#J~=QPCmFrsCBT0IU7EkxYoIO#f3og ztn=HjneJrz*P2T|&yKD4i90BLS$Uxg&FkFZ0dM!klH>Qhcqtm}Cbjvj*-<^dpIMHf z^~Z_cZh^J4gI|$x#_L&opQfC2>aNvvDz0&qGqv0)DaXp(b&%U2A@l+=LU>ss3*G^R zyYdFO4E*i_TrD9mGor1lwob}ca&&Qv7ZN1-`Sl&|o5EkA0{{dNU=RQXO}Lfl)1U+E zz)XN_Wn2O>nrtqFY*o~39!dfpB4R#nLKfF-X;Pj;5Jn1{=^)wS5kRKsSeLhAM%994 z05rk}1YTHxJaO`eQotNsy}!-H;3VQW#mz&_sKVtj`{%h@zcR@4kq05~v=v6LZdN*C z`g$whcC((u;pVS)TEmn=z3}qV`%}A6qO{PL)K}x?)PCY)49yzsej}PHS1?KXpkvS> zBlno`noq1gO6_m2@Bi~TlX#rpLH9rX8~_k5jkRwaL;>Fv7zF0N189=ajr6`kkgWYWctG$r7w`Y`>{r3m(TLA=gMR@=6mf}s|(f(Kj0Kve}0Q@4& z25HjJKvEpXreMspSR%2>#F(7HrdSjLRedEQ-5Sd{1YkUJt~4Y-Y^bbLG}e|1BJs^i zt*t~7xrmL8Q1h8%R1_;k6G=)W{$D3nD~p^Km6`_rYB4t8QUnc|$0Oe+SWPXTA4mQI z#%@l4#Uyzpw7m0feGi!e&WIP0XH;{Rh@{#=!Q*JzjgLBuhLSLf!hEpdveBcxB7GL! zJ9qt^rxs=^=h;k;qP|zgN(|lE;LjVn;vSPrKM9lB)XcQ1S2!cj1xK4*w6-Kg6kD`E zk<;%@rK6rn!E5h4cPVWue>Wvwqwu1+TC1GP)Y1n`Yj$ampW9WNb9ZciP;mb5;r!p{ zS@^U-_srPHq459z)BVKZhP2GK~0WI z>EBvUmdMN3{?pctiL0@r!nge&TYDcF)V&cBwN6R++>=qN`*m(s^9zPXV`uF@RC}AS z{-CE9u+9?t$2(U2Lf&P;AiOj}N%Ypc`|D?u-qYx$DBztcoJkFdw1-KxGSxM6Y4S`B zgG-yzVVo$taba;_I|6~=8n0&e7fVD#Ox(a zZgC|PV2s{yvTT$qwO$|0Z)0qoEGD2ZGZW(Qbg7rCvmIyi`>mHx--Lc;%2~be^Zm#Y zS=s)#yJRYsDIQxl?i&c0003Y)AVy@E=X*`)A`F)jW^a?ceIqqXpmOO^0e^S^>t?M0dnzRYId(uBs>6?& zUim8VjXf3$KUmJV|((r)1jV^h`yJw_s0P5xT7>K#tjD;4pljx1;T z=1-HIe&$vauPkC3d}up-9he73T$v3Z#_bh}xR$!J`_S=k{^u%aI0XQR0kMBqbgzjy z;gv^(rC`bX%OjYgTQRkSkTJPWQeI1l2b)vliS`Al6^4|DUYS@C8E}h3O%sF|W36efJ%1vl;t@(O zvSZ6SA`3_TxJb;f-?95fBp0K+-x!FS&Ru&aMUu9yP^e|SOv~_-xvs%kPyOpW^QJIn zjd}LE$kf#_997-5FXmJXCM518g4U*0m^U)PP~{^B59!~-z^+++cOcdjKy?02QY%tP z=rHAI6RrkcABe?GaC$QojgAGv1?j7*hFW2;?dZ!lmM}kN6d4Uci(*Xs{nUOkA0EdV z#s2Ldf4e`?^GG-${PG$W3K;-;Kv_PQ7qCD>!}MUe(`k`tqX1y5)(K$+PC{s2gFf=q z=T`fyr||SU=qAb^1%`cWE=QjPC6)Z87;_a&LKbN;>m!~nGmsKL%+N7id~<@Tk)53N zeM;tTC^1tOPcz=nN;yKsGQ7mHXk7VhYkLbJ?{h9^tuH(sq&(`i6CcUa{M6pu)xAH; zjoLe4Rt&8#cExCB;^lwl7Wu49XHVM2|6?V`>76R0t9-d_FNqRp^Jn5jDn~}|8wmh@ zke_0R3{No{*_|WNa<8U%#nLHs7S$m+9Vb6Lp;vmF&GjgSzCOR{V*Tx(lE_=oYsvE8 zkCi5G&K8TVqm;3YMGE4Ax>{hh_oIgxdL)v8NK7hf)0i}(YKo1XY(a{M8TK($Cie~V zIZqn>{3yGnaPrFD=jB&-KtM(L?L|?ojEmaB3~K)1y;srBwjCOuC3GY3ZVYj9LRHUt zQUL@R}|sF zvSZ)Kg7GiPPJ5A_A7k3)oINBhMK$KV!a>QxQ<_(rth5Dc4WgN1%I>CL%Dl15sxwfO zMpRfjzOJNg%g2OayjKv^{^jrAh1sS2bBd@qTlIx-t>XO1sz=SXZhdQ8Lo(ewzwZ5G zs>x1SPjMG7r$cef>Ql-ubm|Yj;k102^FZuzA1>m~SBUM}cS@ z$fow1j~bza)|(7ha)%&6&GlHx2wS2RBf=<^3|bYWwzukIIp>t(9+XdY_30c;+Ozji z9;c(0nuw0Rl~pN{Wxg2kjOI89Fg1=*paC<9x1GTc zD^50@$l&H|HO`gtr_MR&)^*hDUwE{%9%*Ds)BOATxwNi!=AWJU;V-p117N%y%TYpV zoGs#}`IFLE4(|ZBC#H)t2qNnoWc%wvZ!aDZ;3NS=a~lRULO3NXF}fQ37$V4ErWfES zor$!bb_szewxRS_&%(phex(%p3V}@HZ0^P$8Sk)H+Ds$%=o64CiL-rzjP7l2>`NyIFvP7-vK& zu0ud^(*;eF4(PhvC8pdCfDME+SGpvTHY`N*#^uL8?KINX5nP@c(EZZYY}t)iNa(tr z(jRy>UR!hXQuyshuujzLexQ+a=7sx^0a_$O_E9b6U*J@@ZLDZo=K9oCS1k0>R$OflR_7(t=vp^TDGI97A_p>lK?Q-$Z4zJQ>O&~r`FWaOl`>aohrr2}2JM#$9F89GJy&wZm6Mf#~*V9ajXy+0}jSMs616O&wclyH|%rr>3N%dO0 znMDMR(l1v?2cM2CF3+9K7KEKLs>V9O6Oi(U{*2E@t&8U#pJC9Y@*0+u8J{3G+cs+q z6(y$1?uekQ!DB%KZ5uXbLn`qAtTj{r=_ecjvM}BXkdx#v2ECG5h0CLtdsrouxeOK) zTyaOlcINvn^EmZmCBtLE&!h{%MmUMv&o(!3NUEP@PiHRtmd5KeWPauP*E!7g36-V( z%>2bV+scMO1Gi>2_mQC4!Xuzzb>ASPjm zv$ip#G2td|T_v_;&&Yh(be2gI@Rwzw1L6weyDp#9f8WL6JChp2aPQNdXrvLwz}jy} z6UeGB%8~0PV)FouscOS7PT&4+cE6-9aiIB2If0fXDemT2VHzy!8KNrAVLiBRl`lc8 z;Q^v2)oqej%HASzT}2NI$1A?O+gInWcFcFjJC3W!wmEi7c(1 zm@?dHb`s4B3=`+%kjK<9NKZ&Glc-Lq;EqHD97LY>-v^B-;U)3L9pKTZ!iu8ONu4^K zBF$S)Rt=l!F`|z*(w4^Bc{E8UVYAR(Hr-^e6i^a8oO}-*DC}ZR$v5Fgg&~nvQDWwP zWIu&P7U|Vq&1xCt^f_@LbuB+0ED*m587%*&pK1UI+erTsMS{aw&OylRSXt$-msLU& zYG?zcV^DM=@0y=obzi}md;v4V*_WdlzeDcS2H|}kNcxbjx zw?(;IHuKpOPygJE=jrbJPQP~HHxY;UrK;Tgd=ZB~2$G0mru}0+`E`vNQ39760s!E% zQLUK~s2}D~ItYu4TS}35i`T^a4cIMM@;fM%Ej8dwO8g~6AyVhrC=8xiS`f_;YHbdv zHY}&1sg5}u{*yY}65rz-=S|E$GNOEACDlvf`=T~iTf0$r>0>UKbYGoF>HPMW@ZqA` zPB+1=_@{X1f(}8g6}gtx_y4Z!{Jz%Id1k!rUx*k25C-%xt#YvnOO*-wU& zhIJ@#u(4)1t7obyfBn<8x^{05>QX>Q`*hNNF=GzOim6aM$*A1@;y&N}gVlrh+BqLe zI%PN^x0XlgpL5oJe%`EtDTg`)u6p9%l0T!kk<}v%n*Y=M)(p`Hd(9xbl>JT7lPQm& z@=9Oo|218VO9#>{z#gnhkVJOC@S?bpPl>u1*7#39lK|LDL)`~N##@K6slR5F{ur|+ z4p#(zh>2Oufp_TOjxNrr^}VKjgRmJ(oC!E<(|*Gk4k*^~TILtcK7~u4I^91OJ6mwj z9LsIv(D52RqHBUiGfN;~+tD&n3+%%E5sfMW3sZ;KF!xxhU5lr-t#U~;2(G8x@vC|u8szjNYoN97<`M-`2~Ukm6d zFqg3uX(uBZ(p9~Nxv%7=$Ru;+ZY_}+ie7k@zn7=PS5J6pSIi^jW|wqnWN&5=bG$B3 z+LWAiIU6|s-oGQ@TcAZ8T#I5tmS2l(XdE1>YnrX7@C^UdOpy!0pgp^9Mr-lBFk;TQ z){>J=v^QQ4$8+t$jf+PRz48+$8ajCLGfZhc>4bwah&v?m&Jb%Q{NQW5p1BFxS+n5p z>3zBS?(OX*o?hYA)W6pM_9P$Ro?S8mhy$a{dKbC+1hlAX7TGsu(OdluH!gm+K@wo` zq6|P#W0>U6WyU0J!_4vODB}sR_Cv!_+M6j>;3mYfn^}{5W|W3Ix=G8C}9%)H<=f)S+CX?}FUG7^S8sl?fH+g8Cm3-g6 z1vSj3KQ!%M+T9ZC0kTtBG04&A9_j8QdskTBQV5zvF#u!quvqPq;o9t>Q}EVySV+8@ zC5x$bqesb??MGvJJ%0f@Q0o83)K@UY(QwT!vbbAt7I#?OgS)%S;_gle?(Xgq+#Q0u zy9I)4kU)@N;p2I$Zq=P1FjZ64(?`3{C7LEtF7J&GG@M=zt}k~EY+*@u*|D@R%p+5?7X^nWH~pEj1>Q76_yZ9D+be@Ap!O{b zAVXRYWldHJN|u5O76pmCrDdsROF0pnyM*x)}LpX(63oCD^g>|$vxqtJj*?O51Bg{>DCt4U| zIn$67_!%e_ox&_v$d51eg-*><+kU+^iGmvzdXT=eh1Vn3rjo#@)sBzJuGbIZu5YL8 z)p`aSIi>wN_E+eEtAI?O?rhrc?w{sm0uNc9Mdy8)>>rZV{ZH80g!jhNL;yq75A}9| zK$l&Es%8y_NVC{lq^8KpXfYFX)ERbS1h^%;LQGWe1%7yM;8^H?_4`F25XwYHo{1Y| zPG$SVfx?N?>0xYNx*p_1RKpgIx{H6P8sS!9i@$n zr|{C8&{c6Vmd)@MIdla)YeK_*>}F7eXFDOJiHKM9S)hJLg5={g>Cr=UHSPtWV2B|C0CRizB(zznYni=D zb1L1?4&ExPdK*t~h<{>wT?a1$KfeM)WQqq}?POhu@OL}`Gdi1Vjb&)*I9>0|%hvUE z0J4o&%hT(V{M#9NEI->Uiig-leJTk}vvW0_CiD`NP>l{V!xum(z;VVcOJp8j@-q@4 zLtcVz7KEWd#lomRydr;kWV}+POs^(%ot|W33jI8ksZUR*^2oR(?mzx{fClOsY3nm_ zH5khN`rsd1T>1dRSnzt#BFzO?IGWCbkoyB4Do1NSFD(q5Qv08W_g64XqAEy`+XJm! zY+ZyiI_%57LYFKDKOKIFfL$2KBN79pLpFhDoB<^~^dn`!U>|Ty>IDa;p0I%m-JgKu zm>=0PJJk_89^p+B9@s8JBa!zLLjwk9K*orepsyB0OsP?r@K@xlcWkU+_ZRxy4a0u- zd$$|vYq$xW3H86{(t_sZ$q8%Tf2TfS$SZ8xG9dH*DC7wxERm6x@^bUB>N^n5!!Xgdh^4xDm$e788;BK=4)La+g>IOnb(Icf zi1M5?S`w;P#k4cG8GEOW_3CG6J=MFePPO2plsb2Ml2nmtA zoZQrWs1e>TKI$laM0QWT**Wh{Y1j3KzMf-!Ilpe3xLH(#j+5>S2c-ZAAOPjgSHTxL z?}cyKro4T2XcA>Zx{Ddg(s^=Lw}z~NYyVW?#njAqds;5wtD%8JiZ1`*=XWrW#!%Z# znd7&e%@itRUrAjw#1N%n1*)R7+T)}DW2$7?)wPUO+TO4**p4ZU#0SK;&Kx!+o^h@D zu1V0FpT5G}{{CapLJRb}lWzAHRf5oqEiCBc;M(4&Q$c2(R9F+yBw3lt&y+0eTx3w{8hy(1zhYFYnrN-KfNeb)MPm)V7aJ$ijE?Zmf+D? z6h5bJTRYkV;XqNp01ES-db?`B-y#;rDivP!oCWjo)Jb$s{cPv2u?l=H4Aa2zWDxOO zyTnex1dXjkYYxRHP$d)URnP4AlBFfC%!4YTxw*3yk-7ZR+b1e^cXvM#maNJTz8XlHf0=F ziweX+M=o525UH(&)4=e|@6T;d1H$f2j#3;{C=m4QA16kK+n1x@)y^kd;pfMIe+`Nt z6tr3JAhfC{zdpyXi~~cg>UfM}C`Waq2P?=k`A^#~o8ayw`qk1!BF{6{{jHe3HR^}d zGqa^ZvJ9haiDEgVz`Tl?Xf1;Tvt~<7&erU-*@QvQu@aK|23BRLOB@bDi!+dsXPi$} zj&2lHhTo&6&7zGS*SzUznA7vcSF7hPIU};;wr*~PlXdU$H7^GvyYc)0Q`XJ2bGx3I zO(manw(W8$oR2|=z26#?kSY{=P9wmx+NgeKw)_g>GO)Bo^u2Lt>G zSs7B`ZZa7q+=5WH;dDmnqcp4!1mQCrMU+(xUNvH*ROy?s4++f5|6Jhh!kXqmD2Q{U z^*O&xx}4jPTa=pel_z>p%e%Vc@o0O*gZ5mF7k}#t__s;*5ggcn(~|(qyD)MLUF>O7 z5~f@4G?+A~kkIsaPd3yxIMd})iP23lth5$7G;oFKv~EVG%4G36molb!uE(59fj91= zk&Ep^PV?}j&~x(36hv!+qG8&Sp*N3?q~?dI@-MMk;;*Fi?po-fBTdeUgTqH&vTJNo zk)y@qbJ}gLQ+~<}?0!7uWAxwbFhmz}C<58>j+m`WhhY?%lHVEBgDu+Hb}IQvYqsJ~ zwgxqICUUQ4Z!dqC*8V{Wbky`)Ct_@)NBR)^003TD0#E>cMsFW$f{s)syh0362u56A z+&WPqZruz%a3f3eTT`U0=eGGuVmK9kdpt9_`%d&h*n3R&gSeuL? z7jPu_7Bn4Dohk#9dE zB~oX&0-H+l%LAoE>LBP%Um1Jm%g)E}mrrMm_ruDXFAUZ|!~)lyC(BuXISA)}{1X93 zYqlb;z>{nNM>u0~Y=FbZsEY#jLDa#wcZrDdZahG^l^|qJIx);gxr~BWuGiq@O?bR1 zhETOa@3$Cg*b;UEV0&5%=Rs;?*y>D~j3P5VR zuCYda208q7^&}}rIrdx0Y{3Vq5fhTL2K3lUxd13+WkbztBB=Rf>h zhQrC3Emwcw2NHU|4LP&Mi3-wJXjl)T#r$>pfLh_73Nc?t8OCmIZR8|lpw4gj&7(3D zp%Pzda3#cAHBoFEq7_jj_VQ;v;_oa0=Byk1<&Yw1bbIH0HR$5~`-e0NibBsZqwUz7 zUyT4}R1R5DmJ>TWn4bGHsL$qNI8_bKYmlsZ2@s1<5ZM$0Et4tlE_)xWUJNV|D_9fN zhcpxoyXj4GiA6Q?#|fFXe%p?uFMIad=!-HOB>Dnz7BEQbnw}*57F_C%Y9U$>E>5ZI z9ujo`Q}{2lrDE9H8#tzEb-4Mhc%`miDlDdy54195p2Y0P*r9gUuH5d$X-;96zz~P|I;ft-HU*suk-uWdAQSa70id@t}_d zRHA9N^r~)3ZdulAF7EsZ(d8k2RbGQ1=s16!X*3s8aP?p1d2@NMnO0e@g=?%}) zh$tM67m79(PY_b+EbJSdmOpQqu5qqkn;U`xdrmfHKM#+m=K&U`s z%=<-p7*Yvm?-yJ7QXGyjyQ=UFMG+}^4JtH5w5`77ql=K068CR53Ix`LSFJWGISZBD z`>VfY$#04=2kRw&jLz)m_xvcgN;<&O>u|CD*qI$*5p4!NxuRWKhz=eOSNy=t1V1PJ zho5TzT!qEbkOEJ!-bmLr*8R zGR)QJ53C3+I-I(gz>T?-eJ!pja~wW~0y{!5nF;Tr)|Z6P0Ybkpv+{+D#fqB@@?*LwGAv zE0>-GFI#nHn-Ook%<1Ay8b+xWC4#(@=Eb(rzI+0bz)MY~aluUX(U%gMuSxmL8D6%X zwjb@Se75*EcKI3S%?D}xly!imbF_pbCvG7mf<*}JMzq{T zO*XSeRF^k7Bf9*ci^$CEOT9D^B_)v^gpX!6_u@@N-(bbnW?GHY9M2RdB2V?`r@Wz8 zg0I^>Oae3-Hx)JjcF*j=Q$r4gACFgLnOCnTxG)I>i3MEW7a!rd6GMZ@={UohIM?+O z>e}NBLgD=zLDfyGTByCIW*{~bg(i{J(x`v8Bb4YRS4V;Lg1M+t(&48_W8<>&X=oq+ zP_haJ*-x6REbCx@L<@mZ%5`mN%P40iUK$s}xQN6sYQ&l`GX8%Xbm{v%rtA z{vUo0LV#WnEkh~XGBcmWp3Y=io3~CO1{{v% z$GMFQp7~|5`^-Pw`Tnv>f(8Oi=ujlBXnLHXtxfx*jCWloF#SafAQemo7AlP|)VvG| zY!1I0Y9=?}B#F`RY7<-qz8jld2FOu; z^%A5#gw;G>wOc7Ez6^+}TK~XtTtcP6cHR2vBzB*lV%$xH1x-=OoU+Gs<1+H8jVev< zSIjqvY0>)Xu>)2Lsp&FZ@`%=H;yJqUCt}TK7W277W~eQF~R=Iai+8&km|a!mNsAU&?zuBlLz8Oj!a}$ht_!d?IJD zDfs5*GKXSQHkLi8-4FH&QW{5A`MFK?y@mlB0e~D$k_*bRRM(}06A=kYqIGW`DU4_7kpWtRJ`35>vNZZ!f6?Qr_vc6#Hrt>4 zb1>Q%1dfCH6%%zh%-_(MlJkP?Ve#9@_ups@ohRq;(Y{u4b)P_Qe+ovM)!U|YfO`%m> zJmge^a5IeGI`?NBl0Z2Mn={G+cSE8Sf__EtF+ww3`iPm!U4rq_B-W%BWtSB|nx-Jf zX&)$`x1O8sSSeE7g7q{el3uZ!r|8SOR5cv0iGsehb%}p3PK1@FYuBqkE`mFswN}{;phqge$q3`Q~C7$5CRY7}G)^A*ML6#c%xU#4cCWT*?L? z3cg?cv>r900=M)ymZMRb9RrcKON6GGsmXl_n8~7aq(TE#^3RRht!{s+3H)e+P^?r( zqP*0tOKo%2kcKTzE(?bcPi?)qw?-}-uTozpfya(+^&g@z>lCjc;sx%kA^FCbw20T_ z!Ur+MpKa_~<5YDU(sGT_ejzPaIkKl|`qJzBQRyoOnlq2@j@K~wiywbG(LF{)8k;@J zP-(9|hRuKY`4s_l)zcDJ<^~xYAx(b7uTMY^ZB+2)gfCt-eK=aAYGd&DpS=ai2;D0o?h8Z-bLz5bYa8P;IY_zhinmrwlO0m>y9@<*> zo;@}h7-(U*W6MblVr3TsY)HQ$SciIYeNxpbH0)ApdR+Nq%jTD&I)-L;)6M8lKHVN! zf@TyWr|9oCMy1`>MOB=W^JOaqA+;3_pTYSt<{Yy zfgxfTA7)OlJ8MbB=auM$+jRKj`|ru*w}(d=tsQ2Z^JcAOGA>^Aa{1-s;~R67s>z+4 zM$OAO36n zDT_fB9w$tjjF(!37R5ph?72SDFT15_tqAO~x7moNj~UTFrfGSJY7Y+9FvH+Mccu|Z z9KzbBB^60h<6c`hsSG)HodGn%#n*4NQCM={t{KzxDFg#D2s<>R#&^P4E@4y~1-@98 zem@Le6gOrN!&cf1$Z?@84|AZKQnS7dGYuak@qqMlF^f&U|x#%IyGKC%; z4$Itih~$-I&zr>Obq{mees?UmtHOXC_;@8|@Uf3%x(Z0;REoh0(8r2V?7Y8U5mbX? zTK6MG&*H)etd&_IA_Qa7LyH{4;UX-C%`jROH4n7)g#E>jC08&chEW$l&YzuQun3F4 zVTje3MaCaR#A@ysKJDAwFj!va-##>LKtm~&uEVLr9Eyh_eoloPaV?4eu}RWTH8t)e zLH?@m*mIl`Z5Q!EcwL|3*ZyU93@;uE$+P7Q@gFneLtF-GEyarm0zOA>Vv-H4+RJ4w zd1OG=Zz8CQG(AxE;}1QTRneuf3gk7!B8oC=3m%*ww5Wr>_s8C(L-811n!-=W8dF@v z_2hRO#eB+v`gEc|gzxTKGsZjbZ&Co5B^U!Ygnk5w+Znp*VNIf{NukS-bP~ic1NFq~ zN0m>vlB8CJ9ERaj6f75|moBmoic|@hvQ4N(SdAzEw>3*mm?7IT+vs{LQh7lm<6u_T z`gDJp@w5BggE6s@ot_7_E9YkNa5Dc7>qyw6B?-Amkz-PrU~@WOLaAZ}$^4kM<%3F? z=&~hg1gh-HxmLa)cx!~^T~R^W2Tqb*DYhx%$p=B;gUdY+1;Nx!$B|h%Ihxp=U#c86Heho^@`p};uV<2c^?TX{# zTv&2nv?~}-7y#}ILjf`jDH>eFl~+pg%@rN=y=`j6bLPfdK@DqXs5A?uM4g7;fA7C; zHEn0l&RK0fCFOe}{3g)xpq1QMcrdnlwuOZeqXW>OGFi}uqd@ls1({-~1CjDl@bN25 z0xKX1fI52HA>rvp0bQYVz%!Vt3`izZc9}wdT1)+JU?s&PK>oDYojpzL#n9j8Qq@1r zVLTIyg-_@2tqODIH#kYN{bi@O%uk(puvUhOan64m^-+C)un&%@r=eSYoQD6o(rR^0 z++01kdiCn!V6wAXe=Jiz#0gjKGsKuZtfnGL>4b$|kbj)%;kwR9B zL4j4Zb+BMobXM0H?nk(t^Y0=-wY^+F7oL|&*{ni<5`hKK$eUV6PJ?wskU)mwY}j#~ zAWSR}2qV*wE3oHxW{#xR$~6=w6xSK@G8*JE<4WUSnF6w+5N$6n?9$l*>-1eB2s-Vr z`~J-Yqv{XWSlLa=s=wn^Mg|qKWce)NLz#s=Nr+ryoTK{b!jSORqFn*wfDHj=1$1ph z@mQy6Vj(_kErS#F+o+DFDmxrk7Q1P;x+O~QC1k5gCj#BF?`A!@R!2i%Y36C7C(YX* z7i889SQ@{fC}c1xG_uU0z8haOQ+@Gwq_~C7o*H=H)(;j&%(4relV~L=&rJ~>r?A6% zJQjcyw8HU{$nJM*CH44K^wPn1zArg(7&Eo!TeQ9$^>@wt8%hvMK&P?k&d6gHGcBk3 z-mvWwA@j0DW>Aqri}Y1>D7{ou>i$7t&=^caK~nzIj$$K0tCc_~QzY{Fl90nkg^f7oOUY^-Bm@>M!1 z9BU~((}*BQp1wD}MQxnx)p)(F0Gp%suK8}*WZ zxhl0On zEE|%rVHNNkIW*S3sPzH|mi)Y z>NpUKBA1kB`iDSk`0g}?Ldq~WqY_fFTbcL@YE2fO-^bEI2j~|r`0xuYFzz*M z>J0MfbEl*GPV73f!-+r=n_PF)iwcJx@2pqrC~5BZEX1ds z`>ZZqFooa@yeB9Xz5Jm|eLb%%a=%A0@=p|Ps%TM1W;2oLpxjjf+NL6Xl3qN^@s=Ct{1LA|fb!3*qng{)%A;TB| zB2&&}O-R#VCo;ORlh-G4vXlJpe$yE=oP~vkxUw<`a>B3yIW5M0i_&#y_!6X$biox- z+`m@(LQBoLYl68l?r+Ys{+t;If)ns1vV&p8-ow>+l3yF+H$x?H?aD+2IP#2Z1rqL_bF3-2AgXG0_ZHcf;#!W0cZQM}rx2#Y+O2S!<%N?7Q|uP% zkg8|D*|M-g_;`5>DpYR#bfl5}`71zt!_zo}8od02vWmj^zfYv}=&Jv2TpFKY*>#!v zuNrGAH_|=H=4bA`98p*vZI*58Gv3QUmsNU-)maYp=QXt%7mB`p)21x#7dyJ=_itxL z=UW2)sCHHg>BpJ3lR~;y7?8=&8{HCgiAM-__<$_9zHGJdFLVTYngHjhv*O98lrbnl z#f6J%qw0Spg%n^*a&*%Mnb{25vkR1>9IS;aNF=3nu18Il1p6+HW!s&01t~|1%D0xRXX(v`wbv`L7y6qD}4J9KEZ$t z(?8qBtCSpEBH=0PoAnIy<3WpW*%qZgJU7(0sPmUi%Ii;NjjHkL;`P;AOL}d|fAWfo z^DkN7AJVbZ^cp&CM6ozU6UTVh!$byJF0Az9&%I^3UY-2Xj(Pe* zv?&5nGm8EA@9vbOk@J<{uGWf76}_!7mcWp09s+?S-S~)7+382h`N_639!qPz*E&W22*vU2B7%DpVhlI)FIg&~=Ycem#V`FT6Xuf%(>M*!BK?U;phgkH^k$)4?T8*&VjZI~0wnFq9BOWZ?@} zUGxlebaY}al$xPK=0GGA@M~-eP2MWQ%uiE*D&FK=r3R|LYQCc=Rmx(#URyFa{cMoYBs<&!{l`KuezTa!LKRqlB8=TpL z))vcb^f7ZYR54-fHL6RfdJpO`idV0mBhzSNjpMD<=*La>9}u}_w_~{QSUpY-ri}Ye zmaL__=zOyx&?K_3s<1|I2#Msv=p92X|HIEV4A9!}!#`XJq*|FHEW59yE###Y2mUE4 zlXU4HQOj$Us3Bgnz6|rioY5T@HC<*S!jNf)_~t)RvNFbMU&Hl)IUbZ$LfkQ`Hf6H(YMo-~o^yNaNIg!s^gYKHS+zR-wzQZ=IU09Cy< z%PP?d;I;O??TH4Dk^IWn*sWJ$7fuT8H`C&DwAkp_!PbII3(L^Cpw(3iYW-cyP+%iS zGwO(gea&BwKuNN6kaZitVxOKMvsz~;@#r`wy;rHWGD+jERJ!P6s z=QJ@F6`3eP{C_t0uho;iq!1GbeQ8Ae;9r7eoSzgA1??h%*S7N*0QBtm#nO{|S9>&gN=b9vD}jzAbQ2T___CO@KUw` zjl-xl?37vxf9!xX%oHGx|c+cuZ7@l%!T)V_&Ev$rWvk&)L*~VONr1SXA1an32L?A zpGi&x)eRYif1#KVWiX;1ALQc#SO2O+t0W;V8;GXEAPd#R3Wugbc#ndKF;l!#ZJh;K z!aS+aVUBTQk{rGBJ4eGKm<0^h&uMV15R$%fLrZJEBv=KNR-1{zNh?kZ`;!*DA&Go6 zQXqIV!M;pLLF|AL7Sagw1rR19s{gRuJf|9|A;x}0xt+cbGo2eesa4Rf%u%}w;M_&= zQ&yQO6>C5aED3E}BFE$LFMX9vTl6Hkoi>P->)1$}yk$?jMTP*f%vkmvO?uC3b8eVv zMQ-g{6+K0onL+0bY|W9O`&ZH-raB=};KS7y(<-_HRx&BiMd8-nqyvH03`Z#(!O5dfy)4q&ii8OzEt{7uMpV%72a}hTT@<+u zK~hs>UK+SCog>f%XpHc9hM1{9XmtCO%Z@?I9rho7b^*W#ljUZ6>0%9Oc_GNYEiROo zHdBM|gb78>M~3dq10Z*%Wn2CkU_J;S#tp?>ZQ4_oO<4eM;JgZX_|tCdwVhQOhi{Ty z-Cd}u8lH@$UG6M>I|CodQedyV_7&2)BqQly!d2lU%+y|=if7FTLP;zN%Q=063#yNyop>!cgCcU35>3|Sx zsfdp1;c!@>4P$&w7K80B=G&x%+@k2i3AX}SNNk6xFYtRp3j-B*nebD~DezIdM3jl! zp#Y60nQPgedg63J`HbFUXO<^t?B6^gr)a*&?wj+@r7(+=kkdU=aGkaWBHwj7A9>C2 zS3}=<@Hrw~S{;~4>$`l?U^+G0ck52yy^UD3oNPOp!BuINYdeT6Pw46Qin|%6`G5`U ze%hZ)z%5H#=7%ST0O8#7Ga;?l1{4Oc2>^=e-|heNud^{(HItPF8HU@wLZFB7g5o~- zXDg_@(5^KitwPXJ9_@fp8{uE2JZj=`o1)5cO1fzcx=vT9^z&udqVJo57f0ukRxXzk z+l4GA1?IeUu>j8GxwfVqZ%)=Ue}$q71Y?mHR54d^qLqDmIl^_v3<3ezf^LB*$&d{K;j_`a_T5@MG3@8uqH;+iJ!(0s12)*g;w9;wO$wFR_ z?U8FFbQ3q`w4*^RL65(em7LD?hy)vP*?2u?=CU%OtotpN|@IZ_O?p zYH?!Ew3x}<(C`S<`P?fyhMy+D(E9m^3)8$-F5D(f)%B&8se%d1+%b&S_2z=NrgIo+ z5ytuauyH&U2tcfXJd4~5vR~uMG*tc3+mW(km?MA#fOWXN3cR<+Yynw?nKX(xMZ; z1gM>v8`aD;nSPIMt6UpEr0m5;-qN{ELW-<>${X0F?L#0qN#m z*qbT@$5Ea`MM-Sh9WF~GG>f>In#YwB$`6Me$Zxpgv|1gw{2- z_iwF;hQY9_*WzF&^QEh7ul$LxG_^I>`=h(Q)ugZR%f)bdphL6UH*Gmp@E1`{s8%qu zee+uPBYr({UO9AIlbA%5_vus?KV7F9XxnEREM^u2XBB^lVm3iEZs#;|(D37tr~@UXAA)2v$6B zlo7`qfwHi0K1d9ROKKSnI<%y)gkif$7jSYUtY~+`(}MRyM^j5^S0%z zZV@bFBC8gC76KVA0*%_i8=D`ge$NWsRz`$0WGCCN|KaBl8W{TFf2gb|qJ2!{1UX8> zS4>l7ZulvhNW$0|k)1hlT?&Y;NL9s&#Qvwuzp9nEKwxixGtUZHO*nkOKiND8!F?<1x0fjbclvk<*OM z-`Ft4KEt*3=2H9DL3^e~>uC%>HAz$olaH6%*8mZeQJjeZR8(OfoI)xw(xJo^4wzW9 zWBLRedkE(s4Fy;!0r1cn&?GKDVleu!^Vf{*i`tgjOKbO98Ff$!N4!_rfZgYvyHL{o z9I_u!W4Yo|b(atT??*NWfI)#vF^c<+1(wkwWC!Sno~3}%hye(uGBg%nNa+*bL`cep zTfJEhlkKu?({EC>nOJnK8H2TKnJbI4D-^dZt>UJKj#;He0am9I)@okLayMy zr+1G>x(k$6VI)Jzdebwa`aY}sq>Op!3Kb-fGlGapz}|oO`S5=>)mb@EmTc0X?nV;| z$;4#~(ykR^9gs<>5sE0Yb`Z)NTvFO(L57eEYx~GWu^OCpIT$C-YG<6G!JXi z5~Idmu8!?sA!20hN#y$TnIdc>=n9_@hgjYOju z+;tONFHNE9EK9#^T`SGX6NeN>Ak~K?3Oc8wx{Ou%H#z+Lrrh)eiA0S#yTXPvrYrY? zLxxjgqm!d=CuIzg#-c?5Z=DtLvy@HZ%nj-*o$4LaSs)!;YBac>|JVD*z2nhSLZL)| zAOfN_{`63AFm%}j76Se^y>cmgqhJ*n8eST>xMuFRe({(T6jq#Rt;fib{;em9*vlOh zxUc%Tj>J*@_GpsAK*8F;fj|>Ex@n52e_siS8`NwT@IU{yjEsy9E#xOB)UIevTzSOz zsvP*dg)>LVCt|{9?L zti_t-d+}Z6e*3oxnK`14c3rA zx`rGp;U@*CGWTo_MBx4s3P+p&5vU0V$OL~M&qBiLwE4vMM9FwkTvXS;}KZG zz;}mKhokCKBka-45|(d#hLnE-DH{ns&JRWO8{}b=cD7pYGogx<557T+m|(P z-_Fl&x5t{N&5fh@`<{2b7r)nQySD0;*_z;$%jtKXjH~;ape3V39DjOdkkr@e6V0IP z33%@E1$1&S^pL}8^;%kDaCElXeDOGljk&rXkyie9_oMBREUZX}m7-}`4F1pdKSanF zfHn%W4(H``py&aeNgiTNA__|%cK3VLFbEM5DO(B`b6kgmw{GE-9fJTq%Zh~jQ!aEA zmPG-(2)sRKUl8y@oDeN!xWcC-YIp@*R{axH=MnFpw%gV1PN^KLn~4ni+>4jdT-K@n zA?n`;$E|pR-v_^te_tPM;k*>Yw2HSang63?SlWl8(C@UeX?>)7_8mKI z@{tm`*BTQ5`M``>XD$E+uG-EH{2O3QTkN#$9eYuAtbWt?Enug+{mG0c?KY|FZq;J3 z#>S!mKco)AV}+#8HX%LqM?+;x`0Kxuv-=7Aat`LQy!z1I}g?>@RLvyNt4H2*-(ovD&)Rf+p6(oCFV7=Xx5>|0pt1p zZK^PkQ8IK+R_5uHez{>4@O4buz(7Vw6>@H+T*1ENIAItmn z`!BFC0JMh(9psNJqMdB=MoWdm2)rpQXCs47CXIp#2|73oiGeGPfF9*YZ*h_XTRXE$ zRu~0z5jm?ujo0GLOR;8_D>g;XG-~j6swp z$iQTS7NntBnl98M{DfT%ZRmEMd&+>s68%7`ak?;$Id6hM=5&}T`l>aig zpaQ6RSXjh@ohISyn10_SV0aqB?e_=DU;tEPXb6Fpk?{z6ze;^8SUaINb91so<$rQ2 zEnet|3kum~r`h@aU=5)?zd&9h6h}QOzj)MxYyJBmakQ#aw3!#42ZZyNrjndBaTSs+2=&RJN@t@=@+qM}=sxvo%#9 zRMgk4`4LW0)$-d5?_9HFP6Z`^Po>k!Fq7;B2%gYmU{96SazgI;#pv74ryB-VbUl;e z$ob9Nr9x3J5Cu7&*Sn8enM|2D+Zws20kP=*2zzm{6~J7g81Ntegad$PChKM>-0V8A zj6y<;*4PtX7Sn=G17@f!LP6gnMco1eQ30{%6UZEV{tO^k1eBpf7{<26A1w&cY{*r> zBE3<-(+`5@o{NoYsyT8x(TXWlZEG-*MVxFV0b^tgB8?R<>s7QB<&k~x1{&PqFt3VT z$bgx+85Xo$E#d$?SOiYBw-7b*Alz%5sGA_O3WD?O#k!{Fz9v(KJ{oa?LKF^P2>=to z+?v$k1nx`DR?E(;fc^BF^(*<`pv`V3OJRYU+}nw&X9W`PiZ_U2#OLw{^9Rk%(~JD@ zXy##pDq(af=kBjKD!)ueJw6}kUr&);HqI4b#Hm&(WWFCkHC>^%q#=F&Lz>o+=xM=# z!v+w=G#_L)VW>=v%tRn!umdFa0jo$3xqdc1FNO{9uH|(+Vp52@_$bR65)j{4QfG>y{TEbrpjYDU0s=)6=uP0>UpX*!zF8qb-h|_YB`lm7+%Dr zL_{ly*RvuM+AcTzn#81fj{<;-vty1fx$%TMMD{sTsl@v9!aEzni3if-2@B&j$%Yer z3<2&ob9&Xj3~H@*87_Yj=*rgjc7q))28r0Rgd_T8Idu$ZrFt7dV!Zw(T!KQDU_pTm z0I@=y-@LJpGoAyIE>sjhg%ch0=%Y5(_oH?7$yL4LkqqKc@qLa=L3n=t>kC z!^k8;rVThgevnup^a0!S>YH$+#C=cdyvo$yNMS^k`5wp>C4&O|1Dq%!z?XY{ihuxoQfHDdroW3?3GiEO-K@ z{=9101ywrUpW|wU^5Vpz1f+3PWJP>0&hy3Fo|7$=OLnP-BE!5L0Q=XLOBgQzW`7A% zx+D{BX@V8D^Q}8>b&d^5EBpWxZ}2=vE%M9P`SlTciUZlz6JcsUMRv8$uiB-FY{|1> z$(G=Z$(s8ip--RR*6`eue~?U!-&tqpzOO zUw6Hs9Mu&%6U(EY-`bB$&wq!h{Ve`#v-;hWCqDardQ*Z=8aP^6FXG~35S&9uuVE1w z6N*j>qJT&#LSW{wh?adVIiz$O)l}WA6HVQQ6T-e|&*p0LRocN-nqQs3wS#_=*V8(< zO{7+42TM7e37SZkM$};E=gFYu4`r*Lg#?W&RpS6cwU}TL0RX9YJ_-@JW3;Wd$zbU4 z8gg47f!GP8mJ`H|+G&-R>t*FRTy>&naK~R(w#2yQ2jE4VB7BVuz)T)SX?5iLaI}WJ zX>P6Uv%1pG`}VgQY&cvh7~1t^g#EH`#Hd$WPXMVqNbGNj7%a}lRR_aO{UV+GwaAp7 z05Y?gOhh+ZIS|c^O)IUjNsrGkCW}s?BAz*g>FyP*dx{4{i!2mn1_}bac1Jo{tDccwcmQKS~bO^43XIK=f8}s zB%u^Yro2b+v12a(N77ZWRrx;62RL*cy5WFyNSA`rormu3?pC_HySqbLK)M^GM7p~{ zL|%UX_bc4jTzl`%&d%VB<1}e{-NqJib4JNPf$aY`JZhgPCFdrSRSCE>~9DZ_G)T0Davp zg_m2mj*w*kI#HvHUeGZH)#NT+77N9+$LH^_j=Wcgi-$^d-U<15DQP}Umbl_oIsA3^ zz$s;qzvJl8!T^uV;BLF0VU#6L-fQKX91v&Djv%gMoG?V?85_b4%2Xo{6Axu7ZxSl6 zRd>p2W-JDfn}y-&lVGe=heBG#)@X^q_pw?rhCbMx1{!OgwQ6KFwb;9V(dR*wi0XEMb#)sDAJ6@nvO|7+LtQa)5P?c zVwkVAdsRzZ6P%7oP>f_o#T~~0DP{zET`Cw_f7R1yjL@$Ug(5I$)oE-KG2&K4DwMX< z--2klxx_jjHHw4VWF$TJzDaq8si{sxjJ~TZ4PKKMHccFzAF6&k0wEwESWW+DK0x32 zBP2=}97v`emy^vBY%ix1EMU*+E5rCC+2xjy+$4~NJ??J#=W3<3ZoWkRX3FpKfBsS5 z{Xvz6D>lsBLOQT(pGhzoaac?Yq6HR_t-L4$`)fJ%vj za#IRf{-q>-zy>+>M`fTfGO|tTAbiRm&rdB;yPNw=rb;kv?nS!B$(EE<_c4nl!?1|sLM*5&=WHVFmMVvGF7XAhXi&$1V&PSP^ZJ8 z9`$6?LT1SSqrWkPcNy0# z`cBnZM7MkuZxDokG*Jz}Gd~;(BQav=M}T5Vy)6xm6JyjEIDbqr$0j~%Qdsd!I&^4HXMK_>s8`=5Rct`W~KNGrMv4><+DN-#MNsfvD+>zflYN1-x{wbXO}ID(iU znqAT$6D`T<%!U<@l1z8P^_04XVS&*3fF3{X;SL_jocd%H+TSKv75Y%~B(w<*ujp0z z)z?3-|NbHXaAH_OfF|9hF%yhWu(186Cp$jv$K~{bLH!wu;gqjcNL!|lbX_PX!dT}H zG+1VbMOHOI?72GkB#8}6$>UdPv8Eu-`Apb-_R(=DwbF|oHjD{v6yaE->Gu-4lboC2@c|q_U4aH!P$XLyyEj{?UjBEnfqFdQ=w== zd;amhBipo~_j7>?QQ`ZeM!^EZU;0z2%^`?u*@LKHk^J^Kc8zh$yYQ~G1;%mL^vc}Q z0okoP=Dhk&10FSuy3u`+DV9m+<`A6gH0jGA*#wmBmb9-63<7-J$^L8X+8Rv&ZQ^oz=qv%Z*u4LWbx}x(@y2)6>prOU1T{+&NK9mI{Wck z#X-S)`G3CBHy=BRRh$8&%S0d^2ElL0_NG*O1*>=54G}>jnv*$+qgR5ixOf3t(e*!j3v(Eo!wUES|B*}HJ8)39YU4m;q*RwQ z-AY=Z`@k+HQmhVLRH+$u`g)uchihxHCzSIefm!DHH#}J{*SzP+N3K=D*EfnF2?j=% z9ss1X>p@0_3;ZB$xQR!4rJd7gLOxFN1(~Iv zQ@B6FRMvh`pAGg&qYDBq_30y;cZkqSZH^X>a|%Y9#U$~ZkIhn%_szaDjK;8t=wv5h z{)$5;x?K_MYa}hDoO8uXc^mpL&(RzIO-=B|P3bYJJE<*qdWtd)CS-f$y;gahR<;{8 zwyD6bd-X$nqp_rCi!hnZCc%ODLNSd*(^2X_#c`fy<1m|LSB#}& zVuED0oi#fYM@*+uR->%o4o>vlsVEaZ()67L23N3#N1fggeRM>c)SvO=rtU25G^_oo z+Z&z`Tt5!cnoyn8SMdKw|irw|bxF`R5Je?-#*rfjv&b zIWY{PPwIZ488#5Dvy22Cz&k2(WjkB?-8D1CDFC&2mM|=1vpEgPAiYwZk`;W9SGZk= zKJf29{G0*sj9O|ttlT2zdnnaL`^C6KZhEK1%Mn#LRs3l&^-0ql=KRBUtKZ1B+A=l! zSj2MGwOm)EhH-@y>fcvuriADL?B#Ck!4X;v0F9{BLJOj{cr5+YS!LOeCE+_x zY5;}~>}wU^uae&!{!10TO<(}2@&@;ZtyB`Okz8YdC~|Qmk0$z}8dz!J%02S|F9NZ5 zd(Lke!2qSsidZso&%VpKgv+t`AtOeq0A6s?WMGEspLDw4K3-QGGtb8pP4@2ryTQ#G zp^(Jb08JvQ&Rh&_Wa&(Wi2hlt9=CViA{>)4|LRn1nB;<%v$x>75F2VWDs zLZJSBkHzhoVg6M~4#8LmhB`-f{8lVqizWb096K5*(pV(G-%cIb22MZHax9W8wYSF7 zAJH^@+4w{|ZLXREBB*FOLP+yy9(iW9jGa=kvh#qGuaG0$3!O@v2F<^#oY}|v<(KV{ zSs7P_Upd+;;(c@BqQ>XJj;z{*w{vdXdT)41tc;sAi&tu2R?tNB&hpe0DVAZ6%Xt^Y zsyMIQQD_V%9*-D+;kcXjGqkm%jSf}@^m@)7N0Fsx3^GYXWq}~<`92m z>ijJBNO#nnLhq6n;<^fxwd&Gpq_D9i9cMeLial9WjG#@qse^+We=L z#>IB}oKsuvmr6W5=NlSgyISpCruI&}U$qk|E|tZmsg%R@_ot48l{n=vTr?c2Va0Hh z-=YN7o5D&)tp|Gj?Ky^M2+fLP!p8}0{MfDFWqxWV(QVqs*kb(Zdkd*#I^XGd)h?c1o)NoJa~u$>`- zsqCK1>^z&on6m(H0ylD{cFiCb%TE{DBof3nqfMXI>v(mDikH(~p2VBF?%RggFeS0( z)NLB5blQ2wlgX;!0IFu12cmLVMN_ae0DRJopFn}h!B460-5WK8g^=KKS?l~}LXI3+ zghqT2RZ~vBBEjk18^f-}az%)iW=U1q>ts30u!CxIU!8PnHy9jC167=e3Stqqw;sGT znSZRVY5$*rzpYdX;Ecj0#_lchQp)#KRpT^3Qq+n8N!26KN6Ll39ZI0uf6(l`6lB8u zg4@o8n=RItC|=4ZNP%02A6GALH&7WE*2Gxxl93(ByO2g$DK&*)%Z!d zUV>}=u!j9h%EG!uIFQfJq69ZgOVl_}vpiCLhQy-CXM#&aai<>q8kVU^5U7?!b%A_v1t>n z0pR-Hup|Z7#0;*e{w3x;1WLT+o_$;j=Wk*Z-pZ9QqAaf$8=lmfRYg(7FHK}H9pI~1 zGJ9Ip8u&(BdiNOIQian>X3Ayy#VB@>LQzYMbywZ$tws755o+pf+I z1=h49w=N9pGhq>YO^6N3@OoqNIkNCl#96ZeUB|D7`F7cmP9s*-XzHbr52#cR@MDLR-bFuf1HlN3-oxl)(@LO&2rv1RHMoZ4mmn3T%3FFuv|1tDL+|10h&Vwh4 z8Jc0Y^qwh8Fma=7x;8_iWZ}lG5n>!T{3J@&h83P2^yaM)n@r_QI@rc?XiCcKTX0zu z^3Q8khEp6YxGCBqi2wD^=RXr5(3B+=y%u(UAmOFyTq%T3YG&^e_(ce}nt=j+DlZWB zu(Dd3@3_<`QeuElNrIB)CeGl2p&eGbs3P~>Nh{8&oRs=4Op=A|Tx)lS>YO zk%?29`|bE?T2@AC?}9qsTa)l*Yg351&+6}WWhXVN^ct05CqTE|&DpHWl$;yeqV8=L zscwGGUo!p5An3|;S>BLmje+VZicG>urU{oUQ5hqFnD$&v2$>2>;!COXy^sl zg@NXN9RKTokl>-_i#rSyLbix9lSc1;;9R9>yxk897pF7%C82^-d7TPf4a>ix(7Gs! zEHmsE&yJfGl|0x>lv0W*yJGK|2+pI{JSx+CsWQ*A%^I3KbM(swYoc1)x!JZQF0IBL z{j1sd2>|p2Z~JRv!UR~l5mB%-4HX94wLqBwH+#H{u|fiu#^qHqe%i5Xz>0<)(XKL+ z2_D!zQVrm-BuP7hE{7*=K;afc>G0?K<-ImtN-lJ*Qy%@co*priqU_4`qI-WLRj?3D=GgG4!JCx;Tf^ zKyOhzD;>ExfVZ8<>-XLuEsfclzf>zR@7(f#NjApAi(Pv#g z8BQ;V%zyYf@rRE!RJ)Ppjkkrb%r)B&$9W0TnMnT<;DTW*m^PYE|2qeUCm21kuR0ah z9Jz1z@4ENj3isV=9|(*l*9Sdb23*XaUlvQ-XY>Mjjgtv;kU#n=h^c)qd}|0yv(1P- z+)iJb0ZK3czEgK1>=&U12jkkp9|bif+=_}1OA(8ROsymitD;3KadM}AbSP@e0}a_q zXI0j(Vg*uRuRyd&XALbiL8-rD)hJ1U;~r~)VH=w2g@)&^jfQfC@DV%Mq51eVz~_XD zvg?mu489Uqyt?fx{I)haD2`ca^f2s}0s;X^Nh{@Gcclk5yseJokwXp5Cx-%MT zFVQ7mv|Nb+AT!^nxq-APj<@<`KgWyXKkFU7_M8DQlJs!qP%7n*rc2m-CxLBF#(*1+ zSYNqCsnnp55IPkKlIsx*sK&k;P7je6Zg<_BrOg_vL#y2ffv}|xv+AF#l!K8|qM;hk9GaSb!Pvlajt_d_+w}ilB4?(e9ekCXx&CN2m z!p;1KX4>13@@&yXs=gs;_#s~+m}iP|>aFDx!gRv&?PU#$nQ16-h{{;)gG#uK4y z7K;r{`RV`R=M)xx%R*IDj-uFj*L%_eNdY(EtHyu-mn}`z+x<>O;0|iqkKPvAF|2d{ zi2-FMMj*WY8dM2_DA(Ev5(KTE-0-3Fg7}nB*U=`M>jrhq9PT%c-oE;m&o?L-hpVKF z!J$ZB+uZ;N0B~Aus(^JT`hTDej10p^KsBmld2Vn(XtML%6vV!1v(UON7{HJe{QQBb zhD=`WT~!TY#Zvysjs*Q8W3FW}H5t$gHp#<^B$O84OonT{+M8kCK@8Z0&%CW1`bl-j zFaQN;X`Za)rP~D+t8uTpp4~Ea&g?;7sMsHji@%J!1f=H(YIfmV5hm*thh5B<_|_KR zR{kwx$@{49>Z&+M@uUDv{>j7uu^zT*VDcbwrK3z? z9IS8n4=Vv<$nUxSJ!SgX>$EWldzJjK)sqlryC?!Hrn(~ZqyBx=$NK@Hh`=*(d}0L} zJgrw+{f>v1p4YcKW&{{9e;t%sG|kH0ULgk60no~WJGv8agrJM0jne6o&^0S+N{5R$ zhTWUeED;c}Ic=U=!Z@}saD@!2d8Q{LXsA^9=)_b*(=$Zwf3SVWVb4yshpAUEGZ>oO`qiY$pReycL-bor9thwjm>wR>&FEpU7d5R-kyE*8dTzA;7 z$k;micmE%Ljsp>9%%J^VVz*{uGSe2wx_Ibr8k2AOXRE}w{+W0rM3DYz_W+u?5{CBT z;CY|$PWKY1g$VfrfZeZl)VN-`Ay~bG#@K*G%A`>iL!9aJwbk4BHFv+CYI>p%U1pzL z61(f`jc$wi^v$QKhH$6X^X(kUM6lRn4aTJp^vm9RSu;3EavQuMu1GKifcdZOW{-*_ z6)uiq2MCDCX=YRVVltAM$dD}KvFJ?35s4>raZpQ2oKz@p(Cpy0Q?9&E_d?s)NL~TR zaygxzC#{{4wa3*X;{sQK9W_MGaUye>>t6 z^9v*9$1_uUcadsQ6zUxJ*TKew3mldSi#S>_YYx9KMVgieI`8c}Z}Xld&5JA>lC;~p z56D9|CQ)Yg;*E>_fk@@#P--D4atfsw?l%m_a&(b0SlfrjHoCwcADZS1XFUy?NDpTj zZxF>7Plh@&3N-=5CJ8E z2{_kgGtqvOavY?AFdKaIfD&(z9J0SUEZeNUUn}0AEP6GkjI&I?UUwC%@{npGwigQ$ z{bwSp@1MxVG1jni8i@17+M5Q{9`8L5GXz^|UlNH^1us{V{`~pAo=6)EAY!DlsW}g1 z_u(!mJFe;(r>L$I(s-7tDtOShW_WY7eBg@PL7I zxvM)PPqCk5DZ3PTpi`*&{x7}b^J&x92ZI?PVFUooEht>A6Z3iAB)eRCIEYU%>Bu*q z1*~MM{WSibgeEyZ$y%RE$;Po}i10bvQxt?*k_fI0GNh~&$FMmKh-mB0V)q)Ja*=(2Ixol+tESMPnDq>t00ZRp>BJ=S){qkjLM4)jNh zcTZQJUo&4id5pCby5-qlCMg5*s4GY!dfcXgLpToC%ZFNuSK$N!0U+2C%^!*j>@`S6 zZ;O{2JB%NpNvXjJ{J@qwavBO|ArI=^!L_`O4<(61x+Ij4c%K0I0IS3DqYrO`&*$6N z814Q}0M@flip>-`XmF-UW9;AElkD7j-i!C=S9)Z)Kz~R%3^_3=n@BZQl2x&&-l%XO za0DxzPRa6D9oFI6Q95W!(+xs*hX?V&lxwX+({?6G&}=DCQKvN{*jR!RXbW3wnDaBG zX}Hp{j@P#&ev+<9WR!ez!v%kfm-f_*z9x^wg@?c64yqS?t-UD1 zIR#Q^#KJTGr{CCug;$VYTq8EV)}uz5Haa!O_X{wnA<98kCTH#nMJ|W2e7TuRRv3ywSK2Gczf*VSrgJB15|-jHodHF@~kPTQyho-BpW| z&4eFS#T*td>P?&nPb~--dLc(1N)s@O;8WS&Qx=chO3q;Ezt_>J`GB!_J2Vczmy;MdQ>A_}bgjY%etfg7ZUiuKZs5C^+| zdHs0o32QRx-V9l3p)ua?@$Jqsvh-X4wlmmDp-sqI_s5=iabRm&2qJy?4Fw9JVK{rd zw)HpUXoa}UXD^+jV)INU1qKY^1=&^{Rj%8gh;=UBS!ocyC5-8}c)&7; zguj?l%Sn9V$3dEl_jh4mQKf2>Zya)0rL3DH3;8C!pF!G@w1T$KSgMwh#q9DXem9Kd ziO|e$%WvMua%&#Njt^*tu=!c0PjRs%+N`9Ck5&pePxXeqBOt&ZN7@uO!HJXvOmJH9 zlZbD#zt$L*UFg61a}WqmVx;lTmdn|^O!l)Gl{FsaR~@^0FJ$l3syF}nHboZGqr0;F zg|2(`>aB-!|2PBv`ak#?nRH`X;?S7%MO?#wzc%h$ZmRO(Aw@SG+GT-Uo`xW;x`J9K z{OERHYKchnb2JXX@$r6Ht-Ju-_2{1^GdHTFX0rt>e2&q=#PTx3F{A?@ z_iBBCU0DK|_c4>ehA<9dzQLiqJN>C)ysp|;2RwH<}bA^1OOQDG5bB^p{Id0n1=Ym zHvRETWzPEDpR@)JIeuO*m7PozZ# zGQiylQ2&YD1{E0_9{pec>^ajyk? zT3)I;)Jz!_CYv&==pfkDOrt;HwiMlIqK>g5}^o@_P2k$P2{8I}a-r9(fB2Ue7RSDth?=2)`vLpc1k-_QnrD;Nvy= zIReEupJDt_!VM#ft+J}-dT3-LPfLqbzYsIke1Y+Zl@D%s!KPY~qU07~_7V_-8{`yT z39?~qtkD$c?q}{02!$`XP|DV^8oZQP{BzEFzFQ?{YtZcTi_Iz)mqvtv!Zui@w}Fb2 zE02;7Y;5|05?3HgCRw~GQ;NK8>a&_=#_pa3hU9JX=}!vpMPmzd?xd>9j@a*ZOxK1y zeBmXkaA(@lPD|oAw8gBeSo#0qXCD?`-%PEanWx^UjQGqfs1eU7O>3e7PuLH?iajjD zv#8RMaCSvkd38$ z6k)1~Wg}<|83`n@w?$)^FMiurR& zK0GG3M>|(;Bc*OM7mWjXdCWL@~_ru6-tggXvf(ns=i-iGom`Fm#V}98= zxIlGO#t*H}RbK9ypD)fjcon|lTkxYiok<`TSSM;&YZxIA@zq}2jI_QsQx8(+C+alK zDD+!U()B4h-TP~=2L_fNovify;a!*k-dHd+nuv2p`hY``+61s8#=KJaHd`MWqmT-X zANqGzYAG|+MQ6u<@`+IQ)bv^b0--52?8CX!Y4|{Hyi^VUCT94B?p3P8t~&NJ1SNLz z_e;=rvM@O9X0dy5c@yK5_f^vIvz!dI+f-!(&SEotSnAXb4|4L`esfIJimLN*o*k-p z^CAJ^8?u}XZyA#(g;8{zU+6r~C#RipGOZ{r9+@i{YTY=hcGVp?cRAUwaD4+=W&nGn znKwoZ^Sl?Qj;^4VoQR2WFIIcVz@xO}H^b_Co96xVZ_fmxusEjaz{XA=7PKpSl(J*owSfyt< z{Y0rFY}uhEfS)&>U-e(t0!u7|A>SZBvGL zFJg43t2-AKUgUIxvgakbwP{+l@SOq&{B2S_Li*zxRHzz-J1Qt`)PxeLUfdk6!tdb^ zWi*Tu5K;LyE|4IL=|9l4D3Yvj(CK;QzRTY%eNc<$d1oXex-np%IZG~9&B!$M@n>oW zZgY-e`^q6jelLYhe17O^M6oU!&g5%P-VEz#yu{!c}pcb}_py=NA zdjA36qV2}U)Dx-V=8ov?_{py|;~Ndt)y-Q@M~_YDV-LqfMDj_`8C7+zr!XS~t4a$a z$FrImGXRK<6TyxU88GWWJV#1_i=+4tKS!|ejd}~?auW512QvTO{4>>v{4}b!n0hV1 zHeF$jgh72F^cmJhZSv0h9Q0jm!WQJ@*8E~c!FUhxApcmGz%Aeo9jP-U{av(A#)$h) z+_lsa%E`w%U2%o_h0UufYq|XBm^kiE82~24)*s-H>o!cy4^9>i&_n>+Af>UT^JzT- z%dU|80OQ$v*f>VbMR6g?JVW{v{fJURRdz;b*l~fM%)sdDiCBOz#YoEY^`SFnh^nP3 zYo(b)Y^|22a9~ZQk)eTzECQfeD@LM|y#vzy-MWZNHG!9SYL-khBz!62??(RI4>b0wW(?m;aWF}n>~G6z`=YzP zJ$##+peJT->JqBR5~P*St6?x7AlEZ~f=<*?EX0RhZ;jC+9<>6BsrBBRJJ- zZdHjOHkIDORe}Drv$P8NIa^RnU1_<*OE9YHeO;~XfrAXK%hC^;JCrY<-RTG>;q}I) z0F8G_y;;VMCMv@q@XOB%IsTYoL#6$nf7CH7e3#+d{LWKvQM@{BM)L!g#Z4oIojAae z%*HD%qD=&e9y`L&yuZXqj0bCHw{IAQGM6Zr|rtzQ~8_wviqMXs=si9(lortTSEfijDWq;o<-XB z_cSn*Kkmdj_mC~}ewF=v@={s-u6>~IJl&ZUKmH^&ib5Zl)4@^_0Hv(3z&*lNyvhgC^0DDTIQKh8Y+vh?&ATa?NVBg^itm$~R; zri!PpwwAgTPvht;pwgi@NLl~u$C#gno`PRK%d2eOUU!@}W6+$=$?NNcZu?DjQND?4 z{#br5peX^s0=oSj=t@&C(nz=}kRg?JYG8tHnJXbu{{u~kLxt?f46V7*gYo#Fhq5K{ ziAkFH(Wzc)0otAIv0T7A8(bSFd9MvcX?s;3Wo-Y13ngWx8VEu9);8V)K%^ER7XqK2b2E%$m)N~wr!LB+T5KrYscV- z6W`JD%LVtLFSk#bSOIOVFU$gJV!`H6SS&_(f8{?2Su=`N+f_4CN)P1wn3!mX#A6a!1V-2~tnm z%kJ+K7my9YsCS|mq3$hhH+{KDYTY05(C0)lgrl0ey)3!j8v>=fNN_c@;>f5{kHQIs zIMoK10SRFnUt-DA);i8I@^&Rt>%3>(BFZ`xrNHtA+wYUvN%8^o*MPv!cUM1vx8)(m z$viK9bU)JOVGC3lSxD7_KfzcD4rIvZ&f~ajT2hi4;FlIqZwy}EQYNPN>&=&LaQ5sl zYKi9^8DMb*e_LCmoa5(JaB=y72p6{N7}S9UOhfE17q zE91{&-bS<^nAoK%T%%0RxD zFoc6Ls^;PGfvAj7n>7*N22XtDIV;~u44p>Rs&#kH?U!znRShi{Tz!pV=G8r^>9!p3 zsh)oR7FML>$&{c8RAMcO^g=JmM_tAmwFCk4dGsdDotUbNPfeBE zZU0UgS}I%kaXD)~lbuf^p}2l159W{582+Dr>?n}NTW_I?mCM;`_fM8lge9S0fL=BG z!>DJm&F(Eq{x7u_UZdwY#g}V<2awma#pQTm@bO22WP6{VE#F_MYXUcO%UJB< zxdL|0A>-=aplh*L@l-YUWBG9zY3FZe%u!QEIo55o6TK-icD9knSsQz=8z9`md`La5 z>+(^2FU#G}kVOP%MjCFyC?{UnAqALi7C>3FIEHPA-h2vdYufbfEN(|VOQ4i?Pc)XW z^fXcqPXbhUm}Y~VB*K+i0Dg{??c)+#jiAsY@m#&-2w8h(>_1-IKQE@TlCpJ^+Bh6q zy5TH=;un7iz~K!8xyiHmm71Q*&TZ{`W#k@t!9zYwnW;JUT^1J00Ib165MVqld-A7W za=s9qpCxNF8?v}aywPT>6J20XRRwmL)JnnK*VpN~-R`noy>0WL0|CwM&xafL`XApF zRz_L4FLv)tdEqv{lJhQk8vRA8ww~2v)vFdl0t0dc;6p??5G*X|`!CVKJkjB}Lx^cm z*okl>+7q_+@b+SRDWfPMgb`p@I$qg3LKQveky?6oLMB^Ytj(2=*rGQ+EK4FS zeC)C1*Q>qjS9%3glw1`3@?fzw=p>3n{&kq)AT`PdMM| zr8w>x*AW!p{n^4+Y62rovD5Q_He!OF&j+Q;7g@A;R)o-b5a~bxW4)`6nEw2mYS1H`CR(ABrb0fAJF_3992B@reK!)i-Y5G*}no}PHr;x@kYi;dWnTT z-1;>TD2N?F&Tp2wMuEatJ<{R(uPm=oIMK?iL+z70)@F>x(Fk1fqI{(!7Y@w@a36sk zCr8A1#p2G3B1uVe}91eR8iqxywtocgOlatua@$9f_j;YT)8Sl&Q6ILB~Hw7J!D2FH{S9K@F}yP z=x_TkKb$JBu$X!cFmjfZnps<$y&1?e>@Uu}WW;`VIJwM&GOZK=@!1`XP0Wo$=CPL! zYqS4YgEIO#O|7HnA-2fOAN`}{4tDsc+kPe+JNn4HMu7dzex46{kAupwMG0n`EsXot zxEPo}dn*EKJW?cj+VJ3@yYT8smR3TQmnt)FWqfES50QU33l!ghW&l^HHwnik;#zF>G&@6`|b zDI>bi<~DE3g)50T&Q!9)f^OlV3-e%jSO!E-cdWUx4GPgCzHnM%xwy86G*Dk-fnkz( zPXYi(0QdtyR$ZOmU6!SQVcTW&R*9ajSu8c2K04G`81kHt;KYT?uglgskwEm3?m<8JYJ-v% zD>!|nPo+UcA0HJ4$v@i36E~Qe(jo#NH-BeD%@;9zZ|DhNNf3=2Kw=RK%X1O{7JspM+SSWR$Jaz8uE!0ntTRoiqycCbaWX zknc(lu*9zBx+MYP9Sh)eg4;fiW4YQp6f4V8Z+{Z{X(XuB)1Pao@YKk+Hy&e~ zCNDc1b{SejX^^L8>r_Xgt115z?jzhV!>7bka_fz|hIOhUO~srbg%>=TjxxbDdB^oO z&%;a-m>A<~9*d=ArvvCV$|~`McVj=I1t7f`&q&@C|aIqK4k*#U>Uv47ut zTh}DJ6Kmk7iq@l(>Kl)5FO>M&*q=#tEAF1wvVxP3e96>d2J@In*_>O25zq#TWxD6Y ze3RX=#`F$4#?B+LkJf3L?hD28*vY0mk1IEJP}@b-yi{#;|C%Q^KN0_u(P5b6YDN>- zGTEnz%AsU9DqR+-`iLa3z6e84!&Fh(5FbzRr#yPvj$$UCgPNWlSoKRDXEkQpJf_;) zuB1kczc02du_N^f*k=ClBk+w7Kvfp?sqKoI^N)sT;dV^qkY5RV9VU|qSyN9_f? zVE2tKd+LMpS-at4FA(v(Y37N|quPfT7QZK`B@xqV&e1vL7?rg?YkOlB+bPJ%D|>Z1 z@Gkl=v7Tj)bmUpaED6V2r^hfLdzCwXS?#~;mQ9fOul{Tyzy}zrj>{m@BOqL)>ZQjikWAFD$k(6tE?H4dL1mRo!2{~mQ?Ce&L zk;mH(?{i3r3I@jS*tGi9f~k&;($+II?X)M8NME6V#PWQjP8& z|9mQM6%|B-O06h^J&Z*Kg@%OtXqplho>yb&Eo0%gP$+YLA*0kM)+<^znKyUdSef zUw3_9bI>)9qU}dJu>`q5LEAV#s#4L)Dt(U8LZ*;Dfx^BN-Dk4h$d-8yrMIs`m1G$7 zKjYUCt>W7LPFd&~bh_%ei~7;w_JnFzbezDS$tFk7eIrOgW|iZ6aqag5`g|13Xer}7 zM;3tuzynD3y^`ohidlOm? z+i2x+zeO>}A{S9$RX7s`jPcN7<9`n}%k(K5T6(y-S|%O7C%a$pg&w}oagh8venb8` zjW!;f<2(+|k*Y!wM~k2!biK|oK@NZ^B1vYpEvAuo5k~wbVZbFf z7bQ@`k@EplEiR7Cfq4-3^H34ay{NoQI93;Bqz5QtF%s$t>I&=4x^=5O@C-fQ-c~CX znX(J7pJJ8qu2G$n|yYN2%3{%V8ZTW zN5yJZx#6*ztBm55I$${b69Dh}gZhy-ZGIfDeV4q3Ivc{W{9Z|XPX3QT#5DzFX*jKw zPCW-n4>9e%b~BdqmqyvUBc6SqW-5ZZ4qon$1N=2q3LUpD#XebF5QoR_s-XMQ?w^|L zAJAS3{2`Dxt#}z4JjCCckdzx;Hr6Uqgd7eWEX4-!2Z)HlJQwOIi$v4$RLk%SlY5%; zXHb8UPMH_CBQO)NuCf_k(eLA$_hE?)2kTPA&c94CeYP>6%Ad=D^hY#DdgA}ds)^#y zCThJ-6z?2FzsgHKor~xN9f#D+tA2i$$5@E^P$h1-8<7t+uxd(^#~A5v)t>sddxHo9 z(>MO5WX9GOh=#!k2ZIKFz~u$Iy0ZQ-+M9W#mgBBNLB47H4?jo#@Y{weuHZ??Dqm~SQR$8h|jkrfMzY&V>@YZmv;G>z*fL@>Q z@-S#UOnsJ?WXbRQLpBH79&czeEW&-`|GrN$pIGR+hD6PGWl_bmDn*akBmO-DZB$ahr{xxX(nkg$vck zlS4B7F)~Cp9jzN>AYC#2+^wWwh$jf?2X%etli0Yk9vfw)Y&b%W5HsLw$0b%WJ>=zl zRZ09_a5t5|mL8q@*efEMmW;FQf%~v4meuzANi^@sVmnYfp46>t(uO48$l1MSLOwWQ z&plk!godZNbK3MehXgWm+Ec2R!uGTcq!GT)xX5B_%Jl8 zLu8R_G@*=kWD%8@^S6nINt&im@ zCvmWgxur0;xrQLZw!RKdPdZN~C_0L-FEhGv``HGcbuBcDqabAjS6x_< z&b(gtZ{xkl;P33L-IALj1Ec(p@w>Es#8qixNUYWcpRoQ2Kiw~g#lE`om7Wd`*U!}8 z@pO6+LpZ7v!Z0T3JnGV_CCHew5o%V`yBx5-Hce{%u``3!e<$%zWE>4 ztCVz1!6BpImISCpzvajI(pC$GBL5#pXW`If+lBFMj1K8WMt65ecaQGwZjc<^-QC^Y zN=i#N3P`s|s37q1e*eL?=eKj;&pGG1u7QY~SEf__!1Jt*kEI7ih6~n#4026Me1U!H zjZfgN^;4%IJRBs_26~FIsYw3vnq&g6*VmV&Hl3i&fYz{pEei}H`P$n5XhA_~#6nbW zu95s8H;KnpmOI!YW;s+``vsR-s=OoFUA&l?5YrA0>PqAGr47swI?}6JE;AA)ya-)+ zkU(MTcM(FY{7sk7mUjNXazx}r`5_Ls;iNytajW!hp+m~g4=Vd|`q+Z?rZy(IT|D_KF8to+EALikd?UEU=^xcndDLoJJI@H{GU=M=rJQBV)gX*tYhE}V-uV|*T>NZ zycbee=KoOK-(B>b>77DWVd0l>@A=dVCo(L8&$4R`{3X+gEYoG7{1_bwyzcY_^ezp@ zz2<;@>==z}rWWKz{Y4sisa)^Hop>MZg0?h<-`7}e6pR(0x(K9|+8L_93cLS5fB8HV zQP)PRPbpZ!K1K-T1691nVT@Hg$Gag-bmqGUqHN)FYInrYkc~>n2~y%aG~8WT{@MBy zvn0Moj83o|F#6OM0zi0|xSkz^e5gsa7rCcqQ3}hGz@RR3%|ewL;bZAFIy%S{)1RMB zu>Evep5l0l&Bz2Xi908@a#FeW8t9tRYp z9>!u13h#6QOrjP?Db>QXW`-yC-@WDu%aO%h5)|gZDyYTz`;N$=N_d26`=QJfKJ%~@ z>U92DDxF3|OI=#6&=0bDv{pQ(n`rVmTg-QLV+y_ftqxgpf_J4sFUi>Ke-E|QdC@*i z+j-_M%XpDT(ItUXBgd;U;&X1+sn>k2>@I^oUk0xOh$bkKLve%hvzS8|D=MriD$L{$Ls2>47nOrY?$Biygn)U~JI zqw@c_--&A4lh~Ua{S&wPc6m1leNr2cZBhtE$JIjoox-ZSDXavTAopMW zSq=kdsBah`lbP#;ql!o$3E~cUm?p5Vi0dZS|09L)cl>qQC@qYa^DSvWso_zw6gRyE z$Y8)75+!_BryjM+B}B!6JEr-kH|&(bSt8pNNM@k8hEgWxlqx3nAKvTj%HyB zRhGjbQBHiIZI(Ir3ztL($&P%r9S1FefL{>!m(yfu@EdoKCU{s4u<7NiGhLdjUR~wU zK!90P!QDaN59vKLZzx)aYEJ@)o^+tZ)1|-UM`au(N&T%DK1oJLp0)9(<3r5lI?d(- zWOiXnzeMy(uNtclEVd+ZsjuiEFZk}j{9)#Pe1@vS;4tq>|+U$N; z&-SQpNXanXy4o84? zZM$WJ3_7I|Ixi83SPURc__tmnE?RaAQZhxv{P%FeE)XmqE~Xl@S$2+ah0GVvO~1nH zl#w%_Dj%(0-cjbq;u(HG`(9n^8Ed+W0wnfu_mkAwE&XC~854ioJ6foO9XmONcCa7) zWvN?hw-0nM%6AC478i`R{3F~JEJuq-gm)jhhxjA`ule1_C=jZues~IPL(Ko6tL7iA zbSVaOT0UP{1xIGH4Q0NB1uj-B~d1Lizy}M@`+XUyuYr#u(#b&4!*wo_gOLcW!yB}G`u3CWP2gjk6QhH5gV2lDJej}@!fDIu8~TyknL;Qfe*1)O+Z4M0C-M+?NvOBC);<=bg&CcE?*RLTBSnw=}n{_IL)m6 zX@Nu0|Imi@mch0+kK~+1zXxx3r`g4|bbSdG&Vy$92};7i0538(K09&Q$GAO;DnW77 zOT8G;%6VV}v#n9PfBtnnJ22R~`nedw4gmr{{|?dj1w8?}q2{Jm%}~q;2JF0LMRE*W z3q$g|540I>7)kH1T}eWd4-@wq*7vgC%os*E6fYq&pXo4$tEz{0Ik+NI(ZpTtrJ%z< zxrhl}w_F)f;<}|y^&(U?i647D%TXi`G5`QDcKjZRAqYKtGi08Yor~<_;N%D*Acc?u zgD0wFCcTHXJ+nXegFEOqhW z4nb6j2O=SHFtPw5L|9-cTvH=P62ohM%r)l3ke%3`~J83gCp-_GE40nVv=_5_Llz+5=}2U^IebRM(V(!GXDgO zxXqO|B8Q+?wK4^dWBe}()O!1jUX8LKJePH4*Y9Co1 zZn~B3gN8z9-93S*=4yBLc5HMuvvkv;vgq(dQ`gcYrqu7qGVTa6C}OIQs&}dC+^I$@GHT&U=C;jowKkD632Hts3R!%hyzb0r%17DZ4ae3l7 zdcpB6*|+rEIZL(4cTtpfNr%lM#3cE8TnJ&DS}I-y+|+BpeEI8NaNo<_F$=kwzl&VP zG$}t|UYwPgEVro5-*e{!cfPOv@OiI1_smN4d~u}nl+*L=lTB~r za$U#GhQ>`-Q=RNBic|rHGFn_doWMFOskM1C@7S;pLOC3uc^F>``L}un^D^atRsVWT z5vL{|vkV=X7Q-F&(C`k)lj1Y&-uBHJc;6>2W1VU$++IZd+R-Ug*#JKMdlUSqGcGP_ z*hCgR_m8*uX^<7TP)y8L3Lljk#5v5}4~vgyP=%L71OLT>=++~G`_4Z;hLJt|N(S2Z zAR|chj2YI%_l0g_{L0`xcy*9XB`kN=Y$l-YFlA}(|48&n*pR^8afHgyxy(hUXTZ17 z`cw6pwKbz?z(LgTEDL39_ej{PM`Bkd86lrYo2>)oj3c!?dlxF7k6DtKA?;WF+miQ0 zyk1Ph2GW*#$pPHtn9TDU;o)JF5;4>t#~ipbaFRcPZ-orGI>4vn-0U!_?9Z{0QWZAA zF??hQpj6ZUpIL;xt}Yxw_Q@bPXX_Eyg^HP5N<0sFXS1RUNajk$!Go1fSc!ocW*1 zxt6q^Mid#>`KPRU(U%IOnwOFy`uR}vBV27&Hods+KdRkf z*7g1&n@l8b65z4;5bxt9?)Q{BJ(FMPHDI>u6AIej3}MCbBph36`q`69fSup)s{j;uJ_Fi%E$K&Z5pIRq_la zVA>QU)A;SnObN6bm=_Bp13Pbt|>&)3g3ophBW88c;Y zhU`2$+d#6@FcVWB@D{Mk2UxJTK9Le|aatwLXayZ$Uih&EXSNDEND^{f$4 zgj_blD)V5&2;^vX@zJT7yPVK)Y^g*B=n>4Y*N>Ri{8T=zR?8W^Z9rvyE7Pr|hOHn| zRbP9FV(#f$2mSF_g?B(nUV*x{akkYvbKIi)sb+O{5zs4`RQfHQp94r|@0gwLkDEcn zC&N)Ci5AP?Y`)oP!0&|C*ysEWYxVsmL*>OCe(CJhLA(|p1p++iX0^Xd4wZ6|o+zbQ zTKTn4@xsbXL1kD5mzA>vPE*Nn1M%nx(0r|=uN|c9>wo2m)|5L==@otEoYUPs*1m(; zRBN4NbJ#e`EFykJ@9GE!L}90BqDGca8S^_FLntu$;K}G8wo@k+s;uzw&C_AUppZOD zPD=-PVoQamLLU9$I^AW3q{;4bR4Ayzed# zxJg~AH7VW0!>hMa>EXHHv0YQ?#`)PVR!jRgoh0b?WQjN``a&IaO7GUs_`T1kCC8Xp z`>d6ZtWrK-eS-G!$Ey7GH@5Cf@F~yCr`h1jD8$xl6N`qxwq74XDC=u$&{{$2JNM4? zPoDhbVYzO|4A}(#@v|8MzBF3%P?CYzNHMXQx!B_%yBWpz&xRx=T?}NkRHKpDakO|E z6_$~%bU4JE#|@9O&Y4LphV#bCWa3v60v8`3pq^4Ndy7Y!~ituqLM(yWN~rHB9b3$K=@e9kWfC9yK8=i@@2cIQeD|m}CF6UXoZA0xVLY6+xsvPd7Bs`pzx;1QC_nHebJhRi z%ZyCHuhY7A%QgkGi%2H~iU_L(;y#zwthJ*A^^A*Qd6?oa^2=>qs#R(HeMq_%C$;~r z@qJzoCii%GCFBHo^5HQ4QSxS?AY@B6{PJe*p^od zrX;vN zUE7s31|?Ne431nVx#{?-0j%18eg9ld>QDUCe09`M1{i+bbyJ;a6Q;bpQdfW2KqoN21l-yRcoh?~GX$nC2r+%}6OY z7+0VZ)igG_(316HXct)__75VffEAmf$$&?Tk?$?S`W1R)g_hw;iE$9Ls6K`XyJAgZ z@gE(L(zG^BM)rXNgg?ThXrdFUfl}3AF#y-w$|DQ_6W`T#WM(uE@nkK@Lnh3wNe3Z) zNwK$9+tK)(vbW7v4iI)z2+K zW0LUtY`3j=@Y;7=ET1ftiOTn04f;SW#L7nk!?3p9- z+QSd68yeRicu$$v5!I^yQ^!oa^BZz77&if3^GYo*yDsu9=D_}Mt?F!R^XqD?q=B%kPNkMqD5{S@j zzFYQ=29hpd+sT=+Kx?~q_)X#57=6_~DoB|7>Gav#vbf|7NolhaaV*OsX|h37lKLw1 zT{uG8dngAhamM&?*T%Vx%FXF_NeLI1C;$D~;ZRR|`E~1U51j6z#5i72~B)a@evpwkn~| zeHZ0^L4ha2Q=0P$r^YJdOmc{5!?ynP(9s{2CDA2-HL^CwqoG>y=nS=Xp{V3vCTf_a zatug--R(9o4H+sPkPHM4!NE_4l`x|-nu080larjoV3wLONRt7mamJRW~30nXHK3XsR@q8B=^MP^ULf6KtVv zch3Nnf69l%(!)?5pVf6f{>RU0D7>zT=9c4oG2fcrYrB0z+_(Iu|M>C1se7(OJ`uCj zL}vR+48jkk)M)regPY7r$S8BpO>5{L{k-GYvU0ME6Kdi8!C$`aH}uY=gZt}B43SM; z04#ek+VzlhEE7S=w1G+CTDr+P>H7E10+2!s$jR1bM#9bk2>r2NjV(W7?=6MOxx26sk)NUac_vx=B#PE8D_Eda91$LY#UhmlYg9>qn~NqjOqFBW zn&Xu2nBp4R(2%e*m(kUf)kJPi*&}UKSyff;6uWL&Y_8}}^p^$@5>otMX$q-C8oiN2 z>~ODlPOsieKe&Jf8|RTXw_mFa!sGl$I69H6!F^ zW#Zv2OIf>7-@=>!qZ$wpW==xu!{+ueUJD$dnIa2Tp!nhz(8=5+GaBkJJU9UW7_kGt z5?Y>F4#V^)r({n|ZQH|znq_DsT#{x6bfqMGO3JR;C^oAq)L>tDnC23Z;gOEU z0tBdpjvd(TS|JHji3P*fItkzUT`FJdJ$RWKzGmh(1wU7BOilUftWF2NrXB0$P4#{L zD6#Vz5%~D*Y>>+7*`|@tOlVbk9^e*<;Vd`_{QPH}+%q3xls-l=_EtY$K&cg3{iypz zbXmuF085yXyY=jW)dQ_7@;`o#U^GypWl2X~c1J|Uh7XZ`SOQ)~4eYb>Jq+hwAz6fF z4x2oXj^OQeA1ku;Sn~=izQ}T`EEZ$@HFu`x#;L^P$(E+C9p3KrM&=ixZZ?*b&hi%* z8+zbcgBRvF6f%MdMnDzZ+j9^|5hf)Z3WKk;q_8p@JM~OFEcz$~(~zHu72s0ETG6V| zy*GDFHfC1qZRxP03SCzhh*4wZb)8vRWSR`V`6u_tC{!eAGE{sIZD-R8)_dIayv7l< zP5BnH2$t0QDE=a+T4c7pvU-Z=V2=sk)N5^ zxd-Q6uK@U;Z=VT!;8f^Y_y7(!jmi~P<3-Nx6plN$D#G!t2n_*TQKIRNCU3&2ZqtX)YH#9t{P`g#FC$2Cv1pnxPz z47--AcIRk;Gb+tNx4ng|RR8gF38F65U$JoH`t|YHFW2nI80XLpnkYOs^qc&QBa)~` zN(EaAp3jORpr45qXD*Y#vc)@tzaeC^14ngGHc4D5k%bi@)GXJOzV^oOn|W^We5t2d z3OoUY8Ze*kb}@_h+_Dl6bQ2hPb z5$fWycZUNQ%ctm7RuatxV$ObXu-^Dlxq92cGjr{3ne9%Qj(N%o$N)s;q4VTe6ga!=&XtKHwMlLJlMdv6p8 zM8Y%$dvWQXxW%i9(NcIjKNzDhGJ~++XmX&Khk?W2PTBcU@n~)yAaeD%I%y+QNzrje zM%8XSBi#jyV5!@`C+q1};shPDmebaNM9XmtDQ{$n!KprTcIBPA_MX2&nEoFp-GB8d zKHC0?OfRhATbr=`JK?=*nP-)YUA3)OykYt3A_g$42LK}3(0sxGX5RnQFbo9&i~88u zrwjd>G-8{-dINH&>%W?7mDE_GGQ}<_GApfR$4s!y%3yyd{^AFYF5@B~%={KOrPpzI zvckqXHPl#L9AUR~n`zlSAlagayj(c&2X8FME4N6hWyVk#i%4Fmfwc{3tEaoe!8f$dLoES{RiLHv493j5YGO zYNpRxpusaj#gsAaA&G?(7WV(~a~MjUVx;ZhDCzDY=l99%$WRmA2inj=gn~oQ7#Nk) zO#kSiF0Mnr+u9;5zo1{|_--XT<;{voWCZ5}!B)LL1-HP}g7m5!5?U%|hO#c+{SVJ6 z7ZHbmCc>?Z>nA0z_hY=}`Zmef>dg90wT>5`iI4VtqPC2m2gZA|%1Fa2W6=j@qmuy) zO7NUsAbtrkGB=3yq;d?47^q~qw?TDdz9 zN>9mNcwlPhDmxBn1H(C&6Jeg9eG@=B_U6w-j0bSY(MVvTK=^_Mb*G4$;OR)h!CGSq z3bH^0!=$mIk@l4umM<>Q^}Ot+b?>+Jn2fqd1xCNsi8QGLh$8Ebwka5TKUupd-{GwP zzBAUO;IoJ5&h>|1i3PTqNpeV680eIwh?yf&FgR@P8dGBPEk96b8~dBf2Ysr$Bygm;fWtRYt=Azw}9XUDaK}`e=+hQf_E1eTYr#{p2`i7g6IT{R2*1&w7*)2{ptnBqYTVCyT*w z;w&m0WIkp86_>i0Au+S-P;+5>>#-d1M)&+sreV>_NG%`BjW7 zRrh}-;J6Xy^8{&dp`lPzg~r~!WO_~MG@~r>(^z{Q263wBG#mV&`oMDSAld~B2L;Vk z=AOHa8qKUQ?4lEk4NF^KR7?awui3FU9g_wDAg(2?Xe&Z)$nFdYb&KF1ya_=P#Y2l{ zxn39-pT-@dVpWmNL1Z}&^%Cv=OVK&X{s*fCcHO##>lv%86WdvJ9Z!!r*~fNTm2CIEs5#syW3#c@gkNaa#IaX!v6w;QEW+V@TBeIV>{ zAH1-nrzy~~|L~?jD|57?&ma`--Jso{VAH$)5bYIeqMogg=!Z~Uyn+gg1`ZZ^XRPyP z$86Way^f&k$wbsKp*_I3KORrb2 zuMNn$`th9ry^y68&5Zhs>R6uS!u=#RF{v~`1LP#7slz2@jEhBN(hX@nBdxrxHC4ow z*fB`zYRo6kng5&4@mPT)&93vBkEMyKLY!t8iMtcxqb=!HGh|{);<~;}UdUtqH|L{leG8&Sy`$a5fzad= zTTF&I@%Y!AGGkg?w6T48jz)e{U61+_aV3OS6Sa@#*Y7}PaG^C zl}=6*%tpbIrA+|<65XX-Oq(+JmH+!kZ34j0Zh8jHWNPaB2JcDG2=RG3%pA)%CnGY> zn;$SH^a+8){G{TJm6+!J#Nh|fDW=H2cv{-hRAxT436l7@#U?}F0gdZ8ECZL@s$;a$ z{+w^M#F6-Tcby9|q<`q&^#gwQtL9sBdj6?=fLsV(9= z%XKkPI;*i=Yi4RtN=jrO!W1~T5E=nvnAv3h&8G}C8d`4b%=G5~E`9b|%`VsF!#d3Y zrFs76v4qacrSP$o4g&n_$udP+r;OzPA?(_YML8 z$mleJoLtxxQVtm)&?HAp#QYpZdIfV_e?@c%`DqwiO1Db1Htid!%s4PyyZidW{8&{JzD9C{arwcXP$u&2OO5sK@JwVb%e zwYNnf-N7Gy{LIDC4G)Z*pRJGrw~}|5;xnd_g`DM(*GY;$$xI>3J5ESv zf5GFi;XS20(zGR0RJ+o(cK~ju0QB zdX6{$mdtQp?Qi_SZ8c?WTr2u4=yL4>S}2Wb3k{aV#v(Bd$LLa`Hg*2$9vyZaM0a_L zixlQj5{e=e%B7Oi31zQji=a38CS=|*mJl|@Kl=rSAA?t*)*?Vplz(_*_O8!ULu=+( zaq%aLobPPri#(+aeUK=5|4#;13*b;)s*lj!HX2q&_pveZ)*?z8qxFv^CHrsD6^3rE z%V>`E-97b^_Eh7PJ|!_mNfrEr><9^BOMfD(|9s-$G7F$fFHUL^`@A9>XaC6C{g_pn z;N%xkSEj$Y^1Do##G|X>xk#_sgh!J%g@I7Abzzet9RBHtt9%Up{+Ew9&tF6v7u3+j zWfpD4038D1HTPjeTO2{jBlb89rnU)UyFCqw#F3=U&GUj{gGUpxa(}(dY;ai?OTJ3a z-XTc)L2SKOY;t@?O`d;wk+fgp)%bHUG{rtJ@FoK=LqRM3Q!+Sct3i1ueXoy05|~Km zlEv`Ah-KY9DB56u>(3sfL82dHwqtws8zi>KHQ$>v%Ec`-c`Ov&M-Ml(GVrRJu(bO! z?M#K#h|>zbTHn(+?QJED*(-W6WK15mo6daXCo45!;geWkAklHk9o%5k7V>PY6viO) zE8MJpmsrffDiD6VP=oIOZ=r(R2>D69VCS>?Uow&{8j-_9>H?Rr5?;TzUnV@hUz~t_ zfB;$8;BJ$s?6*3IHb0y=e`ZEY0IRx`ck2K3=L!VBZL~U~L@r@9=1*pJo{p~^X7r{% z9Wp|53e0N$89PWI)jw^x{Faef)_D|u;%nFk6^_mibGia?yi(Un;FCT)>Hn2lEogi*eIDR@we z-^rvuNJDVAHVk%U%DCOtpe&2Rx*5eaYNL6 zjZqj9HA_gHaqXfQstx1~DyiJ8KK|?I#_3IbfaTdYRj+ZtJqy-5cr9a zDUIR0_7d#k1e_`9C}px2Lm@uwqW+<=H<20P@`oL|0`6Uu3!QYg~}%K(JKE0vGy4^zX}dlgstW$=SUP^a}H%Q(K1( zFD!u_LWqO{#0JH1$HFBe4HiSy??BOtk7iIcy|75$$x;KbLyAA2n-a`jqlQR3`zyRM zc{k$J*pW7o{b|;}87cDoi*^nTeYx*%*U_q!iOF%4m3aeH_fN>pbD) zUTjuhznHijRtJ0%Yhw6JcIoK%>}qGkm2D5w6JHn#udYhg9bdNlRiOQAoF4hMK}wr3 z)iS+$RfGq6xN$*3tw?;V{6|SgC?#gSY*Hcc|G)ph@M_-pQB_(rMVvM<3(dr%a5I@5 zK%dl%ySS;UfS_}@x~urnmn*WjV$;n`iIF8nav4fPdD5_uCR#bumyId}huCjY4!{x; zh>aH|D|=Fjmj{O2zd~K+Fu71lRR$TQ!$NykDCGb^1k`*8Gm3(6s0BWNn1F400=E%^ zd-p99VGtX+4@c|gHi0Z7Y6i34Pt&x>=h}YLsSu~7tJBLg`TK#8*e~zRqUClfkEZ*J?_VfmqO)RT83mrnknoK!V_A=R&3?l zG|Hew<%0Y2(n-Ac#gpWgIpb@DVsC3rDyFa56v{LP_RwBb%t>-=Kc^^0{`WC|r=EMI z_$TaeYJ}4T2cx`Nz0P}J#l1~^0y@tFP%hR!+W`BE3`I7!pqVw_r2%CME+fJz9SZwS zMol&8a$FAHs1vXyB|Qj$SqpiTl@Z59z=P;Vf<{0KB7>aM>GP6#28-j6V>aade1O;| zS4Ra2!Y7{|l+&m zyk*(nqQgQzOy61smzU<~%gcPSTYoOZ1|Z_#qx_GbGZ+GynbwFSU$L1zDw*Y2I-Z$_ z(SQD9CRz0YndrN?c<|$B2Tgi`s`Fpwy~Sg1P~WcyG8I`(oaeJ?M_aN4-Fyy= zH5elrkw2tKA~m=heP_0={WCc26}RYprbyNkf2E+c&(pddJP)0~J+%P4e{7Gp4Uaf( z%`z4bl_{LCm*?c(uw=_8NGFsyscc+SpZr2TtZ{!iE%DKW^H=M@gYBL1T#MtgWlPMm z&RwF{Kot@6pQ}rckr77@O0uUh2YT)YN`O5g$5W86}XK$F$GuowC3EL1@s_evp*fELrWBdY#-PH1gNi*8&Ae z-fYQ-OSX1lo#r@;F*NXYY>wE7=?k*vr!95IUNuonUVZ(x=jX2&Kl2k8v>RmZh@SwrHXyT*y)V6 z^02D(A?Ey?O)UiHviqjj5B`1Zy@SN@z_((FzJ!DNiVdYYJY2n0ZeE^=h+2bN1I`w0txrR zOqWE8fJ;P@_yLCic72lqBNUXNgO~1#TgOO)4yPjBUf2Y%(G@5*3=BJP+jzv9C??20 zinDVz)(M{)lVKtC6c{bpxQ~7!vwhRHuT`bIERzz$p`KM}!|oUCA2TBTimb zhEZ#L5$J0nlIoRxaO+bT$XC#t%4F2+3flU&MtIQc{cJZ8q37#)yJ~$*mn3EuhvQ-E zB?2Oveu!xPJ$t@sFc{xS9k#oUn9;kpa;{U~JCqV%g zNzLITX+D#%w)DF6a(rRVh|}oJG+$3Zl{f`4A7@+*F&m`TeqcqvHwAF^F%mvSD|Co4EDXt@VX7GfY?uFOLAr3P z)~c5A!I0AJ*dnh8)7Lp~&!mz#`fAjBK~eGexv$9o$;{rYa~ z*%u>8tEx*>1j})hr~#$Al?aA7BwYuUTD!8We@D0`%D5XXB1UIj!CTd>1AZ=jx?@c3 zHtmg`BKRj}C{#tea`cjd7@10w#Bf(B9 z<1F%LI$Fw%R0@I(mOkm*l}N_M<3!geJ?y|9Ub42AZyXrQ^~na=jB5<*Xu`sg6=^j7 zIoaJbxfPa5vqXn-sEP8Pdg&n*ely7M5zM|?Od3eX^Qd#UZ|4xM$24<0Ulm;i^NQeJ61L$k!zq$61$aB`9Uh=)B=oAkZ1yK=2@X{WQv@I=O6lxFGHP zwGBnUMbkoZv8VZMb>vIpSOc*Hu17 zvHwIx3fjk7rc_V|G;O2N%c((qF};dU=wJT1^V#*kiD5ONnD2j=@28E;MJA693Mk6K zXI^ee>W-IciCWJq7FREKfZefZ%qj8Gh}nj)<`)`(G85cW>Y;i#6YZ>z2o%ImU#Qsdwq4)=kq$QTJ*}gpjwa0--l*C&ho&h&_b$#B05<^!nW@iBsedh zyLdScXNd4Hi;>zu2ybmvqz)?6uU3sA(62}IO#WNeDv#tpxWK@1INon7vn zv^*bf|M4FZ3h}<>0ZH7!2z;bQ{1u^1fxrD8VY$;tQn0PO7sLObUm$pA(=`J&rA3RX zJ{MuQ1-ybVqXgllp$NK5uh2xd>cWL>0wEJHZ2_%~IZA7Jra$uYA%5E5Lb4B~774^i z6%0Erug{G8Ma@gnG>4Mkj%cm!^HPJqtt>HUFTC%nX~|K|+w&I`c~I#CH);N z_TJaeku{qpvX+xU1_cIq?kJczC>mR8`#9vpkG%gn-B##^q=^R;P)0t$;@NvjifxG0 zaqqIPi^0op=}mBcpN;z1+cA6QNVGY7S}91aek%NiOOuAXt&EVYZ}lv0nV#cye-Hgc z?%;P@3{g0$6^X2zQz`%Cy>dO3WG!XccG1zA<2i?xnq3DN@;??EY+=U+o%n#^Ws>qXHSScG*%fYr6_T+M-?rEWqp2`>{sK0c&6oib4bYL=`t1!@)GFDPILaEi@7B@P6Z5G+L zCf53ITLcQxq`i0HX+7JSWO9+N-LDl}En0JPIT2$rw*>*%g1@Tm{m0J_IPj6Kj-=B2 zX7j4ee`cZf1Poz1=)y~rN%YJeAs8*9ZJCU6AtCA=CSyAAM29fLoXFSqGCG6Y!$3*i zm8lZFuQpt5xRFVGuTMIs6~T`)uTwi|VlJ57->4Lo9yEBdRWL)5LQ%#LNOc0#E;h4F z*>T99ulGgmAu?cU_;8(fh4`4nkZ>HrmLJaaiiRPnX3Iv(;z3vn#TBCE{P-b(@X9~_B3 z;jP%$7C0-)Pl$|*7rxLMInmSRMGn_&BdlPxyr9Z z3Ps%>qnPxM{8^$yM;1~%>(q9J_|a?;#J!Y$U%mhP$Wgmes{3$L|97DR(IbNIEHUZw zcAZy4f9nW>PD4ya)dX{qKZr0OJjHFcZGH@z==hyd-`f^5zo>%R-WCF-?zB>M<}_|jRs@29kh7!H!s(djBn%BHizfQ0xImI4+%q3<5d@< z176fO0&UfbSmMvT-MD^3!sL?}40R~7omPnGxU$sG8UC_|OTZ&XtE3Coo41(C&4)o% zb$EZiRH4KZCX%L^k`iCWRIJG)i==7fxE-*_lM->HS~QoDeNG5eKlc$0U)k|T{wT}X z@*zFeNxFV>%GsusgSj)IWi#agl}Gj#J1&Z+Xc-BUHy1DnkUjC@4Y+Oby z`PuDY)Ww*$2?O=r&z}?>c>-lAL(n6}VDa|PW@hsESL{fqhiZ(3;^~|=AO(hc1soxx zPBOt&Bl9mNF#)%%vUxWJrceMJgatBD&vn$lSsU;n!UCm4yi3 zE6b_htJlZ|g&pg||42H^fF>KSjc>5Q=pvcSffA?*lcim_AIp;dpPu7&6hN4t|@|7}P8w=Bw(!RW?Lfv$Ih3&sa{`%l_ zXNIu<>d#kHu(|oN09@tLD753zHZ+ykCD0IucU}4e6_-#1CLFGt`r(@k(pV~1=bVU< zQl21tLS9Yx@g|OU4T9PAYBtX=<9@%<^OsYSDR=M9Q}64*wDWPhf|eH%04s855$I)j zG|={26|=Y_AnJKQJ zXJKVuLXUhs*+lytiz^(9JKZQ64GdSRa|JUMf_T(6CXP&%KSTP7p>a4Bo}+p&6FTeJ zu(8Juu6M4w=1U^GOUws((cuMx60n@hhhCkgZzjrj&F>`|3s3Mm>T}FL`_2SjJSsYD zBq%!k?LNuB`=j65(lV*IONzFP67S(jKLjiLk|?F?EiQ(?c`{k@8|AXrVV z^V$n)CeOt|V!2d2soVNOqF-pa+=K({d0lx!2SEXdL<|=2&Grow(b?bR1EtgLYt)%; z_<1+w;-YH+*R{}s>}~tQao)lY)v{_I(E5KfgEHQ2B!p*rwX*6pDPcLUPxrN0Ay3V} zcvURmE)Kpf`lUGtTxULG49t418-0_u+7prV8MCPm*^-vTw|RY$XZW7iD38r*>8m@F zd0ax-h(kPsewIF=X-|=lS2Urq%z(%*azVDF$`}@sG_J^^fzI!QV&z(R{?LPs}g4|s~ItJLv3F$A*x<*Y$Tkpe)=SspHg%Dhr{c&=_-MK z(}7M}yq3zlu~8(K-t_5DM*x8Sxg!QtMDlJ^iGXzF_}^$IA2o)MZinhM3u}hHeH-FR z61S>Vj>QuECeMd*5zYJr#ynI0rxcNfi@mhJn9j*h*U;QqA6}_T6P>Qe);*m`zn^Cy zqHyU>Xjqdvd+0Z-(9>#i;$f9Lv;nhG@R)vO<3?sxa_->43_=i0gy76@E zRo7K0j=D%={=SAd=6-Vij%TiDK-a1?EG%85w7`kz7MXm7hPU|qX1k>=CW|V=1anDZ zA+=`whbg=I5iu`*Hk6^tUarDPri>Je96v=@#Y5_XBU6otsyi_xDJPO{C;cbyKQ35b zEx|s?um%3Bvw{6mJ-hOC`B-?$rv#x3y7WJ^w}k!9a;d&MKO(^aj!5ImC@OB!5m1;H zDiS4Ntkl*g<+%NQil1&Go&mF_ zk}?=?$)3LUKm8m4z;7*}79noWsEklvSOD?8rCEL*-GHSgeqy38rk!bAG5Gbto zY~-EWCqHX_#IN&R;UUW`ivw&y4`h%6bkK{lQG%?n$Ep!LU}C zh}hxlV2d)RfDPxG4Kfh5L@i0-5s?pmXw$pnkCd(`Ar3{c%Dlx1wt_u*Z*^&X51bwI zF{bWvWs4Aa;?}*Iiv!qnYnYUY-j8tt^it7+A@(-Q1Fs&r@P8BxI7redz%q z0acP_h>gc(%}0mosYN|UTwmU<-hfdQ%92K&1Pbe>cs#r6HhlWlp{KAxz|R-V!zuUpGuJ>?cFjq3aY?<=BPN!$H7-kWHJCKs3nARY(=$po6a~oln)FrOoliwp29?)9HX>?K_HOI5u=kC7QIh4+&RdzsL;)vQQ;Ov z`{DL@>G+fEtPD2X^Qdz-v7kuPs+X6%>#CwW;GOqV#1(Ef6(tE(o{P@6>;Y|MA%g4k z$YLSBIw!&{I@Pb$MT^r4ZzG`Hs@ytLkJ%UdrE!_=B`zE<_P+W2N&5RDbN+RiQ7%#Ct9##bv3X7Sg=Skl{I$TWN~ffv09VR5vOW(WQ}c-Y?&Yf&$& zCRI-JsmqJ;9x_V}i8;WmUJcikN6(m$ZO=lw(GJPNo6rZmXEH^cBRNrwk$Y`dJ({>S~7>hUlDtkB&ucf=Cnm9 zla=S`F#wC5NqO4r!=BZCzj4@87d{{u@cgkLXdlG19EM?Fxp}DL9ggK*TX4@oEe2$zv4_kJ4iysVCHAJ}O^9=U3qB#hz zU%u>fLAZUS(n<~ME8aw7P%+4+d|Bd9EDk@Nr%hT z$*7-;nQzH8M6- z{+@rM$FmYq1JA0QUY>ll?3CUx@WkKllT}xLeckTcIndpH(sKEDo%O?YebCUC`x`;; z&ZoM?tbwVm_=|UXf1h3trd>Z{=-%g!K1m4G{-||=y8nIc>rlO~i2h5`?92CS3V3<< z)GMn|9-BTD2xU>$OD_8Uu6dJN`k=-t@Fc!+c|UkD=QTjzD_5Hs9KixZ9c5^F_@*SW zY-D&fz~$e7piPoq;34|{kl-LKOJyRORPz64f7*}}F*Z#KDZ z?~+0&pqQ01lmrud+R7xctJX{-XmqY9EC7(9RiA|gU35)>Nq@AOl+9Rpbht7qZmK_D zg%Y%rC$DR|0QBMSZST7QsCFC<7cUb5Nya0t zx&KN&_Gaar3Sipd-iWd%OpjC?G<1^PyB6K=-R=9FeOWe1l&C!YsJwea%qvmGF8d-@ zM~U;xtTMyhX92SMzcX7i+PY`HED$RKTrTQGUChA{%zo2T7uB;_}G|100KZT zMwCo^R6H}bZh+pDgv2x=-W9)%A#&tZ90`D*Uxx7$lL$6BKV3h0pIB1#$Od!Jq)5XA zL|RD<)7gsDM2?UmTsFdWB!+PfHC_|q{qZxYK0e&Lx^yWMP8jqRyFyEsTCkOwGOJgf zt2}xotCJwa?OmDeFIFBMlL+RF#nN{k{ka=)@KCqX8ADYoK4sNF_Vssvn;!0d)UFmF zxAwVCkkx}mNfXQht9KD^bdZjl#gm6_l@Ssbdyi!$+3k7H2-knp&UNM|e{GBc|NHVp zih)lVCdKw_rwhS{$ayRT$)r^s6+j(>>P3_jpy)a7m~o~`d`&)Be5#~k5#lOoHfNSL zQ0I%aG+2&10)349rvvb|TJTM*rWSN>nf{uFTCSj7asl|kbZh^Oxo>)b8FXh&LV_DVm&v& zoO_@N|TuP+yzZn#z#p6ZvP2!stE-m=)lI5Fx=L!~p)k)Rwr(xyg95go=e> zXAaJJm*kd+SHy?1;hdEJ>E}%l_?4OA56iCr!#yhVQwacxd!VIr*8)%h+nG1AGV^EsD;5T(3<+|%DbFJ3={eT7L)Xz{w48DKVYojM^5 zpES_De6dtip9ckR0Z6gVVEEa9w_qvAQR?5o)Q=luO~z5aDH2TVozWjeJ~l1p}` z$*}kby}&)2T$;vG0iUx@ylnqHHBlVCt($n%T!n=3-s4%sBZZW=8d#&Qg>AztCM4d@YNR*wDfIhO0~ag$n0vn>(f=5dxQZZ1!%(X^D$hJmEso{qOF%f!< zGc&o=wpG5G_k+8u`27#Z zqnfrM>z!Zki3bIT_mDJ0)_?l>fC6?hS}EpHn^oOC(X>2(65R({#&s=7o8)r^gvA)r z0Vs49f)WW!gAmG)7!)uT2-iJ6O+#9Y92nYYli{taUuLw8RBo=g^`&>qqOr_CK)+a1 za`Jk!Y{%inw|;(I${;Fo;!IG!RjeZ>i`-E$L&_vgW@_>U1YOTa9%rD93gc)=jww9E z6q=TwM6skc;Ka)c5lZ)4Wb3v?b(@C_hz03d8^RovsCn63duMk|q$1{jfo z3C(&**WuLpy`b1LZa6EJ;eYupDM4Tqvz18<+6LqD4M~fE5gV*k@qfQhPQQ_dJU)(k1^q#k#z9I?fJ z+Ai5P5hgV4b*sJigg9*FHqyKO*Ne~D%VqXt+-|>`>w|1Hd-JwxWqrBjss0JwfVu|m zGvT=c>vk%7-><7-lG!Nfz2##+jzk^;H5kVMfL0zr)$F8(4q<{f272Xzea84Lh99Lk zwgU18f!v)cg85}>X!c7U1qTMYWbr%=R51$bEL_uOXmG;!uNWai`T1GAHV;!Rv1GN( z_W!;-EP((V{Zatl2#aR|m)LO7n2?Q}p#kZz_*4|ea+9H5mRsf+Io$0ECfrX~-Y)Uw z$E+s66)jpQB&5lFL%-)vdlD)=ehbMT6m|Xwna%~DW3Vcm9j1^n6LJKQF8Lv~)wMN4 z##YFw3p4qPi5%c16seb3E}IhTXq{Cyj*T_V9L6&T{tGy7+nhdTCa-a2Yb^aa>HL<~ z#yOr#yvybXw5c%r4JS~>S%&Od1m!8wML1x2=P*1=z+wAwPHoX>9ZNn={8GsP&UQ>54lV>-$(&(^YaUL>{{Q!=`C_ubJM zf?MYBoee9V!Mhh2W`RrhT(_Os(JNO|E&Dcpj_@XJes%{%=QD>;i<8mSW>zUu;F>dD_@+nv+47ltC_9uyNAR)u z1*~l@2ZT5B<=R^?gN!bNidvLdat)n8DaO5(KR$GOH)40<|MRI3Q^E52)TnBexfUd9 zFy%D2-7r`1w@_mKN1fG#^1~!_MZ78elU2tum&$p~kIm3H#LxN=8zn7gIty}lp7c%1 zOBU=zyW%=UNO}iSO@x^Njr7s1vCqsJ08Vx9mfF$f5}}f3{aiIO4u^|bghpf)(5uQu zLxO%d>w3Ou{M86XQ zMKHkb0Rp$gPFJhCpVjrX5b!zTKNe+WY5GWr{8FXnpv2-HA=&YWN~tPa5uLC#u_(>; z(p5@AX;megi^aMVLUU4Ri6T_{Km9ZYfi_H5RG;@>Mv;?TmJCQDu3%GWiC@11yR+9# zOw@&}UYHvvZ#FHRb;wx!jCHL$3xr-z9U`gyf07@B%nlj^kb#Hqway{>UBZZwN{4(oR0 zF3`*lRho%!KlDBo+9<>&GZXZB>Dd{#3&~p*3*cvPkUDlJyd;p8U`RE^lcUpwS*>R} zm;lJEQ4ICd1E{}kOeBc3oyrGeeyHh)`B0MIHKTmgPgcv3jaTM>4x2^TDoNTQrtv(7 z9MWvcTEWssrI@;f9J>jgCNrn%m{Ac-0auRDC6QA4lC58a{!556v5J3>NK%54X(Q9g z$*CRGa^sRJ!6X&(L3#NBwo{9|mYyR#DThfR3_uVu^@H5G8u3bQ$n&d9LE=F6(ZJs? zDl1rJ>&GDeJ;VAfFg50<6=KbAO?jpa(tRW5vPl$c3r{WjA0OV-r=L7xcW<|yqgSwu z@-kV4j5EAi0*DghD@g(JP`*>3_C!FTP#L^f;y+1DPpIWmSKF;B%AR?x`65HjymmS} z?3=im#YekAR>PUcYgxgOH6=jMI2spmP0MJWQ_Ymb#53cw*|cB&h0lt}Hd|xNzLCKG z2V*Z`aa?fp7EeZJtXA4u#%fLrLN_6HCtSZS)p^t>-Hj)hLb2elq(ss%w)I>DXS};N z0K&!$P?D;=W#;ToR@|MzZV(m5|4%;?L7)-~V<$YhHiPnw|NMu90l}6v-Gu$`XgQz# zKZ(JwDCTV!W_r}Q!JVY2;K`D@bJ=s`6k8Ur198Q~^HRy)r1`a#mMs3p(Hi@gYRP5o zwhz)nuuzvkvtLERji1pdzlfRjW|=>55U9w905KM58_S7J07PSQS;X}8LB#x1GGpq? z@|iN%q|Za!_ZD9LcpbM?1dx84w-uUw1PYPA5*6?kK`&<~FQM>lef|R`H2Xy6(ev%4 z^*DU1<|Fwv-n`}KRD*DV5ZtjJ6DfBKzEfM{;#G8=SzY_{t=_)LyGi1B#Xq~YPBjpf z*Dr}&kuK4nl&ldsyPq5@)EY#l%bJ4!NSN9NZ+H5;D$OsvfpbKM0E0qyz=A8e6-l1^ zq>DXRu8?^KY6tn&F_cT$n z=jP_E7fXD==+ht!KmKAs`dj6_&i>K^VGc#@`eFPy-Qff2`3W7+P2?)ds2T22%`F@A!bGParLziJ$c$Fc9fuTTD zlyls8h`)092o3&v15jZhg{y+U30YDF?20A<@O%9_clD6R`L^v*{wUUJ6)h{@` zk)(z?S2Kj74)!^4UFmA~DLUj|~8k}2;K zCCzTq?RWmPck2P@IGF)JW-+B;{Ji5q$}s#W=5x=-OO>i`awDdOs%*5 zd1zJt>VH?QN7kFAzXNbmnEg(!nM(c#*bMwUFdN& zZE6tZi{S6k*pWQvt~1>g-3Ij2R>od2g`}Z`gJyqEw!Tw{rKhI-Y8Gy_;p{X!ojY^C zR<9kSbN67T32?N@0DS$=M61X0wJ@C0kil{=`w#;Sq;8L%H7uY^#ZamayhMdeg zbn-i>R&_Lrvjo2Xs>P*g-cAgRsgQ}rcVRl%h028^Imm_qHe(stXmuFe{cm(#UQwgq zS54I7vC{!@TVh&%g<12QPIJGcpj@r?Ab$&ge^vN$=c@xatYaY;CIlY z^%l=aN{xrXhtIytv@gF1ydbBB!u?dqn&v4kmOu^B{@!k${KYVU^f43K1jY%PRS9ST z2OA=&c`5143>s3gDQPCn-Xw>kTde=5pUWVobBh%xcHxFM_8c{~%uOUegY8Z!vVuP| zRr5vQ!s{p~L-=kJfB$1>K>U+%oX&n#G&k&HZui5(0-~8~)%_uPV46(5FZIj?*uFUX zNKZAInScNCY$y8Z;d{8|;4ZSZmM&iV!tAUH2&4-F5K938eOcIF<_`K?{8CTf5ucBR z82w1bj}3S_IDQoLHekJbklcCSy)~Mjk@i>|i0yMVHzj8=8_WQpl>z`Q&4WDUQo%T*B^+ur3caEAk0erZel<1Vs0D zdTkYw-mvl*%m<05n^(Qezk@G(vg0`+^he=b zazk3(-r|*3;6FQT#d#s|jnRKp_nscacpB5!v(rG^rBwWxW zbcrjS_!F&pr-r^V@2*n;YJ8t>LI4ak%h)tTPO6!cxt8nbkLHuHKgsQpd7#1+1=Mfa z`I*il&I&E^a(m1ljEr9AeXeh&(DWipwPVlpY1AF@)}z&Gmp787P?AlXg${dg*j6p2 z9WOB}kKjpAkiV1qU6HLfe=eIQ1q8yG0N{R7bn5dk%;*v63Th4)ODl?RWtHyvEjL3$ z(gm*=)JVM|dAa`XD|@4QeN_C_rqXOWBDJ_&sL?tF2g{?OP`{u_W?Wh0hwq|0yz$s%DH=|c zB)D(&|Kv2I^j*bEje2_G{8&!rv-rg=bHMLW3IglQoPc(Xcc;4S}Ui>z5^^Fr>zn_NZ zSW{D(+rrNt)A)I~0-tldfuhWA+(Vl?iSA(;q}V|~bp;M-D~w2rS7wsv$;HIPjTIX# zakGxame%+B_4L`+DMWLL_=#u=B>{5Zynl8&SxX`xFP6nkd{de`en+4Ze<8XM&)K1} ztrPI9yB7R@!D`2w%y~$LOF8?JP$n`Xi;CjR3Hk>ho6;NFUDc|1^9n0XGl(jiYu# zB$2?eH&aHZVyu2kV?MB!Udz}&$A;?Y?>|nkoDX(2``dMOoc-F+BRxIZS-yG0zR`VC z>#(mN5NT<*X+EIMV#KcWmG}IRP0>Bu*)Wt~EC~*vSC)G2ST$e|m%b$09zcy^5oh&+cPLFraI;GkN9${rx5RS+ zhH(w=ftC53-jNCLaQYq|E`7xA<;e>^&-6m5Xw|!RihJ*&F)bGX^Ct6>JoDto?+RZ8 zpGb+U*G6ONel7ogFK_Gs#0dfb!pPLdU=66a@ociG&tMkf5Kk6jZpg()T&702)ge9Y zCOUv+m{U*yhIRYyA$|oL=-ATkObm6{*su-ET$AERXW;GQ#j?xGj34PGT||bX&dpvP z{tYG_-7N%|MMGL}YhdFlrDE4*A`!Ap_n6@uGf^>3 zvzvIm#Qm-3SYx33;ta3-xah?U-QNZBEnjdARMa$+Hosa>1YM7mo@WA>9Xq+`W}*J^yl)CY}-f$$9W@~X14q57pyz39rm76eJAEz#chYJ%q-_0 z@7U;e-{XC_SYy^9>S%w-AW9NtuGg`8la-Vh^Hb%l+NXxjut0aJzbrzH*6gehAO`^f z$T&r^N=z^TB>4T6!sJF3K{-s=Y(MEZ$e{>jF$s$>6ncY=?~Vm>Hj<(*(gnI~7h%{g zUee-@4FM98@!R5IKoyqvoRzNGx;2z>R$T2UzU%7vd4w+nzpD)f=0=msL(N#=me-yG zAVQ^eGLh@D2eCisC4SJTj^sw4QZ17-QW>|HSDy{`E;|2l|B?Qy;Fc*kFE=BPLnH4i z>+i@p3$&qlK9&InN>r7dq9tP)-Z-h9>#n$!mH8|Gr=P1JaL2R%=b3-%!q#zS8PY`D z7;G5VNEw`w|J;AYz~vZkMepcFJn+$C?6n7ND3AIh0+S(7Op_z`kfD1wRxCaK^3SwZ4`DZ1(LxG(NWq_ z=x6v`{Y@2HoR~+wqSM%c%wXylGj8*+k3J;@G(_B+x9T+A3O z0bA9cg6~DKgF~l>X3Anlb*%Iek`Gja_(Rl#D&Gwp+XCU$ZI<`e+bfQalmq*#js1O0 zk}3p|@EdOjhYAHTK1ID8CP*T_3Jj&DRy9*Djze083yP0oq{d2IG`zYuRO>OOyJ18y zHpp(sO%gGI&uC@x^%2s0M}Rm(edXGLp$pmaSrxviv2emdB>wZ`otK} ztgtC;Sx$rYuZmCeYUGI^fOZfZpixF1MIr>bc`pbGPgGT=ZxVRv8n@lWE9W>^Jz3uv zHqSRnts?)uavGCWnGi>vI60zW>79=cZ=dwIcqkFce%HEfwT(T0ji2o?{g*d|yH}s( zXqY?Hv6YMpF4YDc?AkKXoWGo?)^5deUaFS*PF1_&Lu{HLG8An=8iE|#-msx`Xfrfmq4 z80c=S)=i|0$US}bAHvGZ9!w`I-@Hj@gWn{*AIds3ci7{4^(u}6{qx=ON8$ElJ{;P9 zU2?=TlKYowik^9CuS-XOm;vt$UmCl2rF2Og(|scM=0Z-}G0Jm1ua$EdFK?ZkjFbJ4 zWug)r#KyJ^jsGYsXfkTn=q5*w4qpJDjoE3bJS)$8sDe3w!ramgXpS37Nu5b-sReb>NVbaUsVC z+qUYnNjgc1-_utTbk1*LU|ew;(rG=!^;%(>r}DgQt*8I->ej%j-6i5&YePbfND@^* z8x!0*C6z)bG$-mHMi*r0`6|kb4i*K90;S%a4lQ=b1nECk6#$88g&PV9Mv+*so8^ry z#tdvH;wMHnG0T=3wOyKZW4Hc!WGKNSL1VJ&zFpvtxk%Pq?!m`UJj$C6?! ze=nVmFoGc&Kschj5aV~)A3wWHbTJM{Y5c}Iv0r4Yv*+?+%%@xGt3 z$aVIIqg^liJa*l_Q)knyF@M?+rm<$#@eu0MCLe#U%m48!k5HKJEOZ6l2shZ-#hh90 zrIP4{>Q3`fjz2&Cjgd&$YB&Y16Ljs=8>F&4j;dkDX(5wl^hay9auc$(rzQN|GKtqg z8UI=rnDOte2d@S-zkh2TMJ3b&3u}u;csa#`znzPrOeck2al8gs_H>WLkhL85^O7L9 zWZ9Yr2Y`@`?%4)YVUq^P6bc56_*oKXBr-Sf+XRO%>246R$>>3v9Gi-)k6;VAY5XWE zx+}#*4Q2B~XP}FMng}g*T4unmab&#?60ARv&4!u<8<3%!q~B{~WuH}<1|7+KSPT~q zJkWSg&dQcWB;n$pGcC)#p2Gnxw4_*!k>}AP^`f~`?yREm6n!J4w==xl)m6E*g5ezP z6`@i`%A1)q+1BzWcM<;U%|lpx0t8T`6}=!0?@1Rs^ogiYiCm3#^ufiJDaE3W?`xhN zo7#VgZ0OX(qe1O{xYt`&OSdT30j&0LlR{E@t0>Vax8en57=58EZ2YV8 zODwe+$Bk4F9h(KpS6pc;2Nmo7Qu?SkG^m^jAPj|{T<}a=nIJ4pZuWruEfk}Zv&GM0 zEQ$Eza#~M?qM1*G&f8u>2kXACoE~2D6MLE>y6P;xj@ozs)~Mh}8i74$6;d>#&lORB z2V?yt0~-nD0=89!u?1D=(fh@)m0Di3N6KLiW)ZeeD9dh?5O-sw5stP#X>sv^SFS%3 z=;$bn{bn+QOLDOf5q+ec#sKFMXgg^Gr?HPHFjyIIar~A3t3Nv-U~TiI6J_B7lR?bW z*Vwcq(cXITl9bYpxo6#BF}mTp7wQ{O49iRH(c72#SxIOrzZaCb$Sez2V=*w;%lqlF z177JNGTfxmto2IU3=TMRz7WnAMyoKlWCvXIE@YS6kQb#7TD`nx$2!`i$+m9EgLGWc~72a zz=$z(;(t!nQE>moN5(2kG_B6$Lr0SXZQC>xtl)o0|Vy`|$U#R~&Kg zPbAkiHW?_1IE`w85~TLdBAP#p1C=`5lYGn?QIv>!eix>_@U(2Rid@y$=_ocAu&Oho z$zQ!G?|E>&_5E&p(902oWsgjzNZ$^loEn>qnuz>X_q>O!Q9a>!Q)HEmQc&y`QDG)A=z1Rw*-6HqjyptrxuZu zftDdHB=Vj*I1T>6Z*yw`p8NMlDU>pg8m45qSRcQ|!Pz4LrRy5Ax6W>ujXpxGw#+f} zt!66`soss*C%Zi`qFz)NNK9eLDB)?R`#8q5(za zz8lG;m2_CYG0F=EFz}aH01S~FHlta62)ORsegH&nb9I(H)(!_7jT$}#bvi-Qv@~QK z?>od6lV#v9XZZ?h8NLbY8DdW$|H7IV(KfO~GLihCJD#7evGFJ4uttg;5TT0Qs{778~EKf#rfcO+_g&x_|rp|NRma1 z_sLs+e5!A#Dgu$m+Zpe+xne~exF^68v8ge6|6ua&Pswfjy%tF*-nk#2MX_cVXFxQ7 zD5-N$n>6srtL>%GEl6PQU>PxV4+z5=K2fTu8=NA}?55~3t>qO{7CSM}6qa^{|EG6v z?$-1jL)mt=k%)mk9aE#4ThX}o8{a48Qnu)S&#}jHIG7b|5MqlQT7I@y_zpI~vh3D9 zNCv6A6mm#AJGmS#X#+@^7=v7N# z$kk-c9^KF6B&RF6%9O;!Jy(@1LC(*b?UMktsKw-@$&wF6@%gX*Yy-fj7W&qPDp$sX zlX$Gy++;3|=J8DLqm9$5Z^LjC36oZ_rkh>*(Y}Fc;AQWAZcfb||Axn`h@c9@Vn2tG zIg8TA7}}r21C?vc{G=-@g+UFUnW0Ab2jYtur6{&$<~-iE&=R1`#NT-SkDfUi+bI&U ztiSTLGd%*j{$h5l8gTj;Zm*f)j$G{vQa}(EkuDP zYUh{%Wx>`x78ZzH!XqZxH!@$$8^}gRQa8Mu(*VlSeTO2nlRTvD2Xu!djS^69H-9(F&0iQs5IyjvZ z79|x#vjlVB-~v5I)rQs*cP`sdfzX|Ka6}fA`TVm9z7@$AEsiD=TgR|ru7V~Q70|RS zm=0lD=D6*fMEN-_&{kP_iqylR4+i5$#l+AMKAoofO1-rSDrH+gXGh1*6_*v~jV0Zg z*DBvOaJ)<_WBL~oyN}L7kF^2<1pMQ5@0EwCEfBIQQ1?w3ZTq_GV z!OB{FXtby z!EU}^XE7FzL+1+9fJQ;GeQTC|T2>fowXeF;sI2tu1Cq@@A`dRvleu#e z;x1xGVYnX_z35mJ$=}*oDn|3 z%0IpBw|8{KcDjS8*v9BElmLKyqnpJFF0!vmk-U`B@HmT?@oCTY8>m)|@F~V&zv^*| zrAhC5O2&EZ&GwiQYqF24*?oloE$t)%kIv43KiCyN72C$;N#IF%lDLN`G?+A_$ap7h zg~CWtzusBE5Db9dgnI}Ym{oSGwwTpjm2>wjK#hY91Pw5rA~N1VP2e4mSaJHg7~;i$ z`*j=~LBaHni!sOJl_|l8mGD_*&w*P;>g9>)H)Zcg` zIBzrLcVW37LBbVm^z0uC*1_g%j4YiE9d^|qj=*JzQ6HWz@kqK4nyJAnuihncnU&=zDQ|D0CTSi&ENL8+{y)SavQ_#V>a_4EsI!@TLc%Nmkd!n(an1cc!gM&MBIM1`?dQwRHZ+9Am|bb5c#}!Rsj3n1@Zk@dXhY_rq<5yz5(W31V_^KojGi!K z!66~7kJ9>LaalqKJ`+G{iO)t6kRakEGr+cH7iP`m21^5ZTa%K7UPEjfJTp=jDegJK zcsZ`C@G)vwwB5eB?r${c3IF@ymm2_m;0XOPNA+Rk?lg101+m0>aL2EmH__SgRPXiF zPoY^0fJlRaAWAS=BU{S}DKA*xI5r&yts*K2kfMOk-SXlAE0!6;wx;u%Cpreg^+R7h z#RoRp!{lo7n*G^<7Koy2ZTp2tr!?P9r?$2>cd4z-D^_)B)sG-D9`Cbdsq`aP6ax*^R^`(x zGTVwN<})_ynUb_WGAl`~g%@W@6#VW%KNtMYxV8Mt_g^0xgg^_BoB=fcul}5efJ-cw zs-0gZS|9tJJ@@ZqrojgBjnw1SDNc{+MX*fR&m?j`-H*W5EZTp4+o zt6;*s_Q6Fh?`m*?k}Xnc`%xAU8_A4MTi0I49#KPrVX~*#9?W*@NIT8D-#)}i*n2|u zPTqt)sXZ1nz{9pM2Aem?&_Uxs#SV4@O_Bq<1p$<_MtXw1*vu45;_m!ob~Q9g6UQHk z%xDpsQqvPM=F~HC1vf-Gnl&JbI^MhL`m_bHpQD?Xbd!FL1}||3GgZfdLsTuVW}cmo zs!>0S`~upZuPAA5ryg8Hc3-owH>y-wG0J75^lcMhlDo|rc#8{06b)bKb7m-H9J})T zTlwxSu*gSIL92xgb93V%)=p3|w2e?@Wa!&ZxE1WCV;|2>;x8cnvaSW(LKL;qjm<4$ zoXIrORv_5<+~3F(aJ}HO7gB{op*%QSYN=y6bGG?KDiHCfm+)jd-YvSDH zav-Y~&T^I4J-tuGuYOVrZJ|2Yy$3{vCO%I%h#;z{Kf?QyFsKRZU@X;>6=gL+v%pA$ z?snr63+1knI#`p41xdnc2MBnlRrc8mTZm4WPgCbC>J? zC)Ab+?^NHtX{qF3P_+K4k3wjYk|txRPf54XUs(|I%2^P{UTO(K4A6O}{J;ONEdZF$ zVtEp(P++0x#AD0Qq=yq|T>IR=Bd|}}BUq$LO!_!xMc}o=d-;0a_Cc&Uh~((>qm52C zUXhI1DOC!LImu}Vs1)ZLgCIxB3k9X)XydBGRn7$Uo}+~PM6C(QKKFvwKNz>`RAvh zg^Q+=H75#GwD!u+opsCAQ?oBuYv>~iqdL=v?L^qzpmwv^V4jTz&fBWPrBHoxcIkx} zXPvtRQNh6haz3#UbM}=MA2B?{CeuK4Q|DzQ{tWZ2?`0XZZOmxu%+zbHmSW7Tq0FPd%|xgCB>z8ZL8I8ss7(z zT9sWc@pZ08Njgv%2p`mE%#RXQkg2iX~iKxDi>DzB`Djpl{HaY`?!Ugp%5lJwb+-JYTu2ggp8$ywAeo(s309>ORf+mf8( zX|1fVS+)`POniFy>9?x?X@Rx&r5+Ul2Hu27tYW9*O&&jvwN<5e}>rCenwPdrElKL1fL{Q zU^-+O)>8x8U`qeN<^7eM>?B9k=Ge1;Q*KZn&<~t+rMVw9$Jzld+ji`#jy~6c#~+_~ z7<;{1(1mnsQb0}iXs0yolNd@I7SEG$HV6vp+dKrZn?)a?7NbT+G?uDPF+>+Cnp47b z^OK0;y}r?#qevRe)>>m%9$csLabb)8ymAh=D=F#feO^2l;;pY@-B!*A`qCPY?;aoI zsuYdX7Y0iB7G5wa^vCLGlM^xOQV?+ZficE~CdQ%SVhZeDuei}(PYZ5oNfl?|@b<5Mb3;hUAbF{wk2L~S1^p(l6oqD)WS9$~f;VIGyCugA`*|;$_CNmJa^H}B zd)*vX*z8g69Dk(dc)|S&=2s*MU=|1l8TEMAReOrv=zc8^T>!|C*6-Y zk{e*#g(?Goov$Nhhl`SQdTMQ8Vvoo{qBlQ-z^K|v`-!AiabL%NH+yJssSMT~6WSUsde*$ z$NYuf9>?XXGRsBNetd;SjXwlML41{Aj5`iWE%Hv_#*Y-G!3hEk4~)D}n*WVK{=fXO zuOVPk^W_swxmlx-6Fl1^d(t#dJ+9~buc&-Z_f#azKFfl%nU6Be3FPN#kVO~ki}G3n zl**l)Bg@CYjDkTb*BR2czb5DrR9OO$m17{ zhxP18`_TP&pQS^H6-5vLNWn0gfgq6Oh79tw%baZnr<>a6g9%jT8cNMU+D*3}F%6ge z!?hY&c0MdguJzU^&NBP<0~v8>CZk;X3WP5y$5%%kM>ZT{!6amSMbeStz)U6s`5)NwRY0?L0iDaJfIOzd!!|@%y(%nL|#* zAL5}cHYCcl6#huxOpos zw7nMxfI_(Wt2=WZB7B~a`JmX~{keFGcf!}RHknvlAuH5k<2=OEoS6wMS~zl;I<@!d zhyXhn08FOC6}Bk&WQCF?*42oxex9iWg z&^sJp01excR){AKsPq&58`vQe^g`3X1_9tC=;Y}7>BMg0GN06%y#Cf|ktO-`@gULs zXagUe1yQf^?w|l1w&Nb8ifZKaOj~M=|&o9X@+L#?hffvy1Tn;=uRo=4(SHz z4ndF-xqSCOth3JE?|#>_80Vhsq^|*aE-3NW8r2RsGV-}g2ult`nO7eXritYm=x?}a zi_BFHDg>+a)M9NRL>$gQRtM`xGYH!iaz_TAiWTJ!kLIZpZ-M3QX?p=-JRh+rb7u7g z-S&U}vmXH5)zdWlFF!a~^~TRkCv*sevNn*5!Enwv(xbGU=rSpH3&h~+zj9%b0?-Jd zoN9`jgc+vex@r_5bi1)+q9P7%64M#T zcqrAzc~3C`q|Bc~I^4=ZcS`z@Nt0L2Y2BQ$j#vbF8Gd*13uP&DCko)m;fuYg!GvPs zXWL=3sm#sAOI&fUF&bvIKDS@|_Q5bh-7I-fj!i#&cNbPS=D?E=edcZ=HM`*`iLXRH zDQlmrS>?@V?gy_q=9z*0BK<-lTZ%%pFv=i-noQg)u;^O7|I2o1zsICyjP@EuVO|jB6ecHOrs%Bn|SR@ zH@{;W^C3D_-KB|HDdM}F3kR`N-u6FpWmTT%X+Q>c4JuAJhW30FB0!W(163$7P7|U6 zT{tZ8Ks)BVnj^#4PUQNDNY-wrBK@+3Ho~%nZ8TF@M4%5%`*$4;#=`1h`?Kv(qpe#* zbo2AdzEwn>Oio?5W}SNzN0WL?P1G-)*YT0%lMNSDzu*3!vcHP=-&MsQpOen5e^pX{ zF{OPq9q}H^8fP)woFu5TQQo{gw!v%u)`s|dT2$wX%Qv?#qZhE`8=f@eli`i+oX6_JByYOVj9|LErJS#acE3a>}!j2=(ywb5J7jr{LQ+(&`jsebVn36lzA!EFvdWwJewmy~fXeCP zheK5R7b4YiGs`vUU9RA+b#Aq=@=nyE{rxq7B_e!F$PiaGAhZ}1!9WP)$UrEv4XJp0 z^$zf)p$;e9ukCN7K@sPyA3RCMQKo1i{fy~%a;UlSKG!RUi8%Hj=NO6!RCBtk=qr=0 z)T(i*I;M&-4o6BjXqp3ghZMIDO%m4b-5a(jU*;IY!=8)VKH zE}lXTxrun18vsjYgN#FTsqOsID74T`%qei^MOrXJN;h`$i5 zp!IjIaX2p8fuV|{y=VXT^R+0&cz?7;d3N=%@-5}fcQ4R5;rL{`+HTM(AEx0AV}*7; zFU3(>U+!cBjj<>K=vY|D@sp^k(aq}`}C7C#BktL?bayDT+!Rb>F zjd1wzT8a?!N;@fPW+l&P3poSQ*BX7gy>A7K$?m*#sGk0o2h{8mQA4vL5o>&?$X;gb zBi5wxsj6gz97QwbVW8d?7gzxUt;ip$ND1YKUMKF_{notvbtBb3-nng&Kd6@$Y&)6T zHK!%hyk|c$)yj1$crr#;QCBqM^b@hI>+HS^H#7v*B0cd0?&Edc`#tP-RonGTYB#&aYsK{dK4k%XBv1$6w3Ur*LkR!+pBK(YU|Y zQCP)HdW`*cwE{#y(bq&%&qli5VS-s$I5Y*orNd7q#pVgN%hpYAdeBb zF)h20g{&V@`Qiyen+OdN z$3kgIQqKCgu-nZ~AKpTXpY=7}R}03S?2cmTx8qoGG3=?dsG;n0Z^0Vf`CZ>Cwc>B6 zr;Z4a2A}}q4 zwkq1Xz}O-U>0Nl=SFRt;nfCzV%MV-w_`_et($uT1UVM(UMo&%PMEgoC7F&C?4$UpA zpvPZ2sqhxjDjb-ZOQPm*m#k3vwI7LW1m`7+?F?EyXjfqFmllLY$2alVP)ggsFY8po zV*!#$Df)rOAbjWRu_Q!0`X`@#q(`0I8l^=hZR5qfqXiA~!CGf_{&y0mTDH!z-P`m^ zH;r|BwaERtmJXE9zoKYq#U)a#tN3=D3`KLCx~I@|%(K*W(=*lfCC#H`UiVi^@iWe2 z%m*0f23TbUc8w~`jh@=R#<7xly#M5TxTBV zLHL9e$cj{vE-mq&e%|;$5yp!XZ~0U2Xt@iE1ASFmJ0pd+{rP#8s*~_E9Y`5^Zh@nc z+h&<`kvLvjGya$K7Wv2R-^6pDG}8OOBOF&VrLEg~%~np)&gnQ5#!Ws+I-Z~2t1otA zZ9YjZjC%qpcZclb#pszTn`6dJ!5xL2!csaeglnkYXv~eN@O=RQ_)T_g37T+Yy*>!W ztvLh|@q}0%#{O6Cl#|)cQ!6&|?&-a1b^>;=e!55X z*}X>`{@}8XX47)jXf02A3VRY+7+Wc&k>^@2ZxACs3H0|5L2{1t`T)`xM+jlIq2KG- z&zFP3$q0IW5j(+j&MBr+81*^!9At{05|C{G;D<%n3bobNkNh4#3kZ@YGIGqI~<@}i1tPZ)>x&hIDUF)sc`W)B*L6#(<*+f2zG zZOh7~eO14BGyBdWH)evtDD1e~im@=$)AY`fCGf~SBhz!v*}H5mj7`k;J(>0+EZuk} zSuXaYa1;)0P5kihmJ78P2AdqZ{F;DU!7F1|h|q zj+ed2vttEL0hFAE|MasJ1l-rxlt<%DFt!p@G}$#E&C|;mz@j86oJ7}a>lI+ zhX4=`B{L~L>hA@VwHys3K!CHy7De&?pgyWT)E;trftYUb?eApiogRJ-(_e;$?KR}& z1nSaEg71!x@y`z#HDqTyZHHPZu*s~f-1cw(tnzs|B@a4&ySLf9j^O3&dnjDk$F*p% z?1G|TI3Nzww|hMR2RvEZWUx4Hjz(bbuVy_MV;2qYHt5utMNQEcyHY}r4tK)a)<6Bn zggYmQ^`)h8x^JG?vLC~$s&Qp}8!bY)tSB=p)gKjtT15G9$=+m!jOLDB$-}DMRLt2j zsIgG*Q^=6TwD?YaO^NND6sl1ceGz6wWYVFz?+EBZ!&P`{=%+scg5o0OO;Z6$q{cBP zd5BB^hD#6*jix+pk}IJ$u$Ac9ixJLlW<$ogvBGqLyO5CZunP~)oLO~I8W$i~&95z9 zrM6XC)(tQSoiICZj;ugE-;UyMF0Vx!x2FB%@2Fm;2VFkdvgq*Zcp_0p;}lYSL(S*8 zMYU1N%T1CxBPW2Q0qBA6kl?vs2pL2aLvG^mX}}4}Ko&X*oM-MG0-wxIsjwA0eK2mc z1xc!9g&<3ls{XiZny%gGJzbrZONnFuknLQgpGM;bA@?G4HXE-8ww;4L`4Bmu(dX%< z<6(Q&UI~|!^?Odw_V{|ByLmG<8;Y}X1eXBuHvxA=gNBCJ^Q*iw`5&AAZjW^CmZT}E z;$?DNcJ_=>ZqU`ifdBOKhExaXXnuXWe_7H;W4_G~aSGjaYS`BzBcjio!%Jn&oTV@@ zBYtCi#j(vqC;yxiBh_SjrWv|T#Z)0V0~{Oqd^jy&vHudOM@u|(E9oHspo?h2gR|8k z-HFe&@=3_OI`a3uUP-dtGVYt;Mtds44iE3NU^nZvZ;P^TmM1)PO$o zKFGfSAU_pBO8KLZ0C#}{@1|6em0h>&hZ#2q2|WK4@61t4k;GKkLaiRQl9wg(x|^^l zf>NDdiJVl+1f`+CVaL;ov2(%#JQg&c!##7B@{gs4&4MHE*wZ^@UPV^&uGk$qyEsZG z9iQ_=$wcIcM?$F$HCrHkdzJ(coOVMU5x23oW9H^a~hBe+GR zli(+`_@gY2nsJ4QbSsQ1c8^sTU;a$QGYIpA2=wi(4RkEMH6Ox@0{8$Njl4A#mRKzP zb^Ma(Bya-_<}JVv@K_Ex%P(xm(G9#MIZ;S7EzXeWNc^xAY|g(EH_+w;So!R1q?rDb z3_a0|Q@La(nJmrI<-Wo+u)iid#X}xXkXQyTCRNyQUN&!IP5H{h=V77M@Fwe^md?+@ngE`Go!S)pMx=k4f>e>;tVKIgELq9A7cn*!gNR~8odw%;i4)h0 zdqf7zb(k$8N)gcBVp#H*RJOJ%M$jvc7Fl5)6zYGuGJAH##c7zcKh@fKn%vB1hCWW z|K+IMC zMrxg8`;iL*a3he#z7v(9NBrkMZ}aB>7}PL0sKSS+F4OB#x{ zWM-sJs~+P=?eOYy5JlKp$;zm$^kC*`G;E(4(Zl@wsQVOfG@BbCHp*c^Dm#**^Q*Jb zCSkeL=l17i-GyPD%0TvP$VRWgB&!^3x8!ZHTimsl2kjP1^v!t6@u_T-IT08#7)XuB znw8*Ho#q6m7G{CuDhkLeQ)H3h{izjS7(k38Te2j$ljC9?Od$J=9K-pn9aV?!EUpCq zBaNothTlD9nDNr{pod3!{3|dyaa;f27BrEjE&oy@8Ii%*kzC!El@J9_8vSdzNpF(a z@Jhp$Ls(5Kb!*RP3RbrN==URL*OwJx8vC@5i@Uk|^WK~n2_N~PQs&%ZG@~B|DhAC@ z8-Y+_7s7(~*v&estnuV|A6VeU`MI!$zT6ZhZrSH^;$EByuzF7m1tvycn7Hkf-x1>) z8oAAusKK5^{)t04y7q6i3Vo(Tk{AGyp+bc-m=sG64bo>E zRs;AYG3bC6U2d$D(HwK)wj7U(^g;3)S__JBFFz*r4nX3ewP`()GsQN~|Gj2L%>1KF zl{l2sR!7kh`Qo(I)n)4_G;_mc`sX)g+Niaf>3Kijrm&vtx+-U(6G2_&^iLR`Oy91I z1gAV+;;&o}dipQeHv8*-8~nSvy!n1J;k9vCd)l_sscn0xruqAy!NB9xrC#?zdq>K* z`^=a4Dm}IPP+X*3-ff3-MB!G8(VX{iRlt&yGm zYoUNsVgN-nUUSrOlu-)0Bftk;Kn~9T+8Apm_yLS1fS5qu8~ak3R9S56(qt?X2OVBb zng}}zwU4YZt3It!N%H1|tC@m@$E8^dXQxl@zAQrurxuKM?lgI}slQJuv$OR%{ovv{ zzPY-ksd-ldfGUw1#%2U6^_*1PwaO3xm4Ugxf(&ph5NH{I-79C4$4KauWf>VxcvF~_ zNdoDMgAagHU{|D{oB@1eG!DT3Yy-ct0&;T1_Wd+Q0ni>&LH81?9RBrj%A%I-kN9uq zN0>)sOv8Bn4Eb;mP%igptT0d2r&=LZ)w7A6^v~!qs^brjJd%iw$(GH-!UZcV#?y>_A zW)iAxnE*)eaPR^CAz~+9CY3fz7Go4c(A{7RBzW{peib0geE|l6Bvtboyb%>(r!TB| zR-0NBT|5{L9g)W(7#lt@BWPggeaMFruFr}G;E6C&F?F3tGb~b2Nq~fyY-UvbNA_*d z;lR(kwbT!{X(sn=Oe6JE8N@mhng_|yml4ye)KNc?y*b6n@jJtOcUzeXmnuOk=0E30 z${%`kVIA#CRxHn{ALJ|=$Ay{>NjsKK5t>TH!89suWu zZSPwD3vl)N7|;Ln=O3MWd%cn;F>#Z3H#^9}dlF4zDX*`$IdVO(Umz@m+Wg)g|C;t$%>SD7{m7-Er*;DgoX4fUNcg$TumwfaouW%UL9= zjMvm^6vrI(R}z6C_|ghM(_lE)*riTkfIz!0LHmbspB4$j$u!;1aHpzfJf|E;_CW$-2b0{9a;~g zqW19^$;9nF^XnCX#EFtUX$_5@Z29dw;D7q@1puQBbj{F6ei@X>qnQMIf$w}Bs=FM= zQb?<=Q!omU0T3!v@L`u$Vy3EzO%qo%dUeCk;OUTO-Bof^gYVg#g`Bb}{hNQRADozSkDPznEg$_s zImo`TS0_j{{i+ET^9r4^Zu-c~*qgg`Wx&a3>LH3x>ds*LpO*0h zsb5c3l^*%RIc8ya$&eHjfGt`PC4-E#t0PchZY+&0)*3&=uUTaZtfD;LlIx8zW5jgN z0DiA;a0Pam3e1txhi@D&H?c`9Boo?=y z1RdL(tbwaUOZ7U`K4=@a8*U?7|oPE@UOe^ez-I zVb52Pa0GoBSGiaA`93vVL$t&R3rKKjRY73>Pd~W;;M?ToD??sW1Xb6i7}{N-HTkd~jn9)G#@oJ_&<4WDvpv0^n%MSR3f7(ek@I>lO=Y=%;JU3i zE$e~Y%eyjP=-FKwJ*r&)KAO0De!A4!zv0*(qwZVy^)on0idN| zl`Njfz~xrawQ4|c6>b<#*hDXO68dc+O&}hc+IL(r8J~G$im#`mCH?LIfp%1;{NQ(| zk}C;>VG;g)|AZ>r!{CTfAewR6a$sE1ta*xwG!aEhbY-!gTIm+^g1Cr@lnG!RnTObz z@pMQNT+jf%DVeV~?jOPeBvEinV(V{x+6#j}VKeA4 zH1+wYzr7U6O~&#E-Y=n`!O&)@pbyMEv}~td{9(qU2`O4NUX$J4>0*$fkcC^cxpqHB zlQP01!as~H`_i#G^LaM0HkZlty*Hko-P{xwQmoLVaeMIY-Fp;P{oKSE{E;dJT&ZKo z9srG+v)Wu9UY*eVy=7iXdA&G1{DQk}yks6ntK~+<%IeH#qincITsA5!!opga#+b%~ zCq-mB-(N55Q&)HV^tyy9ITf>1seZXQkka8AkzoG{jTR+iY-FP=a%V-&!7 z@wPbcnwO2vz2Gm2QeS@1$&HG7h@{O@NvRG_duH+!1Rqi*%U48n`pXEOo50SB=X0(w zv(C9A%$oZlU!^gwMBz7)(NSCo;hw7qu+?ewj~V&V;aIg}0-9*6WlQM3AM+|mY2d(| zioNqd3P`a?GqpN|fHGRT zr`b8=9LFE~6C~zenriXYlXgA(l}-+A!kNUjvhLC<)u1#l5y`YXRlSo88BcZI#aD-% znz5Eo{0g3yN8Y{rT;#LmH_|QHX`>Qt`367V51aK|5k9Uhrn}dv?yPP#NLs}98iLwI zi#p(_Gl|IJ%z>YrP+TJEk+k@J#U6t}VLv_)(=0E$>J3TF_Z9I*BP9-E6|>U%m!@M&(B_*HUWxB+cyR|B1@rPpOogW(Ah7`jBO0Oe#`eL~tTmYmX=u zB`YwbxSo_SiAlRB8m`nB)bIv<-QpMk$#xkh&8{N$uyw)^8Ve-QQFP6_w6H_l@YkqD zJuGK=?5P~0KZ1s6T(XE!o%I`+b!GK6pR%yRLg<<||8YJASDUJi2cd(Ub|N>qo|%T4nBv#Y+kpSNnfr{uE0?dpME zCx*H^iUeqlG@8SxJfz;qD}~Q?Jxy}}-+xxtm^lOsKs(+g4pVLu0;(8Gx9Yy*#f*ys zGprzoE2kn;#dlY}!wl#V`>bpyeEP=?J+@lT_R=?T+~vpS?UI9?PGL^;+@r`3J@0!f z5zc^HJHI_m#JORcZ<|Xpi{gzohnzhao6Y=&IVPVkxErS&xcs;3LfVYWL{ohJsbBBc ztx8FsdjekDP-LyL{L8AZS7)eLu&5=uHH;R{#f**M&oHPuppM9@m>pWyWnl~6jG=GHkQ{x*o#06UBv8SiC6Q}u5^6pj(OzYliSgF9!9%S?c{rX>0{`u=Le=I z^~PyCHDqa19IYr+3M%clh6lY0RZ_VTazq?yC19ALM5;@$VKLa9)Y=;&Wvs-x9nBD4 zPZX(I0Fxl3;fp6#CVV8vYp##XY>RHY4z5uyMc67kL zRri%kHrWj9|26!vBv0W!PdaH4gc-!Z{{AEz%B<<=%rn>Vyn|MiPsLnFUzuwTV>#*= zk8ve`Ez2lt18`Gem{w6xBv4k}+QL9)bh`vV%+O%_|MSD=1ArOE+Gogb^Jm(1atrD- zoJ?<{^KQz2sylLlb>VcbS|aJD+>? zb+RriH}%%VGBcnbHwI1D_Wp;OW?*Amjo@X}vdK1M)!SEGnEr_tGz2xBsFt&;b+xzz3it zh;S1TDMKX)zLbTz(gIqx2jm5y@>8ctZBrKhl6zNs0A&ZS3W<2r=Ok8nYks6xXQwKa z20w&S{~0cLt0R+gj%@vQXJ%fMWiaIL^+RW%Vu^#S;#{`)9TvB~*pp}iRALA1i>kq< zdb6zjjDCN*xsn`#a+Nh0`*)f&#cX{&hi%&9W3}NL-Q|ptv+(3D6Sjyv9yDkm4Nv^_ zPdz7-DID-KvgMlQV5jUJ2##_B9seMg*di(zL72ncLv{B*|2YZ(uIg#-DND}TGYFDd zgf`-KJ8Q)XFvqG?0t~HvSl9pr!Yvv`y&OK-|RF<5hl!aSF z$Sfa6enj>qZ2fu~R))fO{DEZ$lbxAHy$VG51sPZpgsFDG(4Z4+>@?>Evs7G3TT!qm zT=^3&UsjYXA6x)4(*=;DTd@F5@?1#MCixS27lChBO93K53k_Y62D;%zCg+OJ;qmAx zCVK8xJ%IW=k|X78rfS2{M(?b~E5I(o=)*^QESnupv&c}6uTqa0B0aopV8=Lflhg2- z7K4S+lN#Jg|1WC~k6u}MM{&$N`w=#Ut@srU={x-!kcgZlBv1uhQO#(u5s0vJ2Ln%> zBUX)aM*Nusg@ggCj5t>+1djeXgcKgppuEeXHlNAt-Z5~Pl?9`E5^|(f{Iec9!t+B* zPPT4wo-J8Xuhwn;-e8^3vUdrIYvjO#g^)sY!+`1XP@w@61pCtX3z|=7M!Rwtj45LRmolGE8!{zEynh zde@_+(?u^)-UKd=YkUK-mg>at$rBLTCOF4pb3mz%Fy|8z_9~G@?8teJyuHh3O&h!@ zbr+<$eV1bH5yIl-O4%1ozEQJzS5weA424Rrw%GtrT%`XQ7Y6bg(^ z*at4{=rh0R14d}Ubg_*STmkc>^&zsd;oZy?fJ%eM+7OB1O zc^iz@vwPAcnQBVc&+(;c@v6-2&*zV;XH0ohC4QN|xDd}_?#6ZPY#Qh{&wsiJX4^z& z6gv%FMx2ZseaA|05~sl$4jjSXS!{!fn&RsdCN3kw5i-0IAgtx|!st%vBQ!?+#*{}79sRZ}${-S*_RdZpunPbXY2&`R6 zm)4W369H@>1s%9t5L(6SG|gIm{$jUVoSEV&R^%stNS5ThIekqsX6D8{nh`cvt;Zd& zb9426=~ecyxC;?c^8mgd6|Me+`<6C2CBBh)uP?)*E|sn`=&m^0{Hu}9*H4{;Dl?|b zW3hy>3)Ato-js+xZ=Zg^x4VS>u=2_T>{oKU-jvzDj^78aooHoIL~-iXkeUX6lY@ z&CT=Z%AA4-Z@#?1#gY1(t*#!^4ZV70zl_5%N?0hyz}Cp07~cLr|2Ypp6f@TO%4Rm> z7LJl_22sMqa<_>oag{A3W4ca{)3%c=u|bS<`E3i)`DcTCQ|j^8E6c*Xpm-L!0#9I3 ze6jBJPXh|e3?&7CmGqyg4UM<(mRZ8YFw$*cLPiV@o^&*hIok#zt;vL!N=bj$mTv93 z1$I%XHm&Cu4vhy-qqFw$gV9gQxt9w)o6!-ntRxi-G#yyKFj$AlOA|k&Tg+C;VdW66 zx+@eMARwEMv@k~j))>DtZxc=K|3iZb`ut!ceeK1MG%2Kss<1F~KV{ zrF?F?Mldsd$jwEky8;s=ZZo^!rl5^M`Z@YK4}{NW_I61fAB9_wV#Gg!#H{e!pb<&U zOi)-LbMiPlMTk-|#DF-k=>f9#-pwuL;?I}WTo9T7gwS{KQE&H$tVs$KT=8WGc)DipiO#3L$l|0wyzFAQ?PLe;9J4lA7G`k55$RJ zuZ{zBXY~&cVtXo3V$q!74#wY=g#>~)>>4W6osH%#@H0%z2Xxk#ty8n-a7}&Kh;r6d zhDx_&Md#kV6T4jERv|#?ta>NaS)T<()8-P#V}^@4t4}%$P=ztTpYw{oE$?#)@}8(*2+$N#?c(tL zr8%LHZ1q@HWFG^#c$;nIJ4?Wm=?agejObb#DeK6DN2uHXeZ%ZD-^PtfeqwlF7R)J5 zPV)WED%OF#ys2;_?D*~@^$&*m$NU+4h9Sag9a)&R$>v4I=4RRJ@ASX6GiDL<@Bp~J z5X>MPfRGcGHi(s9L0pxFdmBjicU$`_y%fZodmza`IpuMbqQlp~;d2A&WHCRHco5}} zjdi^8W~!)6{eVo^y}X(Qxk|ui9Ks!iZ!~DgKa7u0nx+U9V{}ANh&je7p2gmG*M5!@ zZh8_c`LpD9hV9@9;=ms<`cWLU32k^bV(h)&tx>n zY{n*);+DBEN2AmpG46(3Ki5Ug&Eo9C?f{^;77<8H)6d;rZfxGC8 z56Z!gGp%H)gnT+{-WLVRQ=uT$`$Zqco(%ymrCEq0M&;5D1r)x7RJjGzQ2xI^Pp^3l!GXVT4TYv~E;2r%;$Xi4u zLiLwjVlul*Prbd#gWFhio8IJ5Jt1OAe+BKFHQ#qM0W*QxxsHtu4WEI*zLK+65eO8Z*~OZ|66U1gy1QZd1fzpmG7u=LHnW-RL&jxZ}8t6hatL8U9^Ju)f$< zW9WxGGT`7-``^N`(*r$WpHptVe!o86sw%@|mcYTfR&V`nTuifEMn+3=wPzR|E_G5| zQX8-W!@Nd*zDW^20{ubE6buLKKmp)1Phd**710GS!o(q;!2!qITArZc&SX>a~>>_>a*v1~tP`9Y2VV>*OGs4=ufk}Vlv0MEfU!j{W@yT?4 z64D}r%Bggr)M0N>zf#QprqWIFbLKm~X?C6Ye?PA%y^SspybgK}ah0i&s}OZZJ-?0) z^jERvSa;H;){gp$v9UWK>{ZzF9RDnMFG`3OfMAE2tw?1zxgD5HCdS>SKt*@;pZ~n^ z$GnXf%@m~TJ&tT^EcP;RXTQGbhX=Vohv_;s8Vm~D&`_1Z*Pkq-hcE4D%{htC-49>; zz40=TnC8q};;hZt6=?7=VueCn>So+gMz=D-J<)eQ%k)XNro&+LbjRET!tC-%S!RKV zuy_NPK;d7@S~`her@ID*PjsNDsO)zE21!Y54&%NdBo#17)T9>+&}EUPYpOuG~RIk?^I3a9xa6eyxlyRq;>0xakjj$TH9Ad4mWCj6aM9FW=dpGpKU; z5SLFkoZBeP09Lp&uBF`DE9 z0y;i+M4o6oy933x2~r9iCqO#w$09moBB>R6Kv4i%bUfPuLp`F@%p70-J3(89_SS%i zhBjgS_9n4_-P-rFv;ltu$+#^xJZ*Cf|J-twJ7G;jFUQn?;P9ze8N$Uuhs=CCj|JZy zd~Kzpc286yTa8mWnQic!D?>5g{fK_jfr6Yv0MURRV_Lp1@Ki*irdu&W%#?goDgv1h zP^?r?!O;zgy<+F0luP0*GiK}#WvOE(O(~$bqbA<{s}|k+n98wHb7`CONrnk!7QDo% z@;$7N)k1NzuV1TjCj?RWUR_PA56YXhJ?lj(aBu@_4^V`pdGpP+l2q|?M{wPjsz_Qh z(}d$(qqiZ!sSl{imOu z0N|vNwwb0r$ zL&}`~=97A#@&^+_1mKlza*P!<9b3qW%lE-i~x@`@WA7)twvQXtJ5eEz7)z3+S+ zYnC|Z<4!RzQ>jlugNn0E52Kv(>T|J72))GHE}>f73qC6MP#OF~LA51hDFm-Fg)-m$ zYj>6|OMf!{$+wXrtL8!tdy_@Atss3gQyEvvpzZM{_1kGX1p7kAlPCvwlGxS9d!d|i3ot`2HACG19~OQ%bbF41(j7<6 z)CYgV%N#YXEIT@(V3AP)gk@b;mMHSc(L}^R;yjxN#Sy6T-D;4}e2CoG(z^7b8m=2b z^Y;N%{~0ssAc}Oqs1$9RxL6!EXb>niY#Wul3vNP1B6{zuBhZ44%2QUWA3B2-6_HHU zeOX-nSQ?}#Z`zXVZT0Qro`d^mnVTRg3<{@^;f6ZYk!qAs8?UcSk&=TGUX??08RAFd znVW6)avj_%-)^wR<%Yi|$}%Fyl&Vkv(9DMWOB_SDufNXGe}CokUNN-IZ?oYyZ}*<- z`pQkd@NL;z!;tc08JngiTc=*S>-SbI%!@>t5I#DiJ(-Lu0$M#0E+2yGw~l;o&(7d&d-1)w~(0^8$-XLH*fM zq}VFXhMmkS`(6aB?YQN~&?y6kL^;uNulMDp&F`&rT9T#GoK;IyrCp#P?;K_1PUV$i zqV(#dPM@6f)t<|T&%0kqMV&;2OqLBm1;)YAb65zH0HprD5E)S_+y=361SEjCSD#JS z_zZPaLm#>qHopMH$q=FSUZPp^1RRrJj8}xKpleA0x%>hLj{=18dlQci9=RiYCD6@> z<&syot$E{`v3z=Hj4c9etc;1b{lLXR%XPka81symO!b*k6R>Pyl_tU^y=Or?YM1HISXg$3|lJpPUQI&IIcU& z!iARV_xQd9+2pV$jY@58$@$4d0jQs1T`->bi1 zPR7^Z<^E2i6b;NC@m(ki%(9q&sAI-J&aKP4b8$up8kg{Cn^U-#?(1YEB!}@bW}^*7 zTe-`BaZT0vcXOSP_tWn6`F`Y^4ZTc4^G9*T5H(hWMzEiZr7Uu_fCM`-dXjwS)5YBX z`E~07h!Vyc^2*W_M(sv@QA$cXY( zguH`&OAUJa%fFpitTa#70C+_{0PCdqHU+~kG^`mlR~CBX5F9rXZ2C-k?bBguT1f3M zduhz}81ilS!TMC)(iS0mv`fHedHCH1mcN2nd&uP@EZSa;XUHK#;Yh#%lve7r!RA0H zrQi&1G$}+o+P##?-ydT9_L7B7txFVT(E<7Phls*C7!hs1O(c65wYAp!@(x#}h|!bO z@j}yg%R*fA_n>!M*04mbqH>)rlAj)(du4izBCkiXyfg|HkxgK`8 zr499#-j@q~K%gda`X?CG#PUObf-ky70?u9qau;}P0*K|^sOX%z#DoVk_$A-Yg(eWc zFxkg;?J0jcJ}!I2vq1(k005NmNEcvZN_+)TGzR#bLQ!m!Ap&o4Y(%k;5V=0pW48|; zZ~+^9<@J>rABVa}pGZJDh?~LQ(;;4J0)I_Hk6mju3>%d z`Hq_{d^LI?)M=; z{$D=_09r9atuq#>euKTWO_M!ad=p0ozgwf= zdkBO6+VEg~w-mVL*RStm6u(F;GQ@EsHj?F4WAAW(bjJMVv_``dt%^j9XwH`;yq^KIxCMP^k{9Lt-$5t_iznx2b6@##j>5I5Z^!%Z>qVB&~)D1o%;vZp(B{*$jrPMx`)V zM?v3R|G`e!CQZ9Ob|X(L>P^sT#z0J9far&Yh81~bGFCBjef8^tigth8&5b^teRf=a z!JDtpYZ^5Aq7GlrE{b9!5GpE#J^D?w58^|KjY6^ELJBBnP2Wr_H?6Z{9d`xdwXmQ4 zp?x23@n<=yy8-vF3j3gTN$5liEBgH3E`RB{9t->W@!1Ct4w)2(q2~R*DA754w**!O z1`R1P4BOwCNLb7yf;v`i0+d}H9K*LDYXDlA zaDg58bc#wCZFAL=5=;P9hL9vN_z}-g=B@N1if}aC!9IhV6pqiQ#o1iw-GKi-<@>1%whuAF^}! zSeO7_awZg#eX-aia0tL4Sxiuv8Xy3^R!o32fXXp+Kz?VXw8WwB*qtl1+g99bv{Zu} z@vPj<97*egxQwfN_}v7BH|E~Mp_V8rc`jA=4^4)aY^8Q1M$%rIO64H@OYS2Ol34V)}XEi+^sgxTFFAFb`*rMfs*d{~g zY0>B@wFI4TFQ=U$1;5VAnq4OIb_vDTvA$Qz^)A)<^phB2J7Guqw-KsH_-M^E3%|p0 zcK4{4vo)s`JD~`i58g+^OmY_t7jJ=2;Njd4M70SP-YgYjSATrk?X`TOt+(c+3!CVj zAsD$>T^eTOEOjM;zM>)fwP^0RE7BU1V`vk!HrC^V1r@B4HT_0Rv4liGzH37@_dYVv zgbW<}f9Id;V0TXarD6r1dh5fiDvRJWJVqNmboRBtzMRU$xBlE;LRsXLVLHeRB&}cC zZRY^IES$->Kh^fReJ|NfhqMkQhGJ!`*e`y04#&C^n>pxnZF)MqT>Mx7Lq`&_NX*CH zMK!&)6(Xy@9hm_fl`N>`9RuMg#0WG}60E{BssSCJsY2*nwebPNc*HflR+T^l^ccD6 z@^B;tP3ffrb6y}Vc#7G~M;`SnXQTE_`CieP4!&6{t9VTBR14*$tE9)uGPgk0&7k!p z%h1v|P&SUtkfMzm>Af$A<*q%U#P&2J=0fCOo*LeiHGAWDb6GxmY;wgSzU$N=X__0l z9kT{+@nO4^mNLCvncQq9x0g;3=aSzoNL#YqT~4l%ktl{BZHMtpm8jMQyE%)DE3!MaR7KCkIF^5H%eobp zle+6aUteBdUo%Tc1Smn*lpc-RYoq|s@HnfYcmp%V5VDzR6&w{2DDkdDl+gr7lne_Q z&w^vgL1(Cq)xApJ%UDOT3hL>X^zuKJzQV1^|NnZ#Xpk6PV+0`3Dh>FKlc#Y1NuQ)&` zu;vkRX{GXBchP@le!*KS;y?VHU;|C8*6p-~emKvVJveX#Q5|_$^FcRda|(ETvPr)o z%xcE+p3Nr3CoZghH95&pmPcpX`09FOGAOu-$nbwjX4IKab?k}-iz~z&Sv@|~B5q7A z6+kROZ-`ueu|-<6o3SslynZlgE?jsbpu?;X+Yjg zCHLwi$4ph8~`dDY>F#M2~Z88CL)ZIwSx$u!nMTJZRYrd3793Rm}YLi87C`|KWp@0cY&#)$> z>Phe&OCm`$gV~0166@B{MwKy6Pw^?faU6G1WYyRJH;*%A@{i3n2I{FVzbRX>p&ofy zz!79xjTF02=sCp+(HqNJ(F^jL3l+|)$t#O(iakFFOAQ2(zX%iES&{qvwyVTwyGN{hc;=F*2ZsL z5bQbo-s|6KP$lD&#(h)hOp$oF`ta6`4L}HRq9B}&0yYUpIqj5k4uhNIEZUV3I^>$TTDSMCf`rj+7=D!G{v)r*yJ zN+Q^>qB^%R+jSu`7wEqRY8@J5ok#XYnUExX@Xv2aPibY=om7*i0=_bv+qrp62bl1_ zyCdJRCaqQ_x%d$URq%zd;A{h6AWhdUCGrEno_R4dz6l z$4T;257b*;6z(e48dF?HISsL#v`JwkrLnLv*{ygKzfZ(D_4%%8dxC;Ab} zM2Dl7e&XtY{mThCZWo({oh!4CR`b8-oBHZ@h+f&&4n@| zTD8?;E@((JI-g$?nz21qX;Kq39F&*#yhp|-dZF5#xU!zt^&gc!lC@ZMEZhMmN!Ga zGNhMcUM;iYAMdjO`EEy7mbAy;4dA!6RB=pu9~U5 z@4zVak7$}{A{P}2=sDHoM;!wM=_YSW&3enz=%074hUZ;p(ODQK9#ucj%b{KK7&iH& z#KN*?%rK{`(vg@ZbpmazO-uj$i^p#STYbxy1fq;67*vL!0Z?ekipyy1v8MlIp zbs5?lQaQ2p&o`9U?4-JayiWKZ0?&vpvX>O(eA;d+MFL;_orSy!G+r*Fkc+nmV13lh z#)ZcAww_(fWcu{TkeQ1Y`yc!S>A3!fpYvFtp_P%)V+|Xpqb)uZdn~nPgef1U{wd+& z4T#P*xpmN8o4eUaCXI`h2;X)wAhYsvC7`jjGz}IZ4Y)J43=Up;y8lmcVB@}wGsQ0- z6cm&C-qNOAikJ`)C2R<6$1t76ymF1&o>?d+4*|C5g{9qM~&8ESsFA*x+=`JAS_<#YK`Lw8T$T>boYK^*s&eDZe6;vBvRb!n5We6KMEgVsNxtXtOWP3$C)2$j+ClJeoxwK{?jJY=^i&IG|BYGwP8C#)k5&P z?jj(O!}b6IVxN}LNBWFzS5esf`f7IB|KaBt8~D-2kXT#zhuu^kDGEEA>a7RH|MWQ) ziq`EqmJDp4z4K#ANYtFETDA28`oezDo{Kg%!0)KwF$d!Oj}Pt1ll~65ORWvAAG1p| zg)Rp_+9)4a=hZ*#-Gwnl?vFa7Bm%+#h!0xiGy*P>@j0cA1?wsa9QeY#k@i}ZV7Mr6 zuhBw{Y~qN~%uiOuoMS#}6!!GzP&+2KI-HdT-B(awpJ0oT3-V%nuxmbZlN$_uzs0C} zA}k{EZODJXt6iYFqf?{_iIkeg#%cQ$-prO0b;&8A6ytA>m&O^MruB*q^3zg8KbS={ zjuHLZzwjm0=Exw;YD(eUCrZG)B}smlI&U`aucMR&1J$UF%{LA2vs8{jn8q_M+;9MX z)fQup9E8D8c7nFAQ4q^#tG{DMDUr@7a-5dBKJ)jpPqh2>lJs>U%HMHEHs$F`9ea2G zsI>{dAM^INc182vcsr0r6ULU}A#tm+S3s~R+UJ7-szyy4DGB2t;RHkxSaNA11QK!y zZ1y7p*wV{mK0g9TNLqLBdD}?viv%rj#UHuIGn6=Kp8C><(tBt8;y`#+jkHN~hW)tjYr(*m!Dnf65W)P}a|p^W=#OGe zzNC8XXaD>4?J6mHQ#UeG2V-u_2Lg3$J`qqPU%wn%5U24 zfUUdNP1CbZvha3MD(C4>wX5t{7=h|MD1hjH_&LJ{RvBU9k7l!N48t)hs+E>G#?-xe z3oD!UkRqo@n)#}p+4;UpF zQ*LA=(gUVP2_N^8P0a3X<(l|-a~CeH)g}m#pQse*Ot1%+&2U+s+%y;%Q#Y5@Tp#dw z**&t48r%$4^sq8oe;RXF*@&LMaL7p2Yr&~DL^`@nEs=AtPkkCp$r&Pjy)o~}F(VW2RIp=5rqP+1TH$%9cxoynE<&+?f-#lTt{ zH=P&yS$60nHYoM&5a6OZnxFGW)ai}T&71hNjH0j>H_-z%&c7@Xdx7zlZEG#8qtbt< zovOrjOy1~QHvO!$F|(0K=TAlZHwb?j_U=5N?G1UUURb-$yBTHyXa>{3EdtcUbomx5 zuc(8LiO3$gPN7y)5E|)f74 zl6=iIMJJm>(!k?ZW#S1GjPO{cweijbCcR-0e$j>(Ni$IlFKG|(ZMM)(_)WI9h1$vL>*gI@fZa9@<=w_E~P>WH*@T-C7lXAv3$4!7}{$%9ZeyP-on{fIw|Q+DFJZ38;nJw4;~f+%Kbcs%pF>fr-y-?#?Y` z#9v<{C~3=LF*d`yeNot zvvP5}gH#%sbE2qd27Z z#K7B1^(M+O)fDk}jf< zO3m_2qSsEDs!Q5PzRPCa$}+OqXETcGH9@}3P)&2Y0z5yRy2@$T)P}th$C`|y0%r5Y zM&sF2HIi1Xo?-sG{c#U+AbIkzQY0KNK3fsX>csH><0r?`2-APH>Q}-~G57P-^e;^s znnQ-AY2E)uCxR#Xt{TS79@##hJn#)Z^!&hBKu(!j8rPfiZ?(Jbk*cn=;HKj{&Lc`Y zJaw1#!IK3h@hj;d@2xJYsh-dO<`bFzg9xF*Ho-(S#t?}J3DV`C`|t}vegv3OnX$A*ILN4RliNiakrDi zG+Ciji=-b{q-Vhga5|j6j#Jd0S`&86G_y8J21}ZXM2AqRt3M*j9<^O2Y0_jYytN1B zvAS}L@lE)e%G0FInCjiC1gsf0+i~JE%jH~&#@JflYkcA~o@LtY;|s)Zj$zmm<#4MQ zO)6w1JLICw5YeQ296BEL>h--kztW!E0uG=ViA&2bgeXz46hgzRGXzwYR9m>Ua*lQ^ z{NAkAlzA5l#*pLVBd7Btt*H5s*W+2f`j!bdF*3YDQsZIw+NsJFQ*;0y@-kU(EJN6U z$6G`42kpIo;RIkL01!?Q1yFj8z#54vVKq#a=Hw*AR+<76Z~4~%;LPH9Sk*N{IfRW_ z*k%=v;a@?vylzX3cH)iXa|YtE2H4+;-MUl{o!Nf745kh^yi1MOqbBYMiRluLQGXY5 z`)omvTjfO+?=Lqd4n7v83lFNzbi}&=lXcDMEF@R+8n}2qu4_-m0i4w1l9&YO} zyJ#|7rnKoMOB)+vyb9p7a(JUtF!3C&)-6DO{Y`A>S=9%g=t;U|-G+Kqrpjb_CUbo! zapzKSY#F+SAA*ul_F2Wt)ZvddO`CS{GHP<@4IlFek4)aJGi31i5IXj&&snFiXZt)A zddj9GO*zeC&PnGeXfq+mJERS)ds^;ZT^|I=xXjw7jxxDDl+iZ?c5!h3C_bS++RRDE zoP>;}O}Lip`ugnej;+Ye8df6L9^`8Im&maq0a%)r=*mr8&`KzAXuBvmQsG+!hmq3y zbA<>^ti9M()iE^>FEY7d1b0LZ=wa4M7+KQTMf$tPr8kf4@0(ziuMu zWk@e4qKu`0$46^InG@gACxak9u*O?c;n`v2#$8?_K9y6;WVD&l62nP;uM_7^U)M?B z`*Z0y>mGZF^(tqcr(>o3bX&E!?{??62Y5&8bSD~8hba)+TF5N&X*^nbiBzWx#!Mdw zMdvsVMB{im$M=<){LLp$I@eO?Vkj$jE@q70v}u zI-8i%FVJz3RA6kGso0sY$mCGd89?&rBv!R4EEZZr#olTS`a1}97SbosLC7YibC6x} zSJF^=en3=!4FMjwcx<%eRUR40rK-6QYt`U&oq2t}!9^BArxLOw9dOnP-^lmxHke4l z!|@rC%Q|;;6(84q;_$Y|0itvVxvaZ{`U}*Ge_f z^gr__t0S&TeeS#yZxcv%q;m%SvkAuR&)ZUELLxCfROA37mHu4e6!ExBvF0v34I;C5 z0&E1$;b_h;9NLl>iqDr7hb|H$uY+MyTElk?B5*(xG)^ z*6NHjpq4885kQ$#O@g}&+oqX=C3pJQX-+9PZll)Ym7VQ8W1!njwk(wiiruqW2l<}r zCqsIs(9$b}F^Nvnc~mLPKDB*h3*o5-GAxWSB))Iy{q5-c zwM|2G_rWj8=EujAfW1}i$X@|1BuSzltF3jE!QnCg;pYe&&(+Fc&r7S>etdcwbz}w_ zcQH?H-j+q>cuL38S8ziJSriSirNrLW3wxS`Gv>cxc2Cx|jMW0k;lFPz)M6b;v%Kd&u)Y7b zJ`dO6ao&f*%1%>)kHs!59~HUz!f~Q^pwWPmr*svyEZGZi;FE-gV_HWDVmC^S{G`M8 zNUkh#*uigIW1Q-ye!lL-AWeI5W`E82#iy~<<-@n{ca>)LuYCc z+P~9cM9j_<;vayONmS|bkWs;U3aAz-REK#HOcqbYam@L*NdBDv&f$nwo_0fgmPQ65&o-9NLYQmuAr|BZXng;d=?| z#G&;Pm91ONKgT}e=|f}l{T3(t)Sg=&@~HCaIYffP6Iz)qxJ=Z=LK7P_VO*%T(Q#vk z+^mA^Wa9|~wDwQ*l~7qB$*gEwGsm5!ySknc{^oPezuFhhZ>Q+xFpRLGbRCnRw)Bv>EeR2m%|LuSD38fb%1D?L->Qna=y7q9F4+uK^`<2}=P2Z%wnG*Y7JIbfx~1OD$yKp~r=8 zmOkH206UEO=B5tHdGCbtMfnIY`#Y!XrxaecRe2 z8rj4rTx{@gIjv-k1R$KS?aijTeSn-8WUh$6M_fN4#F3|iceAqe@BFWP{ZBJ(-$O5t z%Xb=ulb^Z#trP8_Xm`){fA}|O(mS@ zq&d}j9M{aue(K(M<#zclk|BS^b+rgfu*WV$Vbf&ekr%ys(4JgH0_c-DUgKa7#UqnR zkn=;tHCRe+BXM=knKlb}&C56xL?sX;Ndp)mz66Ccq8zYfzdXs4E(*Yl{j97R#$V$R z(^%jRFY0(vpN6GYsj-p%xZ<&s({nh3nri75Q;QKUWlW+zcl(82-TJ!6DZI+$+fP>K zBh$Vlx3GmO5Z`gEBx69%8l%xBSVozD`_%z;nVo{#^D%Mm8>JM@&Xj{SZmiHgwtD_` z#?N#kyDXuOYy!P5%SIc9nGG(ZeHeNIn+`S@fSv8|tm9h)hhyD>`~@$0{MGI{i;H`P zXQZ~nXHJ8}w`pSGqry(C<<#NFJgsd-DyjJC?`7MRBk)GL z95EDo=c)*yu(IBX)aC-aK>WQS@uQWedrv-3Yy9=y=B@i+yG;jq-Tn)2R_Kv~pP$YYD6EQ7nG~(*1m~t55Tg^&Id!I$sT+-7Pm3$wug>Wrt;ivfcQR7ufWYg~v153VPTpp_t zXu`zQvjTq6d!xY8rOLb;rYLAt33LiYz%Mm(BI7qBNA}Sdw(Pk-!n&9BeeLN?&-2x{ zS6hTwEGREF#;$7sE>R)?My{P8oM524;KArSu5N-y_jiwb0}EQKo1!A&Iis!C?1)wz zgE^PRUy3(9S9uh5%3nKrLiQfE3#|MXF_5CYAE?-8D4jt)y8piYQUvnw(ZXWmrTMS3 z-$Nt-yrqfz7ytoYDQ~H-Z=Qb@c~3UeQ;P2RXpuuEMM9f2hS~K}!HJfqw+hs$#dI!N zmgsvGT`!gRo;~r1XSOaO#5?i66zK3^_G#N5?k9!q*sR5#*^o(t$p`g zgMJeVulN4^sE9cL*d?9wr-r(P<6*1g0qUEC-B9(iPqnZ~553Z?1xZ@;?Q5I;;{#U;}MmFPhfcMEiJ z^Di(z4G<1c-NjXo!6OG(%8e@PIVxg#E6Y6s<#nx6hsQ-!h3~mx4=U}C+1ncUv2jllexOt56kDS#9U3P)YVO-`VTL|67x#BzIjbEtEmpj)bc>iH z9sB66UCoIyHZ{8rh{{6jzmZu3v$}#hD|B{aa`~h7Ko=qST#AFc}>oahVeaIa?KL; zBriIc)(-(-7{)Q#A?V9e1THzARQIqsYKe;Wz!?u1i)|&MO!z%H1L4AE2A)LwYLMj! zT1prhd*NIXm47!stjyUnd#h>)qKzO^(dCo!%p-VIp7`Z!*$Mo(pOLnQ#8B(pI&5w0 zS)Xqs$r4$YkPqXts@cIDMp}*eKkMxq)4xa`1=N=61PO?^{D+^NaQsZSb^XUI-m1HO z(u{;KDqSDDWW;+}J@lDKM7~XhClQpm*M&Nhla2^$rZlfjqO%l-;>XaC5k0TqgF62d zi%MQ7$9tx~)v^~vD)E&1Mv)Ps=g2uWNh z*IGcJwZ81IZcWRrKd(L8xO?l02f%{U$ySu0;PEXxj^X_W3dAW@o#%JvqMF-QlN@X>cIgI-7Z={gGurD$aO{XhFC|y4P~CY4 z3@7+SyTzjI`b(VyNq+xZ<;B$n&y-O91>cUja>t{NufpFAa@-=HS!mEqHOhcb*dO%) z%TD-BGJu(^>2&uSLGHW93giH7;*^*VFAZ}GX;?WOOKRmUXPR68!_NlBf5&vaozuu;b1kN99~`ri<7zpKw*I)b$t`oHBPSVXComUO9P+Rlrmq!_5k4~hJ@2sv0hxdi=y1));5b?_C4yBUJhh-R# zv4&BtTTba2r6{k#!m=t-GRp8K6L%J1UTpx4^1rhp0Hy-xS&2(2+O@O2y z63fv>2qCrWiP(V-s7v7eZVoaK6^u`n7-*T?Uof$ZMY9{I80tpijeQw`!c8Tri~AA^ z!Y{E*s+(Uc`0V!j3b~o98N_X%DtMS8-D`VU)hV~ydUXGBaIj>!C}weKB8x%!nw%_) zPTd8J-TExbzh^(M{>lF6!Syr^JB_$gLTM7bkZHPUTXw;Tvs-ocAAT+X4qDb9^dGAa z*;M9tJ8;I*i3A#xw1`f*r0{S@=aWZz8hti+BZM53i=U!a)K+k|m0FBeN_2cJdRgvn z>IBu%txCwCF&`?E=ZGz)DV;$TG?3J&C=xwLj49R2I@G)V?G%S&E|9RCu>8hJ$dQ7< zK9MAXi4IYnd9p;ELT zk`y9>k$3Afm7}APY0Zw{OnJ6ltTp*zUHeyPq_gwnGE?&Dt1Ir6MRwi@lrZD;v`En`LqHHyy6DDIHGk9zrtY1SX_yiTdG%UJax^Q$pE;fLkN)e8i?ANLyaTMGSE||i zr0?w|b!25Rb25N4ZZ5}zx=sf@(XmpyG2Kp~vj&00wPOTR+B`;r-sd&MCig|IZTz{Y zdg2aBfI8RC=vj|#oyOxee`@RrV=?wD73AYa&s8CX^}fZ( z-Q~CLpVoO*cm`yYjAR70U(xEkig(Tn&NvNy-G9~X8(LYJCbg_p*sW1<-u0oQt@VAU z^T;?p*KEg(@NFR#{9@+U?EC&`zJQEZ%VpO3qw_jBoeU(VWbesE+n3k`n!M~Sr_v!I z))))ytRvza{e>4>51d@ARwO(jgO-P+2Yxc z<3{C;@8QTrtE}LJM<|pZ|D`1VCe{eHCnuNOY~|3S$vAu?$`BsQ`&HfY=3Ba^xW#8%ZVjq^AsqF}>qa35+NLHho>?G*!?+X+^v&u_Xj#PLNB}suY2`6Vd zVwgIEnJLhDH=e!E(anmA{iI<^x;=Nu3`IHq#;A7fWb%WUW7Apl2%*KZPU*4uM3i@M z^zO(E{|?(JgwzL*kR~YPGJlM-i0WS~$J{wI4~F**vx@Oq;-u#`8>-D`BIx+wYevQI zDqtn770CQtc~y~%lfg}(h%ZLck>0&3Ee}bZEf|#3{^I-Kd_E&hW}DOjPf?FNF}weA z{Y**TZPDwKjZ^F6Zft-^2px2k@wX@ z&~cTKG2{0r`qkDb#IwUV`Rz^gqGBo6i;G2i#);v@ONNMjh2BzX<4a;kPVB>PL6z)T z4p#!nBEr=Yt~IF2Mx5Y;&f^cgy%`;rJ*`)Ls%*Y#b?xE<=Frx18CK(#rs9bKxjp?) zs}}lH8aAmV zrHby(lA7Roja+Un zCM}b7_eE6~giVEykBe3epNCu6g9#~_Rmk8A*t^8tn^k3AIq(rbFz+l@_k{FvBF$oj z3E2~<#-uNwlyIcM+pRTfvRDYU^i~FmW&%uAs4Pik9PiUpE4M78ax3Kun@=k6JjGF5 z;xvi^F|7{`y=A#XxMqhS4xQ#ygoBYTt=w`5$Eu3{p_*I(-2Tdvup)v+*f|Al7CrTE z4cSiKZV8)6tbRIe04)C~i~yD}2hjN9DiFI@sl%3pZ-YUYm;|7;AyS0=FMnZV@hw+) zG@d|BN9%e~v9YwOFAdHx^PeDeT`lJRhZWbt^!%8mS(a&{aDDk1En;sX-~A`IC3Z7< zmHjbe0vs)IC|EhPVm5HX7Hn!-q@VMzZvLllNP`Pjvct~_TfoyKy-{-i0yM6Va4hXZ z*TdRrz!2sG0DuuE(y3Ie()|!xfhOj@I;<_c0rNomvRVpAyN+doNb_+)z&%xY$c}h< z;u(!-5FzACu_Xw(#=p<4;l=Ef!Fj5)ShIh`L+R4o%uZpue}WFK!1f=ioJdm?X1}VN z69sD)s2fyHr8`CIDY&Q@xwEB8NV3fGOhG^02w1Nah5k@Z+<2!=_sx@e@E7HbWC!=Y zB{W|teu+{~U-T8SoCmC@r{^yG${IIJtT`M2Jkq0uF|JtI`wdiPM68#YSHwHY3^(L* zrmL5*CjdJhiC@#w1M%90WTc}-7@?30LkHzXFS{zccN2^#+IG3t=!FZKhr5Pkr-$l? zzX;qhlBl^P3Y=ETabNm`4`>@%AQMhCsX9IXCRwV>F+5vMg;Jx9sJWBSQny?b*7ihJ z!bQ05WU;lCA&1Jr78bSHXIX2jDDottVl5WU0wC1D5^%=H)+U~+>|r37aEzh!0T`-L zG(Ktv;h&MLpb4{S;TBpZdzyT2Y+?rO57nz2sT7=NDdoo7u#K)oW=mCNT|}gRzDmKc z2^XR}w$P)G^3DdG1;=jD{&B`0f7#HJZQMC^g*tJ|f|IQwHrU}v!2jmY`*^@88$XuNpB~(r%_O20nGu0VHJh$xKM{F!^ja4>rv$Ea1*Jkc)afpC~Q;g_?br!$)BS`xH z)pC&>guMJ0xO^w`765p*5(0jQHTj5+q24oazElB%wS`5Hn5zFNXCW5%0bImor%>^v z9lC$6l;U@am#uIdvw?a^=T>f!qmnhtY|llL|sSGskrPLVx7 zV2YLgUpdqdoJsbEAt03Ft=ViMA?3VBl^NC_Nvqn^a!2#_+V_oN_w8Q`j;@V0<0aRG z%1x7gSm`*vWN1wru{nv294;@LvT7wFD;oj>EG}~n%ExnbX+B?n+XR~s$Mnh1>z5!b z^1r-}MJ*AdnOe2%(WI;ydKfbog0%hYUerJQGR{Xt-Q&DeoX1&rrbNy{Gk;&d82rnI zJA}haLvRTHfy)GqYVgkhU{uhfA3!vMl&Fj(5dXr0LK5$$pL`T@ELB^PeRdY?rt%mh zy1ZdG+w=)50>&Eb)od6Q&MP6vsPXYS!l^JwdfU%Aiv-A@o2qjd%gSNpES}T^ z`!|tz*=cxmJakDtdlW{?%in#ueEvR)>n5`({d zEk5`8(>2f-ftB>WN6orLTp?R2Kwr7DpS9>g>52?PEH=TsI3mNLuTU>!3?+!znmqycp$*TYP-hlyLRl@#t`duNS%%to+|NZfkS!DM@*yaxT~>0y zaT6IqhfnNeP97ejA5fn7Xwuey6tL-OdE^G^`}Tn zn+0G5P15;9W>24{<>wSLy$;fZ{|;o1&&nPWHwkA#qskWZ@US>yDQRbQsIwMd7qcte zjp_WgbK!U$D=b`3pGwuGxox}tB268i)@2_?lsxc}x5a44`dxui|MZljq;iM@RsR-f z%WI>!O17inK&JIyfwP{ZV(3J|K@>YxSH+hFZI}JglQZLTabX$cm_qZ;yocX^`Rf}I z@S~Xlj>Z#8)2PHo8A2A?>$gU;&B0SlBqvveU}vJVObT3F;&u!rs)Hvr2?imid0jma zH=^%2yK$?*R@u;9ryGm49yU47_*O=@{iiaM^Co2y063(iU;k5huuJo9V{7Xk_TVS> zz7wFL{BAZ`1By*!A2~La7>}4ulMX6C;*e^cz)Pge_67I9TFQ^$UNyRF4{o1?pR#)C zw0+qj)x}5X%Ij>X)BAvkXO8#Ia(&UW?iDl+_({M63(@L*K&9_su}ZgnzUrL0zz(vb1iEhXBpRZP5(%tl3A5JI4%HZ9SZl4wzF2{IAktgNa2 z-Y1nFe{L;J9*;DugR#9U)6)9>zWsUV5jJNOz|+BoO{X~`jXer3n#eEs3jcDO(u!3R za@I3DcaFs7?6OCP9=tku?(3YarY`t%c&^d(dYmpld+ZB)iO+@Jo(}-xfKWG?Hq5$v zyLu~kvGtW?A}FQP`q%mFOGWqZn$s$u^08~Q7^EqMO4#s{>nL}>rOCqOIs*VzlhEyR zD2cYaxOzp0X0b%p2MTUWd|q9h%%fcn=_Ys@AfkvKjLmtyQ_CzF_}qirTv`|PKm1_h zkvkX?duiC3RT5?Yr@#8q%ao)!XjmOo9}t~ray#^0!8EswgQs~+QBNGm>SL~gGNgtO zlh?)-yRL$G>tM8_jT3OuW1cM9%ojO|j@OYweoO}siw_Th_xEs2C(H{)JRjzChv3qX ziIPysjVj_YU{OP8(h&%9u>8NGlHIBi6pD8kE>0GYRZ|&r9r4y%eY}`1r%phbtAntwm^xLfJJ3f(GTkYuv=vTkE*Mx)hvNU6lnaoRI4D~ei*?3j=w;%Z!nJ2wuYqJ%6>1f0$xuv~NpnXK>+6$st71pI#xG zL5VjdK;E%LQ)H2%2&UqbN}JzJQ0t? zYNgFfW5Lovq7j21nv^iTM(DO|7@2EFA&1FnPjd=U&*>YyR=FUpX@+&Xig$h+4Fd-h&w;or$G()5Z_*nVjUli#oQ>dv8+DMwd zRKGmceo%D&mxxIPWRZSdK&O%j6L;so>jG_@P(v6E9|MOPX?=)rw?h`a5~Zdykg8`- zJ@P|DX(OT>X~;sT4`7%`H_MjEc=Rqm!6Z)2nmBP92O%b^#UZo!gfi{wbJi`Ts@1@eT!d&9&UUA4SBM3SQe;mPl1E@tmD{CL%LzW?)3`u^|a z=BMi9Y}3D|j{q|S`OIRV-CxRtGNih0qm~HNRVcMI3dfNWF~;2Xcd=$iDJm)$JK;reRoWWiH+MLKb^J-MQ9oCgo3;f{>S!a-4;fU z7EVpWMEyAzmKsu&D+fLVMQquD56`_ZXrNwZBrdIse1Y9yUUWZ~2p^=R;!00~@2Z4?QvLSSP6m-Ip<3Tq{3Y0QULLSd*De>7$TaLyQ z4-V{H>lBq)i6<+A%vF^E!@mcnt^J!ia9oRemfAHBTs3SC&zQwviG8et59eJ!yX(@A z01;^b0uFg1Y-udP2pvRv40R6o6bCW~M+vv&9X3v+_5Mf7GGAIn6DF#qvV?(_%>WS` zby;J=NFgPBjCYi>&aK4yi1M`IX-9|YW)R0B?M}$zha5@bva4r?8^0?SFA#osX%hBQ zwv95m&mKn>*mG)2&lLAI{Kc(H5nHB6%2CR{doDNQI4pQG>sFE~_UYd0Rh@_1T%zDNm%`-lTp5KGw^8lLx0V5mP&Et;nL6n;j^ohQvBc#7tBsVrIpqy zGhS6N8_(#CWUW+pQX_O(Ik}_jDbw_%%EDWj|>TlCX@VD ztelDZ_%Kq0N|h3b(agf0q!EFTw~jSFh669!)rin#DxLiAo(E%deuFrWvXrPiM*k?T z$xfJGudt9o)@FL!cF8W4F5Q*$t5?rvxq7BX$}b^2&`KK1%$Znx{~-Cn2ARh)c7FQZ zPLDNb3Y$I;jDC-tasK#WF5!D$-u<7EhBUFY{@5zPolHWNvXHIalz=@q01nB2`1u-+ zM`UBL9AxK>ih-v%?1fNsM;IpeFGiRZxnc5`X#+MPK1z`=N!jvTR~`fmXQm0SUuB6N zK_E7FU4x9rLdd)t=X&}#+HYsk~bqa9g6mw)En*4MGQx)MgNi>9<~-=CcoO{ zR}bm_`qlkR8WVkROTJcV^r#Cul)Gjn(b?LifjCTY#uOqw@7aQlyXmDvgewVCQn4R9 zvE_W_j$18~%lWAj^R$7%CK?xEdZ->B))81myz>aD723ENb+ESeI~nhtWxS`c5WYJL z0YPfS7?<4s!jshecKhxFS82Zt1u>ibeZw=wTzT%g__}mP)1qqeILam`ySbQ%K0(AW zLx{3f;`Ybuf#YcjC9?`F*-+}gdvL&ii>jg$P9M058_}FizNH6flhjv1C=B#rMHhSyZPr!r-)Er{5Q(xW{Ao}&ZuZpZ8N5!iB%ePp&JsWPB^X@ zbfqHV8cU3OX;ZRG%hc7Nd*{&Rnc_^v1~g^i&7tN{7eI5rwU374Sy856CEn2 z2SoObep>_6(i*Cs!%G1+{nL;;D4D=F6)}OY2C0LuVjdRFd}0wEl&0rm_g=9bf4Vjq zFrXo^MLK;WAY)OBvd+9MQ3-=V zWGYpcTEvlS`>HR5Ge$^M#jyJP(u?DMP;++h^CmX3y9$rg4h4)Az9m8V6XN|JM^_ow zc>Fy3ux?4&@xU|nOK6&i7J>b?oQYtAR! z!HhZ5Hg_Fbyt=s*e7joMGg?V0fQ=F{-4xJz+sk9;LhUWPerMuc9+!Du-?u}4f|T&o zuCvq_%cEP=au;iCJH%+{MYbW)DHuHFFP}70PXVdElDPg6DyY%GrhkRC#=U?w0Kfv$ zB1ZntKW9;BX68D4{wnTpMz(&5upHu!|8zK-*C(CQYpZ9V_LQ9y?ayiYv?Q3`1}rEz z9W;=$?ir;q#6)(!?xp6gCa#)3s$#Jm{D4-WlK+r}aLu*Ae6Pn}|0j2tz#ktl;Dvs+-Gvu!LBb~U3KNl(6A^mY zF|5q(EhULj(h0tBmVt$H==qJik2O>WT}i@}>Mzu42}Isb`|Rpr$a2d8Pxhqn$`4)DjjAEY54k4Bhr ziZ`mxwEywX5%6Vyd3oAT`J2gsQQj*KO7h6JsGo*(4ww6f zs)T^_Lusv?<{Wvvut>aLISZ*W@vKH&tRhyvt~?}~smjp?#?B#xlq-z_n!e}ig`RVG zvhgEn6yX_(<&!J=tFOA!XHPpq{t^+CM3cZnWvua89CqV2L_Yrc*!8^@2mmBty$rae zmcq5_(4*N}88FGMO3Nz8P{Q}jeO6E77yB7hTS{x%q7_aRNh`!LE?PZ6d@T(Bt-lxL zmFM&`(qpFXIkELWAM$y}yuGfwr4Idj;E=0hHi%>eZa#yl#$lYysoJL<3N^K=%GRAx~1!f15+EE-Z-XskM?~T zRwVcR;iuuJ2Mf^goiec)Ih&YP*DV%S>9>NqQZ~S(8zF@)l1?jnVvFU@^Yc;puR3>3 z5;oor*b;S&6w5-QHxkA-znAReuJ9Qy+Fw z&<0BGtCY}zuwpWwi;y+wCLn15FP$qi=?eo&JoWN1uc+e&5w1)}j008@#lZfECfEDN z4#p16){*vBC*5xeo6bD%^|dN>;>)KPlg8ZDAu$Yk9aSxx`Fd`(N%s$Sz0r^Tv$NR| z9^Ko81^2&||KVpn4t2(Kna@wfU2Axw)*{M}3^i19rbSd*E|Hzz8462QO{jzY$agsA zPmwD5j!VBKF^Gm!PKW{ETqGpV{E~l!4(D&Oon5>LRRFFkH?c`orwFVsTybh!W?p5a z#@n0~(ybC3<76{&N9znNxmm(lyU0x0FJ46aECn{7LBk{OkXqmia>(Q5Jn5~!aHX)4 zQ=`e@#j8k4640T@HDPy7;I}ub9+$f?$P%CDi5?8&`3;UXS z#C(PDe(ZCKhnCDP{(;|yoTaUAGfB`f2ad;4NWFCq zRocQfhJAMyavC9H)KxW69gzwz4nD$~rIm;xW#zDpUs42~tJ@X_ZOIfDP|KHJ#`KWmjN;C|le2}h zOTiLS;rTyY$m+wbFOwyJm{1Lr`jN=AdoTvIAUTRTLggER8fFs@p?*oEP4~oTFVg-@E8rRm z1{BDtqQxHM`BbEvis}O6ExE{4%^Bg{Z@g2JF!h-hUc+%qpj?7wPL?8Kw3gfoL(tUk z!u3s#TkX@yyJzCoU(ZVV8C+PzCSw&=_Q(t?=VmBfGEAu2uNtNrf7-1ud@dp%4TZeC=Y4qOnJH@Bdb+zL={}q z`eL{BLAfn;K$>>@P~%zSZt1cd(87n|3DI}iIdH-A0nZ1V(95>@^LW;kG=j|POkX|=TTRL+wWWEMGj@peJ?G4IZ zIzY(aihgn(Ny&+?Y0P4B58DJzR7>@arcDE*uQm-I^~$SaP){LlHeT$7Tci3*KLk|7 zm2w{3x&%<|z$z-fK|GRyLH%|!bHCa<^EBpgIoiqY{FAj4CV#Mj{81CF-~AX1*t))c zlmcPA+@}KAG%AfA_Y09Z9TUc|^^fo)Z5%ix>UuB|S z*gaY`e?wpn%W2M>!LCrDd<*rEhd9Z{^ymg^e|_pYf3ty#ffPzeBSW8%NG65CXHHFR zg*tl9>A(kkn^hB1BAg?V^6Hyx(sI%`u?lJb0gxpLt`35TXOE5}v?81c#S;+!0rEuq zCah21l|{3x4e5y79bqo7wM0>#e1GF+W>|TI^^JQ3QrM{7Z8KS{uvsSDZfce|FOXqW zxB29~`QyKfzZ-9DKYgpKEHb~+^i1GyjpwAsR{W?~Q|b|+;?sE8sECv^1_GD^oDXlj z-}sx{)I0oml#DzU_{Tpx$fyCPE5oV+OL}FLvs5@Z#1dYHxXp`;#>p1~1<>77dv2#< z{S4I5F%fPMA;5H>`2!zP#&B3*xI1PyHYU|JNA|Whey>~qzO}|^_J%Xi}4g2aOQ3{ zI7H+?EDl^V`L6Tgy+}izOgON_Fm}auJ50@4*GY555%gKB)9}UZX+BGPvWOLV@in); zS?Wpss-LKC%}(pBi>S7pcw*=xp`2Om2xclmPw9dxA+cri=_Q$EwxXoCP#1s!dvR(8 zp!~OAOspkQcS|H z$Mlp~hSn*tUO5Y2@kOljvJ{WXnahqPr&(emRKthEr#OJQ8_{&Fo%HAOk}1TeByB+R z+feLEed0%2_|S-qEGk|ahT!8Et!0VUiRP0@=TeDBRV|~>uk8KZ(NIO`6tA>!P=YqE zH9EZwRZMtY^iuqJQv6rZG@;I3*E%8PFAzTSG=7jo4TN0etM8uwMCV!UE z^i!UjC6rI(1$OpE5s-s8hesnx>_i)lDC+AI@98lfFuvV*0CY9C(&xpWrsNszj1+vI z8J;yBukl+zt(@DRZ38eL!mL zusps3X3NB}V+T9QIpn?t7m?Z{Ks{@<1Si8e^Ad0nLGn!yQui+sF5+wb5SHZRy>6c4 z=TmcBYYM`wUmWvYkWT=M)Xx5j>+d)#G?Dp~kzmA-mhMTDdJ1jPQQg9ruz0{8RNKt{ zE0Ade+N}Iqd$?FEORcF}Iv>Y~Jf~fndwM;&{aZ@B{i`C%OX)zx|5z4Q=CC1$#b%CD z31f*Bi6pn4n*_Y3gv>;w5;Jo$^2)v{{wr;s65>mf2H`4VVQGLfXWBPYT7hPkHgS^l zs|p2w+@p+^f5n}*x@db>Bo@GT)ETt0YjT5_0hE;j`e)#g)0exi9|25gX&4nqk#kZd z1k9Himhg(O;aD{6R6Gg1QfoX2njE3xQ){l5ARyFy4`di1$cnz4p6YN1BmvNOuYb~& z+3o119ht0DY|AOdd+!y&KAQ>RC`Su;l)LZn_0V;7b$#DqW=OLZGfGkUq?Ue1(m~Pi z%KIwOd522v-S38tj|arz9h~IsCA*o&L#KLMt1K`7`)GR}oQ+A-0hxY%d0s!XVUGf$V>bZet^EI}JtI&}zcsHv`b#Z4Q#j#F*Y%01+ee0KeH(BC&T7jLwC zJF^q&;J(v5L=Hz&I?5qwcS@RRqLfG;Fa!z$U_h>2Yp%Rr0@RMI=1%%(n~Ga@G(q6XBLO(gSPz> z*DzTax42Eu^O{v*pjq)5!pPy(^#DrJ#lhFK;vLRY`J1N)bNO5!Ll&FdLQwyDLqcJj0lUx%#%G(O;&J6{c+@SLu0ErXPBPo z01MogSey!2_mHu6Z;;`nT>8VhS_Hk_{@>EYqMI{A7zdw0qI zakamGXCj%&Qe4}olBMh`29aRa?I4OfNNr#)2XI98KEDROwH+%PvA*ttOu`3G#E0#`B6Bj?DqVmGC*sqz0heI{J*we5jGkYu@#ST>_19k?FnE<|iQYOm?HBjpGH$5-sWEfV+p7y1BZn z*(z0U#9bsmLsqJppt~qK&@u~GS^}hWrv0P4d-H>9Dh>~Za#p_GIV8>RYN_Xs&)@Ey z+MMH#>UZM>NX9U$4J!!0scmdy;d@URAc| z01Of-0J0&{jyI4;mPd@eYyT zTaFm5t1=`|nnF)U0!u-3Kln-1NoW=c%@}eu!e~XVq^Jps(y$4#KwJ7Fuek>mN;?R@ z)C(($@1x#N7I{oNywG}teY&j!bZVPJ&N05+_p%ebD15P#ietCoD}uIF`H9A>Vn76deynZ4SD(V<4PqZ3;T%b96f5pg&CeDijbheLH#2xjX%nS z4-5(CCLpnUGD?E9FFBcUp8Y&=O1M;E2};BxT8RTL1u!5(_Blk#x*EZKJ`}kPJ>g~s zo5NGmY1#kPG{wAHZMpgmH(2ecbrShTGRrGzipF2MM+u4|zX+ja~d)>mpw{gGI z!w$FlbH9oWV@@%_Dr5G~9Yyb+oM-;}FhiIS)#lS1@+G@dinPR4&!qs;*inCfFL`gZ zjCO4?yM+;aQ~0gpjWaJrG@rCVgc zG$mB&5D!Xu@DKS=8BIC}5YQ?;#Bc)`#S_Iq!snzQ9dq|eP`VWs)mAk@N>!0#b z`4tGG3Are6kgO!%D4JNCGC-iYv4^vZysRk@f8O8ATO%LD&|Bsx!oxY_r^9~{8tSG% z#wPQ71f?}HZ6JF@+;|5#L*AfZXijIw2n%aEoe(Jt@nTE9L52eKzW|63Mmx-I+|?urxR9 zd$fJY#QiF9%f%-7AAY_7FhauCLmUx+{kmTD*+T%?V1;pE768*S(^;r_0pReffBDae zhH=4>QNS;=j=Q{%?}WY_z5DmZf7D-6Hea4;s=~5$q`bgDNCC;+ z=eCg(20#PE#ck8ne#B66n?7aj$sO|e>$~K)7+A&j0W|T*Mij9(=4sV&B^Yx+57mVN zMG@~oYbLoYJo8HM_#$o7n=ga9yT3eIY%*dAGevk$-t=)+3VB9d*2|t$%$l_Hzk1F$ zOQ|bb^PjT#es|1XbVM18zw4O!xu)M#p6dD#eXh;qy_4;iS_65<50N!WMCh|f}O#NJ0pp!53D@rA^MuDS_K12AV z&0HvW8HAdg1CrJPM-rsL$@x8<)c6!zOz9n@I37!O?5w; zxKUJ0a6FRzKfl`!fpTrSI;=!v>8#|qZ4qWhNaJIg2%8<8V`dMIC^=I$Hk$0M@3dMp zCMcY+W5u%SanmmmSYs$-&U)~c6u?Jfa;8iSvgJ<~fS^kK8Qs^z3Zt#lwgKQ9- zE?PQ0Z)u6mu`z7Vh1ewsQRBso5ns7S)h4!7&3eA?V5}0_P`)zRbp7>xcJ|$l8BWN? z@@BHg7mE1#cm0BHg;yV6T;m)jcw!cP4b{_{G9;A~#m8#89=ps1Uj2Q3nokS*Rfe1~W;pWk>qq{K%bF<;eepy%NJ6iT&NrTX+w8jJx&NFK z9vk0z(EIhEZix|c)wsTRhvPQlHyg+8u%w4#OMT7jH7f;J(FHodR>V*ht&bh zK_I~{=D|q&V<>DSIk0obXiW@MY6JCQjbMtlBTiS*026PBA*VEFNv!prGJ8?18Yar< zk;hD$t%=E7_Jr)1_+(tX+K?pR;HO{vB6>uVYlOz-Xx9bJpBRyee(XJ%nEzqNqwadq z9`8eCx563Gh0jQZS1E-bWo;rI_vJ%}gs(S_uuF~4;ioI5^J0!#^#T#?s;{8+S^}!l zbLJ({-3?h2nXAEI@Hrd+WQ)sfuYwZ5h~+o6DqTsab_;~*60(SB38n=<3}bd&8k#kD zt^}^8pr*(xpZ?58nXoV(??a*sunDyc}QP9kh^(1)&$Cmc^x&iPMM+S2!% zib~s@A;-_Ff<_cOVtglWRX;rngg3m~2uSK+NcE$9!m_-e?fQ(NIW+(Z!vKI{MJO1A zW09f&!d}(_^f(ZV=5X+vhpaovOtEh>cZ0#GsvuCcB3?&yWw}1B zw)_tp+}o&&VT1+gHKigLiFrM0UxrA2u|~Jj&=A79*EmH@X87~>zQJJ&HYjqCk;L9w zWLz&2uDFkao)3#hIwt_6D2>vD?4R|!8g2NM_`=17n3xh< zhV&20{2i@|0jM<9kOkjVL`H(7sjQ5ciC7^_S0auyqH5RqZVOjC`Gk1r4@qql%bypE zkjPnu=!f7g{ofLedNFK&7!9M6c4Hz@$wylZzV#dJ(`V}SuFG)=UGk4iDC8@J9h9|syc1^D;vzcEUaz>j{-`|*9bX;1{dM=td2Pnl zMTu~aIcvZq$NaD4$ok3%_-_KJE zlFKv2=5xh>7Wr;sP7N&`^z3~JeOSzkKQnDumQlGe!Y~Y?OIfr8b=x1lILqgWaLjzX zP&)Q^YTU;7`^N6_VD5nX)lTMLW9wC+)sM6reP4?y6r9|o3iH>12*vZMSo;~wI8Xwn zREAw?Rx(vYSt2KYWE&6#kN<1F?`OLl z&Y20>>dtpLPmNXj%1aj^avdYBI;O5uKOU7{lQ-$4;wXShZsYM#+f0APV3L#o-24v%7kO*@b9DK(v@KV3BnEPHu z<&7XpaRNF3lDT#Kgj7ckJIvORs zG|^WLKq!Doqv=WZP9&`m^eB@~nbPW*YF&S~_RVBnT}2d3V;uhAGa}O2=>-XXmT38v zETcuoNBc$H6mB&gFb^CF z$E1_)`(Nb@vB6p<)={G0KmI8SL(w$Rvts32aAXdcm0$?b?DsHifVvH~Qq;CYwS?89kiX#I>n5*X7nyXTylkzwZ82p#b%eku_6j zXiUcG^`;V#6nCWnfLGS{cSn~p%Wx9*ZwMx6S<4TTx>b5r7A%z1EL1W=CueSfEf%!d zvzlUY$xx~kA=Ih7#dKYe6N}Xlm9pLpg^vy_&e$iP0{@2i>kL6V_4_Y*@avG2-ccXX z`D~mwhUg7GH+s(%!VXmtHpF2L)06h}h9j_B1(wO7urxUvL0hMOl^1K?|8|v}*=8l! zsrcgg5&j&xL(o{TE^eAq)$Fws3OJ3)v1IlOeA98*^Zn1XI>rm*A4)Yh#JL~4SJzip zYZJP8b~qangXVGb6I*U=$o#)kiQW`FyX}l{aBvU@;1`NV!`1|*%AR6~3|^Mo0jR&- zGt?3?siUUM6neMwXdK!LExGs_pM?2wa?aS%n_+D%w*DCkxY`>9FlNW=c?)tfmb+nP zVu2tzF5N!%gg#1FY+O2F=DqBU6V-FgI>z50pLv5RS+{)1`0>#L97Z7 zvFXn1HhO5F)+p(+?o_S8Tc5pAH!D{a)3;P-Wwd6BlkygFN_2UyQ_Gq9u)LA$n^n=O znEdO0yY2Wm>^8$XhvN4}xB-sZ89zVLyk%X{@d^IuMaBR6;c5KO&36y+y0LqX8=q~7 ztNX`D6JwDx6H`KR{ZXPcz~TSr$9e!z0aN%B1#I7*m2&pw{tJX_VRgxfA6rjb+x~;X z4+H>?C`$%#lmqIK#4mVLj*7wNzP384lOpCv-E^^v-)xs5S-u|O$~4LMyuoX3E)cNU_r+P9pW^59%vZQimKkhTF4}) z4VuWowU+l+ZIb&$y2fq|-Yn4a{J76@CH^zIuByAor=m@W8!R>4+uc0sLN z<#S%*p*<82Cg12~USoodkzfPOhv4FL?Ez(%7neN@cA3He89XyMDfV7HhKDlQA>u+X zap=qYT)#guHb|)~hhZ1p2MQqi_!w$QVF|){h^6i1q)#t-D)Boi>U&FrsN88S%~<^s z@g~}UoiT+@b>B>(*{-q3qkH=i$kX=+Mx^W1vr&Pj*k>t^t8yp+_>$#^y&Q)oHH!kN zL@sUlq}5n8%wd3`dpH1-4n#7PnN-uF0`wp|jL3%}1CvlW(6E5QloaWb9o=oebAhdk z^b5;CywZt$$EaX20JkjRvs=k}`@`ku2Zy4>Tm08+E`RWCT7B=HSic(VJ60J#3$aZP zRek+~E~q>Do2Q|;rMuoSn~0>(*&KkneEX~qiOI6W@tQ_cv%$*9&eTf@6B*0H2Spn* zI;?%F)>I&vG1ozIIB+k12WsE`$3LGDP@w7B6AqQThh1;K1XGlji-$pd`P}4G!MQ*b z?oUkXMi&BB3g_=?m{Itee<}F;aNZ3&M;k!a(?nciSP$CKAnpi?-@`(O4u>VpOIraC zgm`(ep2d}4=RV34D>0b}a%2s@&=R3D0G_ChxX-7SC4<=2G|oca_M}vE z8?7jGU6l+|hU)rAaGnxsURcbb$GD;`KNvOzeCYxM~fAhYH!nUTB%-XmLX*L%lzg8jp*R}VtKjPjp z0{8k1c&8_GspmR&fBpK?{}A|mhXdS10IpNm!SZ;M>OqV9XXX9HkJfy0n><-h|jLoqat3fTIAXx5bfMN~isl&900?R%Gw zoG7BX?#{seWQd=zMU;%++VI{MZb9CX$(rfqx-eqp>HL!8CDkO^b45b3=t+c~kA)aLnN!9`jTrMbN~VQteFpU6lMq5Q)ZC(p zJ2c`LB+SbqTK4n?psKWTKvz?ntw4>KT5B&^-Caj!f6M9jFr?vQDHRZGv&eyE{p49; z{+XO!41mp|kl{}dv$}a^O%Gvh6_B7%F;E-!EBoeduCVws4tbiA_6n^a!jL?b#~O+f zfT`K0(h2`<5`#$AdmD&y@1`{oxhfa+S#FSe%L$LT{!l7gP7p;5xg#7>aUsnJ$C(E@1ZfhBnNXOq6$BKj!9yU0P_=B>9 z_00v~YQzk0TEdU}KZ|yx?i0D5t2H}8e_gwbV$Zo0M@NzFZqh8;%=NoCtRq>5abEul zr2AakYx{CyO~NcNv24fVAsi(fTv$bcEBi8{!0cIl^1!D(s2jK$V*Bw z7EB5@?u|9LlyoWj1=*hyX8r;fyx&9|-v0L7b3Vyr@%HwZ7l*f+g84AGRpo8sSd-Z8 z_iE1gl0jPU^OOi*ajUTM1rlYg_GEdrSMycu1y(FezWpTWD&{w)LjCEhppE){Mweih z%_r=e)sTa_uT;bTwRNW~0CQfvZDJ`T6){C5f~o_)VBH}ag*QJhJ3pS>hPEV=nnewj z+q_Cu9&dsn-uHuLaX#c>QJ^#-lb;YaMN5UHs@&j<@D%9)n4zipXUdXCpHuOH*TcZ)zmEN(&{lRP7)C+#^uwP2jRPe7DXHb)4eEtprzZ9WE(| zLXT)JDxxS^ath!BWTF${@=R8g-owbm7a@a$hAN$7k7L1wf0oS+ts?g6D@HNE;Wj^T zv9~|o>!HeMf&mwG%^BVd_5MUXQC#>RB}Ox`Jko-h9RfzM#dxB4eR|Inusd z)%BW9dW9JA(%TB*VCG*6LC zf_p0&IK#SVRSB{|S9F z18p0;V|EsZNP;<|s#=D7Rn6k|`jYE%kaKE=UP>pV;w&Fw$ReY~os$0q_8@2&b|oXG z9rrMOpmx?wqT*r9F*9U3<~DQ!%YeAFmkx+e66sRZ$wG#}5EVt_q77bqi#Q^DQcP&Kvc8f>{L1x4$=;ZJ~r~VSe)V85g zV8p!Qr4w(hsW}XYtZNZ2n$Gji45y4|edYkLy@*D!K;VrF&Ck|hW?l-Ow~VO!D{HD#lvkchi4v+&4fBRXQENP(kC_6!_t`0FytRYv7C4qh0 z$OX6Ruae7RkE|LWxgd>!jQEBLV|LhhSjmNdkIqc3jo;gikl7^bt2xOKW8EzxbkV9J(M!Ij62Z z)nVtS`YIAHDZm-hXjH+(#YQfZ5D==J>YyM)^AA7QVbC1owF4YEci*$#KN8^~gcfg2 z6QGNO$Fy}mQ52^`18m@0at{vjj*HRZS1#&!5s9{vCJn*ic#X0IjCyowL0MeNk!VO! z1O$nYeP9%Mspg%(4i$}$9tNM%%g@BC8<9hT%C9F+snQq`ag%cZ^s2VipX zHeU}VREE#%Ebe(z;?!5 z1?TUhIYyOi==C`Jc9^qWwhDN@#nZ*&TgWyEH=aK0?Q~1wXrbF7S{tm&%#x8j7mlbM z;!|3=(GG5;-<F9G~%2V&fpNnGWGKTgJ`Oh_iT!mZW^` zdFdIe?VQhs?(5!1a{Nryj^D{g-z(oY{GNRl!S&v1a2fwAZwYhpCz|066l$xV?$GtS1jp@P7(Nk>=H| z#8JbS7MBx&0MFROTIAUr`L3I^jXW{Ap@N)x%)|#xn=s)hkF<8?t{j-+9 zTT>3$bm$3f9Zy6aOslMVanJ^@QAV!Jg&b_~giEZcX(J9^{xdfs6KBW9MR5HTZG6JX zQ9#FGqHb+}LWS(~P>cDJA^zg<_m*xq+{8T8Hdh5t!-u^}Wo)}qMiXa_k*~dtR~rI> z)$AEU!W97elxFnJ>nw^=K7b85>jf7M@k0 z_(Qb~RnEf#_Tx=M^$Btq0PvsCZP3i}xiw_u2aRcBcUGEGen)4aua1j)fJjNIx?HW2 z1&*cu=T6L1%`z$qxWPt&{?4@ap-+EIp=N(96~~G^y|?!!&FDuW39*f0KECEu$!928 z9ki12wG?96UCE)444^1XsL+_e36|ArcRaw|{9$RZ|KZ~n%O#*U6tA4PMhk%o@hU!q zr$mJh5`X~}UvfC~=t$YI3_OIC$$Src`&L-$CwY0tnDc?9H>kvDvE}i=ySdiMDXcLd z>Bv{PEeKsaQN9BxF)@od2pZ|ld3huJ&e5Sh6EbHj*1<=R$uD48$=SKQgto-f~r{~oc$039w zUho8{*WhU}+rkfuU#ly*B>0&{g5~?od+@UnRK|n0Pw<5t3zqhct)&_Q{~9}T&4nyJ zAGQoy5%j(cnosX<{m0d?*e8nR^nScm z%cIw;{cQG*EFnpf*mmDd>B>R;TK4F2sC5zvi?QSS0g9?43;KZan#VfW=X?>B*a?ng<6462v_lY8PmQE&+ zBVrhPGW2Ze!D;2!NyU?7T>H;D17?;cD*dip-=3J~x}^DPF!f#`ati-D`eOQM#ydCRr;!S%uOCQI(7>iEUu;>e@yiOQdYy_Vw!2 zYuhg0glEH=r=#INZcX3oxNq;TFvEgj6DcdSn9lYPe31KE?NVoNC?G${Z;f@y4J}F& za6q9Ov5pqWRnozc@Y+V>7d`t>tOG2K?Tc0FXPAfWKm44BL4TO&9Vqd;`^U2NS%ei4 zbodz8!{#vy$?Mvk$=%1wkNDDu3z6U1m((s_P(N_RgH+QD?SF38CX1%k_1P(!KoQ08 zg^}2i(Sh{EL7~wVaKx8)jca;93Ix)6k?o|B3{pd0i8RM0``msDyPqAI37d z%)_>w<^D}wcJ$(PJAE7~{=~kK7)va2Vcx5_qF4(3DtG=5__b(AT0Qkf98$6EMdSd= zRHze;NV$^NuV)`>^>3V3<1}IfJxQMF z!(8F7OfdrGYLpbzV(`GhQ#yl%TGW zGwdnK-nt5bIJ=+50Fg1UoQXn=BXQAE6~&|YvfACF03B5e#W>(>|k+tCp zMtv8usYfdd7vPGH>wQ@yrMOs)NKO5D_-noSiin-?|Me@3(Z+aLR+ax-=mb{5Oa0Q8 zcQT%N;h*v1+SDkDZr(J-Y%WNKy&qk3glgY6ql>so&T7l^!oLAn$su0kmmKyZ!)~fJ zL=&tJ8fy0R`X28VhV2hOS=znXcKf*Y>*;ThpfgV~V@a$b=|+^rEE~#LuGC9uLm=(Z zlZ4|SD_qupgRx=^uY6L|@eR4!?8iO3=yMIQuN|rc6-&xQ0q&0RDGC=Y4P$zE21u1R^;W6|H@BFV&I-khf+#K|KN>bw;x z!}r@|YK)J*xz!dFXjaPn9heg(b4UD)k-sx|Ihro3ChWrbw(NMdKb(?y^vTUmZ0u;A zAGRLl_2PUs^JuhFT`K$-eLcUiBYDmGi7+$>BhVJctE67wOz8LU=2)nyq1;0n>L zff|h@tM2cM%AcTH)Qhv3?VP8j4KKIoS|LTXPZBMXCH%wBF@Vv~e)Xk(-8w7eO;VxJ z5*WH!%)q8XGjcCp`X6vB;BvBO^=Q!V~Q`!c1-`3-?Eg7lNHy}hatuA`ZxKtKUfBp zM9t60k{U^tGMhA)kGKD9f+4@fI=Z|4xy(-(1=UWoo?5_qXQ&#D$!V>u$>@Oyno%~9 z4bq?XPUA^On?E~gVolLaQ>SH`CA!3ASWO|S*3k)L&2+*bpfkg<{*)1&D(aS>8CFwb zhUdm`;-!RFao+V7Y(V-YN;|_vkuce^J6)rYFy6LG;p-7mX2XSpkc-?410ivXb>HE- zhH7S@v>qsM1v9W2dtJBvLK1>uahM?I$nE~TSB#|xrYkH_?pbRSk0eIKQ&}fjLTFs@ z&OQ;^kOzAnvM&+i{-71DJo~*E)t@90NqWU8QgW$W{jRUJqrq|iz}4^kc}`$-IL;j5 zw`k|rVu701^goWy!lB8Ai{fL{=x&4!M)wE-LFoqR?h=r05MgxV=#cL24yC2LL_oUn zr9?vDo8OHi%V(~c7 zP8sF!^ca=Mg1BCKxxfgzHz9lRip1N?JHpa^Qjn2YVa3Cmbf6C_Ww1yRt3weA77{+T z*Sj$}o0qmfmJ?qcIAH)ChIBo~2OW&Mjnn<|KFFn}mfz@N8 zFd~z@Y9H@cQrTw#C>%Aix@m-z@>^6~5r*BJ5hEOl<+CU9%n4=tG_kLw{_%4TWHL3; zG2&Fd45?)Av0x1(%0cFTL8m2iDXIjn3(Y6r1B>mnl9Cv?L!;+p){`JY@y&EDHp{Gk zq3*em%EHNTT1z5p!&PhTIl6)KapjzNYSx($JF8I|5ZxGgcE`DSeWg3Q zh_%U>UK0Y8Gh}{`*2lipArP%&AVVQ&YGwAi7V8rut3XkxEn&7z$n@uNl0KAc_E(nS z?Ih`$D0VcP1!7#XQ5OPinMEG<7;Vm1VMLWGg^?>M-)6a_*-LVX)fD`=j8%>Kn+7&N ze0Zv<3;K_$+IE->J;47JTg=>5VZaH=;Iu>^(K!|2uR8iOfylA|Br*Pv6T4WwSwga& zQg1CTopBOdeHR|&DwfwcgDYJsO)9caH_FpQ<|2#M`SMABp@jJ2Mrm66HG?}6FBxU@ z-DKF)VQS`Plh!=$VwNV@7@rM7rp|sfF)lPIO-3&8cFx-b*y2*AQ#o{;PE84nak9r_ zSH>tO-Vp=f_|@>DaBzc`LW~Mqzx_E-ltScATLoKY^5?LxV zE<$FBA?rOc#{p{ZyizTGG`wsJ7d`>3hDZg|8 zHB%gS;Oe{&9wlgGCeog1RLR=7dgbT5{>}YSx&mRK2)lEGpJ&DJB|}>XS#KrIb_E{ zPPv0T;{5i;E-Y$;Y`BCbFHTbvnMG6Gfo*v;B-5X=qMd7-O|=iw==uY}mdgB5j~hJ-n4t&+sG%cD+j)u$%@t%RK4BWq*q~b5jZ#|+ z^)d9G+oZz#1nt^L4^i0+Oxh@?p@Z6kQ(56^%hVU`L(M+zV%eiqt!%HSH#p1ol>0Ut z_G|2{(p&l=gM=QieO5`jgbmQD~PmkJq1Br>o5Rnd$!)e=U7|buFJ|CjP>r z#I|Eq1K}Di(d5H_qn}Q?BqRZt@>WWE)p{n-i$b*>%C+d830f!UAz+ZPV3hmE&q*kg zvY9q={&Vik(pfFe>_D>RrG?8o-#1w3@H;I2RvXNu?gXHp3AI8erWXxITOqD%HdTRi zS1sto3r#r26;i$I>=KYD{0?Cy)ZahCTagaIh{P29K{7EDCp&c!H4++A*W@!6NhbqA z;~+R$cXy~TM6yK4`wfk}gp@?415hA9Sf6<*)b@d!{k@_AZf*A$+9`*ZA!pp*gakl^ zsxlC5X~`s@&Z0zeej^`DH%?CC^8k)C)~JSMDMNps8@H?vok2MB$E95J61I^e(G!c& z0;5S!fmPpUhu}!} z!Qp^|Db6pIId_=E0<$>6F_Ow}V*UDA-M!x$D1Nt4B$Gq+qSPDd=DN3MHR4gfuq)sPwplb%Vl%Q~&}JFvz+A0_X+!dF_QixG zQ~j3jFU5HaL$}>NCJOc^DWElDO#cbr|590U(!X39H8`|5-Sq~|@fr4f9Bc7_(4oP% znOBi)h^Hw~p>*K2a;|0oCt66D{k0_wk(W=w3H?vtbwIZD)`gDrn>iUSkR1R(F1FjM zCDoPc7p#odMHUlY!rQ}x(eiHZhOz0KIEEM+zh9{T+OLqoN`2Sq6jchr8K#J~^pBst z5NN95;tm$=xp~y_lh}Z-R;Hd7X1$N(eraV#SemaK{BWf_m4b)nOJ@{WR%2=D;EKhI zw@fbWs)Q--ys8H@{<@9#OMg?iY~)yby;DxF8-Cq5OhxLQ9$$pDFJMsE&Iw2(n1s+I~pt6w4)X@*c}N zd}0yc-_4TgXDt{>P~9VWNMt=^2;O6jlhCsyBB+9W`dO2IP{V)ovGu++pp{P5u-?;h zn0NQ2 zY+urx>L-=FBLz2gCXFz*6sY}OZaY-?g_(3!pkg6USat_JYyfsP$IOlywfpJy z7vPwea^4#$gDB;+$_R8G5gR#;3E44P)4xG_l~0DJ)s$zE)TO! zE!D}fP8x-^_wCS9_c=#YM|4_r*`%w= z?0O+o&Uw|`F?2}7r<$>%g*QLoyVrNHaV%)9%CV$f#Ey0bJc|Ao(A;6J}^wN&MR(;a&w z_6E4reh^?`x(Wf2rgy=;F^){3=Xv;67zh)RAsJ%V<2TWp%SziJ=HOxzcaaV<&su$` zh1l9h9;pg9Kfc0U4M-djq+I>Als34GE?GD~CF9yv_d50IgjOtitOK96$kN0(EI#NJ z)5Ap3%*nl0ZXvO9OYpIZ@(x4x z-91@_S}JkH`P^|Jug?7k|HE$`^4VS#?kI)eHRTbbFNUR^qp>%mX-vexITPj2pIzT^ z3&1wyDoS8k?@Av#v|I87D$m8N=Pw8)7@7q!sXw?kfNQ1oyOk9JUZrC;HWrnGwuH0s zKBb3aM#^Du5EzRq-L0`jc}MBd@@Ce0rJzi6@+e^oZ{|P`fywx^^JAanTbC6!wQ|$> zBi@S`HIG}p8LM&_vs++)B_F?{%a!=cD@9nKxI3dLNz!hQsz6S5)v_D_L}5`&Gc^b5 zQN$<=wkOlE=aQNR91OpHAfMQmbwOL?ye(JX^lV4qnjr5aBoHYIY4yaB+B3E+xHRIT zTW4Ks;X&h=y#TZ@q*Mti=>Ft8xcnlXv2O4oHU_v-#WX~!?TgDFmTsv9~JPxX&Of&BjqncSL zu&}lHATVZwo%GqKCq`6pZeFUAe@V~l$j%L_C%k212Z_NB4=uoFx1Q4B-%b%# zk@F#x{rT0$!PxL=$TR4G_Q#imI8_!d`eepHjT%JU-imXIsd^@&~rby3^4Jl^Gl zGWWalDmf3fiVMkzAUP4-l?vk{lg`7~`UG86@UmUwfwwWQF*7xfA11McaUo9wK7|qJ zbru;4F92X62S<~OiLsAh&+Hf0Av%cHRPm9d=WwhqvJ6KJ0l5_efO?6#yW?<8KpRZo>Q>0GH*U3j8Fo}{aCt^V) zW3~><^*9WY_QWm+`$sbmj}=)`qtV@ea&SpFRbHn-PF$+J22!dvBzG=5_Yj=I_BJ@F zK{g}^hSZw{Z=H2Cnmm&gqm~MN`jTyEoH4JMxznxBJWGnHjYH1sL3cfvY`)zu6mNmGT7!@38S>=Ye*`BJI z#GCbg@uiRaGL@|!MgYd(q+mGU6HOSi3_r!*II4o%=P{;xReRHocPzhq*EyWHojipv zW<05^yo$y$yB`dy)LK|hJA~?u9)qs`+0~)E=)R>igfJ$P4a+Z0MOSgf_h`r*ORXr2 zz10m^hvIvd)HeQxdt?@7cv8dNu{dd&5>VAQndm`calMCL%<8@6Bo%^1C*RGeW=)7v zhyruEQxEiN#WnDfOq{m5Cd(ydj`5b)chY*C@+-8`iJ}*_G&nkIJNLS zDJA^WE(J%NLKJ;JHY}zzph;TFx+moITBs}b;O1>nwq&#~*EBp&q{a5L#?{h1Y!`j^rm9Y2ZJmMXuujapP7jA=itybba z6l9A3uix3iU@|aT8sL0kE)R6*fJ6vURz&LI^>B^K7qV+3K7q^CDzF(e?0Z7qF_@}; z!KB9;4#Zl!{DK!XqOBw6@kl#%6H3lP)MSfcPP$Sjclwqhf3%@JbkJwx*pHbW2bh!avo4{qtjLI z*x^-5Dt0aVVXr`?f~H2AF5f($(W@W97`=Bf3K~@8rCsReQJWR34Hydzbr%WNKkPjN zEu`9UVBd4Z2tYNy8y*?EYR{ zg}-(|4ya5eqsl(o?1(-y^%DJg9IQS`56Fc z7)ggX>xTGueAXCv)V1VTxUbo9J2|;QOd(EdZ$9;Wd!`$1cj=1U^!f87k@h4>U#Odv$NSly*UY!_L`>*p*vq_`ItaC45za=Fta|NjwPKjalSZK@mrbHOQ`5He~!qZ-w zgZ^{E(A8FNQhBHQ>>Y2G?kjV|EBX-3aB4xF$T6AE83jC=#Yu6K421{fv#m8$-To_ecOr_HvW-|9~t*PTlRF?jnM4b2=Ht%ah7sm(dG z1F{TnIgda7t3Ss;Ich7N0Y|}oHA(DjbVs0pqK|fscp?@U=_*Eo>v}h1$YXqv*I0v31?X=q*5M&FW|7O8NNb_FQmhodsz;-l4Tvt|T}rBQV7FT8@?bi$Jw*gU`N ze3YaPHXz!xG$aMMm3&|vDN*mWCdC}|EIu!fP+-SS%lu4^&7F!dX*nkyi__2EmgTsv zpXE!y8C54gV}aPavihTh@v9qg1aO5=B#f1d9q;LUNG7J`;zRud=I`u)%*n@=>c^x8 zvaGoCSQRY!_x$2n)-fu3XIMGj7GPC-HR)ye5X3+3q_jhY6H9Q^MnMzA(>+-D;yE9H zDgoiJ?kz`&VCXv_!GYE^v~oHj7Fsg|6Fl?iUG#E7b>HWz8^5Wk6QIuq9u3buS-*4Q z;mkg5`(l4#`LH3_!1?_1%J>(-Oi@sdc5iH)f5vEk-vD41GeDorl0t$QH@lKO)RoOn z)(HF{h)fk~J!aP0o3P9t*yV}VB#wQ{@|O6<9vsgaBVD0jtQ?hFFz_gx>i;B~DAxxH zsASR|VTs-wZzhR;CsRcBjcGZuOx|-S{1Zv6JbF;Hh;WuLm~_u&hA>-CPEPI;JQ0*OAI@Qi`$^PkSkj;s1weIzcd40l+PV&`*Sf=R72$i&kj=-wh z>$l&>_>2|?!lD28*+<>mMe0v|%`ep?k1f&cfCgM%>Ucfzqp;$`LBuBpWrI=B+SA{8 z^kok{Y9Tot88iY%;ch0g^$jK*!yu3QZ?;a43v&JkV!Na3y>Z3RBG%@Z8uc2!+ zg)tK_F_m%5iN!beXXJ>>xoOR#b{O#d35Say2T065`0$4ubq+n}aDF>&P)d{-$$o&(E4#4-=jI8wr|YbSfDL z9q`l(7zwLMW=n1c!hpd(JPj+E#;MwfH`z!4KARsE*9^XhE1oG=c9vfNR zv(fI;%YC*(0|Y;0B#e?Nf3zXCjV3xT=wTgbw?mqrNAD_Y zTSrqP4J1-=Xs)rsQb7d9g^Jla_qP>_$VsVnm4{1U8bIFcHRH zNY0vWZHfyLZM#k$V=)+=;+^+?}FMC zB-shcG8fG$+eON${>8rYW!T2{esa<#U$KaNh(~dhNMMesr7KAgchxxExD^|;3Qv_O zLI?eLz)JNhf<)1aSr~jsBSY+%PmJ2%gT+S zB%po}Q9OI#xRKO*q&u}BCX))mG9X+vWf17D>I}O6SS-OoItw7eI%<|`F91kG;wS9T z0pJ1*wUy5|k1mbmo|`apQElOlEEGP;Q?)$0FopMo&RRQKH_rZ=aSH9WZw5Ub@?n1lmz z+*Cd$r%$>Js|N4?@pBjw;cTWQ?V@t70KfBw4q%YBc<98}PfPp^V^ZkD?Zsp0R`Rs= zr&)U0S0i!rci!Q@rYD1dMve~W!oi2Y|2(u0#F6Q^0A5JI3^@uVcsO5@5QR}9pUIiq z?wl-#S@;mQC&s;mjXDA69^cA6&3W!~la}?V_&d(ec3dqR)keRyqd9CHjma|yJmwb68FUUl!PYX2h-c=M`F(j$vJ2*hSGbg|qQaT_*SH=?70K&bhxF-63ix2g*<5Dlrc72ImqP zD=ld)uQavIFCip$U#z!f6`E(svMEn+P!KN`&5bVg-Y;y{(-flMl8R*WqoJ@;qhfd9 z8tbF;WH8_{o-46fh~cfw;w05fihaXfH+1**pi6^&y1BYYZ5-Yv_w_C#Qvu$af*hI; z0s>VB1HD1A8_U$KYx)EZAXoPPqtFpL$^0#1K8wz9&hn_I7Xi1iUu#D+8ckl zzZe&QG3dxX@OL_&axQ}pHMaXBh@|oSQET<{>#tV7oETXp6qP$C_|5$Ha36HqsbowA zg`-3YP?KL|#8%lM;FP=rz$IERx}>4jX2oh1R1NyA_F`bF>xk8-8dd>~p*DOwL0&<{ zDbDInJEC2~P!0PN-lp=$gzUY-ma>wtFzGjUMX|ziagp{6BN(mXZZo>F7>{oGND{X( zaSidzD281=J{=E>AlIxt7sAmU0>M({DCn5kU6ibMwJsTPzE5uPHSP!rOAE$AxnIoC zwR0k2BW8&z(Pblss-%o|%6unr(Z-EYyp(VaFE#HNBy{k3rt5h%;q1d$<((k|)Rc>z z4@9rwfKgWas9k+4;Ze0jr}BYm(Oec!@^H@|@NztM@z@n=r+Pl;9R2R<)X|kQv-Ms- zXyl@qt^Lyc&R_SEgXb&K>E?I&_elV6fSV?G_MF$j0)S1OuPPD>XNTzm)JYdUW@-1d zIZWY+sIMeW_ z7DH_1K%cN;6{`kISS>Y)OIYG(j>%fsWbPh$Kurq8A~q1dCFbI?#C!eqZaRTrL9!HO z0VxdH;2q<#zarU0Yq>CvfBamb4qF*%aySb0tNy}56=O&+G;xuuW@z&*v%IzHSsjOMzdEzN^_q027U z50>v$Ac2fCz$NCNB?SRS3&QGKhSlOTB4SD$dS5fC!9aAG z5=>?j9LL76#_{r4W((+uZqAAGyb}*|8ASNQ{^P=IG4D(;W{Dg|aOk4u;82N7D33U6 zH1sEI3W2TFAR#fPPYz2SwHXVVibYa!yv<;(& zytt2DueBa7BYzNb-GOZP?zYpAVSpzL$rEA}c1X0g`*3lIBarFzuz^$5fH&Mnvzen~ zVY^oreA~z0VzvxeAKRi)cF?SqZTAKmzwgvqAkly5J^*0@9Peyz%sMkfBbBRgcl?GmpxrCcOTX=t}T$Rqd_j-;?t-U_PYsaMzm{F zo`s?Gu*y&Uv;Aw2(yX4OUVi`sA)(cVe3p4o{pSUumAH@p)u>1e5~vn=4)Slllm27_ z4O9yZT)lkrhT$)j6U(J)(4Ff9&e)WDYwT_&zEY7yjg5u1k#)M2HM{QU7Q`L;r~K5(&=?lUFk39SGw)<$ z$irG%&@Ayx*Y6gzn2;Pw9R)Mf&*Kv*ZlLbxdt#9+9>4bv)VKJ~M1h9ddk?6P~^6+dC4gSxd%Z z?$D>;Ptn*b`GUOn3rbi#xq>caoN&Qc$md^l~1{IQp40F}LVWq7*|%8=m@<0w^_K#fXq zFQ|}04vtt=`ccD|c`I5#YybH95uuRorcJ`5w#kvdI)KIuq#hkG!Yy7`sERx}B+LNe z7s*MN{D{gwhmb48vL>f7lVBUZC}bD|i!GiSNAU7mSe5jMI!h}tm|%Gl#KP3x7rm*1 zR(NvMDq3$1ax=&@j$ln|NSB}9CtfGeR(~Xx_c7F9r@JZriT!RK2f2xtCC`@5_F^jx zkZ*qSi36Yi?2W2e`lV`jT~ZyR^Sl$~F!%Gm>+9cTCEyIwm0)4;uYTpR8HzG-su8a4 zUhp;j?>48ISclq`<4`CsUU`v>`!@DU8>Wi zHcNicM5)W-vZ=PN!tJa7%EF7%D@^{tRa~cWUfF7Vwc8}&%)4>?cY2=x-Exqr+sJ2y zvgJ&+QmS3-k}|i7>!-$K`<~U6_p;5l+&_m;44o3$<3V@#EmVC+npugiI4o>MEMrzW zi{sN??=y3hy^4Yg_}}fkpF$84VnE2(au`Kc;EXRXCZd%+c{#N)q|FJL`LOtXEh19o zV{~g8k56ve?tlDxq<=mFqd6*OD&ko86$wdbwD(bej0sMrf`;Zy;-lc(^(IU1Nbfq^ z_7YitTh=o3AxEDHQlgtLEPh2Cf-G?INvWT!TN`hqdYN`wOBENXjHf**m&+(P!yn?> zx%QY|T@vu*|1z@o)7c%Gzr|0cq!J{KtyQ#QF@u(Q5!%|sCCMzQ_(v2_f)n*!k(t$s zoC~L=42kx{d>vu^;iJ=(7Wvnt|M(e=K!1LxH_l_-2!ou6quGm6$=2!P@vbQhV4gOU zM%AM^uo+IXd3fQ*xVD9M{GMRvjb?}|o=Ww44kTYU$jmDF?P5-o43kQuJI&4E@FfNHmhUa0{n7G5}dNV$|!HNk6o z*5Dtot{#Pf0Te=~koWv78nIYVeU83SfdkhpM=jD|)W!{ndw>6jL!akUg;7oWT2|2%zqSc+0~ zjR11IU)ZX{kYgvsX2Mi-!v#bkwu@--xKu${mh`E2KbZWbB+B)t!?|HqPwg=U-QjLa{12^I^*?nIBKqZ$o0;IfE^|BU4@ zCe5%LE*^dLZm7jbQ>8SNFa1UMP~iAHO>=T#1Ohj|8HFs(hI3Vm5;jsIP-Cv2Wi>$t zepW{a4xjA2EG>eb$62MWFZwnmq&_!oHw69~bXd!wPxJL|kwOhaV6Aea16ZYVmr4=Z+r+_>-F!$zzvxg;3OY*Qyut(=he~jNuu^EA zHX9tNmXJuAJBVQaU4ho6D=#EGi?nk!d26j5v3g>h+&m0VTHwq=?m?3jRjB_CQImGk zbKsXSYljUHCyKi{?#2mmQp6tZ5D%i3gooRCtJZL1>{$BMC@U}|4VXv&Xwbd`-AJ)vWDn$$vjRFhxZHi5@XgjAe8Ltj|` zd;YJDHtY0v6o0BcBOWNOHssYYffbt zDDE&=albfZ!pOMB-}y=$W*9^S6IX$c46B-No|;Mi^)IwkbW$`#mC~RLrshwR0v6;S zGDS0WsN^>QUD`8*)2qB_bz!E$(H6&r9yOW0?%lsj7J{X=uJ;uGYq;UpRFJ(i_j7;X zu@F7c=&=Vzp{72SIm z>u^X8^__t3*YXirbo@A|k@(Irl@96F4*4lroQTNzg77%c zPC7!QI3IM9k$=z;15ap8op-%R3Q!epE8SxV;N& z#qPB+fv3bn(HSr>h!%vwEO<7H{0h5djERmWc0;mkBQ)9U}PZS3pNPR*H7yQ4>-LhywNPLeldm$ zFDMsG8$ifMvx(@)Hb$)qtB@)N>XhZa)?`Vtbf!*XS?)AfkG64|W^Q5p^Bav9HkS*n6#@N$zC=F9? z6P`cMKg!v0cidGAs++C3XUOX`dg8z09Ni=6xuN1C|U|8-v$g}z4nEK zYWzOhFqV((JtJBEjcw=)0_KxYg*^j-Y$pD+RJEi&_p5#DrtN0b!ev7vocF8~4!`lT z_2Z?&YpGLP$*R-8SsqcrsD5Ok(dmi(L9Z&52?`s07b67Iiv+nY4)LZF92BaQj#D>LPMKXgRECUxRn*^ zu9`nd;faz!77e|R%E1(+{!AFga5T@P02EcoB%j}e{K8VW1e*ji z$!jzAAlc|7f^A&GZPnetyz)?_X(#dsN~q^oX^JRHBQdaeVS<^D33{i4Ils#108O3B zCd9}3s5n6#L7e{zWuL}lzka3&p%`!TbgzK|g{tiyLc#uB(&w;PQRjK*4X(^i<7 z$Yz(IBw+`gGP3gb2yWj~dT?@~P=XdXU~XV{4PkcXDki0tWEM}OR@!h~d*`tWm*ZeP zUK9(Xq7e(bD7%$FE6U8U6i$(tq}t)2hoHyBve+-kba4m>xicG|3#bL0j@nCx#^>Ve z%e5OzeX*F=_Y8DE8LYL{Ebjxvg3sd;49QR7zfD-BJu6U|cS}1j?YU{(Wzg=($>fZ( z`ebr=2Y%DtC&N8DIk=<6{aIP| zGk-`#14PYm+TXr_P_;&?(6QLpK#Nt)>J^KqK>nYC_*)wU004Z3EfiCN6+W|9L{qkL z+j1PMoQ`pQ z_I3H~5!E07P^glP!eu@{%~yy9mzFahP3Jr(kk?AdbH@qc#8XRh5Zb^5$%O`J@DUc@ zyQZL8r{xVsxIZN$-KL90aCE4x_>S`TVmSMbOi z*1Xo6z(wb$C4NhivE1uVQl*!GaIa z8|RtDX(OyJ(tn5AX%u%Y_!e&#FkZG z7Tgr}HBCeX!vdE%-D(=Q%DQF1e2V4{v#aVKKV6X+R7P4=Z&mAUhN;snqKc^@erhe% z03uz)iFZ8$(6IOU^*&vhGy z4;?;uCp!Gof7aJZzhO7nP1e{X2;6OqmA%1R$1ax#_CWnfZyYU=2loIoWM-WSBg#}7 zqqK=i3n+&9LNXfnOoUt+4jW0tPb+{F-7r+Jt(wc-)su!)H(^ZVz$!skUR*YH_2u0# z0Un(5*hOEt@ekKQf1cm2-2?o^{f0~2p(Eki&8B^n<}>VR8F29CRz@_{IV+R;7HNVj zr8(}R^kVt=s7e%cUb3&y)<59AIyZrnNb~)L9+3^i>zq=N6qS63a{%5F8n&8hBX#_#<*tF7C0DV9GsRauHtm z7X9vMTp9PWcIc+=z))Hsi06%%y}{U-d>fv^)*;nc?D*N9sxq#0Kv|iIBP30PpetdX zUO`2%T7W%EO4N`-tF;3G|x!>ejRoS+aoEzS!ivzlB90zHo z+$XxnC*n5ij{$G44t{NDukO?S^y>C_4D6U5&oJYk^zOW-A5x zHHy7g%IA6$cT~gx>PHno9f#wAGD3b|jL}~cwNM5FH-AiM3kvq|3VEl>073!I+a}J>71>t^8x*RHH z)W;xM(4p~njuhj@>5$!@F?Nipn}ZCI=Kxl5Mt)|j3GB41r|m$EvRt?R9nnmknk z)bkgiDq*hQegs3&!ej?vjfki|1V1T?3ogL1obV`~u)^rJdolBSGCDjQfOE@=+cCdK zoZwy zSHBT$NaQGRg^j2nnfg+YI-Nr}nn>J{TtsE)8OE3?IXaN^o$XDp7inFG`PIzUD)Cab zmr?wKMwo!OflXA6_IO5pZlJek=|B(!cHZ9>!cwG#*SOAN%k#-Y?$O!Rz%Wfr~}0Fo#O6BiBvQ8<`ZiV>xn zgGtu5P3`uL4p?fj)&@NF9hLCow(=Z$(n~6buU1-BPBR{#r?2!1n_XTM^Hn?z>} z_!z|}(c4d<`e?Q#bpPo8D`Q`3^QjsCYItPdoGzNBpfe=Dl;5h*-4`5zN1u>El`AaF z!|E0oYtor*pG1 zNxI{0EF*!~x&#DpTn^WBB}*ZC-1d_-lTaXIQ6LqUK$<^9wfhM?>akJx=#awjqyk}i z(AGyef(3DZ#@m{9kB0$J$cBkLID|Ve>%Y26j-v7{h&yWbk$H8cCaom))5UH-FvJ>5 z89+65 zXKuIhnNaVZvZ0*aDus~thVqYT)abn)WZ{!nSc0srk53R`&0-&{4I>YRGIszNR$%1I@6ji@Bck$wwKO_* z43b-cNpO6(8f}zTX5j&qQM)}5eb^xkv)~wJf2RASHEn9x26?5xYs`H$3K&AIYuG9i zIX<|+Da$tEnT~rt!1B45Kn1j*-pW)0gcI2>c3W`N3{xF7e)HLn%{%G7j??(%S0(Jo zjhhv~FekV%avqB{os6?zsJOW)5P_}mKGw29s)^w?!;MB-UDY*Pig;R!vda2AP>L>| zsN%Bj?r4>@{K&wALl0u|1552!s1_hN#UB_v;^%rdg-RY}5hou;(uakWqx#;fXU=57 z)Qq#4t-Fa|itj9)H2z0&KY`ttf)%C0(LisFq#l(mON@RCTn&u+_oIZRkyu#jhyync zQ8`Q0FuYDewfM7B@eLw)`at3Tqa_lsv_O3YIZwO0VC0y;; zj-!aINm`*1L!40hd{BsBp$61j(t&UA_cA3D@e%@!`5!-Yp-kHPx{N9UGw(*RPc1^6 z$x)p2@ah+%14&PsuQNBt(OP61?2WyNX)O6bk68ZUEa;NHUqUNJy(F$3f03uqC9+t> zGFW9N?xm=ON#LYufHkqIhZ4cb#O|nO1P*92--}0CYSUB8<_#1%pw{=Ov(7SL_zj<8yZX-`1G=hVs}t*06rLcq777wT<^ph7d5B^ z^Nd)Un5grZ*iOVQ*cqtBVls}fgK>Km5H?xqQNf85ywTt=u$>emx@>2K!fq6hQ7xq2 zz&9lt9r^pSk8dwUT|u?-NLOT@OtLoNI_y6C!13v$JF1R|v5}42neO}P-toY!iqC{|r)+-!>;8x~ zfns-Oe-8s22a!**a{GLl9xUnDXCw)iO?0G{8&5Ywr06|e7pI$(@~jUL>wL&OINa5^Ri_TCf5IzHDDCMh8Qr^F)yKj9h^TWATa%v~he zxG3nlT|sDdy1O%0L>8H1#S|nlv99MI!)6!ufOm_ZMz8P&j!rh_Lo-B(0i)e)9JMJT)He#`f|1A0E>K)G!&(8syB8(HWcdOOjHpfkl7j}$IG z;-vKp0jYiYj=~!E29Z?#SGEc9iuF3Gw|{LnsOmxf%Fs#2?!TpOC*Qrlx3gRXS~mq5 z*H*LOQ4LP{NINVyN*q*s-j}xaBL=QCLZwKF(Zhe%ziEvkff;{+9dlw*a$vLzld!jB zBrAM|NB#Vt=2~?ZN~TLjxYhpZnS2Zl`udgJVE6t;wW})ad&rjC%6{3 z;_j}+-QBHdDOyU=0)@+W|G_@VyEC&R=cLLvK1SFNfm(arZ1xpZJbypwi|Z18!Mx1( zY}K^md7=p&yjc6LwQdk5A2oY`Io0eTY^LNWK?i`n0l3R>F*LUEg%6nmr!Gj&z@vuq zn=co&`_Uwrtes3YRUxo+DPL7iGeIn)gCWr{hKgcXC}MbsYDL@Vm4&7D^4R2+nt|k% zn7O`#D)bg3yLoPR6swBQa;kq{`}}@v{97S4?FRtzmI~~9WRzf$Fhk{WI>d`9r5*~Y zb7Y#Om4D)nt2>^Pefg}z$_bN%#8#3S11rWJvX97xG=5!Jq$=J2A3qdOxB`7md0DPS zqjKbJ3uZ5~;aeVg?v|oV{!!Q$@j#&v2ad$G?z8Dj)r5Gkc44+dWU7KG@Rh}# z`e{llSp>L}gp&zoCq)^+@WyHdy}z;A4dLO$k|FAOQ6*u;S>{TEw9CKhj!|Bkc>52=J_YL4f!+Wo;WZlAl9c({? zLXka7K1)X9Ngg|-f4Q5%n0mb(^);*tI1%56de7zO%u=Cr8}OigGI|I)z_hVdNQ8l_ zSbO&wdj?|_r!MRNM7RlyS3`ONJ8Y!(Ul-7L9{#3)9 z=1_li;Xr^0hCnEJ@PQGiND82F%7f}OjxYuSCON4ouX+YCYA#)=|JOep!El25Yv&5Y z#`g3vJMZyF6*p9iPsg;e^3HH>v%w>Hd|KO-2 z4jhkgyncO;PqKZ#<3LL#21f{qV$MSV!Q+nTbYWmg;q5of(Iiv_OxTe1nIow7U!>Sb zcmLF^Vk!0RMp>MH0Z4`^+Km)vbTor|Dy0BIF1DnylvCkc=?Da^JKy@56@1UfUNP{+AU;JXr)QRLco+(11-t!1Ad8g3k%|2IQ;!5rSkw0 zu0Nr*s(+R)x#Z(3pVIpyOYdC@&QB%tkTD=}I09hi_%N|)*D{KM4WU$rBsqAhs)9rq znu@y5&jZ1Il)!j!UexrO1z4<0#=w5X`%@-zgbGX4ztFZS;kuu%F-3QmzsgN%q*!+> z>Y5{V(sh2KeI1cUfp;-oO+$`kGi5uB&8zxcI3nL&us+M$8||;TYH9E1zJiUqi^3_i zvO#jTI(o_*;I=!G&E*jZMXbmWMp;B~0-58y|M-|}007ZsxS7wJ=Ku9u6aX|T2Abz! z@kRSc+iszu9OY;mop@SIqz)=O?#L{LI92i$H1Uv0o7!wexkb&=gw^it7w?($aS`IgivysSXX43>n1rP9RaPs`hJwYZ+Be zR$F!gb~H4eoO!3J=egWKh4h>FHqY`Mx1ay65P=Dm^GMD1N}c;gY}+l5Tw4?%ckI$C zl0u3WK@*Dt@82^~$#_!kBxgqn{djXv7PBUb=H;0;Xy1BaiQV^LAga{@Bu3in<6v37 z5%cLw!tL;q$lkeMyC!*>=H|#@v*RH*SI>~+c$|I3<=2Owk5i*4@5U+^RAgJ3-0)4s zVZnedRD^Sp@B-Sf6qE2^xq`;hgoAoo2EAJ+HFpqJjI2qthT!%mDQEHfy}Gtd2OGcg z5AbCi_zs(+C2W$pD-P}GNo#Au>~8{xLzorF_Tv@C=BF|;9C?ssCNKP_DUDs{pv4rN<(#hkj|fBDNI7!Flk z(+te~$Ht~=$AsD*TjSjpnQaNi8TW$5s-UxeNxE!%RZuyn z%2<|aUi-2@g0QN6vRv9JM---+1Zd`Sb2y7!OB5-Vez??f>5o(o)!M*Mr9%Pp2KQAP z6xcx9;p3J)xTQ&9M_duNx8Qlk?|nQi@S2BD_qSd%FV0 zZ7jQ<8`0Oie!krc_ME#Rg2Y(_cb`+*=2!^#6Gz3nHqC#5M!jUWcm~F@KBBTvz_cl_ zaKQ||exLVnpNBCCas6Ri^gD!iSXfAbl=T2yxxR9GXF&Ab{I_Zb^$Aik2E3E3>*yCU z7rNnM!oum?J_j>Yx$xJA>g@b^sPN;n=F)TnX|YCFV2js3HbRW=vM_Y7P!-i+Aum#0RUv)tW^JW-uGN0|L3k9-5!2!eP zR1#w`EhfoLaAcoDH;5i}U>EVfwbk;nt?r;IR;Jo#tA6474kpm$wk$yhJyyHNBYj5Z zPLG%vs7y*spi{89Jf0^P*i;J+M{8j>KH%y+wUbx4gE9SF?4dVmJ4?iY-|5 z3xTRQ<+1}s50Qax0a5jZO0tMkSCfJiWf8e-LxUlZ(21U~&mv_(3r0`e8?Aqf|KkT5 z3{PaVd5+52Zz8D|WD*(%8j*FF?m-%;%w-iWk9VewHl?P3$tqLE1M@|yOEB3YFv%o^ zDQot_nfh}Os+Y&KA!}$`kWkzIEL{8bL%n)?$Jb!x{jS)PsJ|#p7qvJtb9#WSvd)^X z7;`S^IQh$izxb>dnqpU+U6P=$WV0-9Ulj%_hnL;dt z$xW9Q?d-Wm8BU44iZTo~efQC^qHx545TG!R%rGlYM2MM``!aI<3Fj{kbX!OTeSWqM zx} zQ54DA3zyzpM%zmXMPzdTRm%xYsCZD~nS#U}ZB`Ql0M*?gcc^v+kzC7Vz?uA8MKz54 zI`??a%x{Zh%=z5@zhu#}W%Ag?(b$~vsd2GPt}8m~j(kwKthm;uE_Z(m9j`Ri9JQHM zjHw~*nA@=ksrz$YIreJIpXxejy^zAzgAHF@5y|eUKA9=&h`Pr;N+|>?`IEo87WAs` zl_K*Uiz0siHNRb3_?84kP&nlY3;2MYrOu_Ten~@$P&@>fd-jM7eUQ$heKF zyUaHS+Ry(&Wd5eQ^>EgFPwm(+fETC=ddupB%_CsrDTXfn`oqn;OhWasR6<-X2>C-Svfg*8&7l*mb@N)ey(*W7^+6mj@w(~YQPbL8@b$8}}rK5JS zbmwvmHf@JBVHazte`9b)O?@a~>yEytr+lTv?|Rj>GP;|c58-#K%-*~@ZkO5(Qk4;b zF$SCgm8psJvSU-}bmMJ=aCE~D;+7i2^^(s5vN`%n6gu68&nE-nk~y{QRD3FQ*g;Lf zf^pMS!Rtb-4La|(d_W@HS|Ijj7#5`>kuW7Ecqe5ElA0ehq`~g%j`~r$T(If48r6ks z)wD$hsz!k;LlRafx4R&xSJ@mfR>sFCyNw|TGX{I;xD>V<9hr@T(`$pm`|uZl_VdrJ zLxMEHVq|izrt5Yu&x5Qfj|KDZHZDA@&Wbf52hIKJa(RV4S?%wLAx#Jxzn-*X6pMV1 zm!0r0FICA5^tCv3Z4mz@BOx_N-c2TM&lwq%_pMblA~e7NbmPKsvFTH~iwg$6a{LHa zlJKK}X=U)T{g_vPt1@`)UBI)qV&HN#I{DRqu_FizkZ1kfc_PR&kTyqzTHGygxi)Ui zlE0`TavMJ`Vb)n9RyX1Zh%M?MA9o-T9$1M^`=deTBL=}WP_i2t&OO5scCA(WS6O1Nw2vu_ipOpKGngp z4c}Y+Mxex%b-n5;&2zW-ojbDI#`~DkNJl2*kH$2aNjxo)o#Fy`v;a(i6rP=7-Chz| z4F4VzibMpyW2Wk8v!T(cB>~t|n%A9RK9dm)CZ1fF9y+cYrQ5A7;y94nr>b|7(xfGB_TTs)l!kgbtjpjffR*Az#Lsrhpe8#j%l zeory&k@_D$t58~W-F10XDK-rYW?>VkJ~pk5SzLqX01swO#XTBd%}4Ugzzjz|e3#7( za#MCnVEMFCmF%J|(h1doN>ga0@;Uox1#ZyW0lh74VMvcr;d=uRMopX+lDgXE{ZU?z zdpQT}Nb^!MjFi%<+`pQ=XcA{5Q#ue~YDOt!)9NUfsjN+NZUOFf`9@V!sV>?-Hr3XR z(^4R9;z0+DV3=w;5C?62VX>>H&Y z$u$y@?n9F5ugHm|W8-JnxRjhZy{2uc4)lTZxN%Q(?`WpnTn+s&>Y(iKUR92cV)=HH@ftHBmdNI(g9b1xkjE8fEf4FC73RC{aGYjowu7&y7e6f&$1 z(a}iaL2*Ow3xLWZ9URY!vJqvo|ImY{)up&V{YXSaNo5CUKMwtbNTT_srttTfD z%ti>miKr^fN-jPG1dbZN{rDjGc3vt$LO=mPih|?Pj@C8mkI0fk5wGCqWdABL7{lwa zOWbLoj=iWF#hhkdtZs5>ljxn4Yh8RlnC+efGSYE#3nJy^NrP%wC$u1;Y8BxSl#@zX ztSRk~Zt^-CJ6WL29SWCV9Aa!Ti*(u>*!2KM_Z4C=JUM^3ZgyP7CcZ1@hSS13=94K0 zZ0v4q_9|U{H>$sxvz=%Q3~N2Rp$;HR558qSY8!dmal?K@Y;M@5BSt-V_Hj*6L za?PKo63P6>&mEMGM}K7q%$sapDzIr1VUNq`XAsA>IS^b9_J~08Myl}67ALD?Iwk7q)=d)L-PE8BAp5^o1{-pTq%&%o?58l#$&#FtM^+CTTH5hXS z7p86DBLLLVf;+X??_Yj^4N8f0=Y=(@e?Akl-4cotQpqy7lh;#55k}PFV75FB+$tsX&tS@0uHXg}>9T z7X+gg();eKbvr3-rr`Mu0*W)&dPU>;u|pEAm8g{%zGRzb$dY-%hMaRSPMl?JD5PrA zzjc^adojKE?_8H~P_UoSr4m8KrV&Y0t$;f;W(Z%{bl`YZVS=e3?~l#-HC?>=C@UTg z1kdG~{Dnikj<(-V{bQ8`DZ>2iFp+qfg?LG$S=e%ot*M!boaiV0%uP^e6|CO4+r$7r zsEHG#A}%o+&~8OIAm#gwu;J^SYbSX!jwI39JPwF_$1!ACuA*OnKjl=QX)!?R7xS%L-#*(3oS zj3mkS)(?z&DmO~=mrM>8d9XPWp=zhQ(y^{_aIYz!u@K~0Xk;^2jBWIA?(@NE_bh?A zOlB`#^{nNO2@lV1x^!_B*6mM^D#sX&yF+1 z?is7~IPtZ1n!VlK2NI95zZt+-F1rkW;-muIrYKv#scBNx{E`;f5Rv}s4PM87`ymM& zQhNKUmIi<^hnkhige9Sfj%JjEgARAit$mZul!vC4`zBDVXpiw2 zgUWzfEf!Qyb)zj4>WY(g&IYZ0_4+PcGP&O8 zX_1f{b0j&BCrha5f=_ACCGLk$1g)3~pN@fEKgp<>eBjvN(ksEKW>%8pbQ&@588PSX zdX1x}rKV359I~_p1ZoF)k7)hXzjOsFP`izJ8|1nYp~xbECy}su4myLg{_yEsU_aOF-&S8ilPLrMlL1dUf=csX zK=5u74OyjC7GmeJaIBwZyK0^gk1NSP>eZNUPwqA$&+HWV6s@=Xm&aLLihVX0l0xgF zOfyDk|9LWHP{+MTfyr2i*Rj-fEy{n?#?3!(Xp{S>kZys+4jhIF6_OnU6|E}Zx>|m% zwp7Z^IcXURHzu(G)c@4?jB{sU*3Zb4Y0$IV0XV}|IfbTy|0 z4uoK3;5?dr-x~2heolb!PDYyIjO1*NKfb+xzc=Be`RT<8tso^NGG9l~fi_ursPL=> z5sPZ(7avWp>F>jLRH9I&=qY?rh4*oelmt}fu#rA9*hetI%OWhA%+Gl->K#q;q|y^0 zei(&PmPXOiBOwF66tt1a8aoxvN_mEE5+-wVDZjteAk2@0lF$ZbJfaAgG)b;(M-^|A z3OU*a-Pjec?}XT9G4rJ_f@_SUaXh?CgpsDdVg1YIQY+`s~sz3P)-Pa7xg;A5Q5@kr-1%LG{->5hHuSrh(;%ZTeck%@$zN%pL z{l37V>v!rRf&vCQ1}ItAb03N23el@92dPL|E+KTzldiOEaYf+j%*QJ{&-hPF>EL)B z18btifZ8aYP;=jW(}B;%LpG>+B8=Db1Q8bkz+1)zjAO$q3^Cv_Qt0{s(KX~o_KFsd zl@@ocM6axt*(Q6;WBwjFUJqA>{J2af2r&71tyJdq(H&P6E#~9B^$4|7^V2m1Df&15 z+$JZQq-03V3-l8`QPfl%ip8`t27^o}25=8ke{Qc_Z^K(mBFAxA1=<%8jwI~io z9E9u-46Aat;_5QX{C|FN2&Kh+pMRn9P#K&1zWX~y=<)U<}P6Dhz3 zMTL)w6n}ZetWuSQ!L%ZG*hTuMw&=||b*s!1NgoDGeuE_0tOo^WiFI#20t}i$&g1#P zkBIRd&+++dTCexP1FF-`K3r9p{qNKy{a(gtRyU)!v_sEQm_bd8Pv|(^Vl}UrF14W) zs-3!Ly{aFtA;*x(7XL|{mp}RL0$z}r)D(jt3D#<^8O7)MH{fc$ng^!MRZqQzDH?(Q zu+J1Op=N6rc3py?+$#-J5x{(#r zTC{BQ+3NXMP{X1QjBEJiSYPM$bpprExDhtDsZ<>M8lH@kd$DeFmRL&gMQ52urgH@k*`!AnQ%Pqd2V!mQT%gI z6Or_v%!z$CWVz{csIu(pbW7Usm8tmmTz~+FRpK6R9{>JlA!C#|^jXxnU3{xqm|+#c zpna?^adIAscWwQ}^-%0y?&=kAXeglBim-z4Z;!wXuMG z6<%uuS54aun&AB=X{0=`XTqmvb**l0=T}&lk(G5mSY*y8sL$PxCGQ<(QP@!V~`5B2JKBjo)so5!> z&{23L>m5);Vjg>0JYu|z9vtsL?^<>5At>PoJ}nlS zVx2|=tY*wm(<-als9!8H!z7ZJ0jIOjkisV{LK-v=R7pz34d8_4<6rZVCY5ly8dF{D zzdrfm6*qV#6jNBmxp?F(oSelQc~ommLfmYt<>hA*mZ*nwasG(bsEAlS(g13TeQrEl z7(-4LTzM7L)DKFB0^*pm_y}g+zd65Bv%tyz`udqoR4Yrd!sKjI)+EIYuDcrTn2T-F zQ!jO#F7IG^bud~x3m>hX$F3^f!jG&8rI5A&ADN*S3lYK9c<2&NwMk2&gUg;sMTSJ^ z(EUU~HY(ktWF#NnbvjwLY)0>B)PHp{bB4dpOQtOEZx{3{x6ntnA0Ni>Xxx%|@9p4l z6DeSfzRdl@xhY7T0a;)C%KCr({DDr+SUuLq^xkM}a@&L|4tKysy|#NHB%GMpB`m99 zQ}YK3m2d%0o@9E=w=Ur5bVKU)ln%QboJ7J?X5Nw<)5ec3js;dzp7)8?# zp;bIFN}3cal_=!6Y3IefX$m*hYc1m#(7NJ6xtR?qUdc5VA}wt({MkOd3OW{4aYIgw9hwveh1>>&$ zml8yn7%{rzsyM|Kx@Z#;7?@O~^CO&lo_+@^HPRz55;yEx>WN%_Na@UxhY@#y`-%~& zpa4Njk>W3)EHDCnZv;ILavhZ;xMHWN<==h{1TcyN_8m3}5A7dNhEwqf5i{;rCsTJ+ zJIkr%4#iI!4x%`-r^xCQ#7~zhAQ&X1Ig#}~(iI8?E>dpOGZ0{iYXh;CLykBKNqshc zQf3rTlhn}ak7VpgY+Y@ftmba1e0!eqC_T@v8q6RaLrIPLx|h3*I>cl(Kb2>eaegahoZ&qYv(~ zy7x|p1=LcJ|7u%|e|bUHPNB;AtJfa1`-H^s{zg;tqT4%H6apGXAjXU}k!NL%DB7>3 z=L}7UEhAO;TQ*Kh$E()a#GRzU`BVeuJ|9t(B$A>Y038vcWbhN{qE$--SSN{9qgG{e zG+d<$Q$LYDXH*uA?FzSw#RDpB%4mNN{iaQp8JvOyyW#uR%3({X1re1AU>+eJ=;rq0 zu&nXr`Fwd6T6yv<&6i_tIe)!v|1on~|9Y@naL>&f*b>ZKOMwUglC749%N(=+0aN$T zje8Xi`5bggqDA#h=uoyDK2>Vi+28*z`vg*>Xf7B`$GYl6;blt+I_<+$5Y9bid2}?O zW?VxF1(<*=7$MrGvX}L{d<+cKVza`yr`~b4w@@(v48DK9HIC9Y6o{F{QjAEz2U>Q8 zYEXs9*7eM_!m$!($8xEL6g>IsAxn?RDTg5pha~+TNaAWCLo95Bb8}dsmycO72^!|V z84CUs>uEZxr*=JNzPT z_IrLc>>A$b^T|$aY^6m|oTpLZ_s|oWfgh^0tzM}`fR~G^GFD?`>}@zc{TVA_OD&Ml z)v#qvt;|b{c+?ybjoQ(Q>yU!|A3r~#@RWucTMFC|a|EVKp`kYHQ=fN!mSEb;!95XZ zKF+FhR1tkas;AniPm^qgyrPF^YZ_rWArUUp<@J2vN{*BsA3;91h|`o2pO(G$hu_{K;M#FG$6 zN__=~NmYO!8W*$LkV9v`ShM%(RKasaVEYPqEotX1HuAqOAlZDbZT&l!U znnLS6{a~htoQ65UF66p|*eST~)EMBvtMLaR!i=HE26DGS!v`j1x#rOyU@z30exx$M_EJnhLln#2JUB zRlSdSN19tA`gS~CUS&Vc@>I>SD3?6V=oX6OVAClVdV)_5Bme;P(LPq%3ciLDE)>Gl zl%)2Ad(h8~qvbQ_#kp~_DJc6~DqOOoFq%m{(trzE@+TN>8Zon=kbu@%~{8W|J6Fo-xV=H8g zBdUa(L7l@ZK;a(ZAbH$=fuIH;an9L>S#!_bVWL%eFDal)Xlb0tvXb9vEesV2x~u=H zO_)vJLr{RC$0;9@W>lt1T1NW84YK^v7BdPknJxOuw4%3(9eB))^bdKg^kaHlhK-0X zZ^lHxCq6IgYi-J!y6uJ=jz9iDv{UwOE$_1oOB z(BtC0-^u#fdqj#Zg{&~*D=0sL3|pWIW55&Gk8}ot0AK?qQ&r5((m8ZoQR79gjgeBj z_Itsn&&ZBUV5Q*rfLMT!Pi7hDuO%njF%V+DKuU%;03^G#K-d6M~7C1NrpT zoA1QIxn=QrBUCOeiy_ge{_Lfg;Kc=hg`ugAD_M(xu^w*Ws}F=2aSIK9KYOKys{h;V z{`)p%emwMsbw#wK``ifVmv~A16{1K_s8F%O{aTL5Ny7;Qsk|KV;Bl=d-p-cB&7jco z?oIgX+$L!h*@1w#Y;k3cV&moSiZ%b`FPd%L6?p|tXOHsD8WXxGEa4EH+J-sNe9G#8 zcmLcbDPk1`^(2zKuhLbQpFRbw)F?8%j_cu@GRD;< zLm1&UM04ry)0x{pLy91_{|W7-*5-2Iu(wkdE>6gnS`&z69u@@+e%((PP$Q>xGLNP* zt9guK+1i@%;wsNq@ho`q`4#)^)#1&t{L4NuY!S|8O;%A##`t~y61>bBJPQL5z|Llj znn>YNQX8(13{*)0z-ZoC7Jp7#-c!^Fv6INNri0DsOq8BSl1Q6H{X!fUqfl6wrD0+m z*4akP!yj=w${xcS{%n}>vEhjJymfBw-rh`U>sH6go=CLs&%z+nfS}@B*S$+m zc8r*`(r-Iium-za(~-Y5Ee&m;>R69#%9My9_9{eDNtih^!@y|C0420Ui3!>}zPnH@FRC z6IQ>x?~k!&XR#wD@MOQy-22O*(yjC$apR1F?1G>x2r-E(fV zibrNpHnP>7X?rQ-K@I@{092?EK^BR-P!|T<-6T!MEi9X=u z_YK@N+P@u>R9LZ1Hnn>-Vng{lb`!F{hZ}!Sa=o-NYzS3KmLB|zl&t!ypy&Cci#$O& zKNY7eJSLMs{DL&?q}2BAu)*s9i2wn{5(8$E?LAfc-z+y#m*Ph+5KCvu zGJbMpmfIU!+cIKu$$1Sb&kU=xY%RyQMNGD2meU*;6=JzfBPgfUP0vC&Nxj zBrY?}6%pUYSk_*D7nt_-d0ZjLAs6AQW#tosEm;_DxnAUoUMegJ_(-%< zb$JeNud&wL=_Eziz2suR8lxv86B(5zrz2T#WEXXjR`dXJ|-On6T)s zjT|ENNEf7OCoZd}fqN>zI>}CGiRwxvuqZlEv!at(#4>FjE09sXbC2NCH<5!Lr2h~N zxhI7UgbLpg>SA3a$78~uoM~Os7w%D6tV>2}NA>>4&ovOf`(3VCL8-u--ZoY^Do(A?P9wgQ zAS5Wc+WDR^Qy*K*+@y<6oWjw7K30>OpA?ng%=n}!ibi@;DqX$ufY|c)nV(ao`@CNy zRzv5X7+lyI_3=hvusLeX=Ga)Gi2wQ>FDCiaw`7rQBycu>;=OCweD+=pt3pJjB1J)b z5S6F|-If$bG!vaYDHgB(PInG`?^NWaz9G?|NXI(V0a_r_x&+0SNCzEUK2WRe3(#^ zcwvs{7{W{b6y$>T9x4^^&_x3pwP+F*P}1tBU4#sPR(+utmBJii{;?X-U3;tULW=A` z@hoJ`E(1g8*GNT+eN7kLOEMrzI8Ru3JVF$)eRb6F&E@tAa$hj9Az$mUw9u8x{(%C0 z!HQJYxlKAJIQj69TZ1AO6Al1qmV}`rM2`{$gkrD)F)b}AXgDk~(Af3E^=HVdkCGr2 z5%?J8sNfTz`k1=?x+hDD1dino)ydgn`n2Zt2+gkZ#fO)h3MZ+)h31Ye@EDb7t||jZ z(&H=Ugk(Hfs zIC{O6fJq=YngRr%U`*Q$LM|#jEL&EZ4+|Fa>%*u%PWXg9Nj*4x2QYJWnV4)M$T5^F ziIMXdIUpQXA!=*I;I5Xq^~OxBh3_^b&|hxh5SLylP9_A}Jh0nik)>0#~?whkclk1uB+iBTPxB)toFrd3;Ag>_=*5Yni`^w+gVLMKPP zV>F8Qdl*c9(=Ap4Yk-Qi2z+?GSBEzfi71}b=>PY})}e3}MmmQI#J|nqtA#B>?Xg)x zE#ev$2Lgz}cM)hOuCxdz0IrS05&LG-edvy|k11gw_U33jv6Ezm0le3oG@pv@z=`H4 zL*mUxo(Y?0!m3~Tm&#Svc6v$+3-xbrx;UBdbLm(Cg7H-l+$3?lpN6-D6>$DG=CtZgNO%I6Dsz-9nN z?UWY1wVu>3i6_dC^goU>=MBdgw^A)J=gKL1M5t-G|K+bsD6OZF))XTTmGcP-vPozr z)}@D8To2lSR%%UU1iCgs(K@9C2b<$9EOW!w`44oQFMZ{Ul^FSfAgM2I!sFEW3W=Er zs4<6w@*Zz*PeC*vmjJ=QgxGXoqj-Nsbi2OIlQ=E{rE6nRH%}GP1B2biA%P$f79um& z+ZVP-c>mTNUUXgpN08Z%4^r}*Himv>eCEGzyywY*|vH3Z0USnzHL1jt_HZba*U6$P+kZSBXQ5F#%ta>6PIldKvvyQc*6{WH31Pb6eHL4t3d$`USW75u z34JK^NWA1MMg=LVzZIv6n2#Zw0|%yr32!)y6%wZ%D2wL~pF$Q`>~3J8La%$kP!!@p zpKU0FPrv^iU7@PQcDM0I8!6TwU%oi+6Xx1a{k>I>@F46FFM5kxw)XUhr~DTfm=M+X zw+QgTrO`8BUsk&!t_YSORcRfbz;FR3x|rS~i0h$;S+@B?rb09DoLXTPeo#bjawhx z${P4;yv}IOVnxd;{^Ou_EmEf*~sbJ-4fZoryclCXs%8^V=3X!bA`$-WJnf7~3 z+#F^sa8aS02eIht!)AXD4xcE>(z3U(`1U~C7`dXUrM+62c}IN;if52y{Yi5_Yf8`f z;R4Y61grry1ee@X|C}W&&+i&N^TDycsUBqTg#5Hyb4s6EkW#5oGp*tvZuF~L%ZhjC z&gSND#Cv9mdf*BP-O|5psxO?|&hhsg37Y(^>@U;J;7ccgWmD9I1%ZVrgaju;D21o^ zPz=Fjn>AI*Z_AN^m)-8#f2#pw}14vtr6L36Xpn0fH!E?{?%0H`%RSuXmN2 zQvwgaJ-My&2rEtv|#|U z`aBU6gt}9f|M)+!MV{gG z#|UMSk~FAB-QNzJ<2E|WDq5(v9Rl_7u!)a=!ZD4g)xDxcUiRSs$uW6VJe!#pEdU1c-;Wg)y}9gi=fUt`Z_!Zm!EM zOO^ayw+RtJ+*1g_{lUQy003{ruU;MsW>{RxRND9N-HrXf{__tgT&v;wA(*>Bi^lJh zNvJPDe30gJ56?t;!uefT!uZvvTOoT#{~M0;$M#c$N^Bi0>Mj`9zM7{+(31?RB| zMlszBVD>LS{Sn_FBqZK!i2VC0$TL`Z2uN~8vXmbfQg#taXkgHqGSuzno-?LuCy_L0 zzIrFsC6mMpg1?EvDDzHN-iEBN=wX-iE4U{S!f+*(MUOLhJV}|Ts$M$~m;LmUL#RTa z($jD!QgW_%(&_M)W1w;Z)uUKqg^_K^4Zfs^@{e%4#P`v3J3OX2o^v*ek) z7hO;a3r&YYrjmB+PXPczaTov$1-#?<>Dkz(0nwm__#qZfAf!XPP;{1ClLZu)8{;Oq zShHqllGqQzjq>&`9SGnf9tk0+geDFgi9#q$n37}sty+5R)d;L>*)5Fpm}Ze+&D5d8 zt0{`uVWCHKc}L5~f^7{q-=Mg1C-9kv07NDyh=H8taLA!<@Vn72zq2pqUw&LsbxpA` zsU-=?@LW%NcE>3h6sk#Df;pdTl{!R#9{JEqIX@X|0&HocL;sL=NZgCy7t%A~@Fy!w z2{JTJF_vL0wxbEk6m9bsByv&ZGH15{63_A_rX6b$2fVg;2Zi2e()&NWhP>dKv?;s5 zjR&`aWm)L&ziiAzUD?iiS>}z`vkY?EyV|HADJm}fILZ&Q|HYr5q41f8tB2Zhzg^&& z-Yky2v0DT5+~n zCYh(T@;qm^oU|Ks_N$%uoop<*oMK(Frxdj(KM%#5h@_@djQ{h~cEU?B4u`v%n)(le zQ4K%@s6V;#U@JBkdH5V&PRiKUQhJ6i z+LGVWQ+`b#o8Ftiic%tV-Q?NhK}>%cbbC2A!y1Ql1B@j%+`7Y4i#Q_zMJ+!#aTZ)< zjbw^}0H70^a1vah`X!q21#DQ051839&!cMWP zSmBsWe00o1{hc|FV6l~=F;0mEhXOmhwAHea!IkF?UiC+<=hB5w9B=-`<%tgH2h zAY*7bZlboEDQVb>Ck1BV+NI$YxEU|Ryzj#PyMnz0gM@OqXkn@H_0&PMs^Qf$!!{6{ zI=R`#%~hEmw$z2wRh&mqpS`=p?z6wka`JENFTsf4#2ZJCbln80)^Q~e@Ug2n90zvF!oki(IJTx zn!NplHbujLCM8R?y=Nwg-*OUE!^hQHT|l0=F{gEnGA!#Fkq)`ZPPjMrC^^)JHQMZe(> zMi8~q8l*}v1rDg9Wfr8YhKVKk8&VP_-hl(o6GR+%(w?@mH0`YUkDp^GJnwt_QQ)C) zEU|sFIQ7JOmpF{;UO?I@ui=g?WZU-Ne)jxEqvVvOoje#a9z_6vb!NMqMn{lX>t0HA zC)$>qvgL~it)i$qHCPz$Sn4XQ9poNu<6v^n6C~vJ`kno;#xRkT)@3OL%B~dIMp#Yh*t@p(RCc}vUwJsxZuuX_(bST zE%66iJF(*vn#qsJs0u}@w0v>K-H)l=EMQg=J0u&K`LIO~S1J0kOnCH}m*&(KZ26Vt zJ|9Dm?5BmO7KZ5={y(*xDU=xY;zopRZ@=Dt1-_Ivld_Z-eEsiCr&7fI0$NR!%w<(&vz22B;zMC6br6| zrtm55d6d2Hg&r=!rvQ-DhSVkV1Mj4rTH;F8+xAHEKN)#VcXgTfU47~K9?%WYs~Z7_U^Q8B*7-iC-XTS-MS9tyM{#%>DH;MISJsbc@i}f-bgZ^(e|4< z#YrDCBnetixt~8=r>aITV$X9AuG|hq*36Fv(=YFd^V3#{zhc&1VLHO4muSNxb8l*y zuaBe?TzLWHIYIycj2UqZIl;*+Hf&KH_&wNZ0t3yzn%kc>62>y@N0(>Q zf(`^;W`~wRP9o_cw+nE$)Ojg*P}5_LL|iygb$3DpwA8AXq4ms@>UqJl*ms#I{mY=o zQtVGPU^oCR69f{Oi`u9r1Yzjd@24<2cu%UcNjf>a)LBDLcN<*aI1Megu1%gIFEj^_ z;Cm(1nrJPZiwA%hy4{816`_hOWTT3);lt+beneBdBsBS?>}HObJd9LW7e6>opJUo> zl+KQAl5d(7cuY6Tb5(!--1O=q)i9^hK4O-WxK$NOUSOvRFPL*K*v~FR0svrp&gp$X z)ObE95qlKMW*dSMo?o$EX8u;Pm3)@DNB``7G2M-vPs?_yc8W4`_dkx#f~}2ii^2hd zYjAfbxNC6N3St?G!19Qv}P9sEcPY_MAP*lVBUJ5EzFt_q5v24zH%2Pz&>N^u# z5J)RjnpI{g2-QBcHN{~LWq>2vB|l*3j^7>xL6*_q7BPsuBKylocrIr%ER33jQ^~xs zo#k%`dM4Z~Tc`Ve3UA@Y(M(?ObJqYaZQ&4U%%suA{Kw|e^1E@86$n#xZB_nB#rk%y zWz$gjK8oY5=<6K_d!Fcf}e)% zglqKI^m*=po!dfU7!3g*vN%n6lW?vAb-Xw-A4iKusw+Le)9v;Sw`F(68DZO8XcQb{ z+V!?3)BerU@2Qr7VGG`=ihkMF`@H?vT6ow5AS^%t8IIcQry4qef6mmSo(@Ne`uUjI zTp_U>RyIxU^U*w=k`jj!IeQ(wyO=7s3esm}s;5%xbD|!{1&S&TFC$3-(TIWjcu7Kg z^_ZG2ACP`z;Ze6;`yoQP_UArtqMCrc^^HnLXs7Oxd*5YK_1j&U@#VLFb=7Yl;*VVe zqo#!v8%nLu!fpPn5J_2td}f1oUjP_K?PK9uBOw@6_0(ZumDFi-E$L!$oIfR)jk3)K zG|PCjC<2bomV@A?NkR2WXVK-E5T%(hIcg?_K~Bk%dBR^KFkx_WnQo87DACD+fXT4X zAG48d?=lqAOMPdkkKzCTlO|yVqD?ZYg5m-^0H4Gii|NerPYdF8BI8t@AS4!(;}y)7 z1JmS}5sB0Q7;uXH=rpki8;(E<{w%zq?9PUZN81Rqpr&*hjU<$V2ajj&P-&i-Vl|O6 zoTk7NYfoT~c3(|2h}ex<&~Zv0<87oaGTJwK8zlv)BM4eopW0yOiJ~?0qQIykB#qZZ zBlvzQfdwiCATRi=tZ6V}KhPiv!4F#^c_y%U4y0Phyv*lwrNCjql4<0n#2x(pkDu)j z+Ef!=OECAX<N4L|8nA1k;SdfmNTA0`R#3d^gQq_xb` zQ4HiRfa}Eo_?gDe38ANXo(V@M~NPp3$dgfL9u;tFC67K zL(CC|gPg40(=hWjm-k_1MifveDy4FWvPkY=s1qLYFi!$9t>j8#SiM?<_700k!sbW5 zd%{5Ipm=Xuol#B?NO{)hC*r|z3sj6B?jMvneq%(Uz$+M46&R!6D*R?!|7k9HWO7^< z`%I@i^}qqJnVyfJKN;451ORBPMbzXYv7%}K(FE|2!^g6?GHoPK*(Z+e9t6}+! zrKlEKJe)lnzI;w2pk7LvZ>c^mGxuiHxw1g3l|;N+_T_b=UKp%?;P8Zu`;4yAejCZt zR_pj=++Z{f!TK?%0OUZ9jczS)U|i82qCyow*9ZXstgNG09NY3scD?0O^f|-n{vZE@ z&~X~CPTTW|2b>z@n4cSAuLc@7(19jf@@wxSlCkh6y=1OiH%3Nq$G__ZI1t6DJgQAI zmF4HGtip@f!uJ)#L@=mT z7@cVRr~+Hz7xH-fYtP6Id?u$Yb>^TozLtZUNc9YSX{=vlh$< z2yfl9T?Wh&#^1`~`bY)n%s=*3WfWGvefqgG@^WqUt>aDf#MUL(oiwBjX z9i)_UYYt!8%Jtb$A5M1Pyvj=g`s3h8;FKjjo=jm^osJY?!Ci1*Q>tG9gvoCuS#hd_ z_(_=9V|K$f6WJN5Ec~Rvr7MQ=?*OWc)`ZF$32a{hbQyt^6E*?f+Uk>^N7LO+3$0dM z*__Be$l-MY5A8bd9q+GzX#l{6(ZfG1eAwX{4GS&p1PP%#!t4wuUXhG9#J^!JR+NXn5VqsSodm#~`L}Wa74WazU z&mk=BrODbQnCI3G0jj?UH^Oajht7{}!W5*lc>T#G>^;${vrOWq_8V>w}Sv>J^b2v2R>+dst1`Drr!SBD; z1>9VvD`ftx!qDwN{}{r!vNCrTB8YezY-JQc!A;WME;8p6nGA=F_uJ(lpbLm`2d~*P@{ojoRJJ|RKkEebj2L{((5)vmKK*Dy9qvsh~Y|W%F8PQ;L-jypWHzi3p zTW}Hkx8X+m4UHGHD4e)3#n_)vD$r&|FW#10SLwjGsqJz$ZdRaU?PGbrkYsaoIg1Go z57Q+Bhae3GFArTFWy+PEgkgvSA}r+kF$l|x;m6njDG<_q$(MK}PJ%@13F0?)w14h( zD&sdg)5w}nDl-MlC|x6DT|x2FKAJwpvWVuCI}>dc0oEPXc-Y9|vLg}`9`LcF>2f8< z6eY|T_(i)xC7GI6AO(Mv$>hmP8Xvf~Hu*U^2)5wNK}=0Hetq1+O!xMa(Yitl9zWk~ z>r;xlue(+l4Z9vOa1ewG-}9|m!_1mIB1EIzSl&k{C4^qJD~ULfF}`}Mr}`MS8~fz{ z=T8{zk}`Pk=jSg%p4p6X3}D%xVa2wx$zu2l!~G$1vb z&o8!j;3#s(uF>FeGB#g}Qvpi8B8LTt{oYz4{{dpJLbPr}%OHTA&+6R=(nbnSs zVnZ*k4c_}ALyUTmEIq7@{BBN%zpm^Nq#7#qrYoC1rOaBc5*=;wMyQ5P z42%;+7$bK-(&GC=h7|$=5H4)qBEd-{&{|M)p;d%o^mTAwiT`rk~;(L%z_h z+pgMrdYaxdeD3NFW8;OG_N3Z{qfc8w za6e28jDEY}7NCO5_#)xp&PP#bVM_UKbi8L-3{bz2csOCRM<_mIw*GQ8XZl&rek!84 z4{@)Y{CD1hZr1fZSJF%1YEK$@55#9UFJZ6{kkM$RiWybGlR}apIf#fxi&X&}JBU!V zYZWz^g<$C?#sHc%EBOgE(sM&e=#=0kd6AU< zJAb~10WA&JE}2N(Y$j0AMQH-G$$T{vo0bQ+OPGI05gmYIqcyR21V!zsk9lgWGZl{_ zmMkl(2lXh7?A*UbeeXdIFHbE?QT42TQP@34VC5y%DBXDVGwDm8+g9b~asbThn?UIPo%HX?Rib_2T2beg+iMXQ(|-K620{P;Bs@bVr*4|!XhQz z{^Qd7lUZ0Lp}ZCv*Tr|F|%UT;%`T`-K}{*z8e2tsBepK+iS7dZ=Xn zE0xSF4yXoGmH{-wyo%#+JB^}r>=_Zo90RlD4dxsR6bX7(pPh}2BMlUb1kEinf4``Y zn@IN?MvuJ*VfIlY?)rk?cErhJA%^3q?Rd5l}brXy$sA*9_pqXsHOg919 z|M)qE1tu8i{I@^T@ObJ{G|CNM!Bri-cX@Dw{*pH$@$ZT95s^Z11)f< z4p(!7`0%XSK$Jq`7A$d`eM^B_44TC#WK2HnGCdQ{rkR_6r`D71178!lwIcZaZZ1xZ z?Ge7vRfA9s0K+jf9Hp-5)}&{q*HnXL9-5VkS6mEWv_cz}FqBwqKJ)~j=y-i};$fArU&uIOlLzyD6_vHGa@#H*F^Tj;UZXTbrEUA3;)~@7kK~yw5K64g z*%qKeI>Z2(RzPHV;)E@7==n)u>i9Yrm3^h%&i!E-UAHt=geL$*0~j2g`s>n>0vamd;9X}ksk=MJobOW;<$So9siSs+51*z#?SzGR)Pz_r4q!ExLWIiC53$fdHqZvo zS~+2;-SnUQ%hYae(dy88wK#FagKL35{y-_z)e0UsBw1DUE%XCYdb*#~?VA&Sr$vdE zlQmtC9^`13k6`OFd8=bfufwoY(}an0GMXEdb!1=*?qG)sTe#T8{Sm~&7al_4=(vlA z(V0icDVMql|909J%^O*-{hdkJe~PTM+#R;u5%KL}N?BT-7=lU4?a(+>0&0URoW2L% z@%+cn83F>oiPo?yubOsw?zJer0ls&*$xQF!AWu&H(Lk~|hi3>QZ)VB|w2p*aqGvRm$u1})z+Pa^@dhpBgq}~XgNX#pacLsW`!y~q;XD=G1@W_g=+;qbsF@BU0 zA$s^^x@~GEVGu@SdP!0ae0^aT8xsA{y+`W>bt45$tL;i5pTE+_2! zbNhQGun7uIs@iWJETn@b!ey7Qveg3UcrASsKlHWZ5CZkkNK?-_RR$}PaFSWt_V^RT zjH&(UE7&#pGv(G_QEH}ntWr|uvzA0s{(gH_qpD!(S7UGFCYw5IOZ(8jkP5G_KgC?~ zX{bMc;vvGNt;M6QJVMWduK(co-8HvPT_=#isM>-M-4pv{W{%UBpFe4zJ=p497*n}b z-6{fW{a#fvL40WM`KBzgfUpC6ay!R~6^SQo<4TN{K{lmpv z!WdG@15+82!Sb7wrH`wlsrAV*Ok>LgnbW#R6C&Q`Ua#l0g6KP{$yPGG?IO*lpJKU_g_wTOHVX-MNi6MMeNh%VA)aqi=#st-DxvUVvd-;pK zP!on+>U^%K&ps~X9ZN)YBsAbOUiHaJaVoJe2x1HlZaq-(+4w4(+#1CZGx2eB+P{iUG9JJGm*-)5ulrd}y);za z+B{TWDVTYYqB=lI{#pv>3sF7>>~Cu71x6Mys@x)3V3kKRA~vgdiMRW|sf^A#Anvht z)M;u7A+=u3afaj{{*gYb!-Lk zHiD=XSBwZr*j-iM>#@*~0OFGn>j_Q4FzT&|rAcg|%?2#DiGOcZfistMM;9)L)E6}j z7pBxf)`~R{P5hoJ#*$!*`r`(XGn-3hTlkcgyf5XLj9EQd$Z{h(wvzxYg!K8f?lFNN zuefaIp)}q|C0$#R9ww@Ya|OY>AC<|a!Upf6*3N7tZgWl3&dQAG#AK}@;DX@Ja!5?^0o)k?EG)_|Nox0EU!>|MYN*aWxSmO1#8e1=qC0J>zr%#jyR%lU-F8#5Ql(R1qzii_)}&l@ zG$7-3yH~7W8qfrQq0~^y&h`rtg+)}55ZBHY_u{c4juTdS(&kDSRnPW=YY{*{3EI@E zP|9qrjKRA2R~c4uPZ8sSC;<46J-RO8yJ$?Uks zm@FrlQ$B&~1W&CQCUT-!9)Yy8^PAkm^R!i#1P}+FMgJhb0jNc;{0AXrRT1VhOOk@8wXUdd0sx`#u%8c0<%bt7@m=D%4QTEiCwp%wp!W(+cr zatsM;b@A7*u@ac_HcQM+6b*&QJsNfFB-*9Zz~DuD2iEQc=YyYLDyhD_eBA%xV&VSi z$mRYfhArJYIb?%SuCC5)@__6hdLM0!&H(^o;g0jJg5<6K#UbMkS;65dCdiJI;%VPR zr;9F$0xbU@|AfKY8|q3y^LJZ%hjZ)5a_rYY%lh8g$rKVWZxjZjG7_HI-zR382xf3B znw+eb6@|^%e5Z(Wrj2Qq+TrxT*F^j#L@J}=RH@Wi-!vVx!26)-!JJ@cl5fg!@}2k0 zKxiibCc-pb$THoq;+N9$43Ml5ty1I?gh~Vp1LJBsjx7a)3Qvhzf+%0ifaky5pWxs0 z1-UMn_ND%-xiYobS}6us=Ddi8Ag)1DE(_*B8hl)t0pM`q)_g>MNE0q|l7U`lEngoY zZxdtAG+#(2=_0PALy$f2MkgnT$Ch7zy(5nkd%Qs5>4^OFyg9HC-!f0Szm1)Q^#p}G zuq5SKer*<#P3Grr&00qk5aX9}(-KlbO$`8qz;#v2X$@FOe?`HM))fgp(>?yRvbGd-#j)}`Z}e$@a=DPBoPA>OIO+_)}XnTkdFC(lQ`1s zKs)ANF~(8owx1qb&XXUw{g41*DY9RQESVxPLD&_npkPSk6x-y8nM2i8hrr4~w%WqP z1a56t;|h7k*0Qd=I8uoks%KhTH+@I{5AYHyJM-T_xNzxhT#Ofv$}bj*azGg)0k#5d zG680zU@M_)gsHV;=1JL)7Qy<$<`NkfSp;9pEI4Bv?8TNQ7^3G5n7r!Un#VIFZ?!EtZ@gJQ2_mmD zL(R0fHJ0#W|KsN;EPT3|4)p$NvYa008YkvxN&jP*2+{0rIDf zDpJBqPYhx&xv?N8h)h%pc4-u!3X2;jo%7_3tnfxYs;QDjdy@=n6dZUJ=>Ju$z9{eY z!QInLXN$O*E6g>HS+4~uVZr8O?5M@C?lQvFdNn$%eqe<~je$G)7;yMwB z1<*T7KtNBr%2=7Sk|os*O7SW}e`>~3?NuouN?Y zUMhNC1NFV4pSFE{m6J|3h0hyd?Jcic8rjjTK$LEkOjJR5p|%a8Sm+!iO$zo3@~-Cu zKZZJ?d?cX^=YRa{g~4l^t}nAIx@rIDVWmMP$8GmEm=#%;aLaNMctH0PoT1Gv!jt2z zPtM*>BA$Bx)8BGzOMqyDXdfR>DaENY<8A3`B($rH)Puueo*-@xgGQk*(+vzAMi+`( z8Ykiw8T4Z7zJMA8>V=3=g%H-ttEq{;V4>rabA-sFb73#1*+N@Ja%>0&k+Vr=;d^Mqq9Xe1NKAHsa17dS2#IIm)iK}Abaa`U-e#t>S$~-RC;@{oP8rnMCk_&h5&Gz)dTkX zvLy-}YbeF}F$DJ#7pyU}z8Wh&;I&Qez=#K*PL*$UTb&ZY1&bJFD>z<0Shxg6Mt8I3 zF26RG_8xP3RsSU3cm|BaoiT^kW-eNRg%fE6$liQG7Q7+rhv`+A3v7>_$8y&I#rbvI~nF{>!=o-hEVf*sQ%px_lh?nNl!tkBe78C z5GS*YB?{bVPM94je&&+<$ss1};GFF#whU7t%O7zEhXwXsX>zkv3>W26GF>l}ed5CUOkvfmR^( z@jR?+&4Aq73b3F6Bfi4)J;uVQtX{d9kfX5_{9%rU-bZ(M7aU+?I^ilLOSB=Rj#QQ# zFGn`cR4qd>NgB`&j%P1%U%F$V45`rNPBK#4D2yoI!ikXY)5N#B_gl03!uq=vf&66n z?d!{jb={k+>8=mT$=eZ!o0W@%hCV!T3Nj)kWZ_NOO;=Jv>1|=4bZ^YH2!v<#BZ)L1 zEOfI1{iUl?Xb&CSh>e#BzP*HP9`2F;w|4%ZLe>Eb#90l7(?aGPcDicPiAzne6>UWF z&>&?SGnds*(>nb?fit>X$lX}~v0eR5@(Xvz;pUI4tIG;14kZAt7`X0CwE5e+Z#*h( z7+l&6Sx&A&4#6z_$`NDS8Z#1k-b~_B1PVUFQ1mz|pj_+XqM|(b9@?}KN$xeu<9QH8BD%KQz%lNGW{ z{U5aB*Lv_OF2*hTo@ay{6&0n+f*x2r%0xN+jAVy-Hpo8(_FnIdTRNYLF|2dS3WkPO zyKAMcsIOetuT?h)Z2ZU1MHm8#`RWfP=mM(~==@Jq6mEN2M zQdWaI>R8LSYT(M0AIYGypn+;(KBQArlcjOF&D(86aGh7#(E%PKao>dL4~`tE6{nJ%x?pGGy5BdyH6(mXGxOo~!()&QoibPeKmB7} z$>ZC|jya{gxTz-2HUo&?{>RTDEb!KFZJUX_#rW9aTx7U~kT+DDl~X9Rp1Afpx|DL+ z&7P7Ku1gyBwlg6+;r1TvymFqqo31$$+51<<(%9G6WuL$f{bFov{8Tc4FoP@HeBiH< zbSu;ISTl=VLfL`FV_XL^^~zfHNUHrxou(s1;37UEHPhUJ8Xc+pG>!9XOa zu_2c{tEOZ`<0_OoG@jFJxL@jt5R?4?{%knvcR%8M z=lmeo-xJ10?+f+C#SO4uA}Pmw#kb@(G5_%nUf90j{?xy^(bBvp4)Z!0Vij4aKk_qu z>{)dq8()IG7#mgL=2~=R3_78fTB8(w4A(#OMHDNhw8~Z*6_nEet^snavE;J!{z=S1 zUW>(90uk_N&DhMK?&tsO!l5nqo>9a?YPB8i6GD)~hQ>^05+~B9QXRa3_3y<+cT`;f z$`Ak|sg^@Ax0Q5=q{EqmgGU(OLRk)%y_($Nij&Jry0rcgFU}MKlCm0FD5sm5YBQVR z){HhFtxisC`H09Qkhy-vauq&1HLyg2TiP-@1;H#OWwb&Phh=EB?@s45j)5%nF1LZy zI6+4Dvm{T*U;;v~w9P;$lxpG6?vHmJ zn6V002)lPh-vJq5a#D*lKI7zo6J)T8^*E+Svw6%0{|-ub=)LA=iKOd0%WCivRTVZx z2-8f}h&TjSzG!$llR6saMXLBDH{X1#NmwiTul$3xUm*X9zB1YXa%LU}| zaGNg@!fcCHJ+}1DCcd{lT=o)Fc*F0Ljsf#`7+xfUoSJbQ?F=@_>)&2U^#nu4%4CVS$vROT}+P}K({UG`TGTFWU^&P zIWY!Y=6`2lV5LEjV4v8qB45W*UP`rr5F!<3W-v)+kmi3BhVM^0JX|^Mz&PAde8vKY zOsoC;ae_^_^>IDlWx&I%tA6U{-?{4_bi343kbyJG0%{qn^fA^XYy0pRoO5sJ{QT@-A?amv zdM@RN%?^k?v#JDJZnE%z>trhxv_JTbzu6QX z-zIewyGx4cyY9WvYfnWFdS_5x3^UoMi^)yBoOAdh7c1i8$m5bOlR*1 zqr<}Xkplb|jOh1I2IKd4H)=hw0)q}k3jk}ZIeMH2G*g`KNn-xbPm=XS;hKVO;d5KP zn#$CjEJ6qscX2RfQ^Z34dZpS#yb9N8gBrvNsv%~MhX~BX#9(6(>e~@G^=6$bWKZAI z{GjM`>r_D!F*aQ}NYnm3`cYSxN%5<*t)n*=Fpr*6JS$hcaSFXR+;T7Vz{|PB0MQ@{ z%8ra~$PepGIXZHc<0h6Fh z=G(2UM48Cwh2K?(5)suBWtlAl59Z#9#I$;Ymzs;7I}tRIeVk%*wxZD^JcySuog z8|X-n$d#=I^Cin1-?x@_m|RxreUa-gE1_OID6!3vPv2v9`1vj7s=_uab$B-oemwew z%mMh7jRo6ic_Qga_GSeuAtDB7hvEL;`Evpb?_s)T$qxDDV(YMD|HB0LJXAlSf_Sj1 z=t?jXy{Q*QmN2Xxg@Z3htN=$ge8E5}i+bg4+=P?lkh1%4Y7o-q2F0j`U&~O}42#H)bx+(cwaz8@ zC;CeBSh6S@s!$-GqqLaWNVkPeZl1$<38x9p^d=Jz(-FsghA9yJjNgfWq~x-Bhf^!2uFox$%=jCS&P`bV%wKvzM6R_#7GVtd z-flZXUmxmRO$J^gE3x<(IgJJ@uu4fcQ^2^mUQ_5zs30m0j&9sJhlX70Xi5SGi1%Rq zf$(=K;6IV$hA`$~4Yw}Vv<|B}$3wouT@;X2tI$ulhIQj0x_cHc#GCw84(9Gk=TFN| zInGEwvlZgLbRW-j%vADG1jgJ4HxG2uP5yjJ52|A6ufjgbt`Z6Z};7*HtmVW z=5`xBE{8ppHvF_(03aB>M~uQ!Rh1)HsQ<^$E-dg7$`2EHscV%Yrj_gpjs$f7Jam6% zTLIWR9AB@Tx`|l$UoV^3;G|=Gqn#Ury41V~FIosvXrZ;sfn%0-F*REHXFtoEPVdx5 zh<@SY!Js#lx{3`KTD66#wydpXda8a5Ga7OXrMUDEkfKqcldXJHrq$VAVsNk6?O-- z)&lU|vJFYH_&xWJ15DGJo=jE;wHb0^la3m!^#~*@rnB!oYaUNTI!(Q$5{KcMpB!l$ z{?-J`<Tno5A~^OW{qxS* z^fjW$IlMkll!cQ&yyzbPlBC}Vrrv7vHBx0EP4Y6UJGzC5lPpf|zwCY?+xHc+tb?ud zMsasPHu>yj8ILRlsZZJ{9y8a-fzQbH`lQo3BAc~M+ry9F>l^$a_Sb`6q=ch3mQ6tY z7Evr#;e$Fp4T%{5!1|GMXWGls<@*xxQ_zybfBbw002d9`Es-fG9Zp^-tl`?A`Ik1h znK(3`4*eEdj4YTrUHC0D!WZi5hkg z7|*Aql^sv{y1R%RuI#KaRIH;2RF=XDnLwFCjoKHzXb-}(aqC$81Fq9E<>3HAu$Kng zWcBhl)F3s7%3?M4`s%M^@K%G2rx3(12B4MVH`!Xc92Y{$2l+w+xqaZR(aNQxz*BHs z*JAC)X^gLYbg+MwLV!!@$x5T_sI)?DQ;l>wDJjR>u4>9S=g=eoR`JOtaX@n^l9xu% z0V`>c+`59;#r_`S8-eMsk*R>J&*IP4IbS^@N+N|`+lP`H{|u-P2M+`slF-tkU*OiM z{nAgJNzQ7ZyGWApf%YOI5XB^6sV&Sby3u1rUF+XJoX#rG{P|GPcwkW8^;%Hok+<47 z!1#_2YEyC~ng#*#42R$*P;5%VVNm&`VSyrVmTdDVwedx^hDNF%EmA-qPAP$D+4^uR}lfL-e!F&cfo zQ2nXj;1VTEdpO1s61OYvj1iPO3mX=h0~dSgmc zv-Frdh69Sjg?ch>rM(=G5zu%O`#3?kN-QM(lj(h*(1%ykpS_kZO@H?0GLR+fXep7X z7`4R%rUnXOfR107^+gis#3(bO1FT_E`V4CjvnQtnOa&V%<#iek%~@_GyaN1EnCZ!t z%p^9HT!)$lx~T1W--c)1TGP3UEX_qfPHwEAA&%X2T)mO_(uqCxQ(UKJ{mor;CHd5O zlRGzWO7Z$i`hvgr zr8Nm`@~a0IX-Sz-NgfC&P(SzoThQlLxsKPPd@4?>Qye7K2hjv-NrqZuIy2x>tb9075Sf30x@1WuUayW-?HKhfb`>8 zwU1Wv3KjqaA-LUZ682l~zC>WsUk2F+2C}yw*^^entMHRY% z`lqP-hZG(sN&Kq|8Y$qyI0#b zHPW)X@#YKu!47&hx3e+1QH~iOiI4T{=y>bh{@JDIQ2Q-yucP8e@8MRVd5`~kM2uA6 zN@Xj^3X}^RD@P6iz%bdl$`6vrFkBmE>4R0U?>7nr*%!qP&88w-$5j}Rr)i#4nn%gm zO0-v`8I3HHY$@d{s(JG)-_qUO8Nr!``Lr3ZBKeiF8QQ`uv!Y9G90#eZ{BAFH_BcZ$ zOgJN+BbJ#6{LA0o?{7lhA|M3)=#UVplILUYGu z3WKZsaBhoE2xn|MdV9Z2Vx{S)G+2*L+W2;SbbbG2a%9Yg9xwL(2@MWNPp${pWTf;A9ZRE*7#;bhXF>8UL4|QrpE)H(nlo|SibLAt z0li(xQ9+Mk`C&C69p9n3W*vVoY!pwH@w-=ho9+S^)Qbu*+Nh4&17pif?sm`lwzN|3 zc)*BdsUwDIoJatCK=lwm_ukBK{96}oqe1P2oGP!7XIgvaF$*iIi7`0%6~)~c0VbX9lN98e`N|HschED&UW!5cyM!cY52cRhPIALU-_{>}b*fBM?d;fW@C zGMevy;rN*XHH+w4LN%taznV4=P= zGxX#KgVnhw<2F_SR1|-@uf*F#mIxR~eS#Y!W2qhnlxrMu^d&0E0}XqDvr1Pk+Z{hH zX09LJn$x!R9twGMPEJ;T^uBhEyAogAoMOoGpZhOL$``9xA<^jbHFz@`NU76MssYjs z%d_A%rrLhVW`b8Xw`+H_sF&b$ac*#923B_odj`ppmmt;|Uxw#--al#WW~iMqv~xOh zneWYmT=e-0B4DuvsTV3GQ)w=yW`5d%1!IP}bQ)bG{I_vTC;cb(-^n~PUUY=e1)f?{ zdonAEG-m!)1=HRk7-VP#NQ4OdPD&Ztg4eSEKtCx)g_KZKqEe>prDC8Eb^l8K?R9ZU z(U`Iwd-)}p`W zj9}#R3_;qe+jxoTI?p2dH~mv7TFt-uvV4DwHm@HKnv*}M`-*;Z{r2#dk=2pyHedhK zI)~T5MB@a{t__YdB|SUL`WB;=n2eNF2&7)OhEP``U@@hQeKPjn{yOP>0MN)p*AaUD zM8{9fnhj5>i+bzUbIeb1azOdX5h#&vzwW5Ls<~@3lMJL@I10I%=TuCLlnX^t%LDG6}z;|6L{KDWmwu2fgB? zSdX>E1{N4Ie05KxZz5{UR?#wuktO_zo57IHUasfq9~^akiuj?mfvJ8gd^bkU_D+|# z!{!`yBva(Q{b^{BCU8o+vH%@yn*G+URZ?G)1kJ4~@B6t!Qwu^RGD?XtYUPu9%(PTX zawc!eNX*8}z3{)e@i(P&A5KF{u`4xcGbKN30+scSD2_#i83Ei>dLHr~{cRPKgyWW~ z^vn`FY|to8Zu$qFpgDcold+Uh#ULxTwatJSqcBB{WzwxeJjW;kb+v^pZ!f-4?cs

    G`CKA&yk=#XFtwtnrE5 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

    ;x6zQ;t<rih7z5D&lPkLku%6+EhV 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 literal 0 HcmV?d00001 diff --git a/web/src/assets/imgs/avatar.gif b/web/src/assets/imgs/avatar.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdbd32c675f85af4ed57021ac0638a21a3c6cad3 GIT binary patch literal 6334 zcmd_tc|cQFz6bD|n?QDwkc0#TNdjn8Kv1-Z)+S*KSS<=wq-p_?L8l8^YSlNjA@?SP zkU&^uQ)0pzWRX=+DJJYFYCuFlTiIk2D>&L}rxG$$9JAR-LhrN_UcMBnKUyqQ#v!fFg@4U*x23O{ju@-hnE_2a&q=w?aX>G z9^QLHCX=l_{JCF()HOP)p`pPqJF}#uB)s=#adGkSKQkaeQ8BY2J7DJPv=pSTT@#wL5EgaDPSFKy6!cR#tDdAr+RZ?hUgS@!Nbug1z}c zzH40FkO)%@>=!6A6o3GnP2Z-Ff&c)$C<4R~ERiP266Hw>WpautH7z~kRAyFoPVVV5 zdFrzoZGJ&vQE`c`^jukaMdkUb>YCcR`f?iaLK>4q7h8iM4tptuU?2e$1Bh==?g5>c zz1=sHNWCt^Uh6waj2;5^ngMq|3Ex8na6K2NW!O#wQE#}hAS3ro%^KRC+Wov75MZO5 zQ8xL~)reX=4!x$8xB6or!9CT>{jt?Sl9R0LFKHp-eIBWHwRxL{C|y_6ZS4+LQC5v# zi$TzL8%KG_a#WlrhRF9oCFHY@WQ1mb9irtP;a|&^MTu?`qk9?`^zdE|-NHQRAZP4U zYmA?*BF4MzniXf;B1*)oqZ$BIAV$B#S{aXx_8G7{BaLBGU+{ z1Mhb9s%SMlq#>DB|2%RV*dA}j$IkYo8Ykjh#0vZ|CTpTF(WBk!?s_q2PDC~c-H`bY z=eAf%E5dxkQU0gCy2Si`Lfdo#?LoEjyl~*p(X!c{1t0!W~?rlKZ z2gRxc8xjV?4IzMbEotrdtS8&uTr>`OyJSoZf72|Xw#$8dIz63(^@yDmesW=E@^oy+ zim5Yk0|%$_j!l+MssHq2j*#`HRw%&P8n6T$0q*Nsp-i;`0N7NkL}>yFAd{umPS~U@ zg%YNkIz!0J&R0rV5LFG5O#LE)VjQYeTb@)1;HywNwbO;{Lb@7NrpD{D3bAc0oSM*m zRauJfQrGv%ay##UL&K2Nr52=$&yF@s)ppg+&1SXL5*HvQm2mli_=g`Ur8IX8FYq+y660Ir(VErRi_H8Cy`>#K$H`J31^2DoMQDnDf=ZQI zSY)yWBiQXNyOOS-9MQGtc>wb8CxjY}l{p?*d5;s;9vEn~{28ifFkU1z%Yc8`d*sQ} zEii`1)2Ipr<3%yqxMNP?s9vz^qX$^B%QT$me3_|n?b$zp=i3Tm-Po9}Ili@J4#r(0 zJja2&3WY{a>*w!(m|<}&qOb!auz%zp%lh^Z2kREO>EpJ-%TIkd9jk`jM4}guxAw2% z9Dezdh4uJ#7~<$QvYG1kVBUYp6~^8CY(*?+jwHZka z(u*pA3N^0`Us<)#up`D;)d3#MTz?liOipVqIdZMQgS$SKG#E zLRbcC?aE=x$jNDVi!A{xyQ|8ND3FWgBOwlYRN^;7*-g5%{gP|o(lc~eZONvY_99Ox>ieYh{1rDQ4rdodoMu~@XMd?{W`0E)n(f-Ha_#$m!xz1!c2i1${WwaKop6HMgb=z-;> zi2V->Y8FvBBZsL5^Rrz`Jsj&4*?H&2f8o}K(RBk(t_EkS$GViw|lW~OA((#4A zz`4EgR~_%MpG9cwH*Mn^+30}W!ww;UjzwB6L{%;mwMmIPr_SF`VUgb)GbG?l1?Ye+ zu*8(vhzR-Weue-UAWc#vBq9^#N>g5&DXNt8B!9dZR1t}3r(xP=2&Acz*+md>vqqc= zm7h0dg{&zhpGQ(JDT(JxT9fep=gF5Y!<)&4N?OZJnB;#;as3W7bXP&_l5QT>n{t&E zeRp~)sd_UJ-?iNKxy8>GwtunU--^P9s(wg!WkY(VTWkv?J$M6iVo6nmJYk7X(nYi;&dK@iObK2bqM;I6yo_B2!wFhdO5T4vINJVZ&#*NR!JCLnOEfW^DLOfH1;NI zE{YjL!^z*lb=_r%?X5E6XbNLC0ryCbon5l_`HSa)9xpjbiee&Xp+KWTV0QI9-@YHE zJdSXFSM<(wrw9lZ9vkXAV1}1va)Qb|O?Mn;FRBWO;e~U)Jk{bG1hg;;P*csQpdGq> z++fR_?3M>}X-4k`I497fC>T0$KA96Z56pU&!Zw=#ZTQSZyHNi#c+`K>j07-%rLTA4 z;cvSjW=gQqBq^4R2SI$YDhYRC(dhEkca#FzrR1)TshG)JBxMw!L=JZ zvD5aM1@d|DGh3wFB;0^G?&Z!iCa&7kSgu+4Tvg_alY54;MO~SzcJA?@JylW8g%72f z-7D7bsRLRsn335K*=0w6i0g@*gYoZsdmy-%c4I_V&P}#O6Du%yS3k>;ee-P@X9Afv z^7Zcq_V*^>8Jl?`o(J!(A*8EI5#=IQ&&+roE#{OQM4tKB!cmq;p(T31Cr z=m7YhI1O(>(D9z2B9kIm(=JK?_khRvoH6#Qcu1wGvQ!XLBbS<)p_Y%>mAN~!>#jvV zf)&RBo_IeBn7nax^5oLX(u!2bFIZ6@xIARVt-L@gN;13B+x6gke>iwGOi15ZX~OgAU>y1V%oC|v=dDW zl8TB-01^nf5G$>#vujHj5CKck;+k@sfr1Pw8mA?8%DYPvjV{`PKDfW6G@}Er&AN;J zPB)f8cG9Lkn9`+Z;IUf$<0-Gveq-cKIhg@?Gt>p_Ri%Uo7czVNU z_L!|9rw$I(MQPSw@*4bOruh=aA1JgL`8|KYD$diWvgCnYwnwCc)?(yM@`ga?C#PQ9 z{802SCY#^-&E|zUrMp+!5;T22K7mO?_;y?H16V>2$TduA_aq-1tMm3Ri#kKh4sSJmBwQc#z*pme1x5G zPpB$%XC0s8&CMUJ7%R1^P}X6;jHD1K&U?DN?q8CkS7f|@j62a^Dt`fJ&}v|{ZICzj zT|(d4;19AHn$OIRkOL_=uLmMa;9%5uh)vm|mXmsSU6>SRAvo-p0X$}+MCQ(uyqwXG zaXxjP&OmP(TsMx8o~njW4#Ihmx-mKuGTZX$@BaE{!j`@gwoD3$e;0P5GMOTNW9-6Q zz+`L~d=2WH#;Gwom##roXz+%tTx>fFry*RurYysEYZ`7T61oP# z;kzbc*PDo~9lJPP-(COcVOD!R@yRPs2|p>8bz_P@tYjWTKEQH_cDBy^s#XCmvD#?$ zQomgi9}k$14Kkx5TnJV`NRw~>)l(VH+vc!=)kp*pzY_cM@`U4T7KS1c@!0-moxXi; z^yh(kOuktv^?(oRP@RUltY$t^HSCs>wi)zx*frWFCDnkyH6y5PO8ZU;uKGHJ#TzBo{g4Z85W-m}_FLaE8GHP?K7}%C zGB)`>Onq!J_SSLQQwjMe+k?}_2pOK=;hJYzNi+w-?LnI zNQLR}<>9_`J*qIer}+l+nMXHUCV>f^doOI`v5E~kJaojCOWQ4K78q^XuD;H(oCY7H=X(|Oq~1SX`!E*Kn`PGfRR-W zCL-)RlzPkrI}2&~(TuiwC#-woGppMXpRToRw%$MFuYXXnp8T5$Ffo#yZf7G+R@;@0BhXe!y5NHtZ~1?`s^!LGhVy8<*lo6CRh6# zZkSx%r|21g28R{IPAP8aN=-ULR&?+5WKuPbi0@o(`;)~B3)`P9_IW_6<^i1@$3dh!1f)?P1HzJ_(`Z?K-o-rfo&{|0NW z3Dy?EdqaZg-(cd$1x^3ScIXcrz@HGirP$xd5 zHNUoxLL39<-VNIkYWI&^|f| zhjp3F$3==X)Lo6SyZPhyS-X;GwA3mAaN1>8d1EXW!*K{n^>M;Cx`@Cpdf(3^umtAp zutHsh2WsstagO8=7*vPpUJry-%^&e7SJBamP0y`iGsZS=#-;#z=nhCz9Q@w9b`#UB zV!SRB-2iGS6n@^tTJeRQ!K^{I(dsHB`^g|fF21okRt{$I^+gCPlXi@`O*lcwl tSeX}8JPlhsJH^s%`^fr8K)RRk_D-Z(;fYh+bq~SM_Ebo|rD1@Le+4VAC8PiV literal 0 HcmV?d00001 diff --git a/web/src/assets/imgs/avatar.jpg b/web/src/assets/imgs/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d46a70a46430e31744420865138cc7eedb8b77e1 GIT binary patch literal 6264 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 BLq7lj literal 0 HcmV?d00001 diff --git a/web/src/assets/imgs/iot/device.png b/web/src/assets/imgs/iot/device.png new file mode 100644 index 0000000000000000000000000000000000000000..79339cdf486e64bff9f5c3f89f16a7c20a8aadeb GIT binary patch literal 10007 zcmWk!c{G#{7alT*Bzq-BiEJq(A~PgWWD+GymQ<8IJ7W;CRr9ka%aCl@Lv}OvWX-;1z32XQ&$;J5_dNGGH|mk0E*Hmn4hRIobzkr9U#{5dL?M4jjdGZGxSv;O`ase5ZT)%!mG6M%OghJ6}-UF}y_kfLj7- zG+_5{)52k8MOR(Ju=~&1tYTc{-|b)3ecr$3O7KI#LMLNn=GO-3Up)^@v~>KM%l+Bh zGPqIqm%6%7rBRQgOFO~UaXOid`Pma!*$*7-gIlZCrH9jN6gp`KGfY0I2c!-jh4vr5 z`?+M8OoBTfZqJb3mLIw|AN5WjtRK-8t&Ug}fWb9NR@Eq(yvJjG@M((rs`t2Z^Vp_% z|IWul_{Uvk@1u~uqrhJ)Z3lq&AF65WR^`mz=)zvX3^|-|Y*s`LZYLRr?;#5h-I@-J z{@Z&$4n|Hh;t1f)Kw8`w7}W)8I57eyK)+gsLowJhNA(&3(SxA8H`S|x;a1A{Gedh_ zLsxyta2jTWG=t~{P!9vf%z-ImVDbQHlf&@q1{I$(V*i34d%>sqK-MalHVr;Y2gkR8 zlm*bb63AZ#?|3ra;OURP0k|<*IsW)jBAB%R+6{n(?X-wi@O}WJri1pb4V>AbTNcxi zp^R^1^tLHLFBRxrrXka4jyd4dkKmI&@cRrM@d2D(2YxghUvWK#f25_=0Si0e<_^7j zjMhF)wo7N!EC6AhphhS;_7C_xkx@hhU2AD=J;!lNAbuIpjiXrNY0)D zB+MT#uLAz9K*${ZXAjl22Y6foWLHu92teNuZDRVkYv4G498`1wGyCX8gU5fjfZNG{ z)hH+*P8%LO)-9wpZG&Y5O5^C^?Hp=Y>!Ee#!RMbxzjr{FSwOcN^sOYDhVEsx9tGwe z#o9gPSikiroN?*~wqk1P=(ZJXeeDcRYB=jXJ{Jy8Ff%0?EP73a_2~Iag z+yC%$Nc9IpW5Pi?O%DWJ==2>M5FAQ$1p8Ws8aGT9zh$kiyn9uewJ~4!ojllo{2bK@ zfr#thzpG{9JGnXOXkhW`EE{Q5L9=)K#_VCJsLa}zG%C>{90SE zj}~%J&*Z-+lI$&#U}0vfxe=WB-a>k8^zl8F2O{S3+Dq`*)8id8YYe}DdlC6YooV`j z`gMg4AYRTkD6zN{gKx9L`b~6%ezB2~&hq*`uMDOy-4%)X}{X49O382>TK9 z_JN`*T;TeP=|kq7{9KccEA+p)PhmX&H+Tir%89frHtfEV`aSCf`LVZHV)0z@ z;R0Q^v^l%Q|hrTG1^HE=HTS3%qv_2H}odtZ>gT-xp_z#FdOZ!UoMq3c8 z)1V~dxuNC9ek;=R(t2h;MmWV8Z6S{|Fqq!i0(W`km6gNB9B#A`4!;JzYnJC7K?7yg zi|W-852~L}IpQw}BS!8ZQG3@85v7qN+r;yGj?w3T_4$VxD_x3Rt?~i<8t^OCxDCdh zzRGUNtKcAF_PbT`JAaqs{k`Di`kAv*T+|W6m4wdhA+P?v-cy^mD3j{dEUSirMC}feL-+|WJpM4IN7g;ZwAFh zT?Hn62=do_E`R^NsZ%qjOWUo!>!bhuy#Iq(rJqylYl7zCcVsyR9`@eNhRB6DPSdaW z1=hcInaOq)p0|IU8y(~2`&wVV8C4I?xT%b9r>USUo zz~NM(YNdf6Myg#AMD`3v+?n{HP588pA7TNOFo_d zBLum&nxT#cR4D`2qk%6K{Ij;ta5%h#-bDeW4TE*Ax|U8w&*YlYkbh4g8mpS`OAk6^ zw?LPh-iAyl9gdhA9%i#EZEi_B@Ks9NIYn78~yO{ z6!DYoVeb#S|RWB7NsMaO<`S!yv~C0{T%VstxtPOC=3&3r7fEc8G6kE=|d z8AHg6>5_XDYj2#PO+o&J>9ctg>F0~5{v)si#Cv+HNibP7CpR6@DBYZR-h4Y~&)ns& zz~smzG?JT++}cWaCdtnAKbGNg-p7yK9G*;nd*1&;Kg@hGI(h%!ln6~iJ-t3TogBUr z1D{&0@82~|#L@FSR{F9a7O7pCk7Q0_vN~g=>SsRJP7GT8WkDH_pwyt?D`07hf%0Se zG|i%ODsr>Fq(fd4@Mvu%MTCWoPoApf(6$I#yml#e=JTlIpC=1eD6bmz;_#`Sr@sg* zWV-ToHwasnK9tC;3fs?1JqYO6_&Esxwj^~}f4x@nQmS)~qdOU@4F zxz{sQAzrdqA&tHc8k|AI=SE(}x3d|vEV{0Qit(Ug5>FME6XioZ^g^t|O zd1pUwFJnG6Yui*;+rJwH4BQl$2!-@3Dvhb?3)wurtfs_UD;`|EoD=ah5i=1X3Jlit zfHQT(vh+9Y`Vee;Ktf+b3@4#+9xU(=*KGHvhi##0{2v4gJ_(>oePW zBP$o#JuIn>dm`uJo@eCN|J|fgR)TkvJ!n}MD*N7tyJF@`+V*z%qW|A>*{}DKkA0q| zT92O_bP>_r=X}u!lq)7*iphUgrrqlFe(!2=GBvP}Oc^Y|3b^^5WK$ql%v9hlmhT>3 zGSXi9-q-~9OQeRVb2=xv=VD^E)@=aJPJe#ZSF-A0rMb*F`^jUA@{3AAYAa-sX(_g3 z`+j^6|HHn=t_{pqsefo#Q3o~Xfk_a}N> zmW*T!w<%=lU0|D~kIILpvmT*+W0zeXmRLK(-%TCul4|0iP<&^5M`r+aAUW|c@*!(Z zT%rx0SCeV^$W11AKXhl`L%>a$Xm9&8-!bjbciDmA?Z5J2*Vh%OuH0)QVK(U^pq4o zEbLuD&}PkNMbwcUot>R+ZJk%PgrSU6l!1yG11SjGMfaqZ4_s$sPnT15X~{qnr>61+ z>O8S0;Zc6-mf^@%BImOXwC*$QpOHXe_sYJD-?A-WRqbp)))aVuAnB783**!RxhyE| zvWufqCi891vy)k!`%gzQt#E@FH#9A6;6wwzN9Z*Lzt4Jhp^DB+W+x;KyiHAGix;BKwz1L0L$gTGIEfxsl{E3`F}Ny{CT#`3BcE}LQ4r|P#cJKG^x<0F5b^II@4vNfy)i;z? zxa@8aJ6Q!Pkcn5j`PqSVw=s941CD7P!T-qw%pTy0gD7>7jbn^)TCiyr-I7;B3XB~!FZhuI+5>4(iKL_`EtLPf^A{wq?P%Ih5L*4Rqa>)b?Hr98QiKRNU zu}l_G#slhWrWYM7hw(UN{WsSop4)(mDG%hw!U`PFmL<=G(83+gbXJOm1>4ofPc>B< zsVUWiV;mtVR(K|?BpW(vr|8vDY%CAarCejFWAZLou!PW?8fF2mD@VNQE# zPnk8vS_)k-KryNu3m~TkWJt!+%pS^Wj*3wQBPlDom}V@$1$bYV`!s*~zt!|*{+%@K zDm^rmxUmxPaZ@*((E_RtO;8{sQ@8!>* za+vQ;&=L1W)km|w24f5HnrI2&&AuS2__~VUpfT^@VX>LZEoQ`S?b%Ou_Whr|9MaBp zlq>XZXC78ZxL63g?e~IcG^ql#K8K~Q4f*=K4bakZDLKjAn9oeRE*S~zDi+@>iT(z9 z7@aMHe1Sn1^;hzSLQH?DE+*Wa_kbQ8eg4EmFbW+?E!Qh4niT}xR&U}Co0}I`SXW`L z7IRkU@<+OBV3x?SrG@=x@~2y}HVJ@yVgs44I)?ZH`kvqvd|8#6XG_cBJ~v@>x;RY$ zzZ@|b^O32vFF%J7bMKO~%d8;EXH^#5IKiABEW3^nIq$HR`*_1FdMZoB#DtiROg#z8 zDU4p{dQ?;+A!i_<4OrgQLfp_=#bq?TtURCKa&`998xc!d>y25wb*}s9>xAKak)+oz zr=DwNm9nrk!-)F~JM{HBYq^Gxm_?NZvAzWin zn@5!i#+Aeh-z^b6q{+#-n8ncL*MDNT;ap&#)`n5APw;Q<9>k)4))lnKt~1AF+&Q)= zkDGnhw3ue0VyzFQ<$sW0bcVer`PS$%J!@gr7My)s+g(62FHX~sNF!;)p9>qSe5w*e z+u}tKn=&&q>uW(J#9lw;TKXALc+YP5&9BZ46Iy!{!XA6ZOr(k_oIX6)=%E1w*?dRk zFqNOeU;1A3?>ESgVDyP=F`m3lk6o!rEfgd|JX0x_zi(wa3V2KFf$rHVhMm zqxAApM|w}2JJra_eAux$GPq4_)^C8iEi-PlsLjdeYscAPTr8g_jVAn+7Lw z5J|g67Vd8HKMc zqvMorlvfuwU;kpk(&ASnXFfIj)~#E49I9|xO{hBW&euLW-^QGsPFNJivLomi6acFh z85OBg3^MiLhi&ic(Dp$B5-2Ki8x1UhET+{&Py|Y>R5qbYn&tW-;gG2EN zw-oO8%SCNp+`tg%zo}W|-JL^fc@UIl%(O8&gMYos{b0Q8GlOjg7f5DPFk|iLwAYC* zr3v7toVFGeG(<#PqTm{~mxQ2guU~fvq^Y&Sy>Kgs@S0E9z&FoY3vB>*fnU5yah5E9 zpMHjy*IXaz?e*$)hMa0*>pKqAUd82tI7NXWzf**_)Q}b+2(QZsZ2)abVd9=$xVRu= z;zJdv%dJ=3pvFzFMnqcDZ|I!q%JI$@HwK~sUht_%IW@FYx{gKP#^lT zE)=5#|`!h9H{GjML{ zTZ4pUM@+P-m7)yCDh)t$uUyy}*(v@7(r)+r_06U2)6#R;h44U)x>bMy@Qnp{|4$G5 z_zP)^Tpjszy!F_w9 z_w@-5JWCYQpsRkQ%+HAnH&c5fS1;t6`RjbEe)+Mj?U`(MO6g7PfixZw=t`bI?pHhu zCI%cgGTRE7#jyBajRmHj@rM&6T)FqkQ@*>bm(Jy~p7&Rpa%X6xCg0n8?=lVao9Jp? zquexZIn^QA{m#EeNXgpF%E}OR!@73cvZ;Y58TDV{wi32;g-0fs8v@dl}u#=AzVfnYY+;V-DUw z_tPR(_2Rs1-QTIKrEoV0V`Va#Ma6N72y@W9eOs1K50Gl<=DP12I+Qpoh)dtIZdonm z#i&OZ6+{q%eJ(BMzP$ix5E-`bt&4Wjc^>aibB_{B^Cf zV&>_o_uXt=4kChK@F(aW7mf+drm5WYs=^>7{V|feUfudbkcPGD$hPcOGT3NFcfOZ1X0NJhIsn5_hAad?EDL8ygM29XP`TR{+*r{RAv(gPNRO>2d_TKr6+ zOWWeA;*+MXHmF_@+AGCuk7pwAh@jxf3$xYerx%Cl8}l;6NjFs3gs9TOE!pC8LMPhj zc~U@x1{Dr(i?IGD2j-$iUn2Fk)|y4ck60?NZQ8(r&)?+d*kI>=#Adg)YF`Y>&Klwf zk{A|RBo67=+Yn8zE=E!YI6XW_V*BxgfGfAu;wYOd%%Z=^JiDycz3*^K-N`g6O`ZT) zJ-CCEyc+z1DV?JJ1qrpW<DVM@@H$0iqSL z?=e$1zF+V!JbYYSxe!wQBjABq9DMBEnTf*hnO z88wY64*IRY^h1g=a0$37?;^mhWJ+}XcR}T8eyRbk6V|?i$uTyYNP0H$>de$SuKDSU zW{k#wbw4WlPlWaKokvWCrp8QX|6xBy8>Z=?NRRtR#P;Pkq5M{Fd6?92S9dnBh|aX!MJf3=Lu{hP^5DsCI3TbX^>nh?LT_LY=l2sZkc|d+xZBQv^F( zx|8wIxiv!QJ3zgCOOKr#(yIzKI3iil2VL!py3CJf~^1+*tKVS z$DMr{+2FP5BCK5#ZIdlt6#W&}6{I)EmrmWZzs=^hI721`Iqr9?UieaD~$v* ze!|H7?Zu19gzrnIl1F}TXH#oho2P@V^eOanQRU9#tos`1@IXIZQo5Z*%=ln1DiGE< ziK4vmbz6Jc*up)$SLM5^gAY1^<`2H&7EuI2-Q9DCJjRSXvGXaOzK8Y?`v7YVrTNP) z-@|l>CoMDUUkv>2%}fyPttQ)+|Bb5@tG@AZYjP_~*F*zbx0j=||HhM++dTz{F)fGHC^B)0Suea1@u=WZ7Zd3FkBTm&chocZCJ(n+r72d)!!t3940pe?oojFZB!(5O?t>xpx-)BXXN7 z9K-SW#^9;bcHB{~PTpIGLw!aIbTNW2?L)Z{3#t2jOK~MR^>_DlpomZ6*4qZJQJ!G~ z|MX%_9Nf22kXwULT+quF)b)Z%>n&5H1ykW_HAkn-P;Rja1o?WC3Wn3`k~^6^xnO# z`%!tbvZzsUO9=8md#3*)vdHtD;KQ#c*PGv6cSqi888kCs|~{Cwt}&O`&x`Dtt7 zU5>4y18&b%v6N^>Y{k2ys5~J%yQf9aHKGM=+rx3eYnwhsrNXM0g_XAKZ6zg36;xaz z(Fc3^>u=c5h}|F7G-;IuZcecp$VvnXwZiisGd3x;H)a zkvAk^(xS&km+|{E&^}Sr$Ob8tdA*tt=|QSLg}v~3N(_gmz3IkUF*Bx0*Q&7yux%4} zQ}B~$Kz#oS)Ro#~MHt^4?kqh`6`q&ZEO8cUICeCL2;bmrd^x$OLEXcw$Kc>-t2!S} za$n-T6Y*Hzq-u)dE^oWX-momzpG5DacC$Vyj9`6t%UR5w>#edeu}<3UO>ONDuG`@B zpTR()J1d@{sE|@Eo$Q(rQu?UBac;3-$7Q!w+=&w(^vk?>`LbY;6;*ka$A_g%%U990 ziq3eKc?AZwNhZ3-jrCsz&CdZGyEz^b^Im)9{(E-3RuBrCB@>rg8UDEs%WLP5YxlUp z1hU?Vqc^YKQ{FXwG?7V^;teclYrH553$?s3b78J?HB?+Ih-V3-*Z`5!yk%8oTV4^Y z&fGn3-xRU~)SRnrEcbnRV~;f4&8gBu7dft}Hw1XxgiUmr?s7UjYrYoDb?2ifU`BeF zo4d_IVV91Ar^Eft58|2;r;Gd0jy}gE_OUfK#0o{3s{A-UnFTEx0_6`Dc@u*9qEDjK zVv?ocf#>H^!m%;hfi;xz|KvGpV6S)&{hwpX5MV6Ng6<={2$R!)Bh|UHajvdOKdy)} zfey!aE&3<;V5{}$%e(?rn)9k0HPE+1A<1j?nZYh+s7EOuOyhTbS9>?-lAF1COM&rJ zL$Yv!-Z0Ox5kw$5mzj^>x2BAvap~H_wQs@6B8bO+sMQy&tD3q=Ch{CZC7@(~K=yo=x%|5%eOec4pAkCb?& zcXY31Vah0{=*Y0)_?G|Vtz(;`3utoGb20u*5!@F8g;0KXXwSpd^?1`#t9!`o{Fb)y zkZRO#uLHG!F#q|ng-+%-Oo!sp_R-q*iyG}4DxFpz#d9Kg)OUyTif42AFsio?*z$L( zASzO+-HVEj18j;Bq(7PX@$vDP1697nQ-KXPNuTMhP%LS6@^i%shCpyP4gz+-d49yGM*;yG*hR;dHvDGPAGJoXK?BD zIn3BWrIxwoH+{R!`$Strj7o95&`sx`X#N4#^8*imY48g4qUGA zCUrV_JI}UJr+F2Q+9P(7KW;~PnVDiL_J-L{-I*r; za_1hUSp_XPz~VV60INP~gw17Y=3l|0`E5>kE$FCiT@*#-kZnWHRQas>Y>L6q(qe5I z=Q&O5CZl{T2tqhP%`~{}AzqyArjsCo`g>b!%4B=$@Pjsr!I2rlwMl{@H-Gxyz8rQf z8w-7(Z@Cp6(S$TYa9;1c3iBr|b>mk+F$I@FFH&IpP$`rs0S{@PBlR9Mn5T?DRm?-gM1`^dg;rz9nrv1e78#*(UE<&8o^M%`WKWi8RNU9x8xIf@5EC97AK25|x~s5yR75o( z9o*XDz_-CH8W_^c)V;8@N-iqEvbh=+87UYQ=-}ftDJ>ftCg0fI+0fLztgx1flgh!z zv7)A}oufV{C8?gMP(4A&!_81MEylaTxTvhQq^Kty9jBR|U`tO!Ehal8Afu0uzm$8W zcVJaRM=c;En~|Kkk9Lhn_viH2};Ryj2A>FdqP(agurZdqGtNIY9TIY2Tq zJS;9YDjw+R#_*~rYsz{$O_w~&aA!g+{;aB{GNYp8r?WmsBeQB+V!Ohz_3Bq1+P zJuWXMDXEp0n~jo`go=-Xh_iHsiG74)UuauINlZ69H!(I#B_KR17SYDZ%)i6Mw6>y} zq=k2TeRX+$Xl`#_V{uMDLOnfULpVe@DN;Ej4Fd({>kA-q< zcxYy6d|*|DU{PgONGCBzWmhp>GA1=7CBVYL->SL9tFn2Gr>v2ouaTCugpkaAi>HNl zLp@SiNKRf%FTszUo^66gS#+0qbEsW%N=R6VXHG*lNw&Vvp|a0meVtWri8oMeZ8|GT zKN7e7mvI092sTMXK~zY`MU@3x8(9>F??i}=ggEgKZwL`2NCPYcg0{H3TXDDI&{Aj% z)OG7y*WGQmzV5sKXwQW9*>{pjGCA-4a_*g(ASP2YcS(MwT}vvn6t;?{)uWA9zdvVB zwhoog8L9Qgt8d@Pg&Km*#%P%EMA6J>G}2BIO0wHhc*}k8fa7xG)q4_|@nrc)ne0g8 z)yB(`G=va4WYEwG!6pc$k{qeLWt*G*Fp&GE@q52RHZbx_axp|+JL=d(Yyd+DV~Vmx zw1UGRN;cWqInowy>lp5P+25Eak!{|%Q71ck?d`QAj)yo1Z06IO6?6__`l7*Rv$I4# zjjb(yc&Keoc)9=HxsrzV4-);6{exZK{2WRXn;NLMOtzd{or05tNu?>~F+u{$s+&b#7vrf-OQ0x8I z`sHgQIEC;~*N#c7^K48dlHNUa zN~Drzs}QCQDL#u^<1fbA+{12Lsqok_e_iVJSwAJ*`uVja^#+c?TzxG9vLOX#8#3@^ zOKIiI=KYHH9h=*I>APd+jHw4_Q*;qqKd(z3b|QAju~>pZiv_VkW8+y3^Ofy>;?e#4 zgEsfjz>)7Hc4)s(;P~MO|JooZY=rhauNSeid~8Cwe5J^5Y_I&<=hL`t!_yLnjH;^_ z=20aePyNz~Apk5I3~9BUog{`vu0(5ml^yYJ*y61M&dSP4b#*mEAd^U@-rvyBvkcB2 znVHWrF=BaOhB;*G&}cN>nw?Z#HL${2;cz(OWLe72Z#NK*GuN(Quk1v}Bg1Vz}v?j=>O%1&k1& zfLikKeHM;oi$p2}iV6`*Z5DHRM?z?`NHS|crq}5NIt23zh3F=;X7qYpjzG7U@HvPf=Ew#;cWy6@jV;|#sj@?gl2G8^%vWey1p*yq z)Ke5xic9RW5=tk4Jb{3-_Vo6trKP1iT^3A=NRm_%(JJ3Jnhy7bTBo02oIVZXGVD}Q zQBDaZ7KouUO5D49^JDnZ?VDXvDXa@zlX%59JIo% z0EZIWuRs0xacr!sO9Vuc0T{pmA55|66Ib&T`R$RE$>lLZ1Q88)%? z=3=lb=vfRYN+ki)&aC_*N6j$i6#en+YvT$>#(1U0|30HHNv0?&Stg?-w!2lHJ6*wS zTG1*AHe3ZAh9WgXFJmO1&;9mW0fYMe&%e%7Mi~V$vJ!i-eXfc?!NtWYXg@QPB-knp zxoeBmY6dJyk^0-(9C%Y~mlf*;I{0Cr*ozx9MD$`X=*bQ#N*t8ZoT8eV8nD!`8dR}P z4Q~NZzyPMYiQvtys$dmTLNg>>3FvxFQH`3BBM_+d<3@+vD9C~HK%kfDWp<;{SZCkN zBC5I;??y90(ZY#>VR);$CPydG8y&T)`*Ve+yxa*#Zf>pv$|Vws!%>%}QQfV&OX3K1 zY6+EyiLvqc+M1lR`U!cI@U`20%xumRM#$yz2+;P^j%1))S_Qp(3(+$zp$IR_X5*Cx z^;v!Gs=;YGsu%@j-4GG6e}BZ@P9jMu^}roQ>RBj6TC#HY@vZ{l*z{Tb_{5|k%IUoP zCg1FgGRUEtuBVl?rt(p*6wBTx#Sy8zwObA^B@VxGeyqWG??neix;EW-cb>SSQu17_9hFS@laN9Y)Or+X-zOA`3+mdldZEd@v0=&;Iw8us zhfN9tdK3x;T?Ca#0k0uEw_esdCMOL}*M_im73M7}&zg{snwoMj{4&HO0y2@mTQWLoJuZLtHLxe1h9@!JKa}MCJDu6dXDP4oIoibFaDZ6%Ym+ zmxbU19AL4yG^}@%`T2$@Q%_G1C5sB%sh)2T$`1}WF)q-(D%)w7IH8su5Ob=|PUOWzi zCnkau3t5S1Z_Wb&SVa&V^1PXLTl|N%*4EP2*4Dwn>4wNF+q^J(C7RRI)0>+iB_qJ& zL;tWgEf3ypKi)0t@-m|_th>A0N0K9h1APq*rMDN#4u>B;93FT=&l!T!mX^4<%^^Y^UXf4aJQ@4l+;d#|-uKg>U@0*KX=RFwcgAOHY-9Ds*KKsW&F-@wMf z!N$YG#ls^cz{e*bBqJhz9AxyQl%$UrJuMRrH4PK3AUiWNyP$*suYiP#jEstjfr*b# zF7W?4!9zCygahaY^rHhA0B9f}ItcjC3!nu6(9qC<|9tCz0|N^k6NrWlz`=b$0dW5F zU~BN5Cs7V9yYHR&>nUuH`e`If0hiOFuWs1gt%FfSI5%4^rs_!KMZCtC5u3t}&@c;_ z^^f7sE&dPNVoV8wtCy;yeuY8Um6fe*;=A8Q>KEL9rLSBMYSx$zT*)=8Tj~g>g#1+q zX|XPEZg4l*`~+Q2TaWG{_C7RA&05y~w2-Txv#9UAgZ}(o%Dh7Ra0$0$CgLzu(*QEU{v4gh}1VC zB_K*~=s9vGC~tLwwMHB?d;TY9BW?ahqWojat7*qDilNTm=ZX%BB6UNrCVr1ecUib? z8;Wu=Ia%=v9tY*mkbyqBQ9;i(*_0Mzy`T6E4k5-~uLQIx73{RPO@H`$nfswXpmZFI zYu?4SgDxOreH%XQvwUwV?Ia&C{xu}iZ#~F(q}hv<2AS?(5T244Od8lVi<>9VZT)fS z%g2~3PmTesNqXzKz{#Ul78eE?q!nN5&K*)7qk+vcHmCg;l{c)r=R`m`x?TJRsLtwT z4_~BZF?AX!-0`)Zr$52qEFykwhjb8TjSFPuX=3+9!-gEjzs_Dge1FXCY|8{)akI0sFjW38jH&5sD zzz>3-7oez^fP`c_Z`mDhvPgu*aINr!hQ!g38N$wm&atRwnlM{aEkVetsWF*+dB1b! zqwwx9?`S#u?HoGp5Wwvx)z?-_Hd&_K7s#K+r+88ciLGvtQ)geqt+)K{g%-`e!kUiv zkCd}e2HW45rWXXVCR{!c?>nn4DY&vIm#v`^GM?eq>PT3*BL48A`MWUCTd4yu8%Y*X zZve(lt>!2-LZ!Wv=kBwVpI1ca*2?%LQ0i7z%szpW+d{R8Qjgpa;3Me&;syXQFtM=z z1xNn}e1W~oK)vZ_%;k~zaN5WIQ^~P!9K>HN^Mk;>f30+wZv^SQPC66HO4fZ2={KII z&x~imcK2suK4~8+>i9id48znFqPG^;lXQgzO#kN_ zU#bh^Gye@=k+XKm&P6LP@pdQaSbnvICv-V^$vXOeg@SblPhP2*GVFMf(&H6QQ7apF zbMnM@OnHBDuxkjQgNZq&$!K!9=x}oCH^vpJ1tWNhO&o*C+dBlS_^f5UeR>i;ahdEN z6+dM+z^iC6e*iq9a}hs+q5;v-G0*|%|L!l3HyD@zED#Bp0h^Scn2b??iCIucR_?!h z4Gv>|ZiV&*NmVMP58VwSakK^6IaS%AwFJYuT0fxP;#0%HGT}a+ZUIc$ z@=83A7;?_WX(UYmQ@{7w3#gCL$uB2vB_S+Y153sFinyzauR529T0Ro_vMARuBCERW zY_u~n0uZ#9g?Wd=X|s_`Z)`zD4G)pbdlA)$P2Azue$BC;&EPa=YL5`O+~2>8bFqM~7$-S+W5Pp>~zd$uX63z!5laO}sS zvq@U`?WYm8`O11B{vx0lr1*-Qszl6lAi47Lt!N`lnTcj-K%)5*KE*I&v!Xt;cQzUr zUFt8wy#}6Ay_fS4#|Bo{NA!4~aJNge-^Cwf!AS#Cd2C4SVd}q@50a)4S?e5yiAhf7 zT)OkxGWSovOdoh`p$@ZOrd6RC_Ib>rtn1aq02#TeDpi>e0CqEKnD;YBXOX|tVIuR1 z>myR)bMXWw?G0-!4v32nc#n4A286R_e+1rVJC3~5RW2}`eGcM5 zM$gw~i@H?w24_T_Cr^qJkc65A-+F6`x4QqDKE=RbBR#+At_i7?;ozSS-}<5@lVi_n z*23vyv{IGLJ7+quP*u|B?o>l1R5KB*13qe=HaTY*%3E)ypzF#k_=DyF%h=5YSgSG$ zR5b6F^*gFX@>)e}Ml>ejZE9v1WK;JyPHETW*nqMck{F(*Xd5%`54KFM9;E2t-(Wjc+Z6No zGobOY=)UFik0DL^srCG_lF@5G%T(f}YsVLj@#%EYxF!lS7vnz4M2d1uw}=A~wU@HX z3)Ml^bKV^>QO&~SWUfMz>q2cPB&9rL_e;byNS~s)9WzUrt%(IT?v>P6~PxvET#4xSWl3va`@?RUyU}K`o?SMskmIL~FmJ$eq64 z>t=5Bj4-#)+g{F4z&aL8ud#r{^=_KI*%w&6h*BSjYJc$r?pd0jS|Rc|X;K(7Kp=sV zYk!Y@kok?9$Q@g1eS#267_@ces@UWpdHwkuPYuDZeFWZk6q7jx=)mwsxUBFMR^DI+ zE^5$`#S}bD7w5d7E4Kk&dq46DM~Yoczg>FS+p>wX*3rKOpE{%uu9_m7K5b$j`i7vY zVNy6yPw+Y8Z&w^-D?iR0Z&<#?bx$PAw-)sEDzlrfcU3hrQcY)5f0)G^`5hVDLq8NG z+o}sk8GztqZ715g`17$t3JR!aO8N)nD&y9SmW^SdSJip14Y>zbX)NC(6(U zkhCP@d_C^SCckb;g|?3IZ6AZSldX-DSr}5A>g!?BpbEQLMRfz*Y3~Nx^=QUQdBp%p zw&~i$SCHKAK8C~w`M>`94Jla`I>XV*(x;bIhzao0luAT;Ez8#X^~TgIW`<6Q`s7c% zF`FH;_iW#L^oOIcfDlsVoliH(tGuT!v@Rp_FhllnlB!m+`irQU-|`Mzh38eyvJ@ua zD`Kb~nZ8}K^L}~^(zBS=fXejxHX4^6@-YC$*;=88GVosSCB^C(5?-2 zz!3)*E3@uj1~rx!c$A&nG`ifEtZkP&Pp~r1)M1IcM%TW&NrqG~yb5?Jrx`~&LDpH= z2H?*d&Fcri>Dce~E+4Z$sgp@SV>_DNxZxT%UFjih-(FZ@7$yazicF>wpL%t>t}>Sqre7DEg9F;4}IVW%r?a4Sug%>?8GJZ#f-EnpCm=sw_E* z^gI9#$CBZyD`YI)Iy*_d+!z=N+M^yI@!$}C_4k-Nl$b3YrS8-*9I_-_Zx%Ibbn`ce zRv%vsLIq`i+Z`J|zt@xN+t-uZ9bL6{H)5A$d*dG0NrJCPHiRorf@$t)Fe4*GveCwM z(R;dj_nBzo16QEzZ;T1A6vNcx@{%YRJh_jgOTlalMAoGvPo~fOogb8j5a{=`QIolF zM|@p-_Ixu8u5b1<|E}RiGHQ0kNUZ0tZ#O50yVG>VV~&;}emnsH(Sev)XgHXd|0HQ3 z8UP)H!N5;K43^cl!lY*u@CecIBxMqm3r$MSCzH4Kn!wVvsq6Z0&c=EHnDWLa@h6fQ z{-Js@b37JWRghRL!^H3Pl&?kB_LUV^Eqqj6)CTw)QsewvfF^0v((u{@JVPqgMVd2Q z)reYikcxfK*{t8NLuoG0YV3-a{|^tJ;dX@hfugGszNr}lcJW?S_XsaRsap?Hq)xC5lD zewU%O(nS#FtUCFe$4z`rA}>$MNeGS2g#JE6x*ijKRBPbf1~uXL%^@dWjLQcYgv>5! z!l5uY?kPtO`7EhC#=MKjwsih@m9vN|A4Z$dtiebc3t?}(Po(|UKBYCeca}|NR@X35>gy^JuWM`U&LmCj z=sfu(6~Re_`GQ&T(l7ep)yv?8oT+9#+^Q-#W|i`lpkeVlZjQF`0Mc7zLq=8%@%*fj zPI+X4CQE1faL>0^%JI5JYsilW(4T8vVOKw1bp0g{RmkKdh##mh}TZ zn$g?KtV*s>Lzj|*4hW*X-gIoK>yW8V-;f&#fIe>s*?XIBp?C0upjGjL)x9iul?b?Z zPBM6KEqMCknN(o6)1hPNO4j5c@~)YwEFgBbJOr9X&n@|+hCXCt(_Y^8iKkc>4dtpH zG4>KKuu}%!^QRbWI|}DE0bLl_B)92|C!Rm@_VB4*$xF1B~9%hUCna7n<&b z2|ZHrI?XfEqzLD(RZT6Uq2r*I-E^0X?k4++14-V~fdWINihfgc+KJA;zKswSl$OfM zX_zavy>EU(O7zpZVi%*ji8*Pi7G`Gk(-YrL#xLE2VEP`F-a|waf@vZpD7=@fp^tVB zUrkmIwi${x| zdrU}YU1Vm|Wjy|`)Ic47&l1c2uHHRq+BEj#s-WgG#k9XBbGFERjc&$yGb6s;>JB~- zEiSEmF0WD6OUKK!DoA_`d84z}B;Y4WZ=P8@)Wv+u`Y^(e&%=xcre z*qfvV7kwMXo+FuN`tb4_|CK-~maFJV=1C}5-D3W!^ppt|x^YQ;?YE=$2f&X=t;RA- zvG1QQjzvC(dVM`p(n6atDe@yEx=ihlNcv?4>IF5`A1%sZKHkjM@Gq?C#PBP7tM2QW`>_1_ z6Y~ro2>VTnxUk>LH_k`1t=PN%qKEXb6(ujK&h*<1gwuKzG@ysX2O}re&np7k18xrz z8p!jfx!YG($xh<4{UYnRIIq<=xCvo^b5mu~Rmm znZAy)sAl<=IFw+`$$(FIwt&*KUm6G)yEUJ?u<@~p@+mwYn=D5jP?o;rzO14yU)pn> zhUicDwVQ@<6v{#Smd(DYb_0K<^G;zpBgl+o23-$v)au*Uc+?qa?RrH z44S^1H-iRGragXP&N)G#(}K&hA&2O55;#v)k9e%xL1~RlHA{f{3gK5X{t_#gLLZ+_ z_m0`@z0DHWxjiJZ9nL>uH$`7}KD5bKJMK-Hs!N?K-6h*0N3YvMqP-K3|D*T^5bPi_x;CJVOcIyJfm6b(gR*3;P3DpmP zQmB65?HhP1@Y{*dRJu;hGQ##$bcyP4Yjj7Oo%@4=dnq$)br6{tb|95nIqt9^B(7fL z?XdFe%8ut*g{pC-6B<*4C#VfAfU!lpE35^oLRsInvTzY}O^haD1!l{Zd%Cv5B>Jbm zXII^A=(wjP7NjBaeZ}7G)kwrO(k|QFysbQzC-t5fxdYa~J&mN(9>y*T9M$_7&2eIY z{RjFirk!02;a1-5$x7;iZ5N}0HH$*`qhBsHcy1&90KmTtg^>q2`7skdE23d2w~mr{$A|6x{z1bBz8U!Hk$3`+*i|U{z0*ta(TN*V zG5!nYZ+rTi&L0vev)-D0;^ME%E+ak+_TouNwfx+3@tMhkJ>jq?%Z>!%&Z^^Q=ytCN> z6NpfOJ+P*>a=E9by303*xSw+7Ay;(6ZX<8|ESR1MTIsz`p+4oq?IvP5qzx5~mtwf- zqD+F9kAw>^mty#a;7q>i`at}fB<9?HO@eQUDp6|K#{}zW5*uX!lpIrGFS|#WV%)Pn z076I!0aqS7{G@)DM1yRCQEA$?zX%NIRnS4^}ok*w!?)V2~gWKP-b(ldkFdI@P&jW z?O<<(hYdFktgb>6-dyS3(DhoJlMKm($oV_{%Ewt@bQe=AH927U}; zMgdt5u;4#crd&uJDU*DXXXwO#`hh^;3qYQmx?C4$vVHXD`U);$g%alo0w$A*_aUtZ zXk>3j*9(HvbrB!q4ae0S%{wx(1uy{z?4l;d=cyU*!!*ish^rK2r(&P!gnoRJiN~3LU(M$AbXFS=m z*-MgY5kkNgAVV=jeyhj-JC&>fIsLAUQ!8Z9ti(m{0pR}SYevE5&q>SLLFa*pjMO+q zX3k|ZfM#(aEyL*=Ggu_9B<^i##99v|lv}2e+q7LE(6CC_4KxdR`;FwULUj zTjzA@PNA|Y;_ox2$92MUSfEL@61HzIX9M%9z$zsQp^%c6=doVFgV>>T3~%PF(Mre=Hyv= zB307?hoIhje({W%?(^+blc5!%Jkh9lQAne95p~om`E!vNRRd&MYKWsV2Ga>-2n_1< zGm5^!8ALJ>@N=-#a5^ke*;rbt_n%d@h^~^18(`YZWE4wIBPV$od+%@vH!7W@;<5#g+QO*5IziCUS57RWtJm|P5{=bccfA2iFlNDm3BwJ z7%nWn<9N{SyQYyQ39Ma6%KA-1St==o>+wprEzcKmpD>k3a9z|8VFYVf=K-fzOTg^q zif~kAnX|;8S*7(Zn><*v^QJJ=y!fjuu+h1ncb`>neXmVOa6eW<@J--L*uvUx$}ng^ zxELc$Xeq~XJ6?1x{STIXZ4RkFa+mQJRGoSdKAt`Nl+i)!HiRNWJ~O6dYn#uD@@^;S z(f-dK?f>ZiNB2MeY5ITm2ciGtei8vpMp@{PpEL52M~w0tF&vbbQPEElrA6=QuL~yc=sjRq_(PqW` zW}X(?72&a5m(vxoCiSq#ae|?X91-675Ap=>U4_@Se$rE;!B2ABqznDkbH>LC1~U#P zB$RtLxd|7)b8EzxU~LcS_O*s|7uc~Iak1tujomfGd{`jDC$?&TRopw>6CPXPZ)46r7mRYl1+Hu-*2ij|dgr9)lkKbm%=DdsMyA*qM zWt7Pu02`2`mDj)E(s2I!ZCdyPKo>$74fid^Y9gc`Gz-xk&*+HK{`mRB*5p!F{?EVD=i6o!Ger8l%J zsvcIXyIh#11*ozbupbd@F_5q9FCQ+-Q7|uXWf_H#tNX$v^e}Pv>O2he1|_GSyxo*P zw4wK2DO>K@e!=?scTftyz=dIzY+Y3AR!p>P>f4FF5Axyg9+o>82BZD&FxB97#rsD`G){<%aO^A z>cOSq!5_sU6`2GJU!}X@ebIy+{d$%rMsxY%`)On{azhwdA zI&%BFm7<6ya)zSa*&y~M$HAfNjOC9=dY36|1@YZya(jUjImq%i0_0_*b=C8YHL~%8 z;t@^7A+`6@>B4FIO{^=LgarO NvOP|&09Jii_#cBOpN9Yd literal 0 HcmV?d00001 diff --git a/web/src/assets/imgs/wechat.png b/web/src/assets/imgs/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..6afc5e41cfc29d258e0c6135981a7a09b7bcf126 GIT binary patch literal 1881 zcmV-f2d4OmP)Px+6G=otRA@uxT5F6HRTlovt)4-Yt`>DxqM{h1piEaoG!it+;>Ku9`iG12%)6qSb>G)jC#QP~(>XJx8!Ncf>R3nRXU>6!tR>8fLH z&-BPlcUM(+R|8q^kNH#I`M&erd#dK%bDQux7!;JpamncoOxXzv({Uli+0)aoy&Fxi zgW|7-ry`T%jKJPYsh*xLg z=_mZbD@VDSjI=d2u_EpTV{+vZ?vV_<2cWG_H(#rjMoE)uN^1inQ7hpBUdB=@VJ2&# zSJb3xM4tobrdkMkaJE{yxiV`Dvjn&heT6&y}!$;8dSkH)Ae?JF=Qm5e2{TXFM(B5|Eyoa>Qb zi=~@uyi9mKA2ex1-va0|S1@Cjl`zjd6m$He(YfOA2lTk($P%F!8(B{iu%3c|8#NUDitV7DNwa~y0EA>Nbu?!+#%Zpl`| zS!mMGWT{>nB&i=RX1p&z>&T{cvi!#-r=KUtUPy$~m@yH+X#h_IhzaOoa2J@m2-Ja) zvp%yVz0Z%1#K>~p3*cnG0Ri9!K=e0Rf?*>%ML^7F@KpdVER*{sfL|vCo4pKE#L#v# zaB7(X6~X03!V%dU_cx$N-CK7Lh*wlZbZ8J^7c=hf)6J(!aZw}{eTA9iOxAj=v~;sI zoQhpZoHI8gV8L}x2>16dHn$hNlaZu$7ZV-`Sa1{_zisL1%hhCb1&HpenHHmm34a}Z zHl?tk%_U${&4huEE#16GO=<}c+G?mXNX_VT$eG)(Z{L#FlJDf13 zwT=^8cR1@^18ig2*fT57iXNu0r3`tR}is!F3D zS-LqZVrT~#7+WP*wc$I8wj?7)>{&FwOswejRRN_jn0?GM7iE-*~8LJ*>%_n!r5g92N}TF>amg< z7w8c^%fQRTd_F)^0ge^BuM9CJW(o4j;mRO$E|-g#7nL+QE)|_6m_8UH&4TE8F+eMO zmv7ruN+{Q&tVcr#*}XmAJKu&+2whHunqA3x8Xmpl866NYqE9nuF2FB{tg_0@oST?x zXs;is)g8GVq5Zubcf0@iKm=5XK2^EU%QC`yjQdGD#%*)#Sn>+H(se%MS78C?tDhM*>{ z2+z+#h?%`D+hm7-cpO%fIisoQ3NXoT-I##Qerk*Cy!|bmvX4As9Cnj~MztAWNTY%M z50#sbQj>N>Oy-kOliFX1_$mg?uXksla(-wPS#Ojve@iP`2#b^O0DIsA?r(JL%Hz4@s4x|Xv_L12Fc30Q=P TM8y=K00000NkvXXu0mjf4<3N5 literal 0 HcmV?d00001 diff --git a/web/src/assets/map/json/china.json b/web/src/assets/map/json/china.json new file mode 100644 index 0000000..bbc0a83 --- /dev/null +++ b/web/src/assets/map/json/china.json @@ -0,0 +1,856 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "id": "710000", + "properties": { + "id": "710000", + "cp": [121.509062, 24.044332], + "name": "台湾", + "childNum": 6 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@°Ü¯Û"], + [ + "@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ" + ], + ["@@\\p|WoYG¿¥I†j@¢"], + ["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"], + ["@@ÆEE—„kWqë @œ"], + ["@@fced"], + ["@@„¯ɜÄèaì¯ØǓIġĽ"], + ["@@çûĖ롖hòř "] + ], + "encodeOffsets": [ + [[122886, 24033]], + [[123335, 22980]], + [[122375, 24193]], + [[122518, 24117]], + [[124427, 22618]], + [[124862, 26043]], + [[126259, 26318]], + [[127671, 26683]] + ] + } + }, + { + "type": "Feature", + "id": "130000", + "properties": { + "id": "130000", + "cp": [114.502461, 38.045474], + "name": "河北", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"], + ["@@U`Ts¿m‚"], + [ + "@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧˏfŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgƊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|ǰ…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃ͚¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@c̬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®Vйd^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qáµ§š™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚" + ] + ], + "encodeOffsets": [[[119712, 40641]], [[121616, 39981]], [[116462, 37237]]] + } + }, + { + "type": "Feature", + "id": "140000", + "properties": { + "id": "140000", + "cp": [111.849248, 36.857014], + "name": "山西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz" + ], + "encodeOffsets": [[116874, 41716]] + } + }, + { + "type": "Feature", + "id": "150000", + "properties": { + "id": "150000", + "cp": [111.670801, 41.818311], + "name": "内蒙古", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–Rë¥_ŽsgÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉv¦wĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ÈˆÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µsKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚǏĞGȖƴƀj`ĢçĶāàŃºē̃ĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTĞªŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFǜƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ġu¦öČ^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ" + ] + ], + "encodeOffsets": [[[129102, 52189]]] + } + }, + { + "type": "Feature", + "id": "210000", + "properties": { + "id": "210000", + "cp": [123.429096, 41.796767], + "name": "辽宁", + "childNum": 16 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@L–Ž@@s™a"], + ["@@MnNm"], + ["@@d‚c"], + ["@@eÀ‚C@b‚“‰"], + ["@@f‡…Xwkbr–Ä`qg"], + ["@@^jtW‘Q"], + ["@@~ Y]c"], + ["@@G`ĔN^_¿Z‚ÃM"], + ["@@iX¶B‹Y"], + ["@@„YƒZ"], + ["@@L_{Epf"], + ["@@^WqCT\\"], + ["@@\\[“‹§t|”¤_"], + ["@@m`n_"], + ["@@Ïxnj{q_×^Giip"], + [ + "@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA" + ] + ], + "encodeOffsets": [ + [[123686, 41445]], + [[126019, 40435]], + [[124393, 40128]], + [[126117, 39963]], + [[125322, 40140]], + [[126686, 40700]], + [[126041, 40374]], + [[125584, 40168]], + [[125453, 40165]], + [[125362, 40214]], + [[125280, 40291]], + [[125774, 39997]], + [[125976, 40496]], + [[125822, 39993]], + [[125509, 40217]], + [[122731, 40949]] + ] + } + }, + { + "type": "Feature", + "id": "220000", + "properties": { "id": "220000", "cp": [125.3245, 43.886841], "name": "吉林", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG" + ], + "encodeOffsets": [[130196, 42528]] + } + }, + { + "type": "Feature", + "id": "230000", + "properties": { + "id": "230000", + "cp": [128.642464, 46.756967], + "name": "黑龙江", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tޏĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîά|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]" + ] + ], + "encodeOffsets": [[[134456, 44547]]] + } + }, + { + "type": "Feature", + "id": "320000", + "properties": { + "id": "320000", + "cp": [119.767413, 33.041544], + "name": "江苏", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@ƹhågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ" + ], + "encodeOffsets": [[121740, 32276]] + } + }, + { + "type": "Feature", + "id": "330000", + "properties": { + "id": "330000", + "cp": [120.153576, 29.287459], + "name": "浙江", + "childNum": 45 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@E^dQ]K"], + ["@@jX^j‡"], + ["@@sfŠbU‡"], + ["@@qP\\xz[ck"], + ["@@‘Rƒ¢‚FX}°[s_"], + ["@@Cbœ\\—}"], + ["@@e|v\\la{u"], + ["@@v~u}"], + ["@@QxÂF¯}"], + ["@@¹nŒvÞs¯o"], + ["@@rSkUEj"], + ["@@bi­ZŒP"], + ["@@p[}INf"], + ["@@À¿€"], + ["@@¹dnbŒ…"], + ["@@rSŸBnR"], + ["@@g~h}"], + ["@@FlEk"], + ["@@OdPc"], + ["@@v[u\\"], + ["@@FjâL~wyoo~›sµL–\\"], + ["@@¬e¹aNˆ"], + ["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"], + ["@@ÊA­©[¬"], + ["@@KxŒv­"], + ["@@@hlIk]"], + ["@@pW{o||j"], + ["@@Md|_mC"], + ["@@¢…X£ÏylD¼XˆtH"], + ["@@hlÜ[LykAvyfw^Ež›¤"], + ["@@fp¤Mus“R"], + ["@@®_ma~•LÁ¬šZ"], + ["@@iM„xZ"], + ["@@ZcYd"], + ["@@Z~dOSo|A¿qZv"], + ["@@@`”EN¡v"], + ["@@|–TY{"], + ["@@@n@m"], + ["@@XWkCT\\"], + ["@@ºwšZRkĕWO¢"], + ["@@™X®±Grƪ\\ÔáXq{‹"], + ["@@ůTG°ĄLHm°UC‹"], + [ + "@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВj碷ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈÚœĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst" + ], + ["@@o\\V’zRZ}y"], + ["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"] + ], + "encodeOffsets": [ + [[125592, 31553]], + [[125785, 31436]], + [[125729, 31431]], + [[125513, 31380]], + [[125223, 30438]], + [[125115, 30114]], + [[124815, 29155]], + [[124419, 28746]], + [[124095, 28635]], + [[124005, 28609]], + [[125000, 30713]], + [[125111, 30698]], + [[125078, 30682]], + [[125150, 30684]], + [[124014, 28103]], + [[125008, 31331]], + [[125411, 31468]], + [[125329, 31479]], + [[125626, 30916]], + [[125417, 30956]], + [[125254, 30976]], + [[125199, 30997]], + [[125095, 31058]], + [[125083, 30915]], + [[124885, 31015]], + [[125218, 30798]], + [[124867, 30838]], + [[124755, 30788]], + [[124802, 30809]], + [[125267, 30657]], + [[125218, 30578]], + [[125200, 30562]], + [[124968, 30474]], + [[125167, 30396]], + [[124955, 29879]], + [[124714, 29781]], + [[124762, 29462]], + [[124325, 28754]], + [[123990, 28459]], + [[125366, 31477]], + [[125115, 30363]], + [[125369, 31139]], + [[122495, 31878]], + [[125329, 30690]], + [[125192, 30787]] + ] + } + }, + { + "type": "Feature", + "id": "340000", + "properties": { "id": "340000", "cp": [117.283042, 31.26119], "name": "安徽", "childNum": 3 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@^iuLX^"], + ["@@‚e©Ehl"], + [ + "@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜÆ¶ĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßŽF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴ˶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´" + ] + ], + "encodeOffsets": [[[121722, 32278]], [[119475, 30423]], [[119168, 35472]]] + } + }, + { + "type": "Feature", + "id": "350000", + "properties": { + "id": "350000", + "cp": [118.306239, 26.075302], + "name": "福建", + "childNum": 18 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@“zht´‡]"], + ["@@aj^~ĆG—©O"], + ["@@ed¨„C}}i"], + ["@@@vˆPGsQ"], + ["@@‰sBz‚ddW]Q"], + ["@@SލQ“{"], + ["@@NŽVucW"], + ["@@qptBAq"], + ["@@‰’¸[mu"], + ["@@Q\\pD]_"], + ["@@jSwUadpF"], + ["@@eXª~ƒ•"], + ["@@AjvFso"], + ["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"], + ["@@IjJi"], + ["@@wJI€ˆxš«¼AoNe{M­"], + ["@@K‰±¡Óˆ”ČäeZ"], + [ + "@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_" + ] + ], + "encodeOffsets": [ + [[123250, 27563]], + [[122541, 27268]], + [[123020, 27189]], + [[122916, 27125]], + [[122887, 26845]], + [[122808, 26762]], + [[122568, 25912]], + [[122778, 26197]], + [[122515, 26757]], + [[122816, 26587]], + [[123388, 27005]], + [[122450, 26243]], + [[122578, 25962]], + [[121255, 25103]], + [[120987, 24903]], + [[122339, 25802]], + [[121042, 25093]], + [[122439, 26024]] + ] + } + }, + { + "type": "Feature", + "id": "360000", + "properties": { + "id": "360000", + "cp": [115.592151, 27.676493], + "name": "江西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ĢĨƐgÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗ⼋mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²" + ], + "encodeOffsets": [[116689, 26234]] + } + }, + { + "type": "Feature", + "id": "370000", + "properties": { + "id": "370000", + "cp": [118.000923, 36.275807], + "name": "山东", + "childNum": 13 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@Xjd]{K"], + ["@@itbFHy"], + ["@@HlGk"], + ["@@T‚ŒGŸy"], + ["@@K¬˜•‹U"], + ["@@WdXc"], + ["@@PtOs"], + ["@@•LnXhc"], + ["@@ppVƒu]Or"], + ["@@cdzAUa"], + ["@@udRhnCI‡"], + ["@@ˆoIƒpR„"], + [ + "@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞÆ„LĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌǜbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐ˹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~ݏY’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuٌg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ" + ] + ], + "encodeOffsets": [ + [[123806, 39303]], + [[123821, 39266]], + [[123742, 39256]], + [[123702, 39203]], + [[123649, 39066]], + [[123847, 38933]], + [[123580, 38839]], + [[123894, 37288]], + [[123043, 36624]], + [[123344, 38676]], + [[123522, 38857]], + [[123628, 38858]], + [[118260, 36742]] + ] + } + }, + { + "type": "Feature", + "id": "410000", + "properties": { + "id": "410000", + "cp": [113.665412, 33.757975], + "name": "河南", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m" + ], + "encodeOffsets": [[118256, 37017]] + } + }, + { + "type": "Feature", + "id": "420000", + "properties": { + "id": "420000", + "cp": [113.298572, 30.684355], + "name": "湖北", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@AB‚"], + ["@@lskt"], + [ + "@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙæŠšŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYЧHK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆ̶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤" + ] + ], + "encodeOffsets": [[[113712, 34000]], [[115612, 30507]], [[113649, 34054]]] + } + }, + { + "type": "Feature", + "id": "430000", + "properties": { "id": "430000", "cp": [111.782279, 28.09409], "name": "湖南", "childNum": 3 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@—n„FTs"], + ["@@ßÅÆá‰½ÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–̾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"], + [ + "@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJβSÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUоÅ‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPᜣEXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎۃƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ" + ] + ], + "encodeOffsets": [[[115640, 30489]], [[112543, 27312]], [[116690, 26230]]] + } + }, + { + "type": "Feature", + "id": "440000", + "properties": { + "id": "440000", + "cp": [113.280637, 23.125178], + "name": "广东", + "childNum": 24 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@QdˆAua"], + ["@@ƒlxDLo"], + ["@@sbhNLo"], + ["@@Ă āŸ"], + ["@@WltO[["], + ["@@Krœ]S"], + ["@@e„„I]y"], + ["@@I|„Mym"], + ["@@ƒÛ³LSŒž¼Y"], + ["@@nvºB–ëui©`¾"], + ["@@zdšÛ›Jw®"], + ["@@†°…¯"], + ["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"], + ["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"], + ["@@‹¶Ý’Ì‚vmĞh­ı‡Q"], + ["@@HœŠdSjĒ¢D}war…“u«ZqadYM"], + ["@@elŒ\\LqqU"], + ["@@~rMo\\"], + ["@@f„^ƒC"], + ["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"], + ["@@gÇƳˆŽˆ”oˆŠˆ[~tly"], + ["@@E–ÆC¿‘"], + ["@@OŽP"], + [ + "@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéƌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i" + ] + ], + "encodeOffsets": [ + [[117381, 22988]], + [[116552, 22934]], + [[116790, 22617]], + [[116973, 22545]], + [[116444, 22536]], + [[116931, 22515]], + [[116496, 22490]], + [[116453, 22449]], + [[113301, 21439]], + [[118726, 21604]], + [[118709, 21486]], + [[113210, 20816]], + [[115482, 22082]], + [[113171, 21585]], + [[113199, 21590]], + [[115232, 22102]], + [[115739, 22373]], + [[115134, 22184]], + [[113056, 21175]], + [[119573, 21271]], + [[119957, 24020]], + [[115859, 22356]], + [[116561, 22649]], + [[116285, 22746]] + ] + } + }, + { + "type": "Feature", + "id": "450000", + "properties": { "id": "450000", "cp": [108.320004, 22.82402], "name": "广西", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@H– TQ§•A"], + [ + "@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloޤ™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆÌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FϼĹ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•E쉕E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢Jî¶²" + ] + ], + "encodeOffsets": [[[111707, 21520]], [[107619, 25527]]] + } + }, + { + "type": "Feature", + "id": "460000", + "properties": { "id": "460000", "cp": [109.83119, 19.031971], "name": "海南", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ " + ], + "encodeOffsets": [[112750, 20508]] + } + }, + { + "type": "Feature", + "id": "510000", + "properties": { + "id": "510000", + "cp": [104.065735, 30.659462], + "name": "四川", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@LqKr"], + [ + "@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iǰÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZްIä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºT£ڿœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`Šz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›" + ] + ], + "encodeOffsets": [[[108815, 30935]], [[110617, 31811]]] + } + }, + { + "type": "Feature", + "id": "520000", + "properties": { + "id": "520000", + "cp": [106.713478, 26.578343], + "name": "贵州", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@†G\\†lY£‘in"], + ["@@q‚|ˆ‚mc¯tχVSÎ"], + [ + "@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒh޶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KгŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}ޱžGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝÆ€‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½" + ] + ], + "encodeOffsets": [[[112158, 27383]], [[112105, 27474]], [[112095, 27476]]] + } + }, + { + "type": "Feature", + "id": "530000", + "properties": { + "id": "530000", + "cp": [101.512251, 24.740609], + "name": "云南", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèÆ¶StǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyސ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSᝑ³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\μģUsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`" + ], + "encodeOffsets": [[104636, 22969]] + } + }, + { + "type": "Feature", + "id": "540000", + "properties": { "id": "540000", "cp": [89.132212, 30.860361], "name": "西藏", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@hžľxŽŖ‰xƒÒVކºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|٘¦Avަw`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdЉªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀݦ¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVе‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£à貋ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæÅ„hnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„ǰ¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûŠìÖT¬¸^}Ìsòd´_އKgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxжF”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©" + ], + "encodeOffsets": [[90849, 37210]] + } + }, + { + "type": "Feature", + "id": "610000", + "properties": { + "id": "610000", + "cp": [108.948024, 34.263161], + "name": "陕西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OϹS|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cϰÂ[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~ЦUbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj" + ], + "encodeOffsets": [[110234, 38774]] + } + }, + { + "type": "Feature", + "id": "620000", + "properties": { + "id": "620000", + "cp": [103.823557, 36.058039], + "name": "甘肃", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@VuUv"], + [ + "@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBаaZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aйcčecÇN•ĊãÁ\\蝗dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]A챝‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮްƝ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK" + ] + ], + "encodeOffsets": [[[108619, 36299]], [[108589, 36341]]] + } + }, + { + "type": "Feature", + "id": "630000", + "properties": { "id": "630000", "cp": [96.778916, 35.623178], "name": "青海", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@InJm"], + [ + "@@CƒÆ½OŃĦsΰ~dz¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNΌĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoᣟÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Ó祖•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSò뚣˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbЏ•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňb̰ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌζƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg" + ] + ], + "encodeOffsets": [[[105308, 37219]], [[95370, 40081]]] + } + }, + { + "type": "Feature", + "id": "640000", + "properties": { "id": "640000", "cp": [106.278179, 37.26637], "name": "宁夏", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßR͌X¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀ˾iİbjÕ" + ], + ["@@mfwěwMrŢªv@G‰"] + ], + "encodeOffsets": [[[109366, 40242]], [[108600, 36303]]] + } + }, + { + "type": "Feature", + "id": "650000", + "properties": { "id": "650000", "cp": [85.617733, 40.792818], "name": "新疆", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@QØĔ²X¨”~ǘBºjʐߨvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZ̓èH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYw獃{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~Ꝛf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆÂšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’ہƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FއRěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ" + ], + "encodeOffsets": [[88824, 50096]] + } + }, + { + "type": "Feature", + "id": "110000", + "properties": { + "id": "110000", + "cp": [116.405285, 39.904989], + "name": "北京", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`й­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwڍUd®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}" + ], + "encodeOffsets": [[120023, 41045]] + } + }, + { + "type": "Feature", + "id": "120000", + "properties": { + "id": "120000", + "cp": [117.190182, 39.125596], + "name": "天津", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~" + ], + "encodeOffsets": [[120237, 41215]] + } + }, + { + "type": "Feature", + "id": "310000", + "properties": { + "id": "310000", + "cp": [121.472644, 31.231706], + "name": "上海", + "childNum": 6 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@ɧư¬EpƸÁxc‡"], + ["@@©„ªƒ"], + ["@@”MA‹‘š"], + ["@@Qp݁E§ÉC¾"], + ["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"], + ["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"] + ], + "encodeOffsets": [ + [[124702, 32062]], + [[124547, 32200]], + [[124808, 31991]], + [[124726, 32110]], + [[124903, 32376]], + [[124438, 32149]] + ] + } + }, + { + "type": "Feature", + "id": "500000", + "properties": { + "id": "500000", + "cp": [107.304962, 29.533155], + "name": "重庆", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØÍ™²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBЦzG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN" + ], + ["@@ifjN@s"] + ], + "encodeOffsets": [[[109628, 30765]], [[111725, 31320]]] + } + }, + { + "type": "Feature", + "id": "810000", + "properties": { + "id": "810000", + "cp": [114.173355, 22.320048], + "name": "香港", + "childNum": 5 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@AlBk"], + ["@@mŽn"], + ["@@EpFo"], + ["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKްä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"], + ["@@rMUw‡AS®€e"] + ], + "encodeOffsets": [ + [[117111, 23002]], + [[117072, 22876]], + [[117045, 22887]], + [[116975, 23082]], + [[116882, 22747]] + ] + } + }, + { + "type": "Feature", + "id": "820000", + "properties": { "id": "820000", "cp": [113.54909, 22.198951], "name": "澳门", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": ["@@kÊd°å§s"], + "encodeOffsets": [[116279, 22639]] + } + } + ], + "UTF8Encoding": true +} diff --git a/web/src/assets/svgs/403.svg b/web/src/assets/svgs/403.svg new file mode 100644 index 0000000..4500596 --- /dev/null +++ b/web/src/assets/svgs/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/404.svg b/web/src/assets/svgs/404.svg new file mode 100644 index 0000000..5244d8d --- /dev/null +++ b/web/src/assets/svgs/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/500.svg b/web/src/assets/svgs/500.svg new file mode 100644 index 0000000..9c02092 --- /dev/null +++ b/web/src/assets/svgs/500.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/add-user.svg b/web/src/assets/svgs/bpm/add-user.svg new file mode 100644 index 0000000..bc7bdbf --- /dev/null +++ b/web/src/assets/svgs/bpm/add-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/approve.svg b/web/src/assets/svgs/bpm/approve.svg new file mode 100644 index 0000000..06aa09d --- /dev/null +++ b/web/src/assets/svgs/bpm/approve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/auditor.svg b/web/src/assets/svgs/bpm/auditor.svg new file mode 100644 index 0000000..66d2c2c --- /dev/null +++ b/web/src/assets/svgs/bpm/auditor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/cancel.svg b/web/src/assets/svgs/bpm/cancel.svg new file mode 100644 index 0000000..ab9b155 --- /dev/null +++ b/web/src/assets/svgs/bpm/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/child-process.svg b/web/src/assets/svgs/bpm/child-process.svg new file mode 100644 index 0000000..249723f --- /dev/null +++ b/web/src/assets/svgs/bpm/child-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/condition.svg b/web/src/assets/svgs/bpm/condition.svg new file mode 100644 index 0000000..41ea85d --- /dev/null +++ b/web/src/assets/svgs/bpm/condition.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/copy.svg b/web/src/assets/svgs/bpm/copy.svg new file mode 100644 index 0000000..8ff3bba --- /dev/null +++ b/web/src/assets/svgs/bpm/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/delay.svg b/web/src/assets/svgs/bpm/delay.svg new file mode 100644 index 0000000..cbc31df --- /dev/null +++ b/web/src/assets/svgs/bpm/delay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/finish.svg b/web/src/assets/svgs/bpm/finish.svg new file mode 100644 index 0000000..674c6df --- /dev/null +++ b/web/src/assets/svgs/bpm/finish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/parallel.svg b/web/src/assets/svgs/bpm/parallel.svg new file mode 100644 index 0000000..ba0ac67 --- /dev/null +++ b/web/src/assets/svgs/bpm/parallel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/reject.svg b/web/src/assets/svgs/bpm/reject.svg new file mode 100644 index 0000000..21fd5f6 --- /dev/null +++ b/web/src/assets/svgs/bpm/reject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/running.svg b/web/src/assets/svgs/bpm/running.svg new file mode 100644 index 0000000..5908c13 --- /dev/null +++ b/web/src/assets/svgs/bpm/running.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/simple-process-bg.svg b/web/src/assets/svgs/bpm/simple-process-bg.svg new file mode 100644 index 0000000..eb23ab5 --- /dev/null +++ b/web/src/assets/svgs/bpm/simple-process-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/starter.svg b/web/src/assets/svgs/bpm/starter.svg new file mode 100644 index 0000000..c12c712 --- /dev/null +++ b/web/src/assets/svgs/bpm/starter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/bpm/transactor.svg b/web/src/assets/svgs/bpm/transactor.svg new file mode 100644 index 0000000..a9547a7 --- /dev/null +++ b/web/src/assets/svgs/bpm/transactor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/icon.svg b/web/src/assets/svgs/icon.svg new file mode 100644 index 0000000..7024bec --- /dev/null +++ b/web/src/assets/svgs/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/iot/card-fill.svg b/web/src/assets/svgs/iot/card-fill.svg new file mode 100644 index 0000000..4c74ecd --- /dev/null +++ b/web/src/assets/svgs/iot/card-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/iot/cube.svg b/web/src/assets/svgs/iot/cube.svg new file mode 100644 index 0000000..200ac1b --- /dev/null +++ b/web/src/assets/svgs/iot/cube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/login-bg.svg b/web/src/assets/svgs/login-bg.svg new file mode 100644 index 0000000..bbe06c1 --- /dev/null +++ b/web/src/assets/svgs/login-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/login-box-bg.svg b/web/src/assets/svgs/login-box-bg.svg new file mode 100644 index 0000000..ab10040 --- /dev/null +++ b/web/src/assets/svgs/login-box-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/message.svg b/web/src/assets/svgs/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/web/src/assets/svgs/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/peoples.svg b/web/src/assets/svgs/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/web/src/assets/svgs/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/assets/svgs/send.svg b/web/src/assets/svgs/send.svg new file mode 100644 index 0000000..6fbc984 --- /dev/null +++ b/web/src/assets/svgs/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/components/AppLinkInput/AppLinkSelectDialog.vue b/web/src/components/AppLinkInput/AppLinkSelectDialog.vue new file mode 100644 index 0000000..63f1966 --- /dev/null +++ b/web/src/components/AppLinkInput/AppLinkSelectDialog.vue @@ -0,0 +1,207 @@ + + + diff --git a/web/src/components/AppLinkInput/data.ts b/web/src/components/AppLinkInput/data.ts new file mode 100644 index 0000000..c9e3678 --- /dev/null +++ b/web/src/components/AppLinkInput/data.ts @@ -0,0 +1,236 @@ +// APP 链接分组 +export interface AppLinkGroup { + // 分组名称 + name: string + // 链接列表 + links: AppLink[] +} + +// APP 链接 +export interface AppLink { + // 链接名称 + name: string + // 链接地址 + path: string + // 链接的类型 + type?: APP_LINK_TYPE_ENUM +} + +// APP 链接类型(需要特殊处理,例如商品详情) +export const enum APP_LINK_TYPE_ENUM { + // 拼团活动 + ACTIVITY_COMBINATION, + // 秒杀活动 + ACTIVITY_SECKILL, + // 积分商城活动 + ACTIVITY_POINT, + // 文章详情 + ARTICLE_DETAIL, + // 优惠券详情 + COUPON_DETAIL, + // 自定义页面详情 + DIY_PAGE_DETAIL, + // 品类列表 + PRODUCT_CATEGORY_LIST, + // 商品列表 + PRODUCT_LIST, + // 商品详情 + PRODUCT_DETAIL_NORMAL, + // 拼团商品详情 + PRODUCT_DETAIL_COMBINATION, + // 秒杀商品详情 + PRODUCT_DETAIL_SECKILL +} + +// APP 链接列表(做一下持久化?) +export const APP_LINK_GROUP_LIST = [ + { + name: '商城', + links: [ + { + name: '首页', + path: '/pages/index/index' + }, + { + name: '商品分类', + path: '/pages/index/category', + type: APP_LINK_TYPE_ENUM.PRODUCT_CATEGORY_LIST + }, + { + name: '购物车', + path: '/pages/index/cart' + }, + { + name: '个人中心', + path: '/pages/index/user' + }, + { + name: '商品搜索', + path: '/pages/index/search' + }, + { + name: '自定义页面', + path: '/pages/index/page', + type: APP_LINK_TYPE_ENUM.DIY_PAGE_DETAIL + }, + { + name: '客服', + path: '/pages/chat/index' + }, + { + name: '系统设置', + path: '/pages/public/setting' + }, + { + name: '常见问题', + path: '/pages/public/faq' + } + ] + }, + { + name: '商品', + links: [ + { + name: '商品列表', + path: '/pages/goods/list', + type: APP_LINK_TYPE_ENUM.PRODUCT_LIST + }, + { + name: '商品详情', + path: '/pages/goods/index', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_NORMAL + }, + { + name: '拼团商品详情', + path: '/pages/goods/groupon', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_COMBINATION + }, + { + name: '秒杀商品详情', + path: '/pages/goods/seckill', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_SECKILL + } + ] + }, + { + name: '营销活动', + links: [ + { + name: '拼团订单', + path: '/pages/activity/groupon/order' + }, + { + name: '营销商品', + path: '/pages/activity/index' + }, + { + name: '拼团活动', + path: '/pages/activity/groupon/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_COMBINATION + }, + { + name: '秒杀活动', + path: '/pages/activity/seckill/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_SECKILL + }, + { + name: '积分商城活动', + path: '/pages/activity/point/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_POINT + }, + { + name: '签到中心', + path: '/pages/app/sign' + }, + { + name: '优惠券中心', + path: '/pages/coupon/list' + }, + { + name: '优惠券详情', + path: '/pages/coupon/detail', + type: APP_LINK_TYPE_ENUM.COUPON_DETAIL + }, + { + name: '文章详情', + path: '/pages/public/richtext', + type: APP_LINK_TYPE_ENUM.ARTICLE_DETAIL + } + ] + }, + { + name: '分销商城', + links: [ + { + name: '分销中心', + path: '/pages/commission/index' + }, + { + name: '推广商品', + path: '/pages/commission/goods' + }, + { + name: '分销订单', + path: '/pages/commission/order' + }, + { + name: '我的团队', + path: '/pages/commission/team' + } + ] + }, + { + name: '支付', + links: [ + { + name: '充值余额', + path: '/pages/pay/recharge' + }, + { + name: '充值记录', + path: '/pages/pay/recharge-log' + } + ] + }, + { + name: '用户中心', + links: [ + { + name: '用户信息', + path: '/pages/user/info' + }, + { + name: '用户订单', + path: '/pages/order/list' + }, + { + name: '售后订单', + path: '/pages/order/aftersale/list' + }, + { + name: '商品收藏', + path: '/pages/user/goods-collect' + }, + { + name: '浏览记录', + path: '/pages/user/goods-log' + }, + { + name: '地址管理', + path: '/pages/user/address/list' + }, + { + name: '用户佣金', + path: '/pages/user/wallet/commission' + }, + { + name: '用户余额', + path: '/pages/user/wallet/money' + }, + { + name: '用户积分', + path: '/pages/user/wallet/score' + } + ] + } +] as AppLinkGroup[] diff --git a/web/src/components/AppLinkInput/index.vue b/web/src/components/AppLinkInput/index.vue new file mode 100644 index 0000000..ff71382 --- /dev/null +++ b/web/src/components/AppLinkInput/index.vue @@ -0,0 +1,43 @@ + + diff --git a/web/src/components/Backtop/index.ts b/web/src/components/Backtop/index.ts new file mode 100644 index 0000000..96de88d --- /dev/null +++ b/web/src/components/Backtop/index.ts @@ -0,0 +1,3 @@ +import Backtop from './src/Backtop.vue' + +export { Backtop } diff --git a/web/src/components/Backtop/src/Backtop.vue b/web/src/components/Backtop/src/Backtop.vue new file mode 100644 index 0000000..5d79f51 --- /dev/null +++ b/web/src/components/Backtop/src/Backtop.vue @@ -0,0 +1,17 @@ + + + diff --git a/web/src/components/Card/index.ts b/web/src/components/Card/index.ts new file mode 100644 index 0000000..f4c0d86 --- /dev/null +++ b/web/src/components/Card/index.ts @@ -0,0 +1,3 @@ +import CardTitle from './src/CardTitle.vue' + +export { CardTitle } diff --git a/web/src/components/Card/src/CardTitle.vue b/web/src/components/Card/src/CardTitle.vue new file mode 100644 index 0000000..76a8356 --- /dev/null +++ b/web/src/components/Card/src/CardTitle.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/web/src/components/ColorInput/index.vue b/web/src/components/ColorInput/index.vue new file mode 100644 index 0000000..63ff73c --- /dev/null +++ b/web/src/components/ColorInput/index.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/web/src/components/ConfigGlobal/index.ts b/web/src/components/ConfigGlobal/index.ts new file mode 100644 index 0000000..dda2462 --- /dev/null +++ b/web/src/components/ConfigGlobal/index.ts @@ -0,0 +1,3 @@ +import ConfigGlobal from './src/ConfigGlobal.vue' + +export { ConfigGlobal } diff --git a/web/src/components/ConfigGlobal/src/ConfigGlobal.vue b/web/src/components/ConfigGlobal/src/ConfigGlobal.vue new file mode 100644 index 0000000..af543df --- /dev/null +++ b/web/src/components/ConfigGlobal/src/ConfigGlobal.vue @@ -0,0 +1,62 @@ + + + diff --git a/web/src/components/ContentDetailWrap/index.ts b/web/src/components/ContentDetailWrap/index.ts new file mode 100644 index 0000000..1871cac --- /dev/null +++ b/web/src/components/ContentDetailWrap/index.ts @@ -0,0 +1,3 @@ +import ContentDetailWrap from './src/ContentDetailWrap.vue' + +export { ContentDetailWrap } diff --git a/web/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/web/src/components/ContentDetailWrap/src/ContentDetailWrap.vue new file mode 100644 index 0000000..a9eacc0 --- /dev/null +++ b/web/src/components/ContentDetailWrap/src/ContentDetailWrap.vue @@ -0,0 +1,58 @@ + + + diff --git a/web/src/components/ContentWrap/index.ts b/web/src/components/ContentWrap/index.ts new file mode 100644 index 0000000..8c22cc8 --- /dev/null +++ b/web/src/components/ContentWrap/index.ts @@ -0,0 +1,3 @@ +import ContentWrap from './src/ContentWrap.vue' + +export { ContentWrap } diff --git a/web/src/components/ContentWrap/src/ContentWrap.vue b/web/src/components/ContentWrap/src/ContentWrap.vue new file mode 100644 index 0000000..e603596 --- /dev/null +++ b/web/src/components/ContentWrap/src/ContentWrap.vue @@ -0,0 +1,36 @@ + + + diff --git a/web/src/components/CountTo/index.ts b/web/src/components/CountTo/index.ts new file mode 100644 index 0000000..2119f02 --- /dev/null +++ b/web/src/components/CountTo/index.ts @@ -0,0 +1,3 @@ +import CountTo from './src/CountTo.vue' + +export { CountTo } diff --git a/web/src/components/CountTo/src/CountTo.vue b/web/src/components/CountTo/src/CountTo.vue new file mode 100644 index 0000000..7a19bec --- /dev/null +++ b/web/src/components/CountTo/src/CountTo.vue @@ -0,0 +1,182 @@ + + + diff --git a/web/src/components/Crontab/index.ts b/web/src/components/Crontab/index.ts new file mode 100644 index 0000000..6beeef8 --- /dev/null +++ b/web/src/components/Crontab/index.ts @@ -0,0 +1,2 @@ +import Crontab from './src/Crontab.vue' +export { Crontab } diff --git a/web/src/components/Crontab/src/Crontab.vue b/web/src/components/Crontab/src/Crontab.vue new file mode 100644 index 0000000..0914bb7 --- /dev/null +++ b/web/src/components/Crontab/src/Crontab.vue @@ -0,0 +1,1015 @@ + + + + diff --git a/web/src/components/Cropper/index.ts b/web/src/components/Cropper/index.ts new file mode 100644 index 0000000..8fcc618 --- /dev/null +++ b/web/src/components/Cropper/index.ts @@ -0,0 +1,4 @@ +import CropperImage from './src/Cropper.vue' +import CropperAvatar from './src/CropperAvatar.vue' + +export { CropperImage, CropperAvatar } diff --git a/web/src/components/Cropper/src/CopperModal.vue b/web/src/components/Cropper/src/CopperModal.vue new file mode 100644 index 0000000..d9a4e34 --- /dev/null +++ b/web/src/components/Cropper/src/CopperModal.vue @@ -0,0 +1,261 @@ + + + diff --git a/web/src/components/Cropper/src/Cropper.vue b/web/src/components/Cropper/src/Cropper.vue new file mode 100644 index 0000000..871aed8 --- /dev/null +++ b/web/src/components/Cropper/src/Cropper.vue @@ -0,0 +1,183 @@ + + + diff --git a/web/src/components/Cropper/src/CropperAvatar.vue b/web/src/components/Cropper/src/CropperAvatar.vue new file mode 100644 index 0000000..9464c2a --- /dev/null +++ b/web/src/components/Cropper/src/CropperAvatar.vue @@ -0,0 +1,142 @@ + + + diff --git a/web/src/components/Cropper/src/types.ts b/web/src/components/Cropper/src/types.ts new file mode 100644 index 0000000..bcad3b4 --- /dev/null +++ b/web/src/components/Cropper/src/types.ts @@ -0,0 +1,8 @@ +import type Cropper from 'cropperjs' + +export interface CropendResult { + imgBase64: string + imgInfo: Cropper.Data +} + +export type { Cropper } diff --git a/web/src/components/DeptSelectForm/index.vue b/web/src/components/DeptSelectForm/index.vue new file mode 100644 index 0000000..140f495 --- /dev/null +++ b/web/src/components/DeptSelectForm/index.vue @@ -0,0 +1,122 @@ + + + diff --git a/web/src/components/Descriptions/index.ts b/web/src/components/Descriptions/index.ts new file mode 100644 index 0000000..243bc39 --- /dev/null +++ b/web/src/components/Descriptions/index.ts @@ -0,0 +1,4 @@ +import Descriptions from './src/Descriptions.vue' +import DescriptionsItemLabel from './src/DescriptionsItemLabel.vue' + +export { Descriptions, DescriptionsItemLabel } diff --git a/web/src/components/Descriptions/src/Descriptions.vue b/web/src/components/Descriptions/src/Descriptions.vue new file mode 100644 index 0000000..184d95c --- /dev/null +++ b/web/src/components/Descriptions/src/Descriptions.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/web/src/components/Descriptions/src/DescriptionsItemLabel.vue b/web/src/components/Descriptions/src/DescriptionsItemLabel.vue new file mode 100644 index 0000000..4efb2fb --- /dev/null +++ b/web/src/components/Descriptions/src/DescriptionsItemLabel.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/web/src/components/Dialog/index.ts b/web/src/components/Dialog/index.ts new file mode 100644 index 0000000..1655dad --- /dev/null +++ b/web/src/components/Dialog/index.ts @@ -0,0 +1,3 @@ +import Dialog from './src/Dialog.vue' + +export { Dialog } diff --git a/web/src/components/Dialog/src/Dialog.vue b/web/src/components/Dialog/src/Dialog.vue new file mode 100644 index 0000000..019971c --- /dev/null +++ b/web/src/components/Dialog/src/Dialog.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/web/src/components/DictTag/index.ts b/web/src/components/DictTag/index.ts new file mode 100644 index 0000000..4db2742 --- /dev/null +++ b/web/src/components/DictTag/index.ts @@ -0,0 +1,3 @@ +import DictTag from './src/DictTag.vue' + +export { DictTag } diff --git a/web/src/components/DictTag/src/DictTag.vue b/web/src/components/DictTag/src/DictTag.vue new file mode 100644 index 0000000..6414eaa --- /dev/null +++ b/web/src/components/DictTag/src/DictTag.vue @@ -0,0 +1,90 @@ + diff --git a/web/src/components/DiyEditor/components/ComponentContainer.vue b/web/src/components/DiyEditor/components/ComponentContainer.vue new file mode 100644 index 0000000..199e615 --- /dev/null +++ b/web/src/components/DiyEditor/components/ComponentContainer.vue @@ -0,0 +1,239 @@ + + + + + + diff --git a/web/src/components/DiyEditor/components/ComponentContainerProperty.vue b/web/src/components/DiyEditor/components/ComponentContainerProperty.vue new file mode 100644 index 0000000..5d18785 --- /dev/null +++ b/web/src/components/DiyEditor/components/ComponentContainerProperty.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/ComponentLibrary.vue b/web/src/components/DiyEditor/components/ComponentLibrary.vue new file mode 100644 index 0000000..61f385c --- /dev/null +++ b/web/src/components/DiyEditor/components/ComponentLibrary.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/Carousel/config.ts b/web/src/components/DiyEditor/components/mobile/Carousel/config.ts new file mode 100644 index 0000000..1ca9de8 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Carousel/config.ts @@ -0,0 +1,53 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 轮播图属性 */ +export interface CarouselProperty { + // 类型:默认 | 卡片 + type: 'default' | 'card' + // 指示器样式:点 | 数字 + indicator: 'dot' | 'number' + // 是否自动播放 + autoplay: boolean + // 播放间隔 + interval: number + // 轮播高度 + height: number + // 轮播内容 + items: CarouselItemProperty[] + // 组件样式 + style: ComponentStyle +} +// 轮播内容属性 +export interface CarouselItemProperty { + // 类型:图片 | 视频 + type: 'img' | 'video' + // 图片链接 + imgUrl: string + // 视频链接 + videoUrl: string + // 跳转链接 + url: string +} + +// 定义组件 +export const component = { + id: 'Carousel', + name: '轮播图', + icon: 'system-uicons:carousel', + property: { + type: 'default', + indicator: 'dot', + autoplay: false, + interval: 3, + height: 174, + items: [ + { type: 'img', imgUrl: 'https://static.iocoder.cn/mall/banner-01.jpg', videoUrl: '' }, + { type: 'img', imgUrl: 'https://static.iocoder.cn/mall/banner-02.jpg', videoUrl: '' } + ] as CarouselItemProperty[], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/Carousel/index.vue b/web/src/components/DiyEditor/components/mobile/Carousel/index.vue new file mode 100644 index 0000000..cafb534 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Carousel/index.vue @@ -0,0 +1,43 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/Carousel/property.vue b/web/src/components/DiyEditor/components/mobile/Carousel/property.vue new file mode 100644 index 0000000..8da98ff --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Carousel/property.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/CouponCard/component.tsx b/web/src/components/DiyEditor/components/mobile/CouponCard/component.tsx new file mode 100644 index 0000000..afe5dfd --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/CouponCard/component.tsx @@ -0,0 +1,73 @@ +import * as CouponTemplateApi from '@/api/mall/promotion/coupon/couponTemplate' +import { CouponTemplateValidityTypeEnum, PromotionDiscountTypeEnum } from '@/utils/constants' +import { floatToFixed2 } from '@/utils' +import { formatDate } from '@/utils/formatTime' +import { object } from 'vue-types' + +// 优惠值 +export const CouponDiscount = defineComponent({ + name: 'CouponDiscount', + props: { + coupon: object() + }, + setup(props) { + const coupon = props.coupon as CouponTemplateApi.CouponTemplateVO + // 折扣 + let value = coupon.discountPercent / 10 + '' + let suffix = ' 折' + // 满减 + if (coupon.discountType === PromotionDiscountTypeEnum.PRICE.type) { + value = floatToFixed2(coupon.discountPrice) + suffix = ' 元' + } + return () => ( +

    + ) + } +}) + +// 优惠描述 +export const CouponDiscountDesc = defineComponent({ + name: 'CouponDiscountDesc', + props: { + coupon: object() + }, + setup(props) { + const coupon = props.coupon as CouponTemplateApi.CouponTemplateVO + // 使用条件 + const useCondition = coupon.usePrice > 0 ? `满${floatToFixed2(coupon.usePrice)}元,` : '' + // 优惠描述 + const discountDesc = + coupon.discountType === PromotionDiscountTypeEnum.PRICE.type + ? `减${floatToFixed2(coupon.discountPrice)}元` + : `打${coupon.discountPercent / 10.0}折` + return () => ( +
    + {useCondition} + {discountDesc} +
    + ) + } +}) + +// 有效期 +export const CouponValidTerm = defineComponent({ + name: 'CouponValidTerm', + props: { + coupon: object() + }, + setup(props) { + const coupon = props.coupon as CouponTemplateApi.CouponTemplateVO + const text = + coupon.validityType === CouponTemplateValidityTypeEnum.DATE.type + ? `有效期:${formatDate(coupon.validStartTime, 'YYYY-MM-DD')} 至 ${formatDate( + coupon.validEndTime, + 'YYYY-MM-DD' + )}` + : `领取后第 ${coupon.fixedStartTerm} - ${coupon.fixedEndTerm} 天内可用` + return () =>
    {text}
    + } +}) diff --git a/web/src/components/DiyEditor/components/mobile/CouponCard/config.ts b/web/src/components/DiyEditor/components/mobile/CouponCard/config.ts new file mode 100644 index 0000000..304533d --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/CouponCard/config.ts @@ -0,0 +1,47 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 商品卡片属性 */ +export interface CouponCardProperty { + // 列数 + columns: number + // 背景图 + bgImg: string + // 文字颜色 + textColor: string + // 按钮样式 + button: { + // 颜色 + color: string + // 背景颜色 + bgColor: string + } + // 间距 + space: number + // 优惠券编号列表 + couponIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'CouponCard', + name: '优惠券', + icon: 'ep:ticket', + property: { + columns: 1, + bgImg: '', + textColor: '#E9B461', + button: { + color: '#434343', + bgColor: '' + }, + space: 0, + couponIds: [], + style: { + bgType: 'color', + bgColor: '', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/CouponCard/index.vue b/web/src/components/DiyEditor/components/mobile/CouponCard/index.vue new file mode 100644 index 0000000..48d01c5 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/CouponCard/index.vue @@ -0,0 +1,149 @@ + + + diff --git a/web/src/components/DiyEditor/components/mobile/CouponCard/property.vue b/web/src/components/DiyEditor/components/mobile/CouponCard/property.vue new file mode 100644 index 0000000..604afe9 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/CouponCard/property.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/Divider/config.ts b/web/src/components/DiyEditor/components/mobile/Divider/config.ts new file mode 100644 index 0000000..9b55360 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Divider/config.ts @@ -0,0 +1,29 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 分割线属性 */ +export interface DividerProperty { + // 高度 + height: number + // 线宽 + lineWidth: number + // 边距类型 + paddingType: 'none' | 'horizontal' + // 颜色 + lineColor: string + // 类型 + borderType: 'solid' | 'dashed' | 'dotted' | 'none' +} + +// 定义组件 +export const component = { + id: 'Divider', + name: '分割线', + icon: 'tdesign:component-divider-vertical', + property: { + height: 30, + lineWidth: 1, + paddingType: 'none', + lineColor: '#dcdfe6', + borderType: 'solid' + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/Divider/index.vue b/web/src/components/DiyEditor/components/mobile/Divider/index.vue new file mode 100644 index 0000000..f778504 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Divider/index.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/Divider/property.vue b/web/src/components/DiyEditor/components/mobile/Divider/property.vue new file mode 100644 index 0000000..dc2a4da --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Divider/property.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts b/web/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts new file mode 100644 index 0000000..fcf129f --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts @@ -0,0 +1,36 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +// 悬浮按钮属性 +export interface FloatingActionButtonProperty { + // 展开方向 + direction: 'horizontal' | 'vertical' + // 是否显示文字 + showText: boolean + // 按钮列表 + list: FloatingActionButtonItemProperty[] +} + +// 悬浮按钮项属性 +export interface FloatingActionButtonItemProperty { + // 图片地址 + imgUrl: string + // 跳转连接 + url: string + // 文字 + text: string + // 文字颜色 + textColor: string +} + +// 定义组件 +export const component = { + id: 'FloatingActionButton', + name: '悬浮按钮', + icon: 'tabler:float-right', + position: 'fixed', + property: { + direction: 'vertical', + showText: true, + list: [{ textColor: '#fff' }] + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue b/web/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue new file mode 100644 index 0000000..c2b9926 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue @@ -0,0 +1,74 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue b/web/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue new file mode 100644 index 0000000..6eeb217 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts b/web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts new file mode 100644 index 0000000..a7bd762 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts @@ -0,0 +1,143 @@ +import { HotZoneItemProperty } from '@/components/DiyEditor/components/mobile/HotZone/config' +import { StyleValue } from 'vue' + +// 热区的最小宽高 +export const HOT_ZONE_MIN_SIZE = 100 + +// 控制的类型 +export enum CONTROL_TYPE_ENUM { + LEFT, + TOP, + WIDTH, + HEIGHT +} + +// 定义热区的控制点 +export interface ControlDot { + position: string + types: CONTROL_TYPE_ENUM[] + style: StyleValue +} + +// 热区的8个控制点 +export const CONTROL_DOT_LIST = [ + { + position: '左上角', + types: [ + CONTROL_TYPE_ENUM.LEFT, + CONTROL_TYPE_ENUM.TOP, + CONTROL_TYPE_ENUM.WIDTH, + CONTROL_TYPE_ENUM.HEIGHT + ], + style: { left: '-5px', top: '-5px', cursor: 'nwse-resize' } + }, + { + position: '上方中间', + types: [CONTROL_TYPE_ENUM.TOP, CONTROL_TYPE_ENUM.HEIGHT], + style: { left: '50%', top: '-5px', cursor: 'n-resize', transform: 'translateX(-50%)' } + }, + { + position: '右上角', + types: [CONTROL_TYPE_ENUM.TOP, CONTROL_TYPE_ENUM.WIDTH, CONTROL_TYPE_ENUM.HEIGHT], + style: { right: '-5px', top: '-5px', cursor: 'nesw-resize' } + }, + { + position: '右侧中间', + types: [CONTROL_TYPE_ENUM.WIDTH], + style: { right: '-5px', top: '50%', cursor: 'e-resize', transform: 'translateX(-50%)' } + }, + { + position: '右下角', + types: [CONTROL_TYPE_ENUM.WIDTH, CONTROL_TYPE_ENUM.HEIGHT], + style: { right: '-5px', bottom: '-5px', cursor: 'nwse-resize' } + }, + { + position: '下方中间', + types: [CONTROL_TYPE_ENUM.HEIGHT], + style: { left: '50%', bottom: '-5px', cursor: 's-resize', transform: 'translateX(-50%)' } + }, + { + position: '左下角', + types: [CONTROL_TYPE_ENUM.LEFT, CONTROL_TYPE_ENUM.WIDTH, CONTROL_TYPE_ENUM.HEIGHT], + style: { left: '-5px', bottom: '-5px', cursor: 'nesw-resize' } + }, + { + position: '左侧中间', + types: [CONTROL_TYPE_ENUM.LEFT, CONTROL_TYPE_ENUM.WIDTH], + style: { left: '-5px', top: '50%', cursor: 'w-resize', transform: 'translateX(-50%)' } + } +] as ControlDot[] + +//region 热区的缩放 +// 热区的缩放比例 +export const HOT_ZONE_SCALE_RATE = 2 +// 缩小:缩回适合手机屏幕的大小 +export const zoomOut = (list?: HotZoneItemProperty[]) => { + return ( + list?.map((hotZone) => ({ + ...hotZone, + left: (hotZone.left /= HOT_ZONE_SCALE_RATE), + top: (hotZone.top /= HOT_ZONE_SCALE_RATE), + width: (hotZone.width /= HOT_ZONE_SCALE_RATE), + height: (hotZone.height /= HOT_ZONE_SCALE_RATE) + })) || [] + ) +} +// 放大:作用是为了方便在电脑屏幕上编辑 +export const zoomIn = (list?: HotZoneItemProperty[]) => { + return ( + list?.map((hotZone) => ({ + ...hotZone, + left: (hotZone.left *= HOT_ZONE_SCALE_RATE), + top: (hotZone.top *= HOT_ZONE_SCALE_RATE), + width: (hotZone.width *= HOT_ZONE_SCALE_RATE), + height: (hotZone.height *= HOT_ZONE_SCALE_RATE) + })) || [] + ) +} +//endregion + +/** + * 封装热区拖拽 + * + * 注:为什么不使用vueuse的useDraggable。在本场景下,其使用方式比较复杂 + * @param hotZone 热区 + * @param downEvent 鼠标按下事件 + * @param callback 回调函数 + */ +export const useDraggable = ( + hotZone: HotZoneItemProperty, + downEvent: MouseEvent, + callback: ( + left: number, + top: number, + width: number, + height: number, + moveWidth: number, + moveHeight: number + ) => void +) => { + // 阻止事件冒泡 + downEvent.stopPropagation() + + // 移动前的鼠标坐标 + const { clientX: startX, clientY: startY } = downEvent + // 移动前的热区坐标、大小 + const { left, top, width, height } = hotZone + + // 监听鼠标移动 + document.onmousemove = (e) => { + // 移动宽度 + const moveWidth = e.clientX - startX + // 移动高度 + const moveHeight = e.clientY - startY + // 移动回调 + callback(left, top, width, height, moveWidth, moveHeight) + } + + // 松开鼠标后,结束拖拽 + document.onmouseup = () => { + document.onmousemove = null + document.onmouseup = null + } +} diff --git a/web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue b/web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue new file mode 100644 index 0000000..3925057 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/HotZone/config.ts b/web/src/components/DiyEditor/components/mobile/HotZone/config.ts new file mode 100644 index 0000000..80ed855 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/HotZone/config.ts @@ -0,0 +1,43 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 热区属性 */ +export interface HotZoneProperty { + // 图片地址 + imgUrl: string + // 导航菜单列表 + list: HotZoneItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 热区项目属性 */ +export interface HotZoneItemProperty { + // 链接的名称 + name: string + // 链接 + url: string + // 宽 + width: number + // 高 + height: number + // 上 + top: number + // 左 + left: number +} + +// 定义组件 +export const component = { + id: 'HotZone', + name: '热区', + icon: 'tabler:hand-click', + property: { + imgUrl: '', + list: [] as HotZoneItemProperty[], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/HotZone/index.vue b/web/src/components/DiyEditor/components/mobile/HotZone/index.vue new file mode 100644 index 0000000..3a9b842 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/HotZone/index.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/HotZone/property.vue b/web/src/components/DiyEditor/components/mobile/HotZone/property.vue new file mode 100644 index 0000000..65892f8 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/HotZone/property.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/ImageBar/config.ts b/web/src/components/DiyEditor/components/mobile/ImageBar/config.ts new file mode 100644 index 0000000..68edf72 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ImageBar/config.ts @@ -0,0 +1,27 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 图片展示属性 */ +export interface ImageBarProperty { + // 图片链接 + imgUrl: string + // 跳转链接 + url: string + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'ImageBar', + name: '图片展示', + icon: 'ep:picture', + property: { + imgUrl: '', + url: '', + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/ImageBar/index.vue b/web/src/components/DiyEditor/components/mobile/ImageBar/index.vue new file mode 100644 index 0000000..d9685b5 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ImageBar/index.vue @@ -0,0 +1,24 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/ImageBar/property.vue b/web/src/components/DiyEditor/components/mobile/ImageBar/property.vue new file mode 100644 index 0000000..fe08756 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ImageBar/property.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MagicCube/config.ts b/web/src/components/DiyEditor/components/mobile/MagicCube/config.ts new file mode 100644 index 0000000..5e10ab5 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MagicCube/config.ts @@ -0,0 +1,49 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 广告魔方属性 */ +export interface MagicCubeProperty { + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间隔 + space: number + // 导航菜单列表 + list: MagicCubeItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 广告魔方项目属性 */ +export interface MagicCubeItemProperty { + // 图标链接 + imgUrl: string + // 链接 + url: string + // 宽 + width: number + // 高 + height: number + // 上 + top: number + // 左 + left: number +} + +// 定义组件 +export const component = { + id: 'MagicCube', + name: '广告魔方', + icon: 'bi:columns', + property: { + borderRadiusTop: 0, + borderRadiusBottom: 0, + space: 0, + list: [], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/MagicCube/index.vue b/web/src/components/DiyEditor/components/mobile/MagicCube/index.vue new file mode 100644 index 0000000..0abb353 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MagicCube/index.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MagicCube/property.vue b/web/src/components/DiyEditor/components/mobile/MagicCube/property.vue new file mode 100644 index 0000000..dee3117 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MagicCube/property.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MenuGrid/config.ts b/web/src/components/DiyEditor/components/mobile/MenuGrid/config.ts new file mode 100644 index 0000000..9f91ceb --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuGrid/config.ts @@ -0,0 +1,79 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' +import { cloneDeep } from 'lodash-es' + +/** 宫格导航属性 */ +export interface MenuGridProperty { + // 列数 + column: number + // 导航菜单列表 + list: MenuGridItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 宫格导航项目属性 */ +export interface MenuGridItemProperty { + // 图标链接 + iconUrl: string + // 标题 + title: string + // 标题颜色 + titleColor: string + // 副标题 + subtitle: string + // 副标题颜色 + subtitleColor: string + // 链接 + url: string + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标文字 + text: string + // 角标文字颜色 + textColor: string + // 角标背景颜色 + bgColor: string + } +} + +export const EMPTY_MENU_GRID_ITEM_PROPERTY = { + title: '标题', + titleColor: '#333', + subtitle: '副标题', + subtitleColor: '#bbb', + badge: { + show: false, + textColor: '#fff', + bgColor: '#FF6000' + } +} as MenuGridItemProperty + +// 定义组件 +export const component = { + id: 'MenuGrid', + name: '宫格导航', + icon: 'bi:grid-3x3-gap', + property: { + column: 3, + list: [cloneDeep(EMPTY_MENU_GRID_ITEM_PROPERTY)], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8, + marginLeft: 8, + marginRight: 8, + padding: 8, + paddingTop: 8, + paddingRight: 8, + paddingBottom: 8, + paddingLeft: 8, + borderRadius: 8, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + borderBottomRightRadius: 8, + borderBottomLeftRadius: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/MenuGrid/index.vue b/web/src/components/DiyEditor/components/mobile/MenuGrid/index.vue new file mode 100644 index 0000000..1c5ef1d --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuGrid/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MenuGrid/property.vue b/web/src/components/DiyEditor/components/mobile/MenuGrid/property.vue new file mode 100644 index 0000000..e05988e --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuGrid/property.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MenuList/config.ts b/web/src/components/DiyEditor/components/mobile/MenuList/config.ts new file mode 100644 index 0000000..f96fd0a --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuList/config.ts @@ -0,0 +1,48 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' +import { cloneDeep } from 'lodash-es' + +/** 列表导航属性 */ +export interface MenuListProperty { + // 导航菜单列表 + list: MenuListItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 列表导航项目属性 */ +export interface MenuListItemProperty { + // 图标链接 + iconUrl: string + // 标题 + title: string + // 标题颜色 + titleColor: string + // 副标题 + subtitle: string + // 副标题颜色 + subtitleColor: string + // 链接 + url: string +} + +export const EMPTY_MENU_LIST_ITEM_PROPERTY = { + title: '标题', + titleColor: '#333', + subtitle: '副标题', + subtitleColor: '#bbb' +} + +// 定义组件 +export const component = { + id: 'MenuList', + name: '列表导航', + icon: 'fa-solid:list', + property: { + list: [cloneDeep(EMPTY_MENU_LIST_ITEM_PROPERTY)], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/MenuList/index.vue b/web/src/components/DiyEditor/components/mobile/MenuList/index.vue new file mode 100644 index 0000000..9a56fd9 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuList/index.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MenuList/property.vue b/web/src/components/DiyEditor/components/mobile/MenuList/property.vue new file mode 100644 index 0000000..b665b32 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuList/property.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts b/web/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts new file mode 100644 index 0000000..fe5f4e8 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts @@ -0,0 +1,66 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' +import { cloneDeep } from 'lodash-es' + +/** 菜单导航属性 */ +export interface MenuSwiperProperty { + // 布局: 图标+文字 | 图标 + layout: 'iconText' | 'icon' + // 行数 + row: number + // 列数 + column: number + // 导航菜单列表 + list: MenuSwiperItemProperty[] + // 组件样式 + style: ComponentStyle +} +/** 菜单导航项目属性 */ +export interface MenuSwiperItemProperty { + // 图标链接 + iconUrl: string + // 标题 + title: string + // 标题颜色 + titleColor: string + // 链接 + url: string + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标文字 + text: string + // 角标文字颜色 + textColor: string + // 角标背景颜色 + bgColor: string + } +} + +export const EMPTY_MENU_SWIPER_ITEM_PROPERTY = { + title: '标题', + titleColor: '#333', + badge: { + show: false, + textColor: '#fff', + bgColor: '#FF6000' + } +} as MenuSwiperItemProperty + +// 定义组件 +export const component = { + id: 'MenuSwiper', + name: '菜单导航', + icon: 'bi:grid-3x2-gap', + property: { + layout: 'iconText', + row: 1, + column: 3, + list: [cloneDeep(EMPTY_MENU_SWIPER_ITEM_PROPERTY)], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue b/web/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue new file mode 100644 index 0000000..fc6d718 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue b/web/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue new file mode 100644 index 0000000..3dd3f7c --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue b/web/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue new file mode 100644 index 0000000..ea0e7ca --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/NavigationBar/config.ts b/web/src/components/DiyEditor/components/mobile/NavigationBar/config.ts new file mode 100644 index 0000000..36612a3 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NavigationBar/config.ts @@ -0,0 +1,82 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 顶部导航栏属性 */ +export interface NavigationBarProperty { + // 背景类型 + bgType: 'color' | 'img' + // 背景颜色 + bgColor: string + // 图片链接 + bgImg: string + // 样式类型:默认 | 沉浸式 + styleType: 'normal' | 'inner' + // 常驻显示 + alwaysShow: boolean + // 小程序单元格列表 + mpCells: NavigationBarCellProperty[] + // 其它平台单元格列表 + otherCells: NavigationBarCellProperty[] + // 本地变量 + _local: { + // 预览顶部导航(小程序) + previewMp: boolean + // 预览顶部导航(非小程序) + previewOther: boolean + } +} + +/** 顶部导航栏 - 单元格 属性 */ +export interface NavigationBarCellProperty { + // 类型:文字 | 图片 | 搜索框 + type: 'text' | 'image' | 'search' + // 宽度 + width: number + // 高度 + height: number + // 顶部位置 + top: number + // 左侧位置 + left: number + // 文字内容 + text: string + // 文字颜色 + textColor: string + // 图片地址 + imgUrl: string + // 图片链接 + url: string + // 搜索框:提示文字 + placeholder: string + // 搜索框:边框圆角半径 + borderRadius: number +} + +// 定义组件 +export const component = { + id: 'NavigationBar', + name: '顶部导航栏', + icon: 'tabler:layout-navbar', + property: { + bgType: 'color', + bgColor: '#fff', + bgImg: '', + styleType: 'normal', + alwaysShow: true, + mpCells: [ + { + type: 'text', + textColor: '#111111' + } + ], + otherCells: [ + { + type: 'text', + textColor: '#111111' + } + ], + _local: { + previewMp: true, + previewOther: false + } + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/NavigationBar/index.vue b/web/src/components/DiyEditor/components/mobile/NavigationBar/index.vue new file mode 100644 index 0000000..c5a92b3 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NavigationBar/index.vue @@ -0,0 +1,90 @@ + + + diff --git a/web/src/components/DiyEditor/components/mobile/NavigationBar/property.vue b/web/src/components/DiyEditor/components/mobile/NavigationBar/property.vue new file mode 100644 index 0000000..654b3b2 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NavigationBar/property.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/NoticeBar/config.ts b/web/src/components/DiyEditor/components/mobile/NoticeBar/config.ts new file mode 100644 index 0000000..b6b0860 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NoticeBar/config.ts @@ -0,0 +1,46 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 公告栏属性 */ +export interface NoticeBarProperty { + // 图标地址 + iconUrl: string + // 公告内容列表 + contents: NoticeContentProperty[] + // 背景颜色 + backgroundColor: string + // 文字颜色 + textColor: string + // 组件样式 + style: ComponentStyle +} + +/** 内容属性 */ +export interface NoticeContentProperty { + // 内容文字 + text: string + // 链接地址 + url: string +} + +// 定义组件 +export const component = { + id: 'NoticeBar', + name: '公告栏', + icon: 'ep:bell', + property: { + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/xinjian.png', + contents: [ + { + text: '', + url: '' + } + ], + backgroundColor: '#fff', + textColor: '#333', + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/NoticeBar/index.vue b/web/src/components/DiyEditor/components/mobile/NoticeBar/index.vue new file mode 100644 index 0000000..fce1afb --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NoticeBar/index.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/NoticeBar/property.vue b/web/src/components/DiyEditor/components/mobile/NoticeBar/property.vue new file mode 100644 index 0000000..99d04b0 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/NoticeBar/property.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PageConfig/config.ts b/web/src/components/DiyEditor/components/mobile/PageConfig/config.ts new file mode 100644 index 0000000..f8e45e4 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PageConfig/config.ts @@ -0,0 +1,23 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 页面设置属性 */ +export interface PageConfigProperty { + // 页面描述 + description: string + // 页面背景颜色 + backgroundColor: string + // 页面背景图片 + backgroundImage: string +} + +// 定义页面组件 +export const component = { + id: 'PageConfig', + name: '页面设置', + icon: 'ep:document', + property: { + description: '', + backgroundColor: '#f5f5f5', + backgroundImage: '' + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/PageConfig/property.vue b/web/src/components/DiyEditor/components/mobile/PageConfig/property.vue new file mode 100644 index 0000000..d8f51d2 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PageConfig/property.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/Popover/config.ts b/web/src/components/DiyEditor/components/mobile/Popover/config.ts new file mode 100644 index 0000000..e814090 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Popover/config.ts @@ -0,0 +1,26 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 弹窗广告属性 */ +export interface PopoverProperty { + list: PopoverItemProperty[] +} + +export interface PopoverItemProperty { + // 图片地址 + imgUrl: string + // 跳转连接 + url: string + // 显示类型:仅显示一次、每次启动都会显示 + showType: 'once' | 'always' +} + +// 定义组件 +export const component = { + id: 'Popover', + name: '弹窗广告', + icon: 'carbon:popup', + position: 'fixed', + property: { + list: [{ showType: 'once' }] + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/Popover/index.vue b/web/src/components/DiyEditor/components/mobile/Popover/index.vue new file mode 100644 index 0000000..347599b --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Popover/index.vue @@ -0,0 +1,38 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/Popover/property.vue b/web/src/components/DiyEditor/components/mobile/Popover/property.vue new file mode 100644 index 0000000..21be46e --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/Popover/property.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/ProductCard/config.ts b/web/src/components/DiyEditor/components/mobile/ProductCard/config.ts new file mode 100644 index 0000000..0a19124 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ProductCard/config.ts @@ -0,0 +1,97 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 商品卡片属性 */ +export interface ProductCardProperty { + // 布局类型:单列大图 | 单列小图 | 双列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: ProductCardFieldProperty + // 商品简介 + introduction: ProductCardFieldProperty + // 商品价格 + price: ProductCardFieldProperty + // 商品市场价 + marketPrice: ProductCardFieldProperty + // 商品销量 + salesCount: ProductCardFieldProperty + // 商品库存 + stock: ProductCardFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 商品编号列表 + spuIds: number[] + // 组件样式 + style: ComponentStyle +} +// 商品字段 +export interface ProductCardFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'ProductCard', + name: '商品卡片', + icon: 'fluent:text-column-two-left-24-filled', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '立即购买', + // todo: @owen 根据主题色配置 + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 6, + borderRadiusBottom: 6, + space: 8, + spuIds: [], + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/ProductCard/index.vue b/web/src/components/DiyEditor/components/mobile/ProductCard/index.vue new file mode 100644 index 0000000..93f6e07 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ProductCard/index.vue @@ -0,0 +1,170 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/ProductCard/property.vue b/web/src/components/DiyEditor/components/mobile/ProductCard/property.vue new file mode 100644 index 0000000..91846e6 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ProductCard/property.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/ProductList/config.ts b/web/src/components/DiyEditor/components/mobile/ProductList/config.ts new file mode 100644 index 0000000..1f16832 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ProductList/config.ts @@ -0,0 +1,64 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 商品栏属性 */ +export interface ProductListProperty { + // 布局类型:双列 | 三列 | 水平滑动 + layoutType: 'twoCol' | 'threeCol' | 'horizSwiper' + // 商品字段 + fields: { + // 商品名称 + name: ProductListFieldProperty + // 商品价格 + price: ProductListFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 商品编号列表 + spuIds: number[] + // 组件样式 + style: ComponentStyle +} +// 商品字段 +export interface ProductListFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'ProductList', + name: '商品栏', + icon: 'fluent:text-column-two-24-filled', + property: { + layoutType: 'twoCol', + fields: { + name: { show: true, color: '#000' }, + price: { show: true, color: '#ff3000' } + }, + badge: { show: false, imgUrl: '' }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + spuIds: [], + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/ProductList/index.vue b/web/src/components/DiyEditor/components/mobile/ProductList/index.vue new file mode 100644 index 0000000..a51fc07 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ProductList/index.vue @@ -0,0 +1,132 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/ProductList/property.vue b/web/src/components/DiyEditor/components/mobile/ProductList/property.vue new file mode 100644 index 0000000..d7a5a7c --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/ProductList/property.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts b/web/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts new file mode 100644 index 0000000..c6270c2 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts @@ -0,0 +1,25 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 营销文章属性 */ +export interface PromotionArticleProperty { + // 文章编号 + id: number + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'PromotionArticle', + name: '营销文章', + icon: 'ph:article-medium', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue b/web/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue new file mode 100644 index 0000000..e003b08 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue @@ -0,0 +1,27 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue b/web/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue new file mode 100644 index 0000000..10c5840 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts b/web/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts new file mode 100644 index 0000000..f4fdf6e --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts @@ -0,0 +1,96 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 拼团属性 */ +export interface PromotionCombinationProperty { + // 布局类型:单列 | 三列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: PromotionCombinationFieldProperty + // 商品简介 + introduction: PromotionCombinationFieldProperty + // 商品价格 + price: PromotionCombinationFieldProperty + // 市场价 + marketPrice: PromotionCombinationFieldProperty + // 商品销量 + salesCount: PromotionCombinationFieldProperty + // 商品库存 + stock: PromotionCombinationFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 拼团活动编号 + activityIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 商品字段 +export interface PromotionCombinationFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'PromotionCombination', + name: '拼团', + icon: 'mdi:account-group', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '去拼团', + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue b/web/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue new file mode 100644 index 0000000..d41bf1c --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue @@ -0,0 +1,201 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue b/web/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue new file mode 100644 index 0000000..b796e6a --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts b/web/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts new file mode 100644 index 0000000..75aa0ff --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts @@ -0,0 +1,96 @@ +import {ComponentStyle, DiyComponent} from '@/components/DiyEditor/util' + +/** 积分商城属性 */ +export interface PromotionPointProperty { + // 布局类型:单列 | 三列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: PromotionPointFieldProperty + // 商品简介 + introduction: PromotionPointFieldProperty + // 商品价格 + price: PromotionPointFieldProperty + // 市场价 + marketPrice: PromotionPointFieldProperty + // 商品销量 + salesCount: PromotionPointFieldProperty + // 商品库存 + stock: PromotionPointFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 秒杀活动编号 + activityIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 商品字段 +export interface PromotionPointFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'PromotionPoint', + name: '积分商城', + icon: 'ep:present', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '立即兑换', + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue b/web/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue new file mode 100644 index 0000000..4acd93f --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue @@ -0,0 +1,202 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue b/web/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue new file mode 100644 index 0000000..ea20776 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts b/web/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts new file mode 100644 index 0000000..022be92 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts @@ -0,0 +1,96 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 秒杀属性 */ +export interface PromotionSeckillProperty { + // 布局类型:单列 | 三列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: PromotionSeckillFieldProperty + // 商品简介 + introduction: PromotionSeckillFieldProperty + // 商品价格 + price: PromotionSeckillFieldProperty + // 市场价 + marketPrice: PromotionSeckillFieldProperty + // 商品销量 + salesCount: PromotionSeckillFieldProperty + // 商品库存 + stock: PromotionSeckillFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 秒杀活动编号 + activityIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 商品字段 +export interface PromotionSeckillFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'PromotionSeckill', + name: '秒杀', + icon: 'mdi:calendar-time', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '立即秒杀', + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue b/web/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue new file mode 100644 index 0000000..3d34a3d --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue @@ -0,0 +1,201 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue b/web/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue new file mode 100644 index 0000000..594c10b --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/SearchBar/config.ts b/web/src/components/DiyEditor/components/mobile/SearchBar/config.ts new file mode 100644 index 0000000..ef47b27 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/SearchBar/config.ts @@ -0,0 +1,43 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 搜索框属性 */ +export interface SearchProperty { + height: number // 搜索栏高度 + showScan: boolean // 显示扫一扫 + borderRadius: number // 框体样式 + placeholder: string // 占位文字 + placeholderPosition: PlaceholderPosition // 占位文字位置 + backgroundColor: string // 框体颜色 + textColor: string // 字体颜色 + hotKeywords: string[] // 热词 + style: ComponentStyle +} + +// 文字位置 +export type PlaceholderPosition = 'left' | 'center' + +// 定义组件 +export const component = { + id: 'SearchBar', + name: '搜索框', + icon: 'ep:search', + property: { + height: 28, + showScan: false, + borderRadius: 0, + placeholder: '搜索商品', + placeholderPosition: 'left', + backgroundColor: 'rgb(238, 238, 238)', + textColor: 'rgb(150, 151, 153)', + hotKeywords: [], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8, + paddingTop: 8, + paddingRight: 8, + paddingBottom: 8, + paddingLeft: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/SearchBar/index.vue b/web/src/components/DiyEditor/components/mobile/SearchBar/index.vue new file mode 100644 index 0000000..9de261a --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/SearchBar/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/SearchBar/property.vue b/web/src/components/DiyEditor/components/mobile/SearchBar/property.vue new file mode 100644 index 0000000..73aeeef --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/SearchBar/property.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/TabBar/config.ts b/web/src/components/DiyEditor/components/mobile/TabBar/config.ts new file mode 100644 index 0000000..88d706f --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/TabBar/config.ts @@ -0,0 +1,97 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 底部导航菜单属性 */ +export interface TabBarProperty { + // 选项列表 + items: TabBarItemProperty[] + // 主题 + theme: string + // 样式 + style: TabBarStyle +} + +// 选项属性 +export interface TabBarItemProperty { + // 标签文字 + text: string + // 链接 + url: string + // 默认图标链接 + iconUrl: string + // 选中的图标链接 + activeIconUrl: string +} + +// 样式 +export interface TabBarStyle { + // 背景类型 + bgType: 'color' | 'img' + // 背景颜色 + bgColor: string + // 图片链接 + bgImg: string + // 默认颜色 + color: string + // 选中的颜色 + activeColor: string +} + +// 定义组件 +export const component = { + id: 'TabBar', + name: '底部导航', + icon: 'fluent:table-bottom-row-16-filled', + property: { + theme: 'red', + style: { + bgType: 'color', + bgColor: '#fff', + color: '#282828', + activeColor: '#fc4141' + }, + items: [ + { + text: '首页', + url: '/pages/index/index', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/1-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/1-002.png' + }, + { + text: '分类', + url: '/pages/index/category?id=3', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/2-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/2-002.png' + }, + { + text: '购物车', + url: '/pages/index/cart', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/3-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/3-002.png' + }, + { + text: '我的', + url: '/pages/index/user', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/4-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/4-002.png' + } + ] + } +} as DiyComponent + +export const THEME_LIST = [ + { id: 'red', name: '中国红', icon: 'icon-park-twotone:theme', color: '#d10019' }, + { id: 'orange', name: '桔橙', icon: 'icon-park-twotone:theme', color: '#f37b1d' }, + { id: 'gold', name: '明黄', icon: 'icon-park-twotone:theme', color: '#fbbd08' }, + { id: 'green', name: '橄榄绿', icon: 'icon-park-twotone:theme', color: '#8dc63f' }, + { id: 'cyan', name: '天青', icon: 'icon-park-twotone:theme', color: '#1cbbb4' }, + { id: 'blue', name: '海蓝', icon: 'icon-park-twotone:theme', color: '#0081ff' }, + { id: 'purple', name: '姹紫', icon: 'icon-park-twotone:theme', color: '#6739b6' }, + { id: 'brightRed', name: '嫣红', icon: 'icon-park-twotone:theme', color: '#e54d42' }, + { id: 'forestGreen', name: '森绿', icon: 'icon-park-twotone:theme', color: '#39b54a' }, + { id: 'mauve', name: '木槿', icon: 'icon-park-twotone:theme', color: '#9c26b0' }, + { id: 'pink', name: '桃粉', icon: 'icon-park-twotone:theme', color: '#e03997' }, + { id: 'brown', name: '棕褐', icon: 'icon-park-twotone:theme', color: '#a5673f' }, + { id: 'grey', name: '玄灰', icon: 'icon-park-twotone:theme', color: '#8799a3' }, + { id: 'gray', name: '草灰', icon: 'icon-park-twotone:theme', color: '#aaaaaa' }, + { id: 'black', name: '墨黑', icon: 'icon-park-twotone:theme', color: '#333333' } +] diff --git a/web/src/components/DiyEditor/components/mobile/TabBar/index.vue b/web/src/components/DiyEditor/components/mobile/TabBar/index.vue new file mode 100644 index 0000000..44ba43c --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/TabBar/index.vue @@ -0,0 +1,66 @@ + + + diff --git a/web/src/components/DiyEditor/components/mobile/TabBar/property.vue b/web/src/components/DiyEditor/components/mobile/TabBar/property.vue new file mode 100644 index 0000000..e435012 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/TabBar/property.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/TitleBar/config.ts b/web/src/components/DiyEditor/components/mobile/TitleBar/config.ts new file mode 100644 index 0000000..4d2a42e --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/TitleBar/config.ts @@ -0,0 +1,73 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 标题栏属性 */ +export interface TitleBarProperty { + // 背景图 + bgImgUrl: string + // 偏移 + marginLeft: number + // 显示位置 + textAlign: 'left' | 'center' + // 主标题 + title: string + // 副标题 + description: string + // 标题大小 + titleSize: number + // 描述大小 + descriptionSize: number + // 标题粗细 + titleWeight: number + // 描述粗细 + descriptionWeight: number + // 标题颜色 + titleColor: string + // 描述颜色 + descriptionColor: string + // 高度 + height: number + // 查看更多 + more: { + // 是否显示查看更多 + show: false + // 样式选择 + type: 'text' | 'icon' | 'all' + // 自定义文字 + text: string + // 链接 + url: string + } + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'TitleBar', + name: '标题栏', + icon: 'material-symbols:line-start', + property: { + title: '主标题', + description: '副标题', + titleSize: 16, + descriptionSize: 12, + titleWeight: 400, + textAlign: 'left', + descriptionWeight: 200, + titleColor: 'rgba(50, 50, 51, 10)', + descriptionColor: 'rgba(150, 151, 153, 10)', + marginLeft: 0, + height: 40, + more: { + //查看更多 + show: false, + type: 'icon', + text: '查看更多', + url: '' + }, + style: { + bgType: 'color', + bgColor: '#fff' + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/TitleBar/index.vue b/web/src/components/DiyEditor/components/mobile/TitleBar/index.vue new file mode 100644 index 0000000..8c77d62 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/TitleBar/index.vue @@ -0,0 +1,75 @@ + + + diff --git a/web/src/components/DiyEditor/components/mobile/TitleBar/property.vue b/web/src/components/DiyEditor/components/mobile/TitleBar/property.vue new file mode 100644 index 0000000..5eebb15 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/TitleBar/property.vue @@ -0,0 +1,139 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserCard/config.ts b/web/src/components/DiyEditor/components/mobile/UserCard/config.ts new file mode 100644 index 0000000..7b33776 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserCard/config.ts @@ -0,0 +1,21 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户卡片属性 */ +export interface UserCardProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserCard', + name: '用户卡片', + icon: 'mdi:user-card-details', + property: { + style: { + bgType: 'color', + bgColor: '', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/UserCard/index.vue b/web/src/components/DiyEditor/components/mobile/UserCard/index.vue new file mode 100644 index 0000000..7d98896 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserCard/index.vue @@ -0,0 +1,29 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserCard/property.vue b/web/src/components/DiyEditor/components/mobile/UserCard/property.vue new file mode 100644 index 0000000..50ecb55 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserCard/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserCoupon/config.ts b/web/src/components/DiyEditor/components/mobile/UserCoupon/config.ts new file mode 100644 index 0000000..92eba9b --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserCoupon/config.ts @@ -0,0 +1,23 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户卡券属性 */ +export interface UserCouponProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserCoupon', + name: '用户卡券', + icon: 'ep:ticket', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/UserCoupon/index.vue b/web/src/components/DiyEditor/components/mobile/UserCoupon/index.vue new file mode 100644 index 0000000..27ad310 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserCoupon/index.vue @@ -0,0 +1,15 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserCoupon/property.vue b/web/src/components/DiyEditor/components/mobile/UserCoupon/property.vue new file mode 100644 index 0000000..221cc90 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserCoupon/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserOrder/config.ts b/web/src/components/DiyEditor/components/mobile/UserOrder/config.ts new file mode 100644 index 0000000..f9c5a6d --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserOrder/config.ts @@ -0,0 +1,23 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户订单属性 */ +export interface UserOrderProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserOrder', + name: '用户订单', + icon: 'ep:list', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/UserOrder/index.vue b/web/src/components/DiyEditor/components/mobile/UserOrder/index.vue new file mode 100644 index 0000000..450ae54 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserOrder/index.vue @@ -0,0 +1,13 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserOrder/property.vue b/web/src/components/DiyEditor/components/mobile/UserOrder/property.vue new file mode 100644 index 0000000..d315db6 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserOrder/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserWallet/config.ts b/web/src/components/DiyEditor/components/mobile/UserWallet/config.ts new file mode 100644 index 0000000..4e0955f --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserWallet/config.ts @@ -0,0 +1,23 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户资产属性 */ +export interface UserWalletProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserWallet', + name: '用户资产', + icon: 'ep:wallet-filled', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/UserWallet/index.vue b/web/src/components/DiyEditor/components/mobile/UserWallet/index.vue new file mode 100644 index 0000000..0efc937 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserWallet/index.vue @@ -0,0 +1,15 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/UserWallet/property.vue b/web/src/components/DiyEditor/components/mobile/UserWallet/property.vue new file mode 100644 index 0000000..e0ac83e --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/UserWallet/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts b/web/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts new file mode 100644 index 0000000..02f0374 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts @@ -0,0 +1,37 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 视频播放属性 */ +export interface VideoPlayerProperty { + // 视频链接 + videoUrl: string + // 封面链接 + posterUrl: string + // 是否自动播放 + autoplay: boolean + // 组件样式 + style: VideoPlayerStyle +} + +// 视频播放样式 +export interface VideoPlayerStyle extends ComponentStyle { + // 视频高度 + height: number +} + +// 定义组件 +export const component = { + id: 'VideoPlayer', + name: '视频播放', + icon: 'ep:video-play', + property: { + videoUrl: '', + posterUrl: '', + autoplay: false, + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8, + height: 300 + } as VideoPlayerStyle + } +} as DiyComponent diff --git a/web/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue b/web/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue new file mode 100644 index 0000000..fa9a914 --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue @@ -0,0 +1,30 @@ + + + + diff --git a/web/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue b/web/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue new file mode 100644 index 0000000..1c3deec --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/web/src/components/DiyEditor/components/mobile/index.ts b/web/src/components/DiyEditor/components/mobile/index.ts new file mode 100644 index 0000000..c0dc67d --- /dev/null +++ b/web/src/components/DiyEditor/components/mobile/index.ts @@ -0,0 +1,61 @@ +/* + * 组件注册 + * + * 组件规范: + * 1. 每个子目录就是一个独立的组件,每个目录包括以下三个文件: + * 2. config.ts:组件配置,必选,用于定义组件、组件默认的属性、定义属性的类型 + * 3. index.vue:组件展示,用于展示组件的渲染效果。可以不提供,如 Page(页面设置),只需要属性配置表单即可 + * 4. property.vue:组件属性表单,用于配置组件,必选, + * + * 注: + * 组件ID以config.ts中配置的id为准,与组件目录的名称无关,但还是建议组件目录的名称与组件ID保持一致 + */ + +// 导入组件界面模块 +const viewModules: Record = import.meta.glob('./*/*.vue') +// 导入配置模块 +const configModules: Record = import.meta.glob('./*/config.ts', { eager: true }) + +// 界面模块 +const components = {} +// 组件配置模块 +const componentConfigs = {} + +// 组件界面的类型 +type ViewType = 'index' | 'property' + +/** + * 注册组件的界面模块 + * + * @param componentId 组件ID + * @param configPath 配置模块的文件路径 + * @param viewType 组件界面的类型 + */ +const registerComponentViewModule = ( + componentId: string, + configPath: string, + viewType: ViewType +) => { + const viewPath = configPath.replace('config.ts', `${viewType}.vue`) + const viewModule = viewModules[viewPath] + if (viewModule) { + // 定义异步组件 + components[componentId] = defineAsyncComponent(viewModule) + } +} + +// 注册 +Object.keys(configModules).forEach((modulePath: string) => { + const component = configModules[modulePath].component + const componentId = component?.id + if (componentId) { + // 注册组件 + componentConfigs[componentId] = component + // 注册预览界面 + registerComponentViewModule(componentId, modulePath, 'index') + // 注册属性配置表单 + registerComponentViewModule(`${componentId}Property`, modulePath, 'property') + } +}) + +export { components, componentConfigs } diff --git a/web/src/components/DiyEditor/index.vue b/web/src/components/DiyEditor/index.vue new file mode 100644 index 0000000..27d3fc1 --- /dev/null +++ b/web/src/components/DiyEditor/index.vue @@ -0,0 +1,599 @@ + diff --git a/web/src/components/Icon/index.ts b/web/src/components/Icon/index.ts new file mode 100644 index 0000000..33d1de3 --- /dev/null +++ b/web/src/components/Icon/index.ts @@ -0,0 +1,4 @@ +import Icon from './src/Icon.vue' +import IconSelect from './src/IconSelect.vue' + +export { Icon, IconSelect } diff --git a/web/src/components/Icon/src/Icon.vue b/web/src/components/Icon/src/Icon.vue new file mode 100644 index 0000000..7e2ec94 --- /dev/null +++ b/web/src/components/Icon/src/Icon.vue @@ -0,0 +1,86 @@ + + + diff --git a/web/src/components/Icon/src/IconSelect.vue b/web/src/components/Icon/src/IconSelect.vue new file mode 100644 index 0000000..76cc6d5 --- /dev/null +++ b/web/src/components/Icon/src/IconSelect.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/web/src/components/Icon/src/data.ts b/web/src/components/Icon/src/data.ts new file mode 100644 index 0000000..2a4ed5a --- /dev/null +++ b/web/src/components/Icon/src/data.ts @@ -0,0 +1,1961 @@ +export const IconJson = { + 'ep:': [ + 'add-location', + 'aim', + 'alarm-clock', + 'apple', + 'arrow-down', + 'arrow-down-bold', + 'arrow-left', + 'arrow-left-bold', + 'arrow-right', + 'arrow-right-bold', + 'arrow-up', + 'arrow-up-bold', + 'avatar', + 'back', + 'baseball', + 'basketball', + 'bell', + 'bell-filled', + 'bicycle', + 'bottom', + 'bottom-left', + 'bottom-right', + 'bowl', + 'box', + 'briefcase', + 'brush', + 'brush-filled', + 'burger', + 'calendar', + 'camera', + 'camera-filled', + 'caret-bottom', + 'caret-left', + 'caret-right', + 'caret-top', + 'cellphone', + 'chat-dot-round', + 'chat-dot-square', + 'chat-line-round', + 'chat-line-square', + 'chat-round', + 'chat-square', + 'check', + 'checked', + 'cherry', + 'chicken', + 'circle-check', + 'circle-check-filled', + 'circle-close', + 'circle-close-filled', + 'circle-plus', + 'circle-plus-filled', + 'clock', + 'close', + 'close-bold', + 'cloudy', + 'coffee', + 'coffee-cup', + 'coin', + 'cold-drink', + 'collection', + 'collection-tag', + 'comment', + 'compass', + 'connection', + 'coordinate', + 'copy-document', + 'cpu', + 'credit-card', + 'crop', + 'd-arrow-left', + 'd-arrow-right', + 'd-caret', + 'data-analysis', + 'data-board', + 'data-line', + 'delete', + 'delete-filled', + 'delete-location', + 'dessert', + 'discount', + 'dish', + 'dish-dot', + 'document', + 'document-add', + 'document-checked', + 'document-copy', + 'document-delete', + 'document-remove', + 'download', + 'drizzling', + 'edit', + 'edit-pen', + 'eleme', + 'eleme-filled', + 'expand', + 'failed', + 'female', + 'files', + 'film', + 'filter', + 'finished', + 'first-aid-kit', + 'flag', + 'fold', + 'folder', + 'folder-add', + 'folder-checked', + 'folder-delete', + 'folder-opened', + 'folder-remove', + 'food', + 'football', + 'fork-spoon', + 'fries', + 'full-screen', + 'goblet', + 'goblet-full', + 'goblet-square', + 'goblet-square-full', + 'goods', + 'goods-filled', + 'grape', + 'grid', + 'guide', + 'headset', + 'help', + 'help-filled', + 'histogram', + 'home-filled', + 'hot-water', + 'house', + 'ice-cream', + 'ice-cream-round', + 'ice-cream-square', + 'ice-drink', + 'ice-tea', + 'info-filled', + 'iphone', + 'key', + 'knife-fork', + 'lightning', + 'link', + 'list', + 'loading', + 'location', + 'location-filled', + 'location-information', + 'lock', + 'lollipop', + 'magic-stick', + 'magnet', + 'male', + 'management', + 'map-location', + 'medal', + 'menu', + 'message', + 'message-box', + 'mic', + 'microphone', + 'milk-tea', + 'minus', + 'money', + 'monitor', + 'moon', + 'moon-night', + 'more', + 'more-filled', + 'mostly-cloudy', + 'mouse', + 'mug', + 'mute', + 'mute-notification', + 'no-smoking', + 'notebook', + 'notification', + 'odometer', + 'office-building', + 'open', + 'operation', + 'opportunity', + 'orange', + 'paperclip', + 'partly-cloudy', + 'pear', + 'phone', + 'phone-filled', + 'picture', + 'picture-filled', + 'picture-rounded', + 'pie-chart', + 'place', + 'platform', + 'plus', + 'pointer', + 'position', + 'postcard', + 'pouring', + 'present', + 'price-tag', + 'printer', + 'promotion', + 'question-filled', + 'rank', + 'reading', + 'reading-lamp', + 'refresh', + 'refresh-left', + 'refresh-right', + 'refrigerator', + 'remove', + 'remove-filled', + 'right', + 'scale-to-original', + 'school', + 'scissor', + 'search', + 'select', + 'sell', + 'semi-select', + 'service', + 'set-up', + 'setting', + 'share', + 'ship', + 'shop', + 'shopping-bag', + 'shopping-cart', + 'shopping-cart-full', + 'smoking', + 'soccer', + 'sold-out', + 'sort', + 'sort-down', + 'sort-up', + 'stamp', + 'star', + 'star-filled', + 'stopwatch', + 'success-filled', + 'sugar', + 'suitcase', + 'sunny', + 'sunrise', + 'sunset', + 'switch', + 'switch-button', + 'takeaway-box', + 'ticket', + 'tickets', + 'timer', + 'toilet-paper', + 'tools', + 'top', + 'top-left', + 'top-right', + 'trend-charts', + 'trophy', + 'turn-off', + 'umbrella', + 'unlock', + 'upload', + 'upload-filled', + 'user', + 'user-filled', + 'van', + 'video-camera', + 'video-camera-filled', + 'video-pause', + 'video-play', + 'view', + 'wallet', + 'wallet-filled', + 'warning', + 'warning-filled', + 'watch', + 'watermelon', + 'wind-power', + 'zoom-in', + 'zoom-out' + ], + 'fa:': [ + '500px', + 'address-book', + 'address-book-o', + 'address-card', + 'address-card-o', + 'adjust', + 'adn', + 'align-center', + 'align-justify', + 'align-left', + 'amazon', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'android', + 'angellist', + 'angle-double-left', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-up', + 'apple', + 'archive', + 'area-chart', + 'arrow-circle-left', + 'arrow-circle-o-left', + 'arrow-circle-o-up', + 'arrow-circle-up', + 'arrow-left', + 'arrow-up', + 'arrows', + 'arrows-alt', + 'arrows-h', + 'arrows-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'audio-description', + 'automobile', + 'backward', + 'balance-scale', + 'ban', + 'bandcamp', + 'bank', + 'bar-chart', + 'barcode', + 'bars', + 'bath', + 'battery', + 'battery-0', + 'battery-1', + 'battery-2', + 'battery-3', + 'bed', + 'beer', + 'behance', + 'behance-square', + 'bell', + 'bell-o', + 'bell-slash', + 'bell-slash-o', + 'bicycle', + 'binoculars', + 'birthday-cake', + 'bitbucket', + 'bitbucket-square', + 'bitcoin', + 'black-tie', + 'blind', + 'bluetooth', + 'bluetooth-b', + 'bold', + 'bolt', + 'bomb', + 'book', + 'bookmark', + 'bookmark-o', + 'braille', + 'briefcase', + 'bug', + 'building', + 'building-o', + 'bullhorn', + 'bullseye', + 'bus', + 'buysellads', + 'cab', + 'calculator', + 'calendar', + 'calendar-check-o', + 'calendar-minus-o', + 'calendar-o', + 'calendar-plus-o', + 'calendar-times-o', + 'camera', + 'camera-retro', + 'caret-down', + 'caret-left', + 'caret-square-o-left', + 'caret-square-o-up', + 'caret-up', + 'cart-arrow-down', + 'cart-plus', + 'cc', + 'cc-amex', + 'cc-diners-club', + 'cc-discover', + 'cc-jcb', + 'cc-mastercard', + 'cc-paypal', + 'cc-stripe', + 'cc-visa', + 'certificate', + 'chain', + 'chain-broken', + 'check', + 'check-circle', + 'check-circle-o', + 'check-square', + 'check-square-o', + 'chevron-circle-left', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-up', + 'child', + 'chrome', + 'circle', + 'circle-o', + 'circle-o-notch', + 'circle-thin', + 'clipboard', + 'clock-o', + 'clone', + 'close', + 'cloud', + 'cloud-download', + 'cloud-upload', + 'cny', + 'code', + 'code-fork', + 'codepen', + 'codiepie', + 'coffee', + 'cog', + 'cogs', + 'columns', + 'comment', + 'comment-o', + 'commenting', + 'commenting-o', + 'comments', + 'comments-o', + 'compass', + 'compress', + 'connectdevelop', + 'contao', + 'copy', + 'copyright', + 'creative-commons', + 'credit-card', + 'credit-card-alt', + 'crop', + 'crosshairs', + 'css3', + 'cube', + 'cubes', + 'cut', + 'cutlery', + 'dashboard', + 'dashcube', + 'database', + 'deaf', + 'dedent', + 'delicious', + 'desktop', + 'deviantart', + 'diamond', + 'digg', + 'dollar', + 'dot-circle-o', + 'download', + 'dribbble', + 'drivers-license', + 'drivers-license-o', + 'dropbox', + 'drupal', + 'edge', + 'edit', + 'eercast', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empire', + 'envelope', + 'envelope-o', + 'envelope-open', + 'envelope-open-o', + 'envelope-square', + 'envira', + 'eraser', + 'etsy', + 'eur', + 'exchange', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expeditedssl', + 'external-link', + 'external-link-square', + 'eye', + 'eye-slash', + 'eyedropper', + 'fa', + 'facebook', + 'facebook-official', + 'facebook-square', + 'fast-backward', + 'fax', + 'feed', + 'female', + 'fighter-jet', + 'file', + 'file-archive-o', + 'file-audio-o', + 'file-code-o', + 'file-excel-o', + 'file-image-o', + 'file-movie-o', + 'file-o', + 'file-pdf-o', + 'file-powerpoint-o', + 'file-text', + 'file-text-o', + 'file-word-o', + 'film', + 'filter', + 'fire', + 'fire-extinguisher', + 'firefox', + 'first-order', + 'flag', + 'flag-checkered', + 'flag-o', + 'flask', + 'flickr', + 'floppy-o', + 'folder', + 'folder-o', + 'folder-open', + 'folder-open-o', + 'font', + 'fonticons', + 'fort-awesome', + 'forumbee', + 'foursquare', + 'free-code-camp', + 'frown-o', + 'futbol-o', + 'gamepad', + 'gavel', + 'gbp', + 'genderless', + 'get-pocket', + 'gg', + 'gg-circle', + 'gift', + 'git', + 'git-square', + 'github', + 'github-alt', + 'github-square', + 'gitlab', + 'gittip', + 'glass', + 'glide', + 'glide-g', + 'globe', + 'google', + 'google-plus', + 'google-plus-circle', + 'google-plus-square', + 'google-wallet', + 'graduation-cap', + 'grav', + 'group', + 'h-square', + 'hacker-news', + 'hand-grab-o', + 'hand-lizard-o', + 'hand-o-left', + 'hand-o-up', + 'hand-paper-o', + 'hand-peace-o', + 'hand-pointer-o', + 'hand-scissors-o', + 'hand-spock-o', + 'handshake-o', + 'hashtag', + 'hdd-o', + 'header', + 'headphones', + 'heart', + 'heart-o', + 'heartbeat', + 'history', + 'home', + 'hospital-o', + 'hourglass', + 'hourglass-1', + 'hourglass-2', + 'hourglass-3', + 'hourglass-o', + 'houzz', + 'html5', + 'i-cursor', + 'id-badge', + 'ils', + 'image', + 'imdb', + 'inbox', + 'indent', + 'industry', + 'info', + 'info-circle', + 'inr', + 'instagram', + 'internet-explorer', + 'intersex', + 'ioxhost', + 'italic', + 'joomla', + 'jsfiddle', + 'key', + 'keyboard-o', + 'krw', + 'language', + 'laptop', + 'lastfm', + 'lastfm-square', + 'leaf', + 'leanpub', + 'lemon-o', + 'level-up', + 'life-bouy', + 'lightbulb-o', + 'line-chart', + 'linkedin', + 'linkedin-square', + 'linode', + 'linux', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'long-arrow-left', + 'long-arrow-up', + 'low-vision', + 'magic', + 'magnet', + 'mail-forward', + 'mail-reply', + 'mail-reply-all', + 'male', + 'map', + 'map-marker', + 'map-o', + 'map-pin', + 'map-signs', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'maxcdn', + 'meanpath', + 'medium', + 'medkit', + 'meetup', + 'meh-o', + 'mercury', + 'microchip', + 'microphone', + 'microphone-slash', + 'minus', + 'minus-circle', + 'minus-square', + 'minus-square-o', + 'mixcloud', + 'mobile', + 'modx', + 'money', + 'moon-o', + 'motorcycle', + 'mouse-pointer', + 'music', + 'neuter', + 'newspaper-o', + 'object-group', + 'object-ungroup', + 'odnoklassniki', + 'odnoklassniki-square', + 'opencart', + 'openid', + 'opera', + 'optin-monster', + 'pagelines', + 'paint-brush', + 'paper-plane', + 'paper-plane-o', + 'paperclip', + 'paragraph', + 'pause', + 'pause-circle', + 'pause-circle-o', + 'paw', + 'paypal', + 'pencil', + 'pencil-square', + 'percent', + 'phone', + 'phone-square', + 'pie-chart', + 'pied-piper', + 'pied-piper-alt', + 'pied-piper-pp', + 'pinterest', + 'pinterest-p', + 'pinterest-square', + 'plane', + 'play', + 'play-circle', + 'play-circle-o', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'plus-square-o', + 'podcast', + 'power-off', + 'print', + 'product-hunt', + 'puzzle-piece', + 'qq', + 'qrcode', + 'question', + 'question-circle', + 'question-circle-o', + 'quora', + 'quote-left', + 'quote-right', + 'ra', + 'random', + 'ravelry', + 'recycle', + 'reddit', + 'reddit-alien', + 'reddit-square', + 'refresh', + 'registered', + 'renren', + 'repeat', + 'retweet', + 'road', + 'rocket', + 'rotate-left', + 'rouble', + 'rss-square', + 'safari', + 'scribd', + 'search', + 'search-minus', + 'search-plus', + 'sellsy', + 'server', + 'share-alt', + 'share-alt-square', + 'share-square', + 'share-square-o', + 'shield', + 'ship', + 'shirtsinbulk', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'sign-in', + 'sign-language', + 'sign-out', + 'signal', + 'simplybuilt', + 'sitemap', + 'skyatlas', + 'skype', + 'slack', + 'sliders', + 'slideshare', + 'smile-o', + 'snapchat', + 'snapchat-ghost', + 'snapchat-square', + 'snowflake-o', + 'sort', + 'sort-alpha-asc', + 'sort-alpha-desc', + 'sort-amount-asc', + 'sort-amount-desc', + 'sort-asc', + 'sort-numeric-asc', + 'sort-numeric-desc', + 'soundcloud', + 'space-shuttle', + 'spinner', + 'spoon', + 'spotify', + 'square', + 'square-o', + 'stack-exchange', + 'stack-overflow', + 'star', + 'star-half', + 'star-half-empty', + 'star-o', + 'steam', + 'steam-square', + 'step-backward', + 'stethoscope', + 'sticky-note', + 'sticky-note-o', + 'stop', + 'stop-circle', + 'stop-circle-o', + 'street-view', + 'strikethrough', + 'stumbleupon', + 'stumbleupon-circle', + 'subscript', + 'subway', + 'suitcase', + 'sun-o', + 'superpowers', + 'superscript', + 'table', + 'tablet', + 'tag', + 'tags', + 'tasks', + 'telegram', + 'television', + 'tencent-weibo', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'themeisle', + 'thermometer', + 'thermometer-0', + 'thermometer-1', + 'thermometer-2', + 'thermometer-3', + 'thumb-tack', + 'thumbs-down', + 'thumbs-o-up', + 'thumbs-up', + 'ticket', + 'times-circle', + 'times-circle-o', + 'times-rectangle', + 'times-rectangle-o', + 'tint', + 'toggle-off', + 'toggle-on', + 'trademark', + 'train', + 'transgender-alt', + 'trash', + 'trash-o', + 'tree', + 'trello', + 'tripadvisor', + 'trophy', + 'truck', + 'try', + 'tty', + 'tumblr', + 'tumblr-square', + 'twitch', + 'twitter', + 'twitter-square', + 'umbrella', + 'underline', + 'universal-access', + 'unlock', + 'unlock-alt', + 'upload', + 'usb', + 'user', + 'user-circle', + 'user-circle-o', + 'user-md', + 'user-o', + 'user-plus', + 'user-secret', + 'user-times', + 'venus', + 'venus-double', + 'venus-mars', + 'viacoin', + 'viadeo', + 'viadeo-square', + 'video-camera', + 'vimeo', + 'vimeo-square', + 'vine', + 'vk', + 'volume-control-phone', + 'volume-down', + 'volume-off', + 'volume-up', + 'wechat', + 'weibo', + 'whatsapp', + 'wheelchair', + 'wheelchair-alt', + 'wifi', + 'wikipedia-w', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'windows', + 'wordpress', + 'wpbeginner', + 'wpexplorer', + 'wpforms', + 'wrench', + 'xing', + 'xing-square', + 'y-combinator', + 'yahoo', + 'yelp', + 'yoast', + 'youtube', + 'youtube-play', + 'youtube-square' + ], + 'fa-solid:': [ + 'abacus', + 'ad', + 'address-book', + 'address-card', + 'adjust', + 'air-freshener', + 'align-center', + 'align-justify', + 'align-left', + 'align-right', + 'allergies', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'angle-double-down', + 'angle-double-left', + 'angle-double-right', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-right', + 'angle-up', + 'angry', + 'ankh', + 'apple-alt', + 'archive', + 'archway', + 'arrow-alt-circle-down', + 'arrow-alt-circle-left', + 'arrow-alt-circle-right', + 'arrow-alt-circle-up', + 'arrow-circle-down', + 'arrow-circle-left', + 'arrow-circle-right', + 'arrow-circle-up', + 'arrow-down', + 'arrow-left', + 'arrow-right', + 'arrow-up', + 'arrows-alt', + 'arrows-alt-h', + 'arrows-alt-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'atlas', + 'atom', + 'audio-description', + 'award', + 'baby', + 'baby-carriage', + 'backspace', + 'backward', + 'bacon', + 'bacteria', + 'bacterium', + 'bahai', + 'balance-scale', + 'balance-scale-left', + 'balance-scale-right', + 'ban', + 'band-aid', + 'barcode', + 'bars', + 'baseball-ball', + 'basketball-ball', + 'bath', + 'battery-empty', + 'battery-full', + 'battery-half', + 'battery-quarter', + 'battery-three-quarters', + 'bed', + 'beer', + 'bell', + 'bell-slash', + 'bezier-curve', + 'bible', + 'bicycle', + 'biking', + 'binoculars', + 'biohazard', + 'birthday-cake', + 'blender', + 'blender-phone', + 'blind', + 'blog', + 'bold', + 'bolt', + 'bomb', + 'bone', + 'bong', + 'book', + 'book-dead', + 'book-medical', + 'book-open', + 'book-reader', + 'bookmark', + 'border-all', + 'border-none', + 'border-style', + 'bowling-ball', + 'box', + 'box-open', + 'box-tissue', + 'boxes', + 'braille', + 'brain', + 'bread-slice', + 'briefcase', + 'briefcase-medical', + 'broadcast-tower', + 'broom', + 'brush', + 'bug', + 'building', + 'bullhorn', + 'bullseye', + 'burn', + 'bus', + 'bus-alt', + 'business-time', + 'calculator', + 'calculator-alt', + 'calendar', + 'calendar-alt', + 'calendar-check', + 'calendar-day', + 'calendar-minus', + 'calendar-plus', + 'calendar-times', + 'calendar-week', + 'camera', + 'camera-retro', + 'campground', + 'candy-cane', + 'cannabis', + 'capsules', + 'car', + 'car-alt', + 'car-battery', + 'car-crash', + 'car-side', + 'caravan', + 'caret-down', + 'caret-left', + 'caret-right', + 'caret-square-down', + 'caret-square-left', + 'caret-square-right', + 'caret-square-up', + 'caret-up', + 'carrot', + 'cart-arrow-down', + 'cart-plus', + 'cash-register', + 'cat', + 'certificate', + 'chair', + 'chalkboard', + 'chalkboard-teacher', + 'charging-station', + 'chart-area', + 'chart-bar', + 'chart-line', + 'chart-pie', + 'check', + 'check-circle', + 'check-double', + 'check-square', + 'cheese', + 'chess', + 'chess-bishop', + 'chess-board', + 'chess-king', + 'chess-knight', + 'chess-pawn', + 'chess-queen', + 'chess-rook', + 'chevron-circle-down', + 'chevron-circle-left', + 'chevron-circle-right', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'child', + 'church', + 'circle', + 'circle-notch', + 'city', + 'clinic-medical', + 'clipboard', + 'clipboard-check', + 'clipboard-list', + 'clock', + 'clone', + 'closed-captioning', + 'cloud', + 'cloud-download-alt', + 'cloud-meatball', + 'cloud-moon', + 'cloud-moon-rain', + 'cloud-rain', + 'cloud-showers-heavy', + 'cloud-sun', + 'cloud-sun-rain', + 'cloud-upload-alt', + 'cocktail', + 'code', + 'code-branch', + 'coffee', + 'cog', + 'cogs', + 'coins', + 'columns', + 'comment', + 'comment-alt', + 'comment-dollar', + 'comment-dots', + 'comment-medical', + 'comment-slash', + 'comments', + 'comments-dollar', + 'compact-disc', + 'compass', + 'compress', + 'compress-alt', + 'compress-arrows-alt', + 'concierge-bell', + 'cookie', + 'cookie-bite', + 'copy', + 'copyright', + 'couch', + 'credit-card', + 'crop', + 'crop-alt', + 'cross', + 'crosshairs', + 'crow', + 'crown', + 'crutch', + 'cube', + 'cubes', + 'cut', + 'database', + 'deaf', + 'democrat', + 'desktop', + 'dharmachakra', + 'diagnoses', + 'dice', + 'dice-d20', + 'dice-d6', + 'dice-five', + 'dice-four', + 'dice-one', + 'dice-six', + 'dice-three', + 'dice-two', + 'digital-tachograph', + 'directions', + 'disease', + 'divide', + 'dizzy', + 'dna', + 'dog', + 'dollar-sign', + 'dolly', + 'dolly-flatbed', + 'donate', + 'door-closed', + 'door-open', + 'dot-circle', + 'dove', + 'download', + 'drafting-compass', + 'dragon', + 'draw-polygon', + 'drum', + 'drum-steelpan', + 'drumstick-bite', + 'dumbbell', + 'dumpster', + 'dumpster-fire', + 'dungeon', + 'edit', + 'egg', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empty-set', + 'envelope', + 'envelope-open', + 'envelope-open-text', + 'envelope-square', + 'equals', + 'eraser', + 'ethernet', + 'euro-sign', + 'exchange-alt', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expand-alt', + 'expand-arrows-alt', + 'external-link-alt', + 'external-link-square-alt', + 'eye', + 'eye-dropper', + 'eye-slash', + 'fan', + 'fast-backward', + 'fast-forward', + 'faucet', + 'fax', + 'feather', + 'feather-alt', + 'female', + 'fighter-jet', + 'file', + 'file-alt', + 'file-archive', + 'file-audio', + 'file-code', + 'file-contract', + 'file-csv', + 'file-download', + 'file-excel', + 'file-export', + 'file-image', + 'file-import', + 'file-invoice', + 'file-invoice-dollar', + 'file-medical', + 'file-medical-alt', + 'file-pdf', + 'file-powerpoint', + 'file-prescription', + 'file-signature', + 'file-upload', + 'file-video', + 'file-word', + 'fill', + 'fill-drip', + 'film', + 'filter', + 'fingerprint', + 'fire', + 'fire-alt', + 'fire-extinguisher', + 'first-aid', + 'fish', + 'fist-raised', + 'flag', + 'flag-checkered', + 'flag-usa', + 'flask', + 'flushed', + 'folder', + 'folder-minus', + 'folder-open', + 'folder-plus', + 'font', + 'football-ball', + 'forward', + 'frog', + 'frown', + 'frown-open', + 'function', + 'funnel-dollar', + 'futbol', + 'gamepad', + 'gas-pump', + 'gavel', + 'gem', + 'genderless', + 'ghost', + 'gift', + 'gifts', + 'glass-cheers', + 'glass-martini', + 'glass-martini-alt', + 'glass-whiskey', + 'glasses', + 'globe', + 'globe-africa', + 'globe-americas', + 'globe-asia', + 'globe-europe', + 'golf-ball', + 'gopuram', + 'graduation-cap', + 'greater-than', + 'greater-than-equal', + 'grimace', + 'grin', + 'grin-alt', + 'grin-beam', + 'grin-beam-sweat', + 'grin-hearts', + 'grin-squint', + 'grin-squint-tears', + 'grin-stars', + 'grin-tears', + 'grin-tongue', + 'grin-tongue-squint', + 'grin-tongue-wink', + 'grin-wink', + 'grip-horizontal', + 'grip-lines', + 'grip-lines-vertical', + 'grip-vertical', + 'guitar', + 'h-square', + 'hamburger', + 'hammer', + 'hamsa', + 'hand-holding', + 'hand-holding-heart', + 'hand-holding-medical', + 'hand-holding-usd', + 'hand-holding-water', + 'hand-lizard', + 'hand-middle-finger', + 'hand-paper', + 'hand-peace', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-pointer', + 'hand-rock', + 'hand-scissors', + 'hand-sparkles', + 'hand-spock', + 'hands', + 'hands-helping', + 'hands-wash', + 'handshake', + 'handshake-alt-slash', + 'handshake-slash', + 'hanukiah', + 'hard-hat', + 'hashtag', + 'hat-cowboy', + 'hat-cowboy-side', + 'hat-wizard', + 'hdd', + 'head-side-cough', + 'head-side-cough-slash', + 'head-side-mask', + 'head-side-virus', + 'heading', + 'headphones', + 'headphones-alt', + 'headset', + 'heart', + 'heart-broken', + 'heartbeat', + 'helicopter', + 'highlighter', + 'hiking', + 'hippo', + 'history', + 'hockey-puck', + 'holly-berry', + 'home', + 'horse', + 'horse-head', + 'hospital', + 'hospital-alt', + 'hospital-symbol', + 'hospital-user', + 'hot-tub', + 'hotdog', + 'hotel', + 'hourglass', + 'hourglass-end', + 'hourglass-half', + 'hourglass-start', + 'house-damage', + 'house-user', + 'hryvnia', + 'i-cursor', + 'ice-cream', + 'icicles', + 'icons', + 'id-badge', + 'id-card', + 'id-card-alt', + 'igloo', + 'image', + 'images', + 'inbox', + 'indent', + 'industry', + 'infinity', + 'info', + 'info-circle', + 'integral', + 'intersection', + 'italic', + 'jedi', + 'joint', + 'journal-whills', + 'kaaba', + 'key', + 'keyboard', + 'khanda', + 'kiss', + 'kiss-beam', + 'kiss-wink-heart', + 'kiwi-bird', + 'lambda', + 'landmark', + 'language', + 'laptop', + 'laptop-code', + 'laptop-house', + 'laptop-medical', + 'laugh', + 'laugh-beam', + 'laugh-squint', + 'laugh-wink', + 'layer-group', + 'leaf', + 'lemon', + 'less-than', + 'less-than-equal', + 'level-down-alt', + 'level-up-alt', + 'life-ring', + 'lightbulb', + 'link', + 'lira-sign', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'lock-open', + 'long-arrow-alt-down', + 'long-arrow-alt-left', + 'long-arrow-alt-right', + 'long-arrow-alt-up', + 'low-vision', + 'luggage-cart', + 'lungs', + 'lungs-virus', + 'magic', + 'magnet', + 'mail-bulk', + 'male', + 'map', + 'map-marked', + 'map-marked-alt', + 'map-marker', + 'map-marker-alt', + 'map-pin', + 'map-signs', + 'marker', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'mask', + 'medal', + 'medkit', + 'meh', + 'meh-blank', + 'meh-rolling-eyes', + 'memory', + 'menorah', + 'mercury', + 'meteor', + 'microchip', + 'microphone', + 'microphone-alt', + 'microphone-alt-slash', + 'microphone-slash', + 'microscope', + 'minus', + 'minus-circle', + 'minus-square', + 'mitten', + 'mobile', + 'mobile-alt', + 'money-bill', + 'money-bill-alt', + 'money-bill-wave', + 'money-bill-wave-alt', + 'money-check', + 'money-check-alt', + 'monument', + 'moon', + 'mortar-pestle', + 'mosque', + 'motorcycle', + 'mountain', + 'mouse', + 'mouse-pointer', + 'mug-hot', + 'music', + 'network-wired', + 'neuter', + 'newspaper', + 'not-equal', + 'notes-medical', + 'object-group', + 'object-ungroup', + 'oil-can', + 'om', + 'omega', + 'otter', + 'outdent', + 'pager', + 'paint-brush', + 'paint-roller', + 'palette', + 'pallet', + 'paper-plane', + 'paperclip', + 'parachute-box', + 'paragraph', + 'parking', + 'passport', + 'pastafarianism', + 'paste', + 'pause', + 'pause-circle', + 'paw', + 'peace', + 'pen', + 'pen-alt', + 'pen-fancy', + 'pen-nib', + 'pen-square', + 'pencil-alt', + 'pencil-ruler', + 'people-arrows', + 'people-carry', + 'pepper-hot', + 'percent', + 'percentage', + 'person-booth', + 'phone', + 'phone-alt', + 'phone-slash', + 'phone-square', + 'phone-square-alt', + 'phone-volume', + 'photo-video', + 'pi', + 'piggy-bank', + 'pills', + 'pizza-slice', + 'place-of-worship', + 'plane', + 'plane-arrival', + 'plane-departure', + 'plane-slash', + 'play', + 'play-circle', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'podcast', + 'poll', + 'poll-h', + 'poo', + 'poo-storm', + 'poop', + 'portrait', + 'pound-sign', + 'power-off', + 'pray', + 'praying-hands', + 'prescription', + 'prescription-bottle', + 'prescription-bottle-alt', + 'print', + 'procedures', + 'project-diagram', + 'pump-medical', + 'pump-soap', + 'puzzle-piece', + 'qrcode', + 'question', + 'question-circle', + 'quidditch', + 'quote-left', + 'quote-right', + 'quran', + 'radiation', + 'radiation-alt', + 'rainbow', + 'random', + 'receipt', + 'record-vinyl', + 'recycle', + 'redo', + 'redo-alt', + 'registered', + 'remove-format', + 'reply', + 'reply-all', + 'republican', + 'restroom', + 'retweet', + 'ribbon', + 'ring', + 'road', + 'robot', + 'rocket', + 'route', + 'rss', + 'rss-square', + 'ruble-sign', + 'ruler', + 'ruler-combined', + 'ruler-horizontal', + 'ruler-vertical', + 'running', + 'rupee-sign', + 'sad-cry', + 'sad-tear', + 'satellite', + 'satellite-dish', + 'save', + 'school', + 'screwdriver', + 'scroll', + 'sd-card', + 'search', + 'search-dollar', + 'search-location', + 'search-minus', + 'search-plus', + 'seedling', + 'server', + 'shapes', + 'share', + 'share-alt', + 'share-alt-square', + 'share-square', + 'shekel-sign', + 'shield-alt', + 'shield-virus', + 'ship', + 'shipping-fast', + 'shoe-prints', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'shuttle-van', + 'sigma', + 'sign', + 'sign-in-alt', + 'sign-language', + 'sign-out-alt', + 'signal', + 'signal-alt', + 'signal-alt-slash', + 'signal-slash', + 'signature', + 'sim-card', + 'sink', + 'sitemap', + 'skating', + 'skiing', + 'skiing-nordic', + 'skull', + 'skull-crossbones', + 'slash', + 'sleigh', + 'sliders-h', + 'smile', + 'smile-beam', + 'smile-wink', + 'smog', + 'smoking', + 'smoking-ban', + 'sms', + 'snowboarding', + 'snowflake', + 'snowman', + 'snowplow', + 'soap', + 'socks', + 'solar-panel', + 'sort', + 'sort-alpha-down', + 'sort-alpha-down-alt', + 'sort-alpha-up', + 'sort-alpha-up-alt', + 'sort-amount-down', + 'sort-amount-down-alt', + 'sort-amount-up', + 'sort-amount-up-alt', + 'sort-down', + 'sort-numeric-down', + 'sort-numeric-down-alt', + 'sort-numeric-up', + 'sort-numeric-up-alt', + 'sort-up', + 'spa', + 'space-shuttle', + 'spell-check', + 'spider', + 'spinner', + 'splotch', + 'spray-can', + 'square', + 'square-full', + 'square-root', + 'square-root-alt', + 'stamp', + 'star', + 'star-and-crescent', + 'star-half', + 'star-half-alt', + 'star-of-david', + 'star-of-life', + 'step-backward', + 'step-forward', + 'stethoscope', + 'sticky-note', + 'stop', + 'stop-circle', + 'stopwatch', + 'stopwatch-20', + 'store', + 'store-alt', + 'store-alt-slash', + 'store-slash', + 'stream', + 'street-view', + 'strikethrough', + 'stroopwafel', + 'subscript', + 'subway', + 'suitcase', + 'suitcase-rolling', + 'sun', + 'superscript', + 'surprise', + 'swatchbook', + 'swimmer', + 'swimming-pool', + 'synagogue', + 'sync', + 'sync-alt', + 'syringe', + 'table', + 'table-tennis', + 'tablet', + 'tablet-alt', + 'tablets', + 'tachometer-alt', + 'tag', + 'tags', + 'tally', + 'tape', + 'tasks', + 'taxi', + 'teeth', + 'teeth-open', + 'temperature-high', + 'temperature-low', + 'tenge', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'theater-masks', + 'thermometer', + 'thermometer-empty', + 'thermometer-full', + 'thermometer-half', + 'thermometer-quarter', + 'thermometer-three-quarters', + 'theta', + 'thumbs-down', + 'thumbs-up', + 'thumbtack', + 'ticket-alt', + 'tilde', + 'times', + 'times-circle', + 'tint', + 'tint-slash', + 'tired', + 'toggle-off', + 'toggle-on', + 'toilet', + 'toilet-paper', + 'toilet-paper-slash', + 'toolbox', + 'tools', + 'tooth', + 'torah', + 'torii-gate', + 'tractor', + 'trademark', + 'traffic-light', + 'trailer', + 'train', + 'tram', + 'transgender', + 'transgender-alt', + 'trash', + 'trash-alt', + 'trash-restore', + 'trash-restore-alt', + 'tree', + 'trophy', + 'truck', + 'truck-loading', + 'truck-monster', + 'truck-moving', + 'truck-pickup', + 'tshirt', + 'tty', + 'tv', + 'umbrella', + 'umbrella-beach', + 'underline', + 'undo', + 'undo-alt', + 'union', + 'universal-access', + 'university', + 'unlink', + 'unlock', + 'unlock-alt', + 'upload', + 'user', + 'user-alt', + 'user-alt-slash', + 'user-astronaut', + 'user-check', + 'user-circle', + 'user-clock', + 'user-cog', + 'user-edit', + 'user-friends', + 'user-graduate', + 'user-injured', + 'user-lock', + 'user-md', + 'user-minus', + 'user-ninja', + 'user-nurse', + 'user-plus', + 'user-secret', + 'user-shield', + 'user-slash', + 'user-tag', + 'user-tie', + 'user-times', + 'users', + 'users-cog', + 'users-slash', + 'utensil-spoon', + 'utensils', + 'value-absolute', + 'vector-square', + 'venus', + 'venus-double', + 'venus-mars', + 'vest', + 'vest-patches', + 'vial', + 'vials', + 'video', + 'video-slash', + 'vihara', + 'virus', + 'virus-slash', + 'viruses', + 'voicemail', + 'volleyball-ball', + 'volume', + 'volume-down', + 'volume-mute', + 'volume-off', + 'volume-slash', + 'volume-up', + 'vote-yea', + 'vr-cardboard', + 'walking', + 'wallet', + 'warehouse', + 'water', + 'wave-square', + 'weight', + 'weight-hanging', + 'wheelchair', + 'wifi', + 'wifi-slash', + 'wind', + 'window-close', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'wine-bottle', + 'wine-glass', + 'wine-glass-alt', + 'won-sign', + 'wrench', + 'x-ray', + 'yen-sign', + 'yin-yang' + ] +} diff --git a/web/src/components/ImageViewer/index.ts b/web/src/components/ImageViewer/index.ts new file mode 100644 index 0000000..35764d6 --- /dev/null +++ b/web/src/components/ImageViewer/index.ts @@ -0,0 +1,33 @@ +import ImageViewer from './src/ImageViewer.vue' +import { isClient } from '@/utils/is' +import { createVNode, render, VNode } from 'vue' +import { ImageViewerProps } from './src/types' + +let instance: Nullable = null + +export function createImageViewer(options: ImageViewerProps) { + if (!isClient) return + const { + urlList, + initialIndex = 0, + infinite = true, + hideOnClickModal = false, + teleported = false, + zIndex = 2000, + show = true + } = options + + const propsData: Partial = {} + const container = document.createElement('div') + propsData.urlList = urlList + propsData.initialIndex = initialIndex + propsData.infinite = infinite + propsData.hideOnClickModal = hideOnClickModal + propsData.teleported = teleported + propsData.zIndex = zIndex + propsData.show = show + + document.body.appendChild(container) + instance = createVNode(ImageViewer, propsData) + render(instance, container) +} diff --git a/web/src/components/ImageViewer/src/ImageViewer.vue b/web/src/components/ImageViewer/src/ImageViewer.vue new file mode 100644 index 0000000..c84d06b --- /dev/null +++ b/web/src/components/ImageViewer/src/ImageViewer.vue @@ -0,0 +1,35 @@ + + + diff --git a/web/src/components/ImageViewer/src/types.ts b/web/src/components/ImageViewer/src/types.ts new file mode 100644 index 0000000..2fff4c0 --- /dev/null +++ b/web/src/components/ImageViewer/src/types.ts @@ -0,0 +1,9 @@ +export interface ImageViewerProps { + urlList?: string[] + zIndex?: number + initialIndex?: number + infinite?: boolean + hideOnClickModal?: boolean + teleported?: boolean + show?: boolean +} diff --git a/web/src/components/Infotip/index.ts b/web/src/components/Infotip/index.ts new file mode 100644 index 0000000..413fa5f --- /dev/null +++ b/web/src/components/Infotip/index.ts @@ -0,0 +1,3 @@ +import Infotip from './src/Infotip.vue' + +export { Infotip } diff --git a/web/src/components/Infotip/src/Infotip.vue b/web/src/components/Infotip/src/Infotip.vue new file mode 100644 index 0000000..0afd692 --- /dev/null +++ b/web/src/components/Infotip/src/Infotip.vue @@ -0,0 +1,54 @@ + + + diff --git a/web/src/components/InputPassword/index.ts b/web/src/components/InputPassword/index.ts new file mode 100644 index 0000000..1dcc38e --- /dev/null +++ b/web/src/components/InputPassword/index.ts @@ -0,0 +1,3 @@ +import InputPassword from './src/InputPassword.vue' + +export { InputPassword } diff --git a/web/src/components/InputPassword/src/InputPassword.vue b/web/src/components/InputPassword/src/InputPassword.vue new file mode 100644 index 0000000..b8c93e7 --- /dev/null +++ b/web/src/components/InputPassword/src/InputPassword.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/web/src/components/InputWithColor/index.vue b/web/src/components/InputWithColor/index.vue new file mode 100644 index 0000000..1311a55 --- /dev/null +++ b/web/src/components/InputWithColor/index.vue @@ -0,0 +1,35 @@ + + + + diff --git a/web/src/components/LogicFlow/editPanel.vue b/web/src/components/LogicFlow/editPanel.vue new file mode 100644 index 0000000..e69de29 diff --git a/web/src/components/LogicFlow/previewPanel.vue b/web/src/components/LogicFlow/previewPanel.vue new file mode 100644 index 0000000..886a1aa --- /dev/null +++ b/web/src/components/LogicFlow/previewPanel.vue @@ -0,0 +1,46 @@ + + diff --git a/web/src/components/MagicCubeEditor/index.vue b/web/src/components/MagicCubeEditor/index.vue new file mode 100644 index 0000000..6af4ca4 --- /dev/null +++ b/web/src/components/MagicCubeEditor/index.vue @@ -0,0 +1,270 @@ + + + diff --git a/web/src/components/MagicCubeEditor/util.ts b/web/src/components/MagicCubeEditor/util.ts new file mode 100644 index 0000000..e7c6465 --- /dev/null +++ b/web/src/components/MagicCubeEditor/util.ts @@ -0,0 +1,72 @@ +// 坐标点 +export interface Point { + x: number + y: number +} + +// 矩形 +export interface Rect { + // 左上角 X 轴坐标 + left: number + // 左上角 Y 轴坐标 + top: number + // 右下角 X 轴坐标 + right: number + // 右下角 Y 轴坐标 + bottom: number + // 矩形宽度 + width: number + // 矩形高度 + height: number +} + +/** + * 判断两个矩形是否重叠 + * @param a 矩形 A + * @param b 矩形 B + */ +export const isOverlap = (a: Rect, b: Rect): boolean => { + return ( + a.left < b.left + b.width && + a.left + a.width > b.left && + a.top < b.top + b.height && + a.height + a.top > b.top + ) +} +/** + * 检查坐标点是否在矩形内 + * @param hotArea 矩形 + * @param point 坐标 + */ +export const isContains = (hotArea: Rect, point: Point): boolean => { + return ( + point.x >= hotArea.left && + point.x < hotArea.right && + point.y >= hotArea.top && + point.y < hotArea.bottom + ) +} + +/** + * 在两个坐标点中间,创建一个矩形 + * + * 存在以下情况: + * 1. 两个坐标点是同一个位置,只占一个位置的正方形,宽高都为 1 + * 2. X 轴坐标相同,只占一行的矩形,高度为 1 + * 3. Y 轴坐标相同,只占一列的矩形,宽度为 1 + * 4. 多行多列的矩形 + * + * @param a 坐标点一 + * @param b 坐标点二 + */ +export const createRect = (a: Point, b: Point): Rect => { + // 计算矩形的范围 + const [left, left2] = [a.x, b.x].sort() + const [top, top2] = [a.y, b.y].sort() + const right = left2 + 1 + const bottom = top2 + 1 + const height = bottom - top + const width = right - left + + return { left, right, top, bottom, height, width } +} diff --git a/web/src/components/MarkdownView/index.vue b/web/src/components/MarkdownView/index.vue new file mode 100644 index 0000000..74764d5 --- /dev/null +++ b/web/src/components/MarkdownView/index.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/web/src/components/OperateLogV2/index.ts b/web/src/components/OperateLogV2/index.ts new file mode 100644 index 0000000..f69c222 --- /dev/null +++ b/web/src/components/OperateLogV2/index.ts @@ -0,0 +1,3 @@ +import OperateLogV2 from './src/OperateLogV2.vue' + +export { OperateLogV2 } diff --git a/web/src/components/OperateLogV2/src/OperateLogV2.vue b/web/src/components/OperateLogV2/src/OperateLogV2.vue new file mode 100644 index 0000000..6acc1cc --- /dev/null +++ b/web/src/components/OperateLogV2/src/OperateLogV2.vue @@ -0,0 +1,105 @@ + + + + + + diff --git a/web/src/components/Pagination/index.vue b/web/src/components/Pagination/index.vue new file mode 100644 index 0000000..6bb00b3 --- /dev/null +++ b/web/src/components/Pagination/index.vue @@ -0,0 +1,87 @@ + + + diff --git a/web/src/components/Qrcode/index.ts b/web/src/components/Qrcode/index.ts new file mode 100644 index 0000000..ce46161 --- /dev/null +++ b/web/src/components/Qrcode/index.ts @@ -0,0 +1,3 @@ +import Qrcode from './src/Qrcode.vue' + +export { Qrcode } diff --git a/web/src/components/Qrcode/src/Qrcode.vue b/web/src/components/Qrcode/src/Qrcode.vue new file mode 100644 index 0000000..f0ce7b7 --- /dev/null +++ b/web/src/components/Qrcode/src/Qrcode.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/web/src/components/RouterSearch/index.vue b/web/src/components/RouterSearch/index.vue new file mode 100644 index 0000000..42a4174 --- /dev/null +++ b/web/src/components/RouterSearch/index.vue @@ -0,0 +1,119 @@ + + + diff --git a/web/src/components/Search/index.ts b/web/src/components/Search/index.ts new file mode 100644 index 0000000..fcc6f16 --- /dev/null +++ b/web/src/components/Search/index.ts @@ -0,0 +1,3 @@ +import Search from './src/Search.vue' + +export { Search } diff --git a/web/src/components/Search/src/Search.vue b/web/src/components/Search/src/Search.vue new file mode 100644 index 0000000..3218a63 --- /dev/null +++ b/web/src/components/Search/src/Search.vue @@ -0,0 +1,157 @@ + + + diff --git a/web/src/components/ShortcutDateRangePicker/index.vue b/web/src/components/ShortcutDateRangePicker/index.vue new file mode 100644 index 0000000..78c5130 --- /dev/null +++ b/web/src/components/ShortcutDateRangePicker/index.vue @@ -0,0 +1,84 @@ + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue b/web/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue new file mode 100644 index 0000000..439ea98 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue b/web/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue new file mode 100644 index 0000000..dddeda6 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue @@ -0,0 +1,150 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue b/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue new file mode 100644 index 0000000..7823c2f --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue @@ -0,0 +1,208 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue b/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue new file mode 100644 index 0000000..a8a0ac6 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue b/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue new file mode 100644 index 0000000..26cd43f --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue @@ -0,0 +1,47 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/consts.ts b/web/src/components/SimpleProcessDesignerV2/src/consts.ts new file mode 100644 index 0000000..8cdc996 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/consts.ts @@ -0,0 +1,900 @@ +// @ts-ignore +import { DictDataVO } from '@/api/system/dict/types' +import { TaskStatusEnum } from '@/api/bpm/task' +/** + * 节点类型 + */ +export enum NodeType { + /** + * 结束节点 + */ + END_EVENT_NODE = 1, + /** + * 发起人节点 + */ + START_USER_NODE = 10, + /** + * 审批人节点 + */ + USER_TASK_NODE = 11, + + /** + * 抄送人节点 + */ + COPY_TASK_NODE = 12, + + /** + * 办理人节点 + */ + TRANSACTOR_NODE = 13, + + /** + * 延迟器节点 + */ + DELAY_TIMER_NODE = 14, + + /** + * 触发器节点 + */ + TRIGGER_NODE = 15, + + /** + * 子流程节点 + */ + CHILD_PROCESS_NODE = 20, + + /** + * 条件节点 + */ + CONDITION_NODE = 50, + /** + * 条件分支节点 (对应排他网关) + */ + CONDITION_BRANCH_NODE = 51, + /** + * 并行分支节点 (对应并行网关) + */ + PARALLEL_BRANCH_NODE = 52, + + /** + * 包容分支节点 (对应包容网关) + */ + INCLUSIVE_BRANCH_NODE = 53, + /** + * 路由分支节点 + */ + ROUTER_BRANCH_NODE = 54 +} + +export enum NodeId { + /** + * 发起人节点 Id + */ + START_USER_NODE_ID = 'StartUserNode', + + /** + * 发起人节点 Id + */ + END_EVENT_NODE_ID = 'EndEvent' +} + +/** + * 节点结构定义 + */ +export interface SimpleFlowNode { + id: string + type: NodeType + name: string + showText?: string + // 孩子节点 + childNode?: SimpleFlowNode + // 条件节点 + conditionNodes?: SimpleFlowNode[] + // 审批类型 + approveType?: ApproveType + // 候选人策略 + candidateStrategy?: number + // 候选人参数 + candidateParam?: string + // 多人审批方式 + approveMethod?: ApproveMethodType + //通过比例 + approveRatio?: number + // 审批按钮设置 + buttonsSetting?: any[] + // 表单权限 + fieldsPermission?: Array> + // 审批任务超时处理 + timeoutHandler?: TimeoutHandler + // 审批任务拒绝处理 + rejectHandler?: RejectHandler + // 审批人为空的处理 + assignEmptyHandler?: AssignEmptyHandler + // 审批节点的审批人与发起人相同时,对应的处理类型 + assignStartUserHandlerType?: number + // 创建任务监听器 + taskCreateListener?: ListenerHandler + // 创建任务监听器 + taskAssignListener?: ListenerHandler + // 创建任务监听器 + taskCompleteListener?: ListenerHandler + // 条件设置 + conditionSetting?: ConditionSetting + // 活动的状态,用于前端节点状态展示 + activityStatus?: TaskStatusEnum + // 延迟设置 + delaySetting?: DelaySetting + // 路由分支 + routerGroups?: RouterSetting[] + defaultFlowId?: string + // 签名 + signEnable?: boolean + // 审批意见 + reasonRequire?: boolean + // 触发器设置 + triggerSetting?: TriggerSetting + // 子流程 + childProcessSetting?: ChildProcessSetting +} +// 候选人策略枚举 ( 用于审批节点。抄送节点 ) +export enum CandidateStrategy { + /** + * 指定角色 + */ + ROLE = 10, + /** + * 部门成员 + */ + DEPT_MEMBER = 20, + /** + * 部门的负责人 + */ + DEPT_LEADER = 21, + /** + * 连续多级部门的负责人 + */ + MULTI_LEVEL_DEPT_LEADER = 23, + /** + * 指定岗位 + */ + POST = 22, + /** + * 指定用户 + */ + USER = 30, + /** + * 审批人自选 + */ + APPROVE_USER_SELECT = 34, + /** + * 发起人自选 + */ + START_USER_SELECT = 35, + /** + * 发起人自己 + */ + START_USER = 36, + /** + * 发起人部门负责人 + */ + START_USER_DEPT_LEADER = 37, + /** + * 发起人连续多级部门的负责人 + */ + START_USER_MULTI_LEVEL_DEPT_LEADER = 38, + /** + * 指定用户组 + */ + USER_GROUP = 40, + /** + * 表单内用户字段 + */ + FORM_USER = 50, + /** + * 表单内部门负责人 + */ + FORM_DEPT_LEADER = 51, + /** + * 流程表达式 + */ + EXPRESSION = 60 +} + +// 多人审批方式类型枚举 ( 用于审批节点 ) +export enum ApproveMethodType { + /** + * 随机挑选一人审批 + */ + RANDOM_SELECT_ONE_APPROVE = 1, + + /** + * 多人会签(按通过比例) + */ + APPROVE_BY_RATIO = 2, + + /** + * 多人或签(通过只需一人,拒绝只需一人) + */ + ANY_APPROVE = 3, + /** + * 多人依次审批 + */ + SEQUENTIAL_APPROVE = 4 +} + +/** + * 审批拒绝结构定义 + */ +export type RejectHandler = { + // 审批拒绝类型 + type: RejectHandlerType + // 退回节点 Id + returnNodeId?: string +} + +/** + * 审批超时结构定义 + */ +export type TimeoutHandler = { + // 是否开启超时处理 + enable: boolean + // 超时执行的动作 + type?: number + // 超时时间设置 + timeDuration?: string + // 执行动作是自动提醒, 最大提醒次数 + maxRemindCount?: number +} + +/** + * 审批人为空的结构定义 + */ +export type AssignEmptyHandler = { + // 审批人为空的处理类型 + type: AssignEmptyHandlerType + // 指定用户的编号数组 + userIds?: number[] +} + +/** + * 监听器的结构定义 + */ +export type ListenerHandler = { + enable: boolean + path?: string + header?: HttpRequestParam[] + body?: HttpRequestParam[] +} +export type HttpRequestParam = { + key: string + type: number + value: string +} +export enum BpmHttpRequestParamTypeEnum { + /** + * 固定值 + */ + FIXED_VALUE = 1, + /** + * 表单 + */ + FROM_FORM = 2 +} +export const BPM_HTTP_REQUEST_PARAM_TYPES = [ + { + value: 1, + label: '固定值' + }, + { + value: 2, + label: '表单' + } +] + +// 审批拒绝类型枚举 +export enum RejectHandlerType { + /** + * 结束流程 + */ + FINISH_PROCESS = 1, + /** + * 驳回到指定节点 + */ + RETURN_USER_TASK = 2 +} +// 用户任务超时处理类型枚举 +export enum TimeoutHandlerType { + /** + * 自动提醒 + */ + REMINDER = 1, + /** + * 自动同意 + */ + APPROVE = 2, + /** + * 自动拒绝 + */ + REJECT = 3 +} +// 用户任务的审批人为空时,处理类型枚举 +export enum AssignEmptyHandlerType { + /** + * 自动通过 + */ + APPROVE = 1, + /** + * 自动拒绝 + */ + REJECT = 2, + /** + * 指定人员审批 + */ + ASSIGN_USER, + /** + * 转交给流程管理员 + */ + ASSIGN_ADMIN = 4 +} +// 用户任务的审批人与发起人相同时,处理类型枚举 +export enum AssignStartUserHandlerType { + /** + * 由发起人对自己审批 + */ + START_USER_AUDIT = 1, + /** + * 自动跳过【参考飞书】:1)如果当前节点还有其他审批人,则交由其他审批人进行审批;2)如果当前节点没有其他审批人,则该节点自动通过 + */ + SKIP = 2, + /** + * 转交给部门负责人审批 + */ + ASSIGN_DEPT_LEADER = 3 +} + +// 用户任务的审批类型。 【参考飞书】 +export enum ApproveType { + /** + * 人工审批 + */ + USER = 1, + /** + * 自动通过 + */ + AUTO_APPROVE = 2, + /** + * 自动拒绝 + */ + AUTO_REJECT = 3 +} + +// 时间单位枚举 +export enum TimeUnitType { + /** + * 分钟 + */ + MINUTE = 1, + /** + * 小时 + */ + HOUR = 2, + /** + * 天 + */ + DAY = 3 +} + +/** + * 条件节点设置结构定义,用于条件节点 + */ +export type ConditionSetting = { + // 条件类型 + conditionType?: ConditionType + // 条件表达式 + conditionExpression?: string + // 条件组 + conditionGroups?: ConditionGroup + // 是否默认的条件 + defaultFlow?: boolean +} + +// 条件配置类型 ( 用于条件节点配置 ) +export enum ConditionType { + /** + * 条件表达式 + */ + EXPRESSION = 1, + + /** + * 条件规则 + */ + RULE = 2 +} +/** + * 表单权限的枚举 + */ +export enum FieldPermissionType { + /** + * 只读 + */ + READ = '1', + /** + * 编辑 + */ + WRITE = '2', + /** + * 隐藏 + */ + NONE = '3' +} +/** + * 操作按钮权限结构定义 + */ +export type ButtonSetting = { + id: OperationButtonType + displayName: string + enable: boolean +} + +// 操作按钮类型枚举 (用于审批节点) +export enum OperationButtonType { + /** + * 通过 + */ + APPROVE = 1, + /** + * 拒绝 + */ + REJECT = 2, + /** + * 转办 + */ + TRANSFER = 3, + /** + * 委派 + */ + DELEGATE = 4, + /** + * 加签 + */ + ADD_SIGN = 5, + /** + * 退回 + */ + RETURN = 6, + /** + * 抄送 + */ + COPY = 7 +} + +/** + * 条件规则结构定义 + */ +export type ConditionRule = { + opCode: string + leftSide: string + rightSide: string +} + +/** + * 条件组结构定义 + */ +export type ConditionGroup = { + // 条件组的逻辑关系是否为且 + and: boolean + // 条件数组 + conditions: Condition[] +} +/** + * 条件组默认值 + */ +export const DEFAULT_CONDITION_GROUP_VALUE = { + and: true, + conditions: [ + { + and: true, + rules: [ + { + opCode: '==', + leftSide: '', + rightSide: '' + } + ] + } + ] +} + +/** + * 条件结构定义 + */ +export type Condition = { + // 条件规则的逻辑关系是否为且 + and: boolean + rules: ConditionRule[] +} + +export const NODE_DEFAULT_TEXT = new Map() +NODE_DEFAULT_TEXT.set(NodeType.USER_TASK_NODE, '请配置审批人') +NODE_DEFAULT_TEXT.set(NodeType.COPY_TASK_NODE, '请配置抄送人') +NODE_DEFAULT_TEXT.set(NodeType.CONDITION_NODE, '请设置条件') +NODE_DEFAULT_TEXT.set(NodeType.START_USER_NODE, '请设置发起人') +NODE_DEFAULT_TEXT.set(NodeType.DELAY_TIMER_NODE, '请设置延迟器') +NODE_DEFAULT_TEXT.set(NodeType.ROUTER_BRANCH_NODE, '请设置路由节点') +NODE_DEFAULT_TEXT.set(NodeType.TRIGGER_NODE, '请设置触发器') +NODE_DEFAULT_TEXT.set(NodeType.TRANSACTOR_NODE, '请设置办理人') +NODE_DEFAULT_TEXT.set(NodeType.CHILD_PROCESS_NODE, '请设置子流程') + +export const NODE_DEFAULT_NAME = new Map() +NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人') +NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人') +NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件') +NODE_DEFAULT_NAME.set(NodeType.START_USER_NODE, '发起人') +NODE_DEFAULT_NAME.set(NodeType.DELAY_TIMER_NODE, '延迟器') +NODE_DEFAULT_NAME.set(NodeType.ROUTER_BRANCH_NODE, '路由分支') +NODE_DEFAULT_NAME.set(NodeType.TRIGGER_NODE, '触发器') +NODE_DEFAULT_NAME.set(NodeType.TRANSACTOR_NODE, '办理人') +NODE_DEFAULT_NAME.set(NodeType.CHILD_PROCESS_NODE, '子流程') + +// 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序 +export const CANDIDATE_STRATEGY: DictDataVO[] = [ + { label: '指定成员', value: CandidateStrategy.USER }, + { label: '指定角色', value: CandidateStrategy.ROLE }, + { label: '指定岗位', value: CandidateStrategy.POST }, + { label: '部门成员', value: CandidateStrategy.DEPT_MEMBER }, + { label: '部门负责人', value: CandidateStrategy.DEPT_LEADER }, + { label: '连续多级部门负责人', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER }, + { label: '发起人自选', value: CandidateStrategy.START_USER_SELECT }, + { label: '审批人自选', value: CandidateStrategy.APPROVE_USER_SELECT }, + { label: '发起人本人', value: CandidateStrategy.START_USER }, + { label: '发起人部门负责人', value: CandidateStrategy.START_USER_DEPT_LEADER }, + { label: '发起人连续部门负责人', value: CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER }, + { label: '用户组', value: CandidateStrategy.USER_GROUP }, + { label: '表单内用户字段', value: CandidateStrategy.FORM_USER }, + { label: '表单内部门负责人', value: CandidateStrategy.FORM_DEPT_LEADER }, + { label: '流程表达式', value: CandidateStrategy.EXPRESSION } +] +// 审批节点 的审批类型 +export const APPROVE_TYPE: DictDataVO[] = [ + { label: '人工审批', value: ApproveType.USER }, + { label: '自动通过', value: ApproveType.AUTO_APPROVE }, + { label: '自动拒绝', value: ApproveType.AUTO_REJECT } +] + +export const APPROVE_METHODS: DictDataVO[] = [ + { label: '按顺序依次审批', value: ApproveMethodType.SEQUENTIAL_APPROVE }, + { label: '会签(可同时审批,至少 % 人必须审批通过)', value: ApproveMethodType.APPROVE_BY_RATIO }, + { label: '或签(可同时审批,有一人通过即可)', value: ApproveMethodType.ANY_APPROVE }, + { label: '随机挑选一人审批', value: ApproveMethodType.RANDOM_SELECT_ONE_APPROVE } +] + +export const CONDITION_CONFIG_TYPES: DictDataVO[] = [ + { label: '条件规则', value: ConditionType.RULE }, + { label: '条件表达式', value: ConditionType.EXPRESSION } +] + +// 时间单位类型 +export const TIME_UNIT_TYPES: DictDataVO[] = [ + { label: '分钟', value: TimeUnitType.MINUTE }, + { label: '小时', value: TimeUnitType.HOUR }, + { label: '天', value: TimeUnitType.DAY } +] +// 超时处理执行动作类型 +export const TIMEOUT_HANDLER_TYPES: DictDataVO[] = [ + { label: '自动提醒', value: 1 }, + { label: '自动同意', value: 2 }, + { label: '自动拒绝', value: 3 } +] +export const REJECT_HANDLER_TYPES: DictDataVO[] = [ + { label: '终止流程', value: RejectHandlerType.FINISH_PROCESS }, + { label: '驳回到指定节点', value: RejectHandlerType.RETURN_USER_TASK } + // { label: '结束任务', value: RejectHandlerType.FINISH_TASK } +] +export const ASSIGN_EMPTY_HANDLER_TYPES: DictDataVO[] = [ + { label: '自动通过', value: 1 }, + { label: '自动拒绝', value: 2 }, + { label: '指定成员审批', value: 3 }, + { label: '转交给流程管理员', value: 4 } +] +export const ASSIGN_START_USER_HANDLER_TYPES: DictDataVO[] = [ + { label: '由发起人对自己审批', value: 1 }, + { label: '自动跳过', value: 2 }, + { label: '转交给部门负责人审批', value: 3 } +] + +// 比较运算符 +export const COMPARISON_OPERATORS: DictDataVO = [ + { + value: '==', + label: '等于' + }, + { + value: '!=', + label: '不等于' + }, + { + value: '>', + label: '大于' + }, + { + value: '>=', + label: '大于等于' + }, + { + value: '<', + label: '小于' + }, + { + value: '<=', + label: '小于等于' + } +] +// 审批操作按钮名称 +export const OPERATION_BUTTON_NAME = new Map() +OPERATION_BUTTON_NAME.set(OperationButtonType.APPROVE, '通过') +OPERATION_BUTTON_NAME.set(OperationButtonType.REJECT, '拒绝') +OPERATION_BUTTON_NAME.set(OperationButtonType.TRANSFER, '转办') +OPERATION_BUTTON_NAME.set(OperationButtonType.DELEGATE, '委派') +OPERATION_BUTTON_NAME.set(OperationButtonType.ADD_SIGN, '加签') +OPERATION_BUTTON_NAME.set(OperationButtonType.RETURN, '退回') +OPERATION_BUTTON_NAME.set(OperationButtonType.COPY, '抄送') + +// 默认的按钮权限设置 +export const DEFAULT_BUTTON_SETTING: ButtonSetting[] = [ + { id: OperationButtonType.APPROVE, displayName: '通过', enable: true }, + { id: OperationButtonType.REJECT, displayName: '拒绝', enable: true }, + { id: OperationButtonType.TRANSFER, displayName: '转办', enable: true }, + { id: OperationButtonType.DELEGATE, displayName: '委派', enable: true }, + { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: true }, + { id: OperationButtonType.RETURN, displayName: '退回', enable: true } +] + +// 办理人默认的按钮权限设置 +export const TRANSACTOR_DEFAULT_BUTTON_SETTING: ButtonSetting[] = [ + { id: OperationButtonType.APPROVE, displayName: '办理', enable: true }, + { id: OperationButtonType.REJECT, displayName: '拒绝', enable: false }, + { id: OperationButtonType.TRANSFER, displayName: '转办', enable: false }, + { id: OperationButtonType.DELEGATE, displayName: '委派', enable: false }, + { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false }, + { id: OperationButtonType.RETURN, displayName: '退回', enable: false } +] + +// 发起人的按钮权限。暂时定死,不可以编辑 +export const START_USER_BUTTON_SETTING: ButtonSetting[] = [ + { id: OperationButtonType.APPROVE, displayName: '提交', enable: true }, + { id: OperationButtonType.REJECT, displayName: '拒绝', enable: false }, + { id: OperationButtonType.TRANSFER, displayName: '转办', enable: false }, + { id: OperationButtonType.DELEGATE, displayName: '委派', enable: false }, + { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false }, + { id: OperationButtonType.RETURN, displayName: '退回', enable: false } +] + +export const MULTI_LEVEL_DEPT: DictDataVO = [ + { label: '第 1 级部门', value: 1 }, + { label: '第 2 级部门', value: 2 }, + { label: '第 3 级部门', value: 3 }, + { label: '第 4 级部门', value: 4 }, + { label: '第 5 级部门', value: 5 }, + { label: '第 6 级部门', value: 6 }, + { label: '第 7 级部门', value: 7 }, + { label: '第 8 级部门', value: 8 }, + { label: '第 9 级部门', value: 9 }, + { label: '第 10 级部门', value: 10 }, + { label: '第 11 级部门', value: 11 }, + { label: '第 12 级部门', value: 12 }, + { label: '第 13 级部门', value: 13 }, + { label: '第 14 级部门', value: 14 }, + { label: '第 15 级部门', value: 15 } +] + +/** + * 流程实例的变量枚举 + */ +export enum ProcessVariableEnum { + /** + * 发起用户 ID + */ + START_USER_ID = 'PROCESS_START_USER_ID', + /** + * 发起时间 + */ + START_TIME = 'PROCESS_START_TIME', + /** + * 流程定义名称 + */ + PROCESS_DEFINITION_NAME = 'PROCESS_DEFINITION_NAME' +} + +/** + * 延迟设置 + */ +export type DelaySetting = { + // 延迟类型 + delayType: number + // 延迟时间表达式 + delayTime: string +} +/** + * 延迟类型 + */ +export enum DelayTypeEnum { + /** + * 固定时长 + */ + FIXED_TIME_DURATION = 1, + /** + * 固定日期时间 + */ + FIXED_DATE_TIME = 2 +} +export const DELAY_TYPE = [ + { label: '固定时长', value: DelayTypeEnum.FIXED_TIME_DURATION }, + { label: '固定日期', value: DelayTypeEnum.FIXED_DATE_TIME } +] + +/** + * 路由分支结构定义 + */ +export type RouterSetting = { + nodeId: string + conditionType: ConditionType + conditionExpression: string + conditionGroups: ConditionGroup +} + +// ==================== 触发器相关定义 ==================== +/** + * 触发器节点结构定义 + */ +export type TriggerSetting = { + type: TriggerTypeEnum + httpRequestSetting?: HttpRequestTriggerSetting + formSettings?: FormTriggerSetting[] +} + +/** + * 触发器类型枚举 + */ +export enum TriggerTypeEnum { + /** + * 发送 HTTP 请求触发器 + */ + HTTP_REQUEST = 1, + /** + * 接收 HTTP 回调请求触发器 + */ + HTTP_CALLBACK = 2, + /** + * 表单数据更新触发器 + */ + FORM_UPDATE = 10, + /** + * 表单数据删除触发器 + */ + FORM_DELETE = 11 +} + +/** + * HTTP 请求触发器结构定义 + */ +export type HttpRequestTriggerSetting = { + // 请求 URL + url: string + // 请求头参数设置 + header?: HttpRequestParam[] + // 请求体参数设置 + body?: HttpRequestParam[] + // 请求响应设置 + response?: Record[] +} + +/** + * 流程表单触发器配置结构定义 + */ +export type FormTriggerSetting = { + // 条件类型 + conditionType?: ConditionType + // 条件表达式 + conditionExpression?: string + // 条件组 + conditionGroups?: ConditionGroup + // 更新表单字段配置 + updateFormFields?: Record + // 删除表单字段配置 + deleteFields?: string[] +} + +export const TRIGGER_TYPES: DictDataVO[] = [ + { label: '发送 HTTP 请求', value: TriggerTypeEnum.HTTP_REQUEST }, + { label: '接收 HTTP 回调', value: TriggerTypeEnum.HTTP_CALLBACK }, + { label: '修改表单数据', value: TriggerTypeEnum.FORM_UPDATE }, + { label: '删除表单数据', value: TriggerTypeEnum.FORM_DELETE } +] + +/** + * 子流程节点结构定义 + */ +export type ChildProcessSetting = { + calledProcessDefinitionKey: string + calledProcessDefinitionName: string + async: boolean + inVariables?: IOParameter[] + outVariables?: IOParameter[] + skipStartUserNode: boolean + startUserSetting: StartUserSetting + timeoutSetting: TimeoutSetting + multiInstanceSetting: MultiInstanceSetting +} +export type IOParameter = { + source: string + target: string +} +export type StartUserSetting = { + type: ChildProcessStartUserTypeEnum + formField?: string + emptyType?: ChildProcessStartUserEmptyTypeEnum +} +export type TimeoutSetting = { + enable: boolean + type?: DelayTypeEnum + timeExpression?: string +} +export type MultiInstanceSetting = { + enable: boolean + sequential?: boolean + approveRatio?: number + sourceType?: ChildProcessMultiInstanceSourceTypeEnum + source?: string +} +export enum ChildProcessStartUserTypeEnum { + /** + * 同主流程发起人 + */ + MAIN_PROCESS_START_USER = 1, + /** + * 表单 + */ + FROM_FORM = 2 +} +export const CHILD_PROCESS_START_USER_TYPE = [ + { label: '同主流程发起人', value: ChildProcessStartUserTypeEnum.MAIN_PROCESS_START_USER }, + { label: '表单', value: ChildProcessStartUserTypeEnum.FROM_FORM } +] +export enum ChildProcessStartUserEmptyTypeEnum { + /** + * 同主流程发起人 + */ + MAIN_PROCESS_START_USER = 1, + /** + * 子流程管理员 + */ + CHILD_PROCESS_ADMIN = 2, + /** + * 主流程管理员 + */ + MAIN_PROCESS_ADMIN = 3 +} +export const CHILD_PROCESS_START_USER_EMPTY_TYPE = [ + { label: '同主流程发起人', value: ChildProcessStartUserEmptyTypeEnum.MAIN_PROCESS_START_USER }, + { label: '子流程管理员', value: ChildProcessStartUserEmptyTypeEnum.CHILD_PROCESS_ADMIN }, + { label: '主流程管理员', value: ChildProcessStartUserEmptyTypeEnum.MAIN_PROCESS_ADMIN } +] +export enum ChildProcessMultiInstanceSourceTypeEnum { + /** + * 固定数量 + */ + FIXED_QUANTITY = 1, + /** + * 数字表单 + */ + NUMBER_FORM = 2, + /** + * 多选表单 + */ + MULTIPLE_FORM = 3 +} +export const CHILD_PROCESS_MULTI_INSTANCE_SOURCE_TYPE = [ + { label: '固定数量', value: ChildProcessMultiInstanceSourceTypeEnum.FIXED_QUANTITY }, + { label: '数字表单', value: ChildProcessMultiInstanceSourceTypeEnum.NUMBER_FORM }, + { label: '多选表单', value: ChildProcessMultiInstanceSourceTypeEnum.MULTIPLE_FORM } +] diff --git a/web/src/components/SimpleProcessDesignerV2/src/index.ts b/web/src/components/SimpleProcessDesignerV2/src/index.ts new file mode 100644 index 0000000..88de07f --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/index.ts @@ -0,0 +1,5 @@ +import SimpleProcessDesigner from './SimpleProcessDesigner.vue' +import SimpleProcessViewer from './SimpleProcessViewer.vue' +import '../theme/simple-process-designer.scss' + +export { SimpleProcessDesigner, SimpleProcessViewer} diff --git a/web/src/components/SimpleProcessDesignerV2/src/node.ts b/web/src/components/SimpleProcessDesignerV2/src/node.ts new file mode 100644 index 0000000..5b754bf --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/node.ts @@ -0,0 +1,616 @@ +import { TaskStatusEnum } from '@/api/bpm/task' +import * as RoleApi from '@/api/system/role' +import * as DeptApi from '@/api/system/dept' +import * as PostApi from '@/api/system/post' +import * as UserApi from '@/api/system/user' +import * as UserGroupApi from '@/api/bpm/userGroup' +import { + SimpleFlowNode, + CandidateStrategy, + NodeType, + ApproveMethodType, + RejectHandlerType, + NODE_DEFAULT_NAME, + AssignStartUserHandlerType, + AssignEmptyHandlerType, + FieldPermissionType, + HttpRequestParam, + ProcessVariableEnum, + ConditionType, + ConditionGroup, + COMPARISON_OPERATORS +} from './consts' +import { parseFormFields } from '@/components/FormCreate/src/utils' + +export function useWatchNode(props: { flowNode: SimpleFlowNode }): Ref { + const node = ref(props.flowNode) + watch( + () => props.flowNode, + (newValue) => { + node.value = newValue + } + ) + return node +} + +// 解析 formCreate 所有表单字段, 并返回 +const parseFormCreateFields = (formFields?: string[]) => { + const result: Array> = [] + if (formFields) { + formFields.forEach((fieldStr: string) => { + parseFormFields(JSON.parse(fieldStr), result) + }) + } + return result +} + +/** + * @description 表单数据权限配置,用于发起人节点 、审批节点、抄送节点 + */ +export function useFormFieldsPermission(defaultPermission: FieldPermissionType) { + // 字段权限配置. 需要有 field, title, permissioin 属性 + const fieldsPermissionConfig = ref>>([]) + + const formType = inject>('formType', ref()) // 表单类型 + + const formFields = inject>('formFields', ref([])) // 流程表单字段 + + const getNodeConfigFormFields = (nodeFormFields?: Array>) => { + nodeFormFields = toRaw(nodeFormFields) + if (!nodeFormFields || nodeFormFields.length === 0) { + fieldsPermissionConfig.value = getDefaultFieldsPermission(unref(formFields)) + } else { + fieldsPermissionConfig.value = mergeFieldsPermission(nodeFormFields, unref(formFields)) + } + } + // 合并已经设置的表单字段权限,当前流程表单字段 (可能新增,或删除了字段) + const mergeFieldsPermission = ( + formFieldsPermisson: Array>, + formFields?: string[] + ) => { + let mergedFieldsPermission: Array> = [] + if (formFields) { + mergedFieldsPermission = parseFormCreateFields(formFields).map((item) => { + const found = formFieldsPermisson.find( + (fieldPermission) => fieldPermission.field == item.field + ) + return { + field: item.field, + title: item.title, + permission: found ? found.permission : defaultPermission + } + }) + } + return mergedFieldsPermission + } + + // 默认的表单权限: 获取表单的所有字段,设置字段默认权限为只读 + const getDefaultFieldsPermission = (formFields?: string[]) => { + let defaultFieldsPermission: Array> = [] + if (formFields) { + defaultFieldsPermission = parseFormCreateFields(formFields).map((item) => { + return { + field: item.field, + title: item.title, + permission: defaultPermission + } + }) + } + return defaultFieldsPermission + } + + // 获取表单的所有字段,作为下拉框选项 + const formFieldOptions = parseFormCreateFields(unref(formFields)) + + return { + formType, + fieldsPermissionConfig, + formFieldOptions, + getNodeConfigFormFields + } +} + +/** + * @description 获取流程表单的字段 + */ +export function useFormFields() { + const formFields = inject>('formFields', ref([])) // 流程表单字段 + return parseFormCreateFields(unref(formFields)) +} + +// TODO @芋艿:后续需要把各种类似 useFormFieldsPermission 的逻辑,抽成一个通用方法。 +/** + * @description 获取流程表单的字段和发起人字段 + */ +export function useFormFieldsAndStartUser() { + const injectFormFields = inject>('formFields', ref([])) // 流程表单字段 + const formFields = parseFormCreateFields(unref(injectFormFields)) + // 添加发起人 + formFields.unshift({ + field: ProcessVariableEnum.START_USER_ID, + title: '发起人', + required: true + }) + return formFields +} + +export type UserTaskFormType = { + candidateStrategy: CandidateStrategy + approveMethod: ApproveMethodType + roleIds?: number[] // 角色 + deptIds?: number[] // 部门 + deptLevel?: number // 部门层级 + userIds?: number[] // 用户 + userGroups?: number[] // 用户组 + postIds?: number[] // 岗位 + expression?: string // 流程表达式 + formUser?: string // 表单内用户字段 + formDept?: string // 表单内部门字段 + approveRatio?: number + rejectHandlerType?: RejectHandlerType + returnNodeId?: string + timeoutHandlerEnable?: boolean + timeoutHandlerType?: number + assignEmptyHandlerType?: AssignEmptyHandlerType + assignEmptyHandlerUserIds?: number[] + assignStartUserHandlerType?: AssignStartUserHandlerType + timeDuration?: number + maxRemindCount?: number + buttonsSetting: any[] + taskCreateListenerEnable?: boolean + taskCreateListenerPath?: string + taskCreateListener?: { + header: HttpRequestParam[] + body: HttpRequestParam[] + } + taskAssignListenerEnable?: boolean + taskAssignListenerPath?: string + taskAssignListener?: { + header: HttpRequestParam[] + body: HttpRequestParam[] + } + taskCompleteListenerEnable?: boolean + taskCompleteListenerPath?: string + taskCompleteListener?: { + header: HttpRequestParam[] + body: HttpRequestParam[] + } + signEnable: boolean + reasonRequire: boolean +} + +export type CopyTaskFormType = { + candidateStrategy: CandidateStrategy + roleIds?: number[] // 角色 + deptIds?: number[] // 部门 + deptLevel?: number // 部门层级 + userIds?: number[] // 用户 + userGroups?: number[] // 用户组 + postIds?: number[] // 岗位 + formUser?: string // 表单内用户字段 + formDept?: string // 表单内部门字段 + expression?: string // 流程表达式 +} + +/** + * @description 节点表单数据。 用于审批节点、抄送节点 + */ +export function useNodeForm(nodeType: NodeType) { + const roleOptions = inject>('roleList', ref([])) // 角色列表 + const postOptions = inject>('postList', ref([])) // 岗位列表 + const userOptions = inject>('userList', ref([])) // 用户列表 + const deptOptions = inject>('deptList', ref([])) // 部门列表 + const userGroupOptions = inject>('userGroupList', ref([])) // 用户组列表 + const deptTreeOptions = inject('deptTree', ref()) // 部门树 + const formFields = inject>('formFields', ref([])) // 流程表单字段 + const configForm = ref() + if (nodeType === NodeType.USER_TASK_NODE || nodeType === NodeType.TRANSACTOR_NODE) { + configForm.value = { + candidateStrategy: CandidateStrategy.USER, + approveMethod: ApproveMethodType.SEQUENTIAL_APPROVE, + approveRatio: 100, + rejectHandlerType: RejectHandlerType.FINISH_PROCESS, + assignStartUserHandlerType: AssignStartUserHandlerType.START_USER_AUDIT, + returnNodeId: '', + timeoutHandlerEnable: false, + timeoutHandlerType: 1, + timeDuration: 6, // 默认 6小时 + maxRemindCount: 1, // 默认 提醒 1次 + buttonsSetting: [] + } + } else { + configForm.value = { + candidateStrategy: CandidateStrategy.USER + } + } + + const getShowText = (): string => { + let showText = '' + // 指定成员 + if (configForm.value?.candidateStrategy === CandidateStrategy.USER) { + if (configForm.value?.userIds!.length > 0) { + const candidateNames: string[] = [] + userOptions?.value.forEach((item) => { + if (configForm.value?.userIds!.includes(item.id)) { + candidateNames.push(item.nickname) + } + }) + showText = `指定成员:${candidateNames.join(',')}` + } + } + // 指定角色 + if (configForm.value?.candidateStrategy === CandidateStrategy.ROLE) { + if (configForm.value.roleIds!.length > 0) { + const candidateNames: string[] = [] + roleOptions?.value.forEach((item) => { + if (configForm.value?.roleIds!.includes(item.id)) { + candidateNames.push(item.name) + } + }) + showText = `指定角色:${candidateNames.join(',')}` + } + } + // 指定部门 + if ( + configForm.value?.candidateStrategy === CandidateStrategy.DEPT_MEMBER || + configForm.value?.candidateStrategy === CandidateStrategy.DEPT_LEADER || + configForm.value?.candidateStrategy === CandidateStrategy.MULTI_LEVEL_DEPT_LEADER + ) { + if (configForm.value?.deptIds!.length > 0) { + const candidateNames: string[] = [] + deptOptions?.value.forEach((item) => { + if (configForm.value?.deptIds!.includes(item.id!)) { + candidateNames.push(item.name) + } + }) + if (configForm.value.candidateStrategy === CandidateStrategy.DEPT_MEMBER) { + showText = `部门成员:${candidateNames.join(',')}` + } else if (configForm.value.candidateStrategy === CandidateStrategy.DEPT_LEADER) { + showText = `部门的负责人:${candidateNames.join(',')}` + } else { + showText = `多级部门的负责人:${candidateNames.join(',')}` + } + } + } + + // 指定岗位 + if (configForm.value?.candidateStrategy === CandidateStrategy.POST) { + if (configForm.value.postIds!.length > 0) { + const candidateNames: string[] = [] + postOptions?.value.forEach((item) => { + if (configForm.value?.postIds!.includes(item.id!)) { + candidateNames.push(item.name) + } + }) + showText = `指定岗位: ${candidateNames.join(',')}` + } + } + // 指定用户组 + if (configForm.value?.candidateStrategy === CandidateStrategy.USER_GROUP) { + if (configForm.value?.userGroups!.length > 0) { + const candidateNames: string[] = [] + userGroupOptions?.value.forEach((item) => { + if (configForm.value?.userGroups!.includes(item.id)) { + candidateNames.push(item.name) + } + }) + showText = `指定用户组: ${candidateNames.join(',')}` + } + } + + // 表单内用户字段 + if (configForm.value?.candidateStrategy === CandidateStrategy.FORM_USER) { + const formFieldOptions = parseFormCreateFields(unref(formFields)) + const item = formFieldOptions.find((item) => item.field === configForm.value?.formUser) + showText = `表单用户:${item?.title}` + } + + // 表单内部门负责人 + if (configForm.value?.candidateStrategy === CandidateStrategy.FORM_DEPT_LEADER) { + showText = `表单内部门负责人` + } + + // 审批人自选 + if (configForm.value?.candidateStrategy === CandidateStrategy.APPROVE_USER_SELECT) { + showText = `审批人自选` + } + + // 发起人自选 + if (configForm.value?.candidateStrategy === CandidateStrategy.START_USER_SELECT) { + showText = `发起人自选` + } + // 发起人自己 + if (configForm.value?.candidateStrategy === CandidateStrategy.START_USER) { + showText = `发起人自己` + } + // 发起人的部门负责人 + if (configForm.value?.candidateStrategy === CandidateStrategy.START_USER_DEPT_LEADER) { + showText = `发起人的部门负责人` + } + // 发起人的部门负责人 + if ( + configForm.value?.candidateStrategy === CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER + ) { + showText = `发起人连续部门负责人` + } + // 流程表达式 + if (configForm.value?.candidateStrategy === CandidateStrategy.EXPRESSION) { + showText = `流程表达式:${configForm.value.expression}` + } + return showText + } + + /** + * 处理候选人参数的赋值 + */ + const handleCandidateParam = () => { + let candidateParam: undefined | string = undefined + if (!configForm.value) { + return candidateParam + } + switch (configForm.value.candidateStrategy) { + case CandidateStrategy.USER: + candidateParam = configForm.value.userIds!.join(',') + break + case CandidateStrategy.ROLE: + candidateParam = configForm.value.roleIds!.join(',') + break + case CandidateStrategy.POST: + candidateParam = configForm.value.postIds!.join(',') + break + case CandidateStrategy.USER_GROUP: + candidateParam = configForm.value.userGroups!.join(',') + break + case CandidateStrategy.FORM_USER: + candidateParam = configForm.value.formUser! + break + case CandidateStrategy.EXPRESSION: + candidateParam = configForm.value.expression! + break + case CandidateStrategy.DEPT_MEMBER: + case CandidateStrategy.DEPT_LEADER: + candidateParam = configForm.value.deptIds!.join(',') + break + // 发起人部门负责人 + case CandidateStrategy.START_USER_DEPT_LEADER: + case CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER: + candidateParam = configForm.value.deptLevel + '' + break + // 指定连续多级部门的负责人 + case CandidateStrategy.MULTI_LEVEL_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为部门(多个部门用 , 分隔)。 右边为部门层级 + const deptIds = configForm.value.deptIds!.join(',') + candidateParam = deptIds.concat('|' + configForm.value.deptLevel + '') + break + } + // 表单内部门的负责人 + case CandidateStrategy.FORM_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为表单内部门字段。 右边为部门层级 + const deptFieldOnForm = configForm.value.formDept! + candidateParam = deptFieldOnForm.concat('|' + configForm.value.deptLevel + '') + break + } + default: + break + } + return candidateParam + } + /** + * 解析候选人参数 + */ + const parseCandidateParam = ( + candidateStrategy: CandidateStrategy, + candidateParam: string | undefined + ) => { + if (!configForm.value || !candidateParam) { + return + } + switch (candidateStrategy) { + case CandidateStrategy.USER: { + configForm.value.userIds = candidateParam.split(',').map((item) => +item) + break + } + case CandidateStrategy.ROLE: + configForm.value.roleIds = candidateParam.split(',').map((item) => +item) + break + case CandidateStrategy.POST: + configForm.value.postIds = candidateParam.split(',').map((item) => +item) + break + case CandidateStrategy.USER_GROUP: + configForm.value.userGroups = candidateParam.split(',').map((item) => +item) + break + case CandidateStrategy.FORM_USER: + configForm.value.formUser = candidateParam + break + case CandidateStrategy.EXPRESSION: + configForm.value.expression = candidateParam + break + case CandidateStrategy.DEPT_MEMBER: + case CandidateStrategy.DEPT_LEADER: + configForm.value.deptIds = candidateParam.split(',').map((item) => +item) + break + // 发起人部门负责人 + case CandidateStrategy.START_USER_DEPT_LEADER: + case CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER: + configForm.value.deptLevel = +candidateParam + break + // 指定连续多级部门的负责人 + case CandidateStrategy.MULTI_LEVEL_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为部门(多个部门用 , 分隔)。 右边为部门层级 + const paramArray = candidateParam.split('|') + configForm.value.deptIds = paramArray[0].split(',').map((item) => +item) + configForm.value.deptLevel = +paramArray[1] + break + } + // 表单内的部门负责人 + case CandidateStrategy.FORM_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为表单内的部门字段。 右边为部门层级 + const paramArray = candidateParam.split('|') + configForm.value.formDept = paramArray[0] + configForm.value.deptLevel = +paramArray[1] + break + } + default: + break + } + } + return { + configForm, + roleOptions, + postOptions, + userOptions, + userGroupOptions, + deptTreeOptions, + handleCandidateParam, + parseCandidateParam, + getShowText + } +} + +/** + * @description 抽屉配置 + */ +export function useDrawer() { + // 抽屉配置是否可见 + const settingVisible = ref(false) + // 关闭配置抽屉 + const closeDrawer = () => { + settingVisible.value = false + } + // 打开配置抽屉 + const openDrawer = () => { + settingVisible.value = true + } + return { + settingVisible, + closeDrawer, + openDrawer + } +} + +/** + * @description 节点名称配置 + */ +export function useNodeName(nodeType: NodeType) { + // 节点名称 + const nodeName = ref() + // 节点名称输入框 + const showInput = ref(false) + // 点击节点名称编辑图标 + const clickIcon = () => { + showInput.value = true + } + // 节点名称输入框失去焦点 + const blurEvent = () => { + showInput.value = false + nodeName.value = nodeName.value || (NODE_DEFAULT_NAME.get(nodeType) as string) + } + return { + nodeName, + showInput, + clickIcon, + blurEvent + } +} + +export function useNodeName2(node: Ref, nodeType: NodeType) { + // 显示节点名称输入框 + const showInput = ref(false) + // 节点名称输入框失去焦点 + const blurEvent = () => { + showInput.value = false + node.value.name = node.value.name || (NODE_DEFAULT_NAME.get(nodeType) as string) + } + // 点击节点标题进行输入 + const clickTitle = () => { + showInput.value = true + } + return { + showInput, + clickTitle, + blurEvent + } +} + +/** + * @description 根据节点任务状态,获取节点任务状态样式 + */ +export function useTaskStatusClass(taskStatus: TaskStatusEnum | undefined): string { + if (!taskStatus) { + return '' + } + if (taskStatus === TaskStatusEnum.APPROVE) { + return 'status-pass' + } + if (taskStatus === TaskStatusEnum.RUNNING) { + return 'status-running' + } + if (taskStatus === TaskStatusEnum.REJECT) { + return 'status-reject' + } + if (taskStatus === TaskStatusEnum.CANCEL) { + return 'status-cancel' + } + return '' +} + +/** 条件组件文字展示 */ +export function getConditionShowText( + conditionType: ConditionType | undefined, + conditionExpression: string | undefined, + conditionGroups: ConditionGroup | undefined, + fieldOptions: Array> +) { + let showText = '' + if (conditionType === ConditionType.EXPRESSION) { + if (conditionExpression) { + showText = `表达式:${conditionExpression}` + } + } + if (conditionType === ConditionType.RULE) { + // 条件组是否为与关系 + const groupAnd = conditionGroups?.and + let warningMessage: undefined | string = undefined + const conditionGroup = conditionGroups?.conditions.map((item) => { + return ( + '(' + + item.rules + .map((rule) => { + if (rule.leftSide && rule.rightSide) { + return ( + getFormFieldTitle(fieldOptions, rule.leftSide) + + ' ' + + getOpName(rule.opCode) + + ' ' + + rule.rightSide + ) + } else { + // 有一条规则不完善。提示错误 + warningMessage = '请完善条件规则' + return '' + } + }) + .join(item.and ? ' 且 ' : ' 或 ') + + ' ) ' + ) + }) + if (warningMessage) { + showText = '' + } else { + showText = conditionGroup!.join(groupAnd ? ' 且 ' : ' 或 ') + } + } + return showText +} + +/** 获取表单字段名称*/ +const getFormFieldTitle = (fieldOptions: Array>, field: string) => { + const item = fieldOptions.find((item) => item.field === field) + return item?.title +} + +/** 获取操作符名称 */ +const getOpName = (opCode: string): string => { + const opName = COMPARISON_OPERATORS.find((item: any) => item.value === opCode) + return opName?.label +} diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue new file mode 100644 index 0000000..7ec382f --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue @@ -0,0 +1,610 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue new file mode 100644 index 0000000..9020d65 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue @@ -0,0 +1,222 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue new file mode 100644 index 0000000..aec32da --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue @@ -0,0 +1,392 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue new file mode 100644 index 0000000..741796d --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue @@ -0,0 +1,190 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue new file mode 100644 index 0000000..4cf6a84 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue @@ -0,0 +1,201 @@ + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue new file mode 100644 index 0000000..9975d9b --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue @@ -0,0 +1,224 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue new file mode 100644 index 0000000..2baac8d --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue @@ -0,0 +1,525 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue new file mode 100644 index 0000000..433864b --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue @@ -0,0 +1,1058 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue new file mode 100644 index 0000000..7ef092d --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue new file mode 100644 index 0000000..79816c6 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue @@ -0,0 +1,309 @@ + + + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue new file mode 100644 index 0000000..9a0a9fe --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue @@ -0,0 +1,188 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue new file mode 100644 index 0000000..13efe39 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue @@ -0,0 +1,127 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue new file mode 100644 index 0000000..728f568 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue @@ -0,0 +1,88 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue new file mode 100644 index 0000000..0b36244 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue new file mode 100644 index 0000000..8b97ee5 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue new file mode 100644 index 0000000..ad6795a --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue new file mode 100644 index 0000000..0af0310 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue @@ -0,0 +1,102 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue new file mode 100644 index 0000000..09b32ed --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue new file mode 100644 index 0000000..51c44d4 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue new file mode 100644 index 0000000..7aa6793 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue @@ -0,0 +1,184 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue new file mode 100644 index 0000000..3997c09 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue new file mode 100644 index 0000000..4abe38f --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue @@ -0,0 +1,154 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue new file mode 100644 index 0000000..00f1c82 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue b/web/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue new file mode 100644 index 0000000..ae1af6c --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue @@ -0,0 +1,181 @@ + + + diff --git a/web/src/components/SimpleProcessDesignerV2/src/utils.ts b/web/src/components/SimpleProcessDesignerV2/src/utils.ts new file mode 100644 index 0000000..8e715b4 --- /dev/null +++ b/web/src/components/SimpleProcessDesignerV2/src/utils.ts @@ -0,0 +1,41 @@ +import { TimeUnitType, ApproveType, APPROVE_TYPE } from './consts' + +// 获取条件节点默认的名称 +export const getDefaultConditionNodeName = (index: number, defaultFlow: boolean | undefined): string => { + if (defaultFlow) { + return '其它情况' + } + return '条件' + (index + 1) +} + +// 获取包容分支条件节点默认的名称 +export const getDefaultInclusiveConditionNodeName = (index: number, defaultFlow: boolean | undefined): string => { + if (defaultFlow) { + return '其它情况' + } + return '包容条件' + (index + 1) +} + +export const convertTimeUnit = (strTimeUnit: string) => { + if (strTimeUnit === 'M') { + return TimeUnitType.MINUTE + } + if (strTimeUnit === 'H') { + return TimeUnitType.HOUR + } + if (strTimeUnit === 'D') { + return TimeUnitType.DAY + } + return TimeUnitType.HOUR +} + +export const getApproveTypeText = (approveType: ApproveType): string => { + let approveTypeText = '' + APPROVE_TYPE.forEach((item) => { + if (item.value === approveType) { + approveTypeText = item.label + return + } + }) + return approveTypeText +} diff --git a/web/src/components/SimpleProcessDesignerV2/theme/iconfont.ttf b/web/src/components/SimpleProcessDesignerV2/theme/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..06f4e31c4b4ce9868cd39b25f6beb1fd5884ff9c GIT binary patch literal 4808 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 literal 0 HcmV?d00001 diff --git a/web/src/components/SimpleProcessDesignerV2/theme/iconfont.woff b/web/src/components/SimpleProcessDesignerV2/theme/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..0724e75054dc761f7cec794944cc140f3056bebf GIT binary patch literal 3176 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 +import { propTypes } from '@/utils/propTypes' +import { isClient, useEventListener, useWindowSize } from '@vueuse/core' +import type { CSSProperties } from 'vue' + +defineOptions({ name: 'Sticky' }) + +const props = defineProps({ + // 距离顶部或者底部的距离(单位px) + offset: propTypes.number.def(0), + // 设置元素的堆叠顺序 + zIndex: propTypes.number.def(999), + // 设置指定的class + className: propTypes.string.def(''), + // 定位方式,默认为(top),表示距离顶部位置,可以设置为top或者bottom + position: { + type: String, + validator: function (value: string) { + return ['top', 'bottom'].indexOf(value) !== -1 + }, + default: 'top' + } +}) +const width = ref('auto' as string) +const height = ref('auto' as string) +const isSticky = ref(false) +const refSticky = shallowRef() +const scrollContainer = shallowRef() +const { height: windowHeight } = useWindowSize() +onMounted(() => { + height.value = refSticky.value?.getBoundingClientRect().height + 'px' + + scrollContainer.value = getScrollContainer(refSticky.value!, true) + useEventListener(scrollContainer, 'scroll', handleScroll) + useEventListener('resize', handleResize) + handleScroll() +}) +onActivated(() => { + handleScroll() +}) + +const camelize = (str: string): string => { + return str.replace(/-(\w)/g, (_, c) => (c ? c.toUpperCase() : '')) +} + +const getStyle = (element: HTMLElement, styleName: keyof CSSProperties): string => { + if (!isClient || !element || !styleName) return '' + + let key = camelize(styleName) + if (key === 'float') key = 'cssFloat' + try { + const style = element.style[styleName] + if (style) return style + const computed = document.defaultView?.getComputedStyle(element, '') + return computed ? computed[styleName] : '' + } catch { + return element.style[styleName] + } +} +const isScroll = (el: HTMLElement, isVertical?: boolean): boolean => { + if (!isClient) return false + const key = ( + { + undefined: 'overflow', + true: 'overflow-y', + false: 'overflow-x' + } as const + )[String(isVertical)]! + const overflow = getStyle(el, key) + return ['scroll', 'auto', 'overlay'].some((s) => overflow.includes(s)) +} + +const getScrollContainer = ( + el: HTMLElement, + isVertical: boolean +): Window | HTMLElement | undefined => { + if (!isClient) return + let parent = el + while (parent) { + if ([window, document, document.documentElement].includes(parent)) return window + if (isScroll(parent, isVertical)) return parent + parent = parent.parentNode as HTMLElement + } + return parent +} + +const handleScroll = () => { + width.value = refSticky.value!.getBoundingClientRect().width! + 'px' + if (props.position === 'top') { + const offsetTop = refSticky.value?.getBoundingClientRect().top + if (offsetTop !== undefined && offsetTop < props.offset) { + sticky() + return + } + reset() + } else { + const offsetBottom = refSticky.value?.getBoundingClientRect().bottom + + if (offsetBottom !== undefined && offsetBottom > windowHeight.value - props.offset) { + sticky() + return + } + reset() + } +} +const handleResize = () => { + if (isSticky.value && refSticky.value) { + width.value = refSticky.value.getBoundingClientRect().width + 'px' + } +} +const sticky = () => { + if (isSticky.value) { + return + } + isSticky.value = true +} +const reset = () => { + if (!isSticky.value) { + return + } + width.value = 'auto' + isSticky.value = false +} + + diff --git a/web/src/components/SummaryCard/index.vue b/web/src/components/SummaryCard/index.vue new file mode 100644 index 0000000..52da6da --- /dev/null +++ b/web/src/components/SummaryCard/index.vue @@ -0,0 +1,52 @@ + + diff --git a/web/src/components/Table/index.ts b/web/src/components/Table/index.ts new file mode 100644 index 0000000..9f89317 --- /dev/null +++ b/web/src/components/Table/index.ts @@ -0,0 +1,13 @@ +import Table from './src/Table.vue' +import { ElTable } from 'element-plus' +import { TableSetPropsType } from '@/types/table' +import TableSelectForm from './src/TableSelectForm.vue' + +export interface TableExpose { + setProps: (props: Recordable) => void + setColumn: (columnProps: TableSetPropsType[]) => void + selections: Recordable[] + elTableRef: ComponentRef +} + +export { Table, TableSelectForm } diff --git a/web/src/components/Table/src/Table.vue b/web/src/components/Table/src/Table.vue new file mode 100644 index 0000000..e9e50af --- /dev/null +++ b/web/src/components/Table/src/Table.vue @@ -0,0 +1,311 @@ + + diff --git a/web/src/components/Table/src/TableSelectForm.vue b/web/src/components/Table/src/TableSelectForm.vue new file mode 100644 index 0000000..5378a1b --- /dev/null +++ b/web/src/components/Table/src/TableSelectForm.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/web/src/components/Table/src/helper.ts b/web/src/components/Table/src/helper.ts new file mode 100644 index 0000000..d8b34a8 --- /dev/null +++ b/web/src/components/Table/src/helper.ts @@ -0,0 +1,8 @@ +export const setIndex = (reserveIndex: boolean, index: number, size: number, current: number) => { + const newIndex = index + 1 + if (reserveIndex) { + return size * (current - 1) + newIndex + } else { + return newIndex + } +} diff --git a/web/src/components/Table/src/types.ts b/web/src/components/Table/src/types.ts new file mode 100644 index 0000000..1c7ff76 --- /dev/null +++ b/web/src/components/Table/src/types.ts @@ -0,0 +1,26 @@ +import { Pagination, TableColumn } from '@/types/table' + +export type TableProps = { + pageSize?: number + currentPage?: number + // 是否多选 + selection?: boolean + // 是否所有的超出隐藏,优先级低于schema中的showOverflowTooltip, + showOverflowTooltip?: boolean + // 表头 + columns?: TableColumn[] + // 是否展示分页 + pagination?: Pagination | undefined + // 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key) + reserveSelection?: boolean + // 加载状态 + loading?: boolean + // 是否叠加索引 + reserveIndex?: boolean + // 对齐方式 + align?: 'left' | 'center' | 'right' + // 表头对齐方式 + headerAlign?: 'left' | 'center' | 'right' + data?: Recordable + expand?: boolean +} & Recordable diff --git a/web/src/components/Tinyflow/Tinyflow.vue b/web/src/components/Tinyflow/Tinyflow.vue new file mode 100644 index 0000000..6c4f21c --- /dev/null +++ b/web/src/components/Tinyflow/Tinyflow.vue @@ -0,0 +1,63 @@ + + + diff --git a/web/src/components/Tinyflow/ui/index.css b/web/src/components/Tinyflow/ui/index.css new file mode 100644 index 0000000..8fa10c2 --- /dev/null +++ b/web/src/components/Tinyflow/ui/index.css @@ -0,0 +1 @@ +.svelte-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgb(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.svelte-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgb(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.svelte-flow__background{background-color:var(--xy-background-color, var(--xy-background-color-props, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.svelte-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.svelte-flow__pane{z-index:1}.svelte-flow__pane.draggable{cursor:grab}.svelte-flow__pane.dragging{cursor:grabbing}.svelte-flow__pane.selection{cursor:pointer}.svelte-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.svelte-flow__renderer{z-index:4}.svelte-flow__selection{z-index:6}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible{outline:none}.svelte-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.svelte-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.svelte-flow .svelte-flow__edges{position:absolute}.svelte-flow .svelte-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.svelte-flow__edge{pointer-events:visibleStroke}.svelte-flow__edge.selectable{cursor:pointer}.svelte-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.svelte-flow__edge.animated path.svelte-flow__edge-interaction{stroke-dasharray:none;animation:none}.svelte-flow__edge.inactive{pointer-events:none}.svelte-flow__edge.selected,.svelte-flow__edge:focus,.svelte-flow__edge:focus-visible{outline:none}.svelte-flow__edge.selected .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus-visible .svelte-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.svelte-flow__edge-textwrapper{pointer-events:all}.svelte-flow__edge .svelte-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__connection{pointer-events:none}.svelte-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.svelte-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.svelte-flow__nodes{pointer-events:none;transform-origin:0 0}.svelte-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.svelte-flow__node.selectable{cursor:pointer}.svelte-flow__node.draggable{cursor:grab;pointer-events:all}.svelte-flow__node.draggable.dragging{cursor:grabbing}.svelte-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.svelte-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.svelte-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.svelte-flow__handle.connectingfrom{pointer-events:all}.svelte-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.svelte-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.svelte-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.svelte-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.svelte-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.svelte-flow__edgeupdater{cursor:move;pointer-events:all}.svelte-flow__panel{position:absolute;z-index:5;margin:15px}.svelte-flow__panel.top{top:0}.svelte-flow__panel.bottom{bottom:0}.svelte-flow__panel.left{left:0}.svelte-flow__panel.right{right:0}.svelte-flow__panel.center{left:50%;transform:translate(-50%)}.svelte-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.svelte-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.svelte-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.svelte-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.svelte-flow__minimap-svg{display:block}.svelte-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.svelte-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.svelte-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.svelte-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.svelte-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.svelte-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.svelte-flow__controls.horizontal{flex-direction:row}.svelte-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.svelte-flow__edge.updating .svelte-flow__edge-path{stroke:#777}.svelte-flow__edge-text{font-size:10px}.svelte-flow__node.selectable:focus,.svelte-flow__node.selectable:focus-visible{outline:none}.svelte-flow__node-input,.svelte-flow__node-default,.svelte-flow__node-output,.svelte-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.svelte-flow__node-input.selectable:hover,.svelte-flow__node-default.selectable:hover,.svelte-flow__node-output.selectable:hover,.svelte-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.svelte-flow__node-input.selectable.selected,.svelte-flow__node-input.selectable:focus,.svelte-flow__node-input.selectable:focus-visible,.svelte-flow__node-default.selectable.selected,.svelte-flow__node-default.selectable:focus,.svelte-flow__node-default.selectable:focus-visible,.svelte-flow__node-output.selectable.selected,.svelte-flow__node-output.selectable:focus,.svelte-flow__node-output.selectable:focus-visible,.svelte-flow__node-group.selectable.selected,.svelte-flow__node-group.selectable:focus,.svelte-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.svelte-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.svelte-flow__nodesselection-rect,.svelte-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible,.svelte-flow__selection:focus,.svelte-flow__selection:focus-visible{outline:none}.svelte-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.svelte-flow__controls-button:disabled{pointer-events:none}.svelte-flow__controls-button:disabled svg{fill-opacity:.4}.svelte-flow__controls-button:last-child{border-bottom:none}.svelte-flow__resize-control{position:absolute}.svelte-flow__resize-control.left,.svelte-flow__resize-control.right{cursor:ew-resize}.svelte-flow__resize-control.top,.svelte-flow__resize-control.bottom{cursor:ns-resize}.svelte-flow__resize-control.top.left,.svelte-flow__resize-control.bottom.right{cursor:nwse-resize}.svelte-flow__resize-control.bottom.left,.svelte-flow__resize-control.top.right{cursor:nesw-resize}.svelte-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));transform:translate(-50%,-50%)}.svelte-flow__resize-control.handle.left{left:0;top:50%}.svelte-flow__resize-control.handle.right{left:100%;top:50%}.svelte-flow__resize-control.handle.top{left:50%;top:0}.svelte-flow__resize-control.handle.bottom{left:50%;top:100%}.svelte-flow__resize-control.handle.top.left,.svelte-flow__resize-control.handle.bottom.left{left:0}.svelte-flow__resize-control.handle.top.right,.svelte-flow__resize-control.handle.bottom.right{left:100%}.svelte-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.svelte-flow__resize-control.line.left,.svelte-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.svelte-flow__resize-control.line.left{left:0;border-left-width:1px}.svelte-flow__resize-control.line.right{left:100%;border-right-width:1px}.svelte-flow__resize-control.line.top,.svelte-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.svelte-flow__resize-control.line.top{top:0;border-top-width:1px}.svelte-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.svelte-flow__edge-label{text-align:center;position:absolute;padding:2px;font-size:10px;cursor:pointer;color:var(--xy-edge-label-color, var(--xy-edge-label-color-default));background:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.svelte-flow__nodes,.svelte-flow__edgelabel-renderer{z-index:0}:root,:root .tf-theme-light{--tf-primary-color: #2563EB;--xy-node-boxshadow-selected: 0 0 0 1px var(--tf-primary-color);--xy-handle-background-color: var(--tf-primary-color)}.tf-btn{display:flex;align-items:center;justify-content:center;gap:2px;background:#fff;border:1px solid #ccc;cursor:pointer;border-radius:5px;padding:5px;margin:0;height:fit-content;width:fit-content}.tf-btn svg{fill:currentColor;width:16px;height:16px}.tf-btn:hover{border:1px solid var(--tf-primary-color)}.tf-input,.tf-textarea{display:flex;border-radius:5px;border:1px solid #ccc;padding:5px 10px;box-sizing:border-box;resize:vertical;outline:none}.tf-input::placeholder,.tf-textarea::placeholder{color:#ccc}.tf-input:focus,.tf-textarea:focus{border-color:var(--tf-primary-color);box-shadow:0 0 5px #51cbee33}.tf-input[disabled],.tf-textarea[disabled]{background-color:#f0f0f0;cursor:not-allowed;color:#aaa}.tf-select-input{display:flex;border:1px solid #ccc;padding:3px 10px;border-radius:5px;font-size:14px;justify-content:space-between;align-items:center;cursor:pointer;background:#fff;height:27px}.tf-select-input:focus{border-color:var(--tf-primary-color);box-shadow:0 0 5px #51cbee33}.tf-select-input-value{height:21px;min-width:10px;font-size:12px;display:flex;align-items:center}.tf-select-input-arrow{display:block;width:16px;height:16px;color:#666}.tf-select-input-placeholder{color:#ccc}.tf-select-content{display:flex;flex-direction:column;background:#fff;margin-top:5px;border:1px solid #ccc;border-radius:5px;padding:5px;width:max-content;min-width:100%;z-index:9999;box-sizing:border-box}.tf-select-content-item{display:flex;align-items:center;padding:5px 10px;border:none;background:#fff;border-radius:5px;cursor:pointer;line-height:100%;gap:2px}.tf-select-content-item span{width:16px;display:flex}.tf-select-content-item svg{width:16px;height:16px;margin:auto}.tf-select-content-item:hover{background:#f0f0f0}.tf-select-content-children{padding-left:14px}.tf-checkbox{width:14px;height:14px}.tf-tabs{display:flex;align-items:center;justify-content:center;gap:5px;padding:5px;border-radius:5px;border:none;background:#f4f4f5}.tf-tabs .tf-tabs-item{flex-grow:1;padding:5px 10px;cursor:pointer;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#808088}.tf-tabs .tf-tabs-item.active{background:#fff;color:#333;font-weight:500;box-shadow:0 0 5px #00000026}h3.tf-heading{font-weight:700;font-size:14px;margin-top:2px;margin-bottom:3px;color:#333}.tf-collapse{border:none;border-radius:5px}.tf-collapse-item-title{display:flex;align-items:center;cursor:pointer;font-size:14px}.tf-collapse-item-title-icon{display:flex;width:26px;height:26px;color:#2563eb;background:#cedafb;border-radius:5px;padding:3px;justify-content:center;align-items:center;margin-right:10px}.tf-collapse-item-title-icon svg{width:22px;height:22px;color:#3474ff}.tf-collapse-item-title-arrow{display:block;width:16px;height:16px;margin-left:auto}.tf-collapse-item-description{font-size:12px;margin:10px 0;color:#999}.svelte-flow__nodes .svelte-flow__node{border:3px solid transparent;border-radius:5px;box-sizing:border-box}.svelte-flow__nodes .svelte-flow__node .svelte-flow__handle{width:16px;height:16px;background:transparent;display:flex;justify-content:center;align-items:center;border:none}.svelte-flow__nodes .svelte-flow__node .svelte-flow__handle:after{content:" ";background:#2563eb;width:8px;height:8px;border-radius:100%;transition:width .1s,height .1s}.svelte-flow__nodes .svelte-flow__node .svelte-flow__handle:hover:after{width:16px;height:16px}.svelte-flow__nodes .svelte-flow__node div.loop_handle_wrapper:after{content:"循环体";background:#2563eb;width:100px;height:20px;border-radius:0;display:flex;color:#fff;justify-content:center;align-items:center}.svelte-flow__nodes .svelte-flow__node div.loop_handle_wrapper:hover:after{width:100px;height:20px}.svelte-flow__nodes .svelte-flow__node:after{content:" ";position:absolute;border-radius:5px;top:-2px;left:-2px;border:1px solid #ccc;height:calc(100% + 2px);width:calc(100% + 2px)}.svelte-flow__nodes .svelte-flow__node:hover{border:3px solid #bacaef7d}.svelte-flow__nodes .svelte-flow__node.selectable.selected{border:3px solid #bacaef7d;box-shadow:var(--xy-node-boxshadow-selected)}.svelte-flow__nodes .svelte-flow__node:hover:after{display:none}.svelte-flow__nodes .svelte-flow__node.selectable.selected:after{display:none}.tf-node-wrapper{border-radius:5px;min-width:300px;background:#fff}.tf-node-wrapper-title{height:30px;background:#eff1f5;color:#bcbcbc;font-size:12px;display:flex;align-items:center;padding-left:5px;border-bottom:1px solid #ccc;font-weight:300;letter-spacing:1px}.tf-node-wrapper-body{padding:10px}.svelte-flow__attribution a{display:none}.tf-toolbar{position:absolute;top:10px;left:10px;z-index:9999;display:flex;gap:5px;transition:transform .5s ease,opacity .5s ease;transform:translate(-220px)}.tf-toolbar.show{transform:translate(0)}.tf-toolbar-container{background:#fff;border:1px solid #eee;border-radius:5px;box-shadow:0 0 5px #0000001a;padding:10px;width:180px}.tf-toolbar-container-header{display:flex}.tf-toolbar-container-body{display:flex;margin-top:20px}.tf-toolbar-container-body .tf-toolbar-container-base,.tf-toolbar-container-body .tf-toolbar-container-tools{display:flex;flex-direction:column;gap:4px;flex-grow:1}.tf-toolbar-container-body .tf-toolbar-container-base .tf-btn,.tf-toolbar-container-body .tf-toolbar-container-tools .tf-btn{border:none;width:100%;justify-content:flex-start;height:40px;gap:10px;cursor:grabbing;border-radius:5px}.tf-toolbar-container-body .tf-toolbar-container-base .tf-btn svg,.tf-toolbar-container-body .tf-toolbar-container-tools .tf-btn svg{width:20px;height:20px;fill:#2563eb}.tf-toolbar-container-body .tf-toolbar-container-base .tf-btn:hover,.tf-toolbar-container-body .tf-toolbar-container-tools .tf-btn:hover{background:#f1f1f1}.tinyflow-logo:after{content:"Tinyflow.ai";font-size:145px;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:800;color:#03153b54;text-shadow:1px 3px 6px #cedafb,0 0 0 #000,1px 3px 6px #fff;opacity:.1} diff --git a/web/src/components/Tinyflow/ui/index.d.ts b/web/src/components/Tinyflow/ui/index.d.ts new file mode 100644 index 0000000..38a3132 --- /dev/null +++ b/web/src/components/Tinyflow/ui/index.d.ts @@ -0,0 +1,41 @@ +import { Edge } from '@xyflow/svelte'; +import { Node as Node_2 } from '@xyflow/svelte'; +import { useSvelteFlow } from '@xyflow/svelte'; +import { Viewport } from '@xyflow/svelte'; + +export declare type Item = { + value: number | string; + label: string; + children?: Item[]; +}; + +export declare class Tinyflow { + private options; + private rootEl; + private svelteFlowInstance; + constructor(options: TinyflowOptions); + private _init; + private _setOptions; + getOptions(): TinyflowOptions; + getData(): { + nodes: Node_2[]; + edges: Edge[]; + viewport: Viewport; + }; + setData(data: TinyflowData): void; + destroy(): void; +} + +export declare type TinyflowData = Partial['toObject']>>; + +export declare type TinyflowOptions = { + element: string | Element; + data?: TinyflowData; + provider?: { + llm?: () => Item[] | Promise; + knowledge?: () => Item[] | Promise; + internal?: () => Item[] | Promise; + }; +}; + +export { } diff --git a/web/src/components/Tinyflow/ui/index.js b/web/src/components/Tinyflow/ui/index.js new file mode 100644 index 0000000..80e77b5 --- /dev/null +++ b/web/src/components/Tinyflow/ui/index.js @@ -0,0 +1,16984 @@ +var tf = Object.defineProperty; +var Pa = (e) => { + throw TypeError(e); +}; +var nf = (e, t, n) => t in e ? tf(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n; +var wt = (e, t, n) => nf(e, typeof t != "symbol" ? t + "" : t, n), Ji = (e, t, n) => t.has(e) || Pa("Cannot " + n); +var it = (e, t, n) => (Ji(e, t, "read from private field"), n ? n.call(e) : t.get(e)), rr = (e, t, n) => t.has(e) ? Pa("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, n), Gr = (e, t, n, r) => (Ji(e, t, "write to private field"), r ? r.call(e, n) : t.set(e, n), n), Na = (e, t, n) => (Ji(e, t, "access private method"), n); +const rf = "5"; +var Ll; +typeof window < "u" && ((Ll = window.__svelte ?? (window.__svelte = {})).v ?? (Ll.v = /* @__PURE__ */ new Set())).add(rf); +let Br = !1, of = !1; +function sf() { + Br = !0; +} +sf(); +const Os = 1, Is = 2, Ol = 4, af = 8, lf = 16, uf = 1, cf = 2, Il = 4, df = 8, ff = 16, zl = 1, gf = 2, zs = "[", Rs = "[!", Bs = "]", _r = {}, Pt = Symbol(), Rl = "http://www.w3.org/2000/svg", Ma = !1, nn = 2, Bl = 4, Si = 8, Ys = 16, On = 32, Yr = 64, ti = 128, qt = 256, ni = 512, mt = 1024, In = 2048, gr = 4096, Mn = 8192, Pi = 16384, hf = 32768, Zr = 65536, vf = 1 << 17, pf = 1 << 19, Yl = 1 << 20, Wn = Symbol("$state"), Zs = Symbol("legacy props"), mf = Symbol(""); +var Co = Array.isArray, yf = Array.prototype.indexOf, Xs = Array.from, ri = Object.keys, so = Object.defineProperty, Tn = Object.getOwnPropertyDescriptor, Zl = Object.getOwnPropertyDescriptors, wf = Object.prototype, _f = Array.prototype, Fs = Object.getPrototypeOf; +function Ur(e) { + return typeof e == "function"; +} +const dt = () => { +}; +function xf(e) { + return e(); +} +function ao(e) { + for (var t = 0; t < e.length; t++) + e[t](); +} +const bf = typeof requestIdleCallback > "u" ? (e) => setTimeout(e, 1) : requestIdleCallback; +let lo = [], uo = []; +function Xl() { + var e = lo; + lo = [], ao(e); +} +function Fl() { + var e = uo; + uo = [], ao(e); +} +function ko(e) { + lo.length === 0 && queueMicrotask(Xl), lo.push(e); +} +function Cf(e) { + uo.length === 0 && bf(Fl), uo.push(e); +} +function Ta() { + lo.length > 0 && Xl(), uo.length > 0 && Fl(); +} +function Wl(e) { + return e === this.v; +} +function Ws(e, t) { + return e != e ? t == t : e !== t || e !== null && typeof e == "object" || typeof e == "function"; +} +function Ks(e) { + return !Ws(e, this.v); +} +function kf(e) { + throw new Error("https://svelte.dev/e/effect_in_teardown"); +} +function $f() { + throw new Error("https://svelte.dev/e/effect_in_unowned_derived"); +} +function Ef(e) { + throw new Error("https://svelte.dev/e/effect_orphan"); +} +function Sf() { + throw new Error("https://svelte.dev/e/effect_update_depth_exceeded"); +} +function Pf() { + throw new Error("https://svelte.dev/e/hydration_failed"); +} +function Nf(e) { + throw new Error("https://svelte.dev/e/props_invalid_value"); +} +function Mf() { + throw new Error("https://svelte.dev/e/state_descriptors_fixed"); +} +function Tf() { + throw new Error("https://svelte.dev/e/state_prototype_fixed"); +} +function Hf() { + throw new Error("https://svelte.dev/e/state_unsafe_local_read"); +} +function Vf() { + throw new Error("https://svelte.dev/e/state_unsafe_mutation"); +} +function Mt(e, t) { + var n = { + f: 0, + // TODO ideally we could skip this altogether, but it causes type errors + v: e, + reactions: null, + equals: Wl, + rv: 0, + wv: 0 + }; + return n; +} +function Un(e) { + return /* @__PURE__ */ Kl(Mt(e)); +} +// @__NO_SIDE_EFFECTS__ +function $o(e, t = !1) { + var r; + const n = Mt(e); + return t || (n.equals = Ks), Br && Ze !== null && Ze.l !== null && ((r = Ze.l).s ?? (r.s = [])).push(n), n; +} +function re(e, t = !1) { + return /* @__PURE__ */ Kl(/* @__PURE__ */ $o(e, t)); +} +// @__NO_SIDE_EFFECTS__ +function Kl(e) { + return je !== null && !en && je.f & nn && (vn === null ? Lf([e]) : vn.push(e)), e; +} +function U(e, t) { + return je !== null && !en && Di() && je.f & (nn | Ys) && // If the source was created locally within the current derived, then + // we allow the mutation. + (vn === null || !vn.includes(e)) && Vf(), gs(e, t); +} +function gs(e, t) { + return e.equals(t) || (e.v, e.v = t, e.wv = tu(), ql(e, In), Di() && qe !== null && qe.f & mt && !(qe.f & (On | Yr)) && (En === null ? Of([e]) : En.push(e))), t; +} +function Ha(e, t = 1) { + var n = h(e), r = t === 1 ? n++ : n--; + return U(e, n), r; +} +function ql(e, t) { + var n = e.reactions; + if (n !== null) + for (var r = Di(), o = n.length, i = 0; i < o; i++) { + var s = n[i], a = s.f; + a & In || !r && s === qe || (rn(s, t), a & (mt | qt) && (a & nn ? ql( + /** @type {Derived} */ + s, + gr + ) : Hi( + /** @type {Effect} */ + s + ))); + } +} +// @__NO_SIDE_EFFECTS__ +function Me(e) { + var t = nn | In, n = je !== null && je.f & nn ? ( + /** @type {Derived} */ + je + ) : null; + return qe === null || n !== null && n.f & qt ? t |= qt : qe.f |= Yl, { + ctx: Ze, + deps: null, + effects: null, + equals: Wl, + f: t, + fn: e, + reactions: null, + rv: 0, + v: ( + /** @type {V} */ + null + ), + wv: 0, + parent: n ?? qe + }; +} +// @__NO_SIDE_EFFECTS__ +function pe(e) { + const t = /* @__PURE__ */ Me(e); + return t.equals = Ks, t; +} +function Gl(e) { + var t = e.effects; + if (t !== null) { + e.effects = null; + for (var n = 0; n < t.length; n += 1) + Gt( + /** @type {Effect} */ + t[n] + ); + } +} +function Df(e) { + for (var t = e.parent; t !== null; ) { + if (!(t.f & nn)) + return ( + /** @type {Effect} */ + t + ); + t = t.parent; + } + return null; +} +function Af(e) { + var t, n = qe; + Jn(Df(e)); + try { + Gl(e), t = ru(e); + } finally { + Jn(n); + } + return t; +} +function Ul(e) { + var t = Af(e), n = (Xn || e.f & qt) && e.deps !== null ? gr : mt; + rn(e, n), e.equals(t) || (e.v = t, e.wv = tu()); +} +function Ni(e) { + console.warn("https://svelte.dev/e/hydration_mismatch"); +} +let Pe = !1; +function It(e) { + Pe = e; +} +let De; +function Ct(e) { + if (e === null) + throw Ni(), _r; + return De = e; +} +function yn() { + return Ct( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(De) + ); +} +function Z(e) { + if (Pe) { + if (/* @__PURE__ */ xn(De) !== null) + throw Ni(), _r; + De = e; + } +} +function Se(e = 1) { + if (Pe) { + for (var t = e, n = De; t--; ) + n = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(n); + De = n; + } +} +function hs() { + for (var e = 0, t = De; ; ) { + if (t.nodeType === 8) { + var n = ( + /** @type {Comment} */ + t.data + ); + if (n === Bs) { + if (e === 0) return t; + e -= 1; + } else (n === zs || n === Rs) && (e += 1); + } + var r = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(t) + ); + t.remove(), t = r; + } +} +function Tt(e, t = null, n) { + if (typeof e != "object" || e === null || Wn in e) + return e; + const r = Fs(e); + if (r !== wf && r !== _f) + return e; + var o = /* @__PURE__ */ new Map(), i = Co(e), s = Mt(0); + i && o.set("length", Mt( + /** @type {any[]} */ + e.length + )); + var a; + return new Proxy( + /** @type {any} */ + e, + { + defineProperty(l, u, c) { + (!("value" in c) || c.configurable === !1 || c.enumerable === !1 || c.writable === !1) && Mf(); + var f = o.get(u); + return f === void 0 ? (f = Mt(c.value), o.set(u, f)) : U(f, Tt(c.value, a)), !0; + }, + deleteProperty(l, u) { + var c = o.get(u); + if (c === void 0) + u in l && o.set(u, Mt(Pt)); + else { + if (i && typeof u == "string") { + var f = ( + /** @type {Source} */ + o.get("length") + ), d = Number(u); + Number.isInteger(d) && d < f.v && U(f, d); + } + U(c, Pt), Va(s); + } + return !0; + }, + get(l, u, c) { + var p; + if (u === Wn) + return e; + var f = o.get(u), d = u in l; + if (f === void 0 && (!d || (p = Tn(l, u)) != null && p.writable) && (f = Mt(Tt(d ? l[u] : Pt, a)), o.set(u, f)), f !== void 0) { + var g = h(f); + return g === Pt ? void 0 : g; + } + return Reflect.get(l, u, c); + }, + getOwnPropertyDescriptor(l, u) { + var c = Reflect.getOwnPropertyDescriptor(l, u); + if (c && "value" in c) { + var f = o.get(u); + f && (c.value = h(f)); + } else if (c === void 0) { + var d = o.get(u), g = d == null ? void 0 : d.v; + if (d !== void 0 && g !== Pt) + return { + enumerable: !0, + configurable: !0, + value: g, + writable: !0 + }; + } + return c; + }, + has(l, u) { + var g; + if (u === Wn) + return !0; + var c = o.get(u), f = c !== void 0 && c.v !== Pt || Reflect.has(l, u); + if (c !== void 0 || qe !== null && (!f || (g = Tn(l, u)) != null && g.writable)) { + c === void 0 && (c = Mt(f ? Tt(l[u], a) : Pt), o.set(u, c)); + var d = h(c); + if (d === Pt) + return !1; + } + return f; + }, + set(l, u, c, f) { + var _; + var d = o.get(u), g = u in l; + if (i && u === "length") + for (var p = c; p < /** @type {Source} */ + d.v; p += 1) { + var x = o.get(p + ""); + x !== void 0 ? U(x, Pt) : p in l && (x = Mt(Pt), o.set(p + "", x)); + } + d === void 0 ? (!g || (_ = Tn(l, u)) != null && _.writable) && (d = Mt(void 0), U(d, Tt(c, a)), o.set(u, d)) : (g = d.v !== Pt, U(d, Tt(c, a))); + var C = Reflect.getOwnPropertyDescriptor(l, u); + if (C != null && C.set && C.set.call(f, c), !g) { + if (i && typeof u == "string") { + var $ = ( + /** @type {Source} */ + o.get("length") + ), m = Number(u); + Number.isInteger(m) && m >= $.v && U($, m + 1); + } + Va(s); + } + return !0; + }, + ownKeys(l) { + h(s); + var u = Reflect.ownKeys(l).filter((d) => { + var g = o.get(d); + return g === void 0 || g.v !== Pt; + }); + for (var [c, f] of o) + f.v !== Pt && !(c in l) && u.push(c); + return u; + }, + setPrototypeOf() { + Tf(); + } + } + ); +} +function Va(e, t = 1) { + U(e, e.v + t); +} +var Nt, jl, Jl, Ql; +function vs() { + if (Nt === void 0) { + Nt = window, jl = /Firefox/.test(navigator.userAgent); + var e = Element.prototype, t = Node.prototype; + Jl = Tn(t, "firstChild").get, Ql = Tn(t, "nextSibling").get, e.__click = void 0, e.__className = void 0, e.__attributes = null, e.__styles = null, e.__e = void 0, Text.prototype.__t = void 0; + } +} +function Vn(e = "") { + return document.createTextNode(e); +} +// @__NO_SIDE_EFFECTS__ +function bt(e) { + return Jl.call(e); +} +// @__NO_SIDE_EFFECTS__ +function xn(e) { + return Ql.call(e); +} +function X(e, t) { + if (!Pe) + return /* @__PURE__ */ bt(e); + var n = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(De) + ); + if (n === null) + n = De.appendChild(Vn()); + else if (t && n.nodeType !== 3) { + var r = Vn(); + return n == null || n.before(r), Ct(r), r; + } + return Ct(n), n; +} +function be(e, t) { + if (!Pe) { + var n = ( + /** @type {DocumentFragment} */ + /* @__PURE__ */ bt( + /** @type {Node} */ + e + ) + ); + return n instanceof Comment && n.data === "" ? /* @__PURE__ */ xn(n) : n; + } + return De; +} +function z(e, t = 1, n = !1) { + let r = Pe ? De : e; + for (var o; t--; ) + o = r, r = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(r); + if (!Pe) + return r; + var i = r == null ? void 0 : r.nodeType; + if (n && i !== 3) { + var s = Vn(); + return r === null ? o == null || o.after(s) : r.before(s), Ct(s), s; + } + return Ct(r), /** @type {TemplateNode} */ + r; +} +function qs(e) { + e.textContent = ""; +} +let qo = !1, oi = !1, ii = null, ir = !1, Gs = !1; +function Da(e) { + Gs = e; +} +let oo = []; +let je = null, en = !1; +function jn(e) { + je = e; +} +let qe = null; +function Jn(e) { + qe = e; +} +let vn = null; +function Lf(e) { + vn = e; +} +let _t = null, Lt = 0, En = null; +function Of(e) { + En = e; +} +let eu = 1, si = 0, Xn = !1; +function tu() { + return ++eu; +} +function Xr(e) { + var f; + var t = e.f; + if (t & In) + return !0; + if (t & gr) { + var n = e.deps, r = (t & qt) !== 0; + if (n !== null) { + var o, i, s = (t & ni) !== 0, a = r && qe !== null && !Xn, l = n.length; + if (s || a) { + var u = ( + /** @type {Derived} */ + e + ), c = u.parent; + for (o = 0; o < l; o++) + i = n[o], (s || !((f = i == null ? void 0 : i.reactions) != null && f.includes(u))) && (i.reactions ?? (i.reactions = [])).push(u); + s && (u.f ^= ni), a && c !== null && !(c.f & qt) && (u.f ^= qt); + } + for (o = 0; o < l; o++) + if (i = n[o], Xr( + /** @type {Derived} */ + i + ) && Ul( + /** @type {Derived} */ + i + ), i.wv > e.wv) + return !0; + } + (!r || qe !== null && !Xn) && rn(e, mt); + } + return !1; +} +function If(e, t) { + for (var n = t; n !== null; ) { + if (n.f & ti) + try { + n.fn(e); + return; + } catch { + n.f ^= ti; + } + n = n.parent; + } + throw qo = !1, e; +} +function zf(e) { + return (e.f & Pi) === 0 && (e.parent === null || (e.parent.f & ti) === 0); +} +function Mi(e, t, n, r) { + if (qo) { + if (n === null && (qo = !1), zf(t)) + throw e; + return; + } + n !== null && (qo = !0); + { + If(e, t); + return; + } +} +function nu(e, t, n = !0) { + var r = e.reactions; + if (r !== null) + for (var o = 0; o < r.length; o++) { + var i = r[o]; + i.f & nn ? nu( + /** @type {Derived} */ + i, + t, + !1 + ) : t === i && (n ? rn(i, In) : i.f & mt && rn(i, gr), Hi( + /** @type {Effect} */ + i + )); + } +} +function ru(e) { + var g; + var t = _t, n = Lt, r = En, o = je, i = Xn, s = vn, a = Ze, l = en, u = e.f; + _t = /** @type {null | Value[]} */ + null, Lt = 0, En = null, Xn = (u & qt) !== 0 && (en || !ir || je === null), je = u & (On | Yr) ? null : e, vn = null, Aa(e.ctx), en = !1, si++; + try { + var c = ( + /** @type {Function} */ + (0, e.fn)() + ), f = e.deps; + if (_t !== null) { + var d; + if (ai(e, Lt), f !== null && Lt > 0) + for (f.length = Lt + _t.length, d = 0; d < _t.length; d++) + f[Lt + d] = _t[d]; + else + e.deps = f = _t; + if (!Xn) + for (d = Lt; d < f.length; d++) + ((g = f[d]).reactions ?? (g.reactions = [])).push(e); + } else f !== null && Lt < f.length && (ai(e, Lt), f.length = Lt); + if (Di() && En !== null && !en && f !== null && !(e.f & (nn | gr | In))) + for (d = 0; d < /** @type {Source[]} */ + En.length; d++) + nu( + En[d], + /** @type {Effect} */ + e + ); + return o !== null && si++, c; + } finally { + _t = t, Lt = n, En = r, je = o, Xn = i, vn = s, Aa(a), en = l; + } +} +function Rf(e, t) { + let n = t.reactions; + if (n !== null) { + var r = yf.call(n, e); + if (r !== -1) { + var o = n.length - 1; + o === 0 ? n = t.reactions = null : (n[r] = n[o], n.pop()); + } + } + n === null && t.f & nn && // Destroying a child effect while updating a parent effect can cause a dependency to appear + // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps` + // allows us to skip the expensive work of disconnecting and immediately reconnecting it + (_t === null || !_t.includes(t)) && (rn(t, gr), t.f & (qt | ni) || (t.f ^= ni), Gl( + /** @type {Derived} **/ + t + ), ai( + /** @type {Derived} **/ + t, + 0 + )); +} +function ai(e, t) { + var n = e.deps; + if (n !== null) + for (var r = t; r < n.length; r++) + Rf(e, n[r]); +} +function Ti(e) { + var t = e.f; + if (!(t & Pi)) { + rn(e, mt); + var n = qe, r = Ze, o = ir; + qe = e, ir = !0; + try { + t & Ys ? Gf(e) : lu(e), au(e); + var i = ru(e); + e.teardown = typeof i == "function" ? i : null, e.wv = eu; + var s = e.deps, a; + Ma && of && e.f & In; + } catch (l) { + Mi(l, e, n, r || e.ctx); + } finally { + ir = o, qe = n; + } + } +} +function Bf() { + try { + Sf(); + } catch (e) { + if (ii !== null) + Mi(e, ii, null); + else + throw e; + } +} +function ou() { + var e = ir; + try { + var t = 0; + for (ir = !0; oo.length > 0; ) { + t++ > 1e3 && Bf(); + var n = oo, r = n.length; + oo = []; + for (var o = 0; o < r; o++) { + var i = n[o]; + i.f & mt || (i.f ^= mt); + var s = Zf(i); + Yf(s); + } + } + } finally { + oi = !1, ir = e, ii = null; + } +} +function Yf(e) { + var t = e.length; + if (t !== 0) + for (var n = 0; n < t; n++) { + var r = e[n]; + if (!(r.f & (Pi | Mn))) + try { + Xr(r) && (Ti(r), r.deps === null && r.first === null && r.nodes_start === null && (r.teardown === null ? uu(r) : r.fn = null)); + } catch (o) { + Mi(o, r, null, r.ctx); + } + } +} +function Hi(e) { + oi || (oi = !0, queueMicrotask(ou)); + for (var t = ii = e; t.parent !== null; ) { + t = t.parent; + var n = t.f; + if (n & (Yr | On)) { + if (!(n & mt)) return; + t.f ^= mt; + } + } + oo.push(t); +} +function Zf(e) { + for (var t = [], n = e.first; n !== null; ) { + var r = n.f, o = (r & On) !== 0, i = o && (r & mt) !== 0; + if (!i && !(r & Mn)) { + if (r & Bl) + t.push(n); + else if (o) + n.f ^= mt; + else { + var s = je; + try { + je = n, Xr(n) && Ti(n); + } catch (u) { + Mi(u, n, null, n.ctx); + } finally { + je = s; + } + } + var a = n.first; + if (a !== null) { + n = a; + continue; + } + } + var l = n.parent; + for (n = n.next; n === null && l !== null; ) + n = l.next, l = l.parent; + } + return t; +} +function y(e) { + var t; + for (Ta(); oo.length > 0; ) + oi = !0, ou(), Ta(); + return ( + /** @type {T} */ + t + ); +} +function h(e) { + var t = e.f, n = (t & nn) !== 0; + if (je !== null && !en) { + vn !== null && vn.includes(e) && Hf(); + var r = je.deps; + e.rv < si && (e.rv = si, _t === null && r !== null && r[Lt] === e ? Lt++ : _t === null ? _t = [e] : (!Xn || !_t.includes(e)) && _t.push(e)); + } else if (n && /** @type {Derived} */ + e.deps === null && /** @type {Derived} */ + e.effects === null) { + var o = ( + /** @type {Derived} */ + e + ), i = o.parent; + i !== null && !(i.f & qt) && (o.f ^= qt); + } + return n && (o = /** @type {Derived} */ + e, Xr(o) && Ul(o)), e.v; +} +function wn(e) { + var t = en; + try { + return en = !0, e(); + } finally { + en = t; + } +} +const Xf = -7169; +function rn(e, t) { + e.f = e.f & Xf | t; +} +function j(e) { + if (!(typeof e != "object" || !e || e instanceof EventTarget)) { + if (Wn in e) + ps(e); + else if (!Array.isArray(e)) + for (let t in e) { + const n = e[t]; + typeof n == "object" && n && Wn in n && ps(n); + } + } +} +function ps(e, t = /* @__PURE__ */ new Set()) { + if (typeof e == "object" && e !== null && // We don't want to traverse DOM elements + !(e instanceof EventTarget) && !t.has(e)) { + t.add(e), e instanceof Date && e.getTime(); + for (let r in e) + try { + ps(e[r], t); + } catch { + } + const n = Fs(e); + if (n !== Object.prototype && n !== Array.prototype && n !== Map.prototype && n !== Set.prototype && n !== Date.prototype) { + const r = Zl(n); + for (let o in r) { + const i = r[o].get; + if (i) + try { + i.call(e); + } catch { + } + } + } + } +} +function iu(e) { + qe === null && je === null && Ef(), je !== null && je.f & qt && qe === null && $f(), Gs && kf(); +} +function Ff(e, t) { + var n = t.last; + n === null ? t.last = t.first = e : (n.next = e, e.prev = n, t.last = e); +} +function hr(e, t, n, r = !0) { + var o = (e & Yr) !== 0, i = qe, s = { + ctx: Ze, + deps: null, + nodes_start: null, + nodes_end: null, + f: e | In, + first: null, + fn: t, + last: null, + next: null, + parent: o ? null : i, + prev: null, + teardown: null, + transitions: null, + wv: 0 + }; + if (n) + try { + Ti(s), s.f |= hf; + } catch (u) { + throw Gt(s), u; + } + else t !== null && Hi(s); + var a = n && s.deps === null && s.first === null && s.nodes_start === null && s.teardown === null && (s.f & (Yl | ti)) === 0; + if (!a && !o && r && (i !== null && Ff(s, i), je !== null && je.f & nn)) { + var l = ( + /** @type {Derived} */ + je + ); + (l.effects ?? (l.effects = [])).push(s); + } + return s; +} +function su(e) { + const t = hr(Si, null, !1); + return rn(t, mt), t.teardown = e, t; +} +function Nr(e) { + iu(); + var t = qe !== null && (qe.f & On) !== 0 && Ze !== null && !Ze.m; + if (t) { + var n = ( + /** @type {ComponentContext} */ + Ze + ); + (n.e ?? (n.e = [])).push({ + fn: e, + effect: qe, + reaction: je + }); + } else { + var r = Ot(e); + return r; + } +} +function Wf(e) { + return iu(), Fr(e); +} +function Kf(e) { + const t = hr(Yr, e, !0); + return () => { + Gt(t); + }; +} +function qf(e) { + const t = hr(Yr, e, !0); + return (n = {}) => new Promise((r) => { + n.outro ? Mr(t, () => { + Gt(t), r(void 0); + }) : (Gt(t), r(void 0)); + }); +} +function Ot(e) { + return hr(Bl, e, !1); +} +function he(e, t) { + var n = ( + /** @type {ComponentContextLegacy} */ + Ze + ), r = { effect: null, ran: !1 }; + n.l.r1.push(r), r.effect = Fr(() => { + e(), !r.ran && (r.ran = !0, U(n.l.r2, !0), wn(t)); + }); +} +function gt() { + var e = ( + /** @type {ComponentContextLegacy} */ + Ze + ); + Fr(() => { + if (h(e.l.r2)) { + for (var t of e.l.r1) { + var n = t.effect; + n.f & mt && rn(n, gr), Xr(n) && Ti(n), t.ran = !1; + } + e.l.r2.v = !1; + } + }); +} +function Fr(e) { + return hr(Si, e, !0); +} +function Ee(e, t = [], n = Me) { + const r = t.map(n); + return vr(() => e(...r.map(h))); +} +function vr(e, t = 0) { + return hr(Si | Ys | t, e, !0); +} +function Dn(e, t = !0) { + return hr(Si | On, e, !0, t); +} +function au(e) { + var t = e.teardown; + if (t !== null) { + const n = Gs, r = je; + Da(!0), jn(null); + try { + t.call(null); + } finally { + Da(n), jn(r); + } + } +} +function lu(e, t = !1) { + var n = e.first; + for (e.first = e.last = null; n !== null; ) { + var r = n.next; + Gt(n, t), n = r; + } +} +function Gf(e) { + for (var t = e.first; t !== null; ) { + var n = t.next; + t.f & On || Gt(t), t = n; + } +} +function Gt(e, t = !0) { + var n = !1; + if ((t || e.f & pf) && e.nodes_start !== null) { + for (var r = e.nodes_start, o = e.nodes_end; r !== null; ) { + var i = r === o ? null : ( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(r) + ); + r.remove(), r = i; + } + n = !0; + } + lu(e, t && !n), ai(e, 0), rn(e, Pi); + var s = e.transitions; + if (s !== null) + for (const l of s) + l.stop(); + au(e); + var a = e.parent; + a !== null && a.first !== null && uu(e), e.next = e.prev = e.teardown = e.ctx = e.deps = e.fn = e.nodes_start = e.nodes_end = null; +} +function uu(e) { + var t = e.parent, n = e.prev, r = e.next; + n !== null && (n.next = r), r !== null && (r.prev = n), t !== null && (t.first === e && (t.first = r), t.last === e && (t.last = n)); +} +function Mr(e, t) { + var n = []; + Us(e, n, !0), cu(n, () => { + Gt(e), t && t(); + }); +} +function cu(e, t) { + var n = e.length; + if (n > 0) { + var r = () => --n || t(); + for (var o of e) + o.out(r); + } else + t(); +} +function Us(e, t, n) { + if (!(e.f & Mn)) { + if (e.f ^= Mn, e.transitions !== null) + for (const s of e.transitions) + (s.is_global || n) && t.push(s); + for (var r = e.first; r !== null; ) { + var o = r.next, i = (r.f & Zr) !== 0 || (r.f & On) !== 0; + Us(r, t, i ? n : !1), r = o; + } + } +} +function co(e) { + du(e, !0); +} +function du(e, t) { + if (e.f & Mn) { + e.f ^= Mn, e.f & mt || (e.f ^= mt), Xr(e) && (rn(e, In), Hi(e)); + for (var n = e.first; n !== null; ) { + var r = n.next, o = (n.f & Zr) !== 0 || (n.f & On) !== 0; + du(n, o ? t : !1), n = r; + } + if (e.transitions !== null) + for (const i of e.transitions) + (i.is_global || t) && i.in(); + } +} +function Vi(e) { + throw new Error("https://svelte.dev/e/lifecycle_outside_component"); +} +let Ze = null; +function Aa(e) { + Ze = e; +} +function ar(e) { + return ( + /** @type {T} */ + js().get(e) + ); +} +function Tr(e, t) { + return js().set(e, t), t; +} +function Uf(e) { + return js().has(e); +} +function de(e, t = !1, n) { + Ze = { + p: Ze, + c: null, + e: null, + m: !1, + s: e, + x: null, + l: null + }, Br && !t && (Ze.l = { + s: null, + u: null, + r1: [], + r2: Mt(!1) + }); +} +function fe(e) { + const t = Ze; + if (t !== null) { + e !== void 0 && (t.x = e); + const s = t.e; + if (s !== null) { + var n = qe, r = je; + t.e = null; + try { + for (var o = 0; o < s.length; o++) { + var i = s[o]; + Jn(i.effect), jn(i.reaction), Ot(i.fn); + } + } finally { + Jn(n), jn(r); + } + } + Ze = t.p, t.m = !0; + } + return e || /** @type {T} */ + {}; +} +function Di() { + return !Br || Ze !== null && Ze.l === null; +} +function js(e) { + return Ze === null && Vi(), Ze.c ?? (Ze.c = new Map(jf(Ze) || void 0)); +} +function jf(e) { + let t = e.p; + for (; t !== null; ) { + const n = t.c; + if (n !== null) + return n; + t = t.p; + } + return null; +} +function Jf(e) { + return e.endsWith("capture") && e !== "gotpointercapture" && e !== "lostpointercapture"; +} +const Qf = [ + "beforeinput", + "click", + "change", + "dblclick", + "contextmenu", + "focusin", + "focusout", + "input", + "keydown", + "keyup", + "mousedown", + "mousemove", + "mouseout", + "mouseover", + "mouseup", + "pointerdown", + "pointermove", + "pointerout", + "pointerover", + "pointerup", + "touchend", + "touchmove", + "touchstart" +]; +function e1(e) { + return Qf.includes(e); +} +const t1 = { + // no `class: 'className'` because we handle that separately + formnovalidate: "formNoValidate", + ismap: "isMap", + nomodule: "noModule", + playsinline: "playsInline", + readonly: "readOnly", + defaultvalue: "defaultValue", + defaultchecked: "defaultChecked", + srcobject: "srcObject", + novalidate: "noValidate", + allowfullscreen: "allowFullscreen", + disablepictureinpicture: "disablePictureInPicture", + disableremoteplayback: "disableRemotePlayback" +}; +function n1(e) { + return e = e.toLowerCase(), t1[e] ?? e; +} +const r1 = ["touchstart", "touchmove"]; +function o1(e) { + return r1.includes(e); +} +const i1 = ( + /** @type {const} */ + ["textarea", "script", "style", "title"] +); +function s1(e) { + return i1.includes( + /** @type {RAW_TEXT_ELEMENTS[number]} */ + e + ); +} +function a1(e, t) { + if (t) { + const n = document.body; + e.autofocus = !0, ko(() => { + document.activeElement === n && e.focus(); + }); + } +} +function l1(e) { + Pe && /* @__PURE__ */ bt(e) !== null && qs(e); +} +let La = !1; +function u1() { + La || (La = !0, document.addEventListener( + "reset", + (e) => { + Promise.resolve().then(() => { + var t; + if (!e.defaultPrevented) + for ( + const n of + /**@type {HTMLFormElement} */ + e.target.elements + ) + (t = n.__on_r) == null || t.call(n); + }); + }, + // In the capture phase to guarantee we get noticed of it (no possiblity of stopPropagation) + { capture: !0 } + )); +} +function c1(e) { + var t = je, n = qe; + jn(null), Jn(null); + try { + return e(); + } finally { + jn(t), Jn(n); + } +} +const fu = /* @__PURE__ */ new Set(), ms = /* @__PURE__ */ new Set(); +function gu(e, t, n, r = {}) { + function o(i) { + if (r.capture || eo.call(t, i), !i.cancelBubble) + return c1(() => n == null ? void 0 : n.call(this, i)); + } + return e.startsWith("pointer") || e.startsWith("touch") || e === "wheel" ? ko(() => { + t.addEventListener(e, o, r); + }) : t.addEventListener(e, o, r), o; +} +function Ye(e, t, n, r, o) { + var i = { capture: r, passive: o }, s = gu(e, t, n, i); + (t === document.body || t === window || t === document) && su(() => { + t.removeEventListener(e, s, i); + }); +} +function Ai(e) { + for (var t = 0; t < e.length; t++) + fu.add(e[t]); + for (var n of ms) + n(e); +} +function eo(e) { + var m; + var t = this, n = ( + /** @type {Node} */ + t.ownerDocument + ), r = e.type, o = ((m = e.composedPath) == null ? void 0 : m.call(e)) || [], i = ( + /** @type {null | Element} */ + o[0] || e.target + ), s = 0, a = e.__root; + if (a) { + var l = o.indexOf(a); + if (l !== -1 && (t === document || t === /** @type {any} */ + window)) { + e.__root = t; + return; + } + var u = o.indexOf(t); + if (u === -1) + return; + l <= u && (s = l); + } + if (i = /** @type {Element} */ + o[s] || e.target, i !== t) { + so(e, "currentTarget", { + configurable: !0, + get() { + return i || n; + } + }); + var c = je, f = qe; + jn(null), Jn(null); + try { + for (var d, g = []; i !== null; ) { + var p = i.assignedSlot || i.parentNode || /** @type {any} */ + i.host || null; + try { + var x = i["__" + r]; + if (x !== void 0 && (!/** @type {any} */ + i.disabled || // DOM could've been updated already by the time this is reached, so we check this as well + // -> the target could not have been disabled because it emits the event in the first place + e.target === i)) + if (Co(x)) { + var [C, ...$] = x; + C.apply(i, [e, ...$]); + } else + x.call(i, e); + } catch (_) { + d ? g.push(_) : d = _; + } + if (e.cancelBubble || p === t || p === null) + break; + i = p; + } + if (d) { + for (let _ of g) + queueMicrotask(() => { + throw _; + }); + throw d; + } + } finally { + e.__root = t, delete e.currentTarget, jn(c), Jn(f); + } + } +} +function Js(e) { + var t = document.createElement("template"); + return t.innerHTML = e, t.content; +} +function Vt(e, t) { + var n = ( + /** @type {Effect} */ + qe + ); + n.nodes_start === null && (n.nodes_start = e, n.nodes_end = t); +} +// @__NO_SIDE_EFFECTS__ +function ne(e, t) { + var n = (t & zl) !== 0, r = (t & gf) !== 0, o, i = !e.startsWith(""); + return () => { + if (Pe) + return Vt(De, null), De; + o === void 0 && (o = Js(i ? e : "" + e), n || (o = /** @type {Node} */ + /* @__PURE__ */ bt(o))); + var s = ( + /** @type {TemplateNode} */ + r || jl ? document.importNode(o, !0) : o.cloneNode(!0) + ); + if (n) { + var a = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(s) + ), l = ( + /** @type {TemplateNode} */ + s.lastChild + ); + Vt(a, l); + } else + Vt(s, s); + return s; + }; +} +// @__NO_SIDE_EFFECTS__ +function _e(e, t, n = "svg") { + var r = !e.startsWith(""), o = (t & zl) !== 0, i = `<${n}>${r ? e : "" + e}`, s; + return () => { + if (Pe) + return Vt(De, null), De; + if (!s) { + var a = ( + /** @type {DocumentFragment} */ + Js(i) + ), l = ( + /** @type {Element} */ + /* @__PURE__ */ bt(a) + ); + if (o) + for (s = document.createDocumentFragment(); /* @__PURE__ */ bt(l); ) + s.appendChild( + /** @type {Node} */ + /* @__PURE__ */ bt(l) + ); + else + s = /** @type {Element} */ + /* @__PURE__ */ bt(l); + } + var u = ( + /** @type {TemplateNode} */ + s.cloneNode(!0) + ); + if (o) { + var c = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(u) + ), f = ( + /** @type {TemplateNode} */ + u.lastChild + ); + Vt(c, f); + } else + Vt(u, u); + return u; + }; +} +function Ie(e = "") { + if (!Pe) { + var t = Vn(e + ""); + return Vt(t, t), t; + } + var n = De; + return n.nodeType !== 3 && (n.before(n = Vn()), Ct(n)), Vt(n, n), n; +} +function et() { + if (Pe) + return Vt(De, null), De; + var e = document.createDocumentFragment(), t = document.createComment(""), n = Vn(); + return e.append(t, n), Vt(t, n), e; +} +function L(e, t) { + if (Pe) { + qe.nodes_end = De, yn(); + return; + } + e !== null && e.before( + /** @type {Node} */ + t + ); +} +function Rt(e, t) { + var n = t == null ? "" : typeof t == "object" ? t + "" : t; + n !== (e.__t ?? (e.__t = e.nodeValue)) && (e.__t = n, e.nodeValue = n + ""); +} +function hu(e, t) { + return vu(e, t); +} +function d1(e, t) { + vs(), t.intro = t.intro ?? !1; + const n = t.target, r = Pe, o = De; + try { + for (var i = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(n) + ); i && (i.nodeType !== 8 || /** @type {Comment} */ + i.data !== zs); ) + i = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(i); + if (!i) + throw _r; + It(!0), Ct( + /** @type {Comment} */ + i + ), yn(); + const s = vu(e, { ...t, anchor: i }); + if (De === null || De.nodeType !== 8 || /** @type {Comment} */ + De.data !== Bs) + throw Ni(), _r; + return It(!1), /** @type {Exports} */ + s; + } catch (s) { + if (s === _r) + return t.recover === !1 && Pf(), vs(), qs(n), It(!1), hu(e, t); + throw s; + } finally { + It(r), Ct(o); + } +} +const mr = /* @__PURE__ */ new Map(); +function vu(e, { target: t, anchor: n, props: r = {}, events: o, context: i, intro: s = !0 }) { + vs(); + var a = /* @__PURE__ */ new Set(), l = (f) => { + for (var d = 0; d < f.length; d++) { + var g = f[d]; + if (!a.has(g)) { + a.add(g); + var p = o1(g); + t.addEventListener(g, eo, { passive: p }); + var x = mr.get(g); + x === void 0 ? (document.addEventListener(g, eo, { passive: p }), mr.set(g, 1)) : mr.set(g, x + 1); + } + } + }; + l(Xs(fu)), ms.add(l); + var u = void 0, c = qf(() => { + var f = n ?? t.appendChild(Vn()); + return Dn(() => { + if (i) { + de({}); + var d = ( + /** @type {ComponentContext} */ + Ze + ); + d.c = i; + } + o && (r.$$events = o), Pe && Vt( + /** @type {TemplateNode} */ + f, + null + ), u = e(f, r) || {}, Pe && (qe.nodes_end = De), i && fe(); + }), () => { + var p; + for (var d of a) { + t.removeEventListener(d, eo); + var g = ( + /** @type {number} */ + mr.get(d) + ); + --g === 0 ? (document.removeEventListener(d, eo), mr.delete(d)) : mr.set(d, g); + } + ms.delete(l), f !== n && ((p = f.parentNode) == null || p.removeChild(f)); + }; + }); + return ys.set(u, c), u; +} +let ys = /* @__PURE__ */ new WeakMap(); +function f1(e, t) { + const n = ys.get(e); + return n ? (ys.delete(e), n(t)) : Promise.resolve(); +} +function ke(e, t, [n, r] = [0, 0]) { + Pe && n === 0 && yn(); + var o = e, i = null, s = null, a = Pt, l = n > 0 ? Zr : 0, u = !1; + const c = (d, g = !0) => { + u = !0, f(g, d); + }, f = (d, g) => { + if (a === (a = d)) return; + let p = !1; + if (Pe && r !== -1) { + if (n === 0) { + const C = ( + /** @type {Comment} */ + o.data + ); + C === zs ? r = 0 : C === Rs ? r = 1 / 0 : (r = parseInt(C.substring(1)), r !== r && (r = a ? 1 / 0 : -1)); + } + const x = r > n; + !!a === x && (o = hs(), Ct(o), It(!1), p = !0, r = -1); + } + a ? (i ? co(i) : g && (i = Dn(() => g(o))), s && Mr(s, () => { + s = null; + })) : (s ? co(s) : g && (s = Dn(() => g(o, [n + 1, r]))), i && Mr(i, () => { + i = null; + })), p && It(!0); + }; + vr(() => { + u = !1, t(c), u || f(null, null); + }, l), Pe && (o = De); +} +function Li(e, t) { + return t; +} +function g1(e, t, n, r) { + for (var o = [], i = t.length, s = 0; s < i; s++) + Us(t[s].e, o, !0); + var a = i > 0 && o.length === 0 && n !== null; + if (a) { + var l = ( + /** @type {Element} */ + /** @type {Element} */ + n.parentNode + ); + qs(l), l.append( + /** @type {Element} */ + n + ), r.clear(), Bn(e, t[0].prev, t[i - 1].next); + } + cu(o, () => { + for (var u = 0; u < i; u++) { + var c = t[u]; + a || (r.delete(c.k), Bn(e, c.prev, c.next)), Gt(c.e, !a); + } + }); +} +function Yt(e, t, n, r, o, i = null) { + var s = e, a = { flags: t, items: /* @__PURE__ */ new Map(), first: null }, l = (t & Ol) !== 0; + if (l) { + var u = ( + /** @type {Element} */ + e + ); + s = Pe ? Ct( + /** @type {Comment | Text} */ + /* @__PURE__ */ bt(u) + ) : u.appendChild(Vn()); + } + Pe && yn(); + var c = null, f = !1, d = /* @__PURE__ */ pe(() => { + var g = n(); + return Co(g) ? g : g == null ? [] : Xs(g); + }); + vr(() => { + var g = h(d), p = g.length; + if (f && p === 0) + return; + f = p === 0; + let x = !1; + if (Pe) { + var C = ( + /** @type {Comment} */ + s.data === Rs + ); + C !== (p === 0) && (s = hs(), Ct(s), It(!1), x = !0); + } + if (Pe) { + for (var $ = null, m, _ = 0; _ < p; _++) { + if (De.nodeType === 8 && /** @type {Comment} */ + De.data === Bs) { + s = /** @type {Comment} */ + De, x = !0, It(!1); + break; + } + var v = g[_], b = r(v, _); + m = pu( + De, + a, + $, + null, + v, + b, + _, + o, + t, + n + ), a.items.set(b, m), $ = m; + } + p > 0 && Ct(hs()); + } + Pe || h1(g, a, s, o, t, r, n), i !== null && (p === 0 ? c ? co(c) : c = Dn(() => i(s)) : c !== null && Mr(c, () => { + c = null; + })), x && It(!0), h(d); + }), Pe && (s = De); +} +function h1(e, t, n, r, o, i, s) { + var S, T, k, P; + var a = (o & af) !== 0, l = (o & (Os | Is)) !== 0, u = e.length, c = t.items, f = t.first, d = f, g, p = null, x, C = [], $ = [], m, _, v, b; + if (a) + for (b = 0; b < u; b += 1) + m = e[b], _ = i(m, b), v = c.get(_), v !== void 0 && ((S = v.a) == null || S.measure(), (x ?? (x = /* @__PURE__ */ new Set())).add(v)); + for (b = 0; b < u; b += 1) { + if (m = e[b], _ = i(m, b), v = c.get(_), v === void 0) { + var N = d ? ( + /** @type {TemplateNode} */ + d.e.nodes_start + ) : n; + p = pu( + N, + t, + p, + p === null ? t.first : p.next, + m, + _, + b, + r, + o, + s + ), c.set(_, p), C = [], $ = [], d = p.next; + continue; + } + if (l && v1(v, m, b, o), v.e.f & Mn && (co(v.e), a && ((T = v.a) == null || T.unfix(), (x ?? (x = /* @__PURE__ */ new Set())).delete(v))), v !== d) { + if (g !== void 0 && g.has(v)) { + if (C.length < $.length) { + var E = $[0], M; + p = E.prev; + var D = C[0], V = C[C.length - 1]; + for (M = 0; M < C.length; M += 1) + Oa(C[M], E, n); + for (M = 0; M < $.length; M += 1) + g.delete($[M]); + Bn(t, D.prev, V.next), Bn(t, p, D), Bn(t, V, E), d = E, p = V, b -= 1, C = [], $ = []; + } else + g.delete(v), Oa(v, d, n), Bn(t, v.prev, v.next), Bn(t, v, p === null ? t.first : p.next), Bn(t, p, v), p = v; + continue; + } + for (C = [], $ = []; d !== null && d.k !== _; ) + d.e.f & Mn || (g ?? (g = /* @__PURE__ */ new Set())).add(d), $.push(d), d = d.next; + if (d === null) + continue; + v = d; + } + C.push(v), p = v, d = v.next; + } + if (d !== null || g !== void 0) { + for (var A = g === void 0 ? [] : Xs(g); d !== null; ) + d.e.f & Mn || A.push(d), d = d.next; + var O = A.length; + if (O > 0) { + var R = o & Ol && u === 0 ? n : null; + if (a) { + for (b = 0; b < O; b += 1) + (k = A[b].a) == null || k.measure(); + for (b = 0; b < O; b += 1) + (P = A[b].a) == null || P.fix(); + } + g1(t, A, R, c); + } + } + a && ko(() => { + var H; + if (x !== void 0) + for (v of x) + (H = v.a) == null || H.apply(); + }), qe.first = t.first && t.first.e, qe.last = p && p.e; +} +function v1(e, t, n, r) { + r & Os && gs(e.v, t), r & Is ? gs( + /** @type {Value} */ + e.i, + n + ) : e.i = n; +} +function pu(e, t, n, r, o, i, s, a, l, u) { + var c = (l & Os) !== 0, f = (l & lf) === 0, d = c ? f ? /* @__PURE__ */ $o(o) : Mt(o) : o, g = l & Is ? Mt(s) : s, p = { + i: g, + v: d, + k: i, + a: null, + // @ts-expect-error + e: null, + prev: n, + next: r + }; + try { + return p.e = Dn(() => a(e, d, g, u), Pe), p.e.prev = n && n.e, p.e.next = r && r.e, n === null ? t.first = p : (n.next = p, n.e.next = p.e), r !== null && (r.prev = p, r.e.prev = p.e), p; + } finally { + } +} +function Oa(e, t, n) { + for (var r = e.next ? ( + /** @type {TemplateNode} */ + e.next.e.nodes_start + ) : n, o = t ? ( + /** @type {TemplateNode} */ + t.e.nodes_start + ) : n, i = ( + /** @type {TemplateNode} */ + e.e.nodes_start + ); i !== r; ) { + var s = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(i) + ); + o.before(i), i = s; + } +} +function Bn(e, t, n) { + t === null ? e.first = n : (t.next = n, t.e.next = n && n.e), n !== null && (n.prev = t, n.e.prev = t && t.e); +} +function mu(e, t, n, r, o) { + var i = e, s = "", a; + vr(() => { + if (s === (s = t() ?? "")) { + Pe && yn(); + return; + } + a !== void 0 && (Gt(a), a = void 0), s !== "" && (a = Dn(() => { + if (Pe) { + De.data; + for (var l = yn(), u = l; l !== null && (l.nodeType !== 8 || /** @type {Comment} */ + l.data !== ""); ) + u = l, l = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(l); + if (l === null) + throw Ni(), _r; + Vt(De, u), i = Ct(l); + return; + } + var c = s + "", f = Js(c); + Vt( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(f), + /** @type {TemplateNode} */ + f.lastChild + ), i.before(f); + })); + }); +} +function pt(e, t, n, r, o) { + var a; + Pe && yn(); + var i = (a = t.$$slots) == null ? void 0 : a[n], s = !1; + i === !0 && (i = t[n === "default" ? "children" : n], s = !0), i === void 0 || i(e, s ? () => r : r); +} +function p1(e) { + const t = {}; + e.children && (t.default = !0); + for (const n in e.$$slots) + t[n] = !0; + return t; +} +function lr(e, t, ...n) { + var r = e, o = dt, i; + vr(() => { + o !== (o = t()) && (i && (Gt(i), i = null), i = Dn(() => ( + /** @type {SnippetFn} */ + o(r, ...n) + ))); + }, Zr), Pe && (r = De); +} +function yu(e, t, n) { + Pe && yn(); + var r = e, o, i; + vr(() => { + o !== (o = t()) && (i && (Mr(i), i = null), o && (i = Dn(() => n(r, o)))); + }, Zr), Pe && (r = De); +} +function m1(e, t, n, r, o, i) { + let s = Pe; + Pe && yn(); + var a, l, u = null; + Pe && De.nodeType === 1 && (u = /** @type {Element} */ + De, yn()); + var c = ( + /** @type {TemplateNode} */ + Pe ? De : e + ), f; + vr(() => { + const d = t() || null; + var g = d === "svg" ? Rl : null; + d !== a && (f && (d === null ? Mr(f, () => { + f = null, l = null; + }) : d === l ? co(f) : Gt(f)), d && d !== l && (f = Dn(() => { + if (u = Pe ? ( + /** @type {Element} */ + u + ) : g ? document.createElementNS(g, d) : document.createElement(d), Vt(u, u), r) { + Pe && s1(d) && u.append(document.createComment("")); + var p = ( + /** @type {TemplateNode} */ + Pe ? /* @__PURE__ */ bt(u) : u.appendChild(Vn()) + ); + Pe && (p === null ? It(!1) : Ct(p)), r(u, p); + } + qe.nodes_end = u, c.before(u); + })), a = d, a && (l = a)); + }, Zr), s && (It(!0), Ct(c)); +} +function Je(e, t) { + ko(() => { + var n = e.getRootNode(), r = ( + /** @type {ShadowRoot} */ + n.host ? ( + /** @type {ShadowRoot} */ + n + ) : ( + /** @type {Document} */ + n.head ?? /** @type {Document} */ + n.ownerDocument.head + ) + ); + if (!r.querySelector("#" + t.hash)) { + const o = document.createElement("style"); + o.id = t.hash, o.textContent = t.code, r.appendChild(o); + } + }); +} +function vt(e, t, n) { + Ot(() => { + var r = wn(() => t(e, n == null ? void 0 : n()) || {}); + if (n && (r != null && r.update)) { + var o = !1, i = ( + /** @type {any} */ + {} + ); + Fr(() => { + var s = n(); + j(s), o && Ws(i, s) && (i = s, r.update(s)); + }), o = !0; + } + if (r != null && r.destroy) + return () => ( + /** @type {Function} */ + r.destroy() + ); + }); +} +function wu(e) { + var t, n, r = ""; + if (typeof e == "string" || typeof e == "number") r += e; + else if (typeof e == "object") if (Array.isArray(e)) { + var o = e.length; + for (t = 0; t < o; t++) e[t] && (n = wu(e[t])) && (r && (r += " "), r += n); + } else for (n in e) e[n] && (r && (r += " "), r += n); + return r; +} +function y1() { + for (var e, t, n = 0, r = "", o = arguments.length; n < o; n++) (e = arguments[n]) && (t = wu(e)) && (r && (r += " "), r += t); + return r; +} +function bn(e) { + return typeof e == "object" ? y1(e) : e ?? ""; +} +const Ia = [...` +\r\f \v\uFEFF`]; +function w1(e, t, n) { + var r = e == null ? "" : "" + e; + if (t && (r = r ? r + " " + t : t), n) { + for (var o in n) + if (n[o]) + r = r ? r + " " + o : o; + else if (r.length) + for (var i = o.length, s = 0; (s = r.indexOf(o, s)) >= 0; ) { + var a = s + i; + (s === 0 || Ia.includes(r[s - 1])) && (a === r.length || Ia.includes(r[a])) ? r = (s === 0 ? "" : r.substring(0, s)) + r.substring(a + 1) : s = a; + } + } + return r === "" ? null : r; +} +function kt(e, t, n, r, o, i) { + var s = e.__className; + if (Pe || s !== n) { + var a = w1(n, r, i); + (!Pe || a !== e.getAttribute("class")) && (a == null ? e.removeAttribute("class") : t ? e.className = a : e.setAttribute("class", a)), e.__className = n; + } else if (i) + for (var l in i) { + var u = !!i[l]; + (o == null || u !== !!o[l]) && e.classList.toggle(l, u); + } + return i; +} +const jr = Symbol("class"); +function io(e) { + if (Pe) { + var t = !1, n = () => { + if (!t) { + if (t = !0, e.hasAttribute("value")) { + var r = e.value; + ce(e, "value", null), e.value = r; + } + if (e.hasAttribute("checked")) { + var o = e.checked; + ce(e, "checked", null), e.checked = o; + } + } + }; + e.__on_r = n, Cf(n), u1(); + } +} +function Qi(e, t) { + var n = e.__attributes ?? (e.__attributes = {}); + n.value === (n.value = // treat null and undefined the same for the initial value + t ?? void 0) || // @ts-expect-error + // `progress` elements always need their value set when it's `0` + e.value === t && (t !== 0 || e.nodeName !== "PROGRESS") || (e.value = t ?? ""); +} +function _1(e, t) { + t ? e.hasAttribute("selected") || e.setAttribute("selected", "") : e.removeAttribute("selected"); +} +function ce(e, t, n, r) { + var o = e.__attributes ?? (e.__attributes = {}); + Pe && (o[t] = e.getAttribute(t), t === "src" || t === "srcset" || t === "href" && e.nodeName === "LINK") || o[t] !== (o[t] = n) && (t === "style" && "__styles" in e && (e.__styles = {}), t === "loading" && (e[mf] = n), n == null ? e.removeAttribute(t) : typeof n != "string" && _u(e).includes(t) ? e[t] = n : e.setAttribute(t, n)); +} +function on(e, t, n, r, o = !1, i = !1, s = !1) { + let a = Pe && i; + a && It(!1); + var l = t || {}, u = e.tagName === "OPTION"; + for (var c in t) + c in n || (n[c] = null); + n.class ? n.class = bn(n.class) : (r || n[jr]) && (n.class = null); + var f = _u(e), d = ( + /** @type {Record} **/ + e.__attributes ?? (e.__attributes = {}) + ); + for (const _ in n) { + let v = n[_]; + if (u && _ === "value" && v == null) { + e.value = e.__value = "", l[_] = v; + continue; + } + if (_ === "class") { + var g = e.namespaceURI === "http://www.w3.org/1999/xhtml"; + kt(e, g, v, r, t == null ? void 0 : t[jr], n[jr]), l[_] = v, l[jr] = n[jr]; + continue; + } + var p = l[_]; + if (v !== p) { + l[_] = v; + var x = _[0] + _[1]; + if (x !== "$$") { + if (x === "on") { + const b = {}, N = "$$" + _; + let E = _.slice(2); + var C = e1(E); + if (Jf(E) && (E = E.slice(0, -7), b.capture = !0), !C && p) { + if (v != null) continue; + e.removeEventListener(E, l[N], b), l[N] = null; + } + if (v != null) + if (C) + e[`__${E}`] = v, Ai([E]); + else { + let M = function(D) { + l[_].call(this, D); + }; + l[N] = gu(E, e, M, b); + } + else C && (e[`__${E}`] = void 0); + } else if (_ === "style" && v != null) + e.style.cssText = v + ""; + else if (_ === "autofocus") + a1( + /** @type {HTMLElement} */ + e, + !!v + ); + else if (!i && (_ === "__value" || _ === "value" && v != null)) + e.value = e.__value = v; + else if (_ === "selected" && u) + _1( + /** @type {HTMLOptionElement} */ + e, + v + ); + else { + var $ = _; + o || ($ = n1($)); + var m = $ === "defaultValue" || $ === "defaultChecked"; + if (v == null && !i && !m) + if (d[_] = null, $ === "value" || $ === "checked") { + let b = ( + /** @type {HTMLInputElement} */ + e + ); + const N = t === void 0; + if ($ === "value") { + let E = b.defaultValue; + b.removeAttribute($), b.defaultValue = E, b.value = b.__value = N ? E : null; + } else { + let E = b.defaultChecked; + b.removeAttribute($), b.defaultChecked = E, b.checked = N ? E : !1; + } + } else + e.removeAttribute(_); + else m || f.includes($) && (i || typeof v != "string") ? e[$] = v : typeof v != "function" && ce(e, $, v); + } + _ === "style" && "__styles" in e && (e.__styles = {}); + } + } + } + return a && It(!0), l; +} +var za = /* @__PURE__ */ new Map(); +function _u(e) { + var t = za.get(e.nodeName); + if (t) return t; + za.set(e.nodeName, t = []); + for (var n, r = e, o = Element.prototype; o !== r; ) { + n = Zl(r); + for (var i in n) + n[i].set && t.push(i); + r = Fs(r); + } + return t; +} +function st(e, t, n, r) { + var o = e.__styles ?? (e.__styles = {}); + o[t] !== n && (o[t] = n, n == null ? e.style.removeProperty(t) : e.style.setProperty(t, n, "")); +} +var Zn, Pr, bo, $i, xu; +const Ei = class Ei { + /** @param {ResizeObserverOptions} options */ + constructor(t) { + rr(this, $i); + /** */ + rr(this, Zn, /* @__PURE__ */ new WeakMap()); + /** @type {ResizeObserver | undefined} */ + rr(this, Pr); + /** @type {ResizeObserverOptions} */ + rr(this, bo); + Gr(this, bo, t); + } + /** + * @param {Element} element + * @param {(entry: ResizeObserverEntry) => any} listener + */ + observe(t, n) { + var r = it(this, Zn).get(t) || /* @__PURE__ */ new Set(); + return r.add(n), it(this, Zn).set(t, r), Na(this, $i, xu).call(this).observe(t, it(this, bo)), () => { + var o = it(this, Zn).get(t); + o.delete(n), o.size === 0 && (it(this, Zn).delete(t), it(this, Pr).unobserve(t)); + }; + } +}; +Zn = new WeakMap(), Pr = new WeakMap(), bo = new WeakMap(), $i = new WeakSet(), xu = function() { + return it(this, Pr) ?? Gr(this, Pr, new ResizeObserver( + /** @param {any} entries */ + (t) => { + for (var n of t) { + Ei.entries.set(n.target, n); + for (var r of it(this, Zn).get(n.target) || []) + r(n); + } + } + )); +}, /** @static */ +wt(Ei, "entries", /* @__PURE__ */ new WeakMap()); +let ws = Ei; +var x1 = /* @__PURE__ */ new ws({ + box: "border-box" +}); +function Ra(e, t, n) { + var r = x1.observe(e, () => n(e[t])); + Ot(() => (wn(() => n(e[t])), r)); +} +function Ba(e, t) { + return e === t || (e == null ? void 0 : e[Wn]) === t; +} +function An(e = {}, t, n, r) { + return Ot(() => { + var o, i; + return Fr(() => { + o = i, i = [], wn(() => { + e !== n(...i) && (t(e, ...i), o && Ba(n(...o), e) && t(null, ...o)); + }); + }), () => { + ko(() => { + i && Ba(n(...i), e) && t(null, ...i); + }); + }; + }), e; +} +function es(e) { + return function(...t) { + var n = ( + /** @type {Event} */ + t[0] + ); + return n.stopPropagation(), e == null ? void 0 : e.apply(this, t); + }; +} +function He(e = !1) { + const t = ( + /** @type {ComponentContextLegacy} */ + Ze + ), n = t.l.u; + if (!n) return; + let r = () => j(t.s); + if (e) { + let o = 0, i = ( + /** @type {Record} */ + {} + ); + const s = /* @__PURE__ */ Me(() => { + let a = !1; + const l = t.s; + for (const u in l) + l[u] !== i[u] && (i[u] = l[u], a = !0); + return a && o++, o; + }); + r = () => h(s); + } + n.b.length && Wf(() => { + Ya(t, r), ao(n.b); + }), Nr(() => { + const o = wn(() => n.m.map(xf)); + return () => { + for (const i of o) + typeof i == "function" && i(); + }; + }), n.a.length && Nr(() => { + Ya(t, r), ao(n.a); + }); +} +function Ya(e, t) { + if (e.l.s) + for (const n of e.l.s) h(n); + t(); +} +function Ve(e, t) { + var i; + var n = ( + /** @type {Record} */ + (i = e.$$events) == null ? void 0 : i[t.type] + ), r = Co(n) ? n.slice() : n == null ? [] : [n]; + for (var o of r) + o.call(this, t); +} +function un(e) { + Ze === null && Vi(), Br && Ze.l !== null ? C1(Ze).m.push(e) : Nr(() => { + const t = wn(e); + if (typeof t == "function") return ( + /** @type {() => void} */ + t + ); + }); +} +function Qs(e) { + Ze === null && Vi(), un(() => () => wn(e)); +} +function b1(e, t, { bubbles: n = !1, cancelable: r = !1 } = {}) { + return new CustomEvent(e, { detail: t, bubbles: n, cancelable: r }); +} +function Oi() { + const e = Ze; + return e === null && Vi(), (t, n, r) => { + var i; + const o = ( + /** @type {Record} */ + (i = e.s.$$events) == null ? void 0 : i[ + /** @type {any} */ + t + ] + ); + if (o) { + const s = Co(o) ? o.slice() : [o], a = b1( + /** @type {string} */ + t, + n, + r + ); + for (const l of s) + l.call(e.x, a); + return !a.defaultPrevented; + } + return !0; + }; +} +function C1(e) { + var t = ( + /** @type {ComponentContextLegacy} */ + e.l + ); + return t.u ?? (t.u = { a: [], b: [], m: [] }); +} +function ea(e, t, n) { + if (e == null) + return t(void 0), n && n(void 0), dt; + const r = wn( + () => e.subscribe( + t, + // @ts-expect-error + n + ) + ); + return r.unsubscribe ? () => r.unsubscribe() : r; +} +const yr = []; +function Ft(e, t) { + return { + subscribe: we(e, t).subscribe + }; +} +function we(e, t = dt) { + let n = null; + const r = /* @__PURE__ */ new Set(); + function o(a) { + if (Ws(e, a) && (e = a, n)) { + const l = !yr.length; + for (const u of r) + u[1](), yr.push(u, e); + if (l) { + for (let u = 0; u < yr.length; u += 2) + yr[u][0](yr[u + 1]); + yr.length = 0; + } + } + } + function i(a) { + o(a( + /** @type {T} */ + e + )); + } + function s(a, l = dt) { + const u = [a, l]; + return r.add(u), r.size === 1 && (n = t(o, i) || dt), a( + /** @type {T} */ + e + ), () => { + r.delete(u), r.size === 0 && n && (n(), n = null); + }; + } + return { set: o, update: i, subscribe: s }; +} +function Kn(e, t, n) { + const r = !Array.isArray(e), o = r ? [e] : e; + if (!o.every(Boolean)) + throw new Error("derived() expects stores as input, got a falsy value"); + const i = t.length < 2; + return Ft(n, (s, a) => { + let l = !1; + const u = []; + let c = 0, f = dt; + const d = () => { + if (c) + return; + f(); + const p = t(r ? u[0] : u, s, a); + i ? s(p) : f = typeof p == "function" ? p : dt; + }, g = o.map( + (p, x) => ea( + p, + (C) => { + u[x] = C, c &= ~(1 << x), l && d(); + }, + () => { + c |= 1 << x; + } + ) + ); + return l = !0, d(), function() { + ao(g), f(), l = !1; + }; + }); +} +function q(e) { + let t; + return ea(e, (n) => t = n)(), t; +} +let Bo = !1, _s = Symbol(); +function Q(e, t, n) { + const r = n[t] ?? (n[t] = { + store: null, + source: /* @__PURE__ */ $o(void 0), + unsubscribe: dt + }); + if (r.store !== e && !(_s in n)) + if (r.unsubscribe(), r.store = e ?? null, e == null) + r.source.v = void 0, r.unsubscribe = dt; + else { + var o = !0; + r.unsubscribe = ea(e, (i) => { + o ? r.source.v = i : U(r.source, i); + }), o = !1; + } + return e && _s in n ? q(e) : h(r.source); +} +function k1(e, t, n) { + let r = n[t]; + return r && r.store !== e && (r.unsubscribe(), r.unsubscribe = dt), e; +} +function li(e, t) { + return e.set(t), t; +} +function tt() { + const e = {}; + function t() { + su(() => { + for (var n in e) + e[n].unsubscribe(); + so(e, _s, { + enumerable: !1, + value: !0 + }); + }); + } + return [e, t]; +} +function $1(e) { + var t = Bo; + try { + return Bo = !1, [e(), Bo]; + } finally { + Bo = t; + } +} +const E1 = { + get(e, t) { + if (!e.exclude.includes(t)) + return e.props[t]; + }, + set(e, t) { + return !1; + }, + getOwnPropertyDescriptor(e, t) { + if (!e.exclude.includes(t) && t in e.props) + return { + enumerable: !0, + configurable: !0, + value: e.props[t] + }; + }, + has(e, t) { + return e.exclude.includes(t) ? !1 : t in e.props; + }, + ownKeys(e) { + return Reflect.ownKeys(e.props).filter((t) => !e.exclude.includes(t)); + } +}; +// @__NO_SIDE_EFFECTS__ +function yt(e, t, n) { + return new Proxy( + { props: e, exclude: t }, + E1 + ); +} +const S1 = { + get(e, t) { + if (!e.exclude.includes(t)) + return h(e.version), t in e.special ? e.special[t]() : e.props[t]; + }, + set(e, t, n) { + return t in e.special || (e.special[t] = w( + { + get [t]() { + return e.props[t]; + } + }, + /** @type {string} */ + t, + Il + )), e.special[t](n), Ha(e.version), !0; + }, + getOwnPropertyDescriptor(e, t) { + if (!e.exclude.includes(t) && t in e.props) + return { + enumerable: !0, + configurable: !0, + value: e.props[t] + }; + }, + deleteProperty(e, t) { + return e.exclude.includes(t) || (e.exclude.push(t), Ha(e.version)), !0; + }, + has(e, t) { + return e.exclude.includes(t) ? !1 : t in e.props; + }, + ownKeys(e) { + return Reflect.ownKeys(e.props).filter((t) => !e.exclude.includes(t)); + } +}; +function nt(e, t) { + return new Proxy({ props: e, exclude: t, special: {}, version: Mt(0) }, S1); +} +const P1 = { + get(e, t) { + let n = e.props.length; + for (; n--; ) { + let r = e.props[n]; + if (Ur(r) && (r = r()), typeof r == "object" && r !== null && t in r) return r[t]; + } + }, + set(e, t, n) { + let r = e.props.length; + for (; r--; ) { + let o = e.props[r]; + Ur(o) && (o = o()); + const i = Tn(o, t); + if (i && i.set) + return i.set(n), !0; + } + return !1; + }, + getOwnPropertyDescriptor(e, t) { + let n = e.props.length; + for (; n--; ) { + let r = e.props[n]; + if (Ur(r) && (r = r()), typeof r == "object" && r !== null && t in r) { + const o = Tn(r, t); + return o && !o.configurable && (o.configurable = !0), o; + } + } + }, + has(e, t) { + if (t === Wn || t === Zs) return !1; + for (let n of e.props) + if (Ur(n) && (n = n()), n != null && t in n) return !0; + return !1; + }, + ownKeys(e) { + const t = []; + for (let n of e.props) { + Ur(n) && (n = n()); + for (const r in n) + t.includes(r) || t.push(r); + } + return t; + } +}; +function ut(...e) { + return new Proxy({ props: e }, P1); +} +function w(e, t, n, r) { + var N; + var o = (n & uf) !== 0, i = !Br || (n & cf) !== 0, s = (n & df) !== 0, a = (n & ff) !== 0, l = !1, u; + s ? [u, l] = $1(() => ( + /** @type {V} */ + e[t] + )) : u = /** @type {V} */ + e[t]; + var c = Wn in e || Zs in e, f = s && (((N = Tn(e, t)) == null ? void 0 : N.set) ?? (c && t in e && ((E) => e[t] = E))) || void 0, d = ( + /** @type {V} */ + r + ), g = !0, p = !1, x = () => (p = !0, g && (g = !1, a ? d = wn( + /** @type {() => V} */ + r + ) : d = /** @type {V} */ + r), d); + u === void 0 && r !== void 0 && (f && i && Nf(), u = x(), f && f(u)); + var C; + if (i) + C = () => { + var E = ( + /** @type {V} */ + e[t] + ); + return E === void 0 ? x() : (g = !0, p = !1, E); + }; + else { + var $ = (o ? Me : pe)( + () => ( + /** @type {V} */ + e[t] + ) + ); + $.f |= vf, C = () => { + var E = h($); + return E !== void 0 && (d = /** @type {V} */ + void 0), E === void 0 ? d : E; + }; + } + if (!(n & Il)) + return C; + if (f) { + var m = e.$$legacy; + return function(E, M) { + return arguments.length > 0 ? ((!i || !M || m || l) && f(M ? C() : E), E) : C(); + }; + } + var _ = !1, v = /* @__PURE__ */ $o(u), b = /* @__PURE__ */ Me(() => { + var E = C(), M = h(v); + return _ ? (_ = !1, M) : v.v = E; + }); + return o || (b.equals = Ks), function(E, M) { + if (arguments.length > 0) { + const D = M ? h(b) : i && s ? Tt(E) : E; + return b.equals(D) || (_ = !0, U(v, D), p && d !== void 0 && (d = D), wn(() => h(b))), E; + } + return h(b); + }; +} +function N1(e) { + return new M1(e); +} +var Sn, Wt; +class M1 { + /** + * @param {ComponentConstructorOptions & { + * component: any; + * }} options + */ + constructor(t) { + /** @type {any} */ + rr(this, Sn); + /** @type {Record} */ + rr(this, Wt); + var i; + var n = /* @__PURE__ */ new Map(), r = (s, a) => { + var l = /* @__PURE__ */ $o(a); + return n.set(s, l), l; + }; + const o = new Proxy( + { ...t.props || {}, $$events: {} }, + { + get(s, a) { + return h(n.get(a) ?? r(a, Reflect.get(s, a))); + }, + has(s, a) { + return a === Zs ? !0 : (h(n.get(a) ?? r(a, Reflect.get(s, a))), Reflect.has(s, a)); + }, + set(s, a, l) { + return U(n.get(a) ?? r(a, l), l), Reflect.set(s, a, l); + } + } + ); + Gr(this, Wt, (t.hydrate ? d1 : hu)(t.component, { + target: t.target, + anchor: t.anchor, + props: o, + context: t.context, + intro: t.intro ?? !1, + recover: t.recover + })), (!((i = t == null ? void 0 : t.props) != null && i.$$host) || t.sync === !1) && y(), Gr(this, Sn, o.$$events); + for (const s of Object.keys(it(this, Wt))) + s === "$set" || s === "$destroy" || s === "$on" || so(this, s, { + get() { + return it(this, Wt)[s]; + }, + /** @param {any} value */ + set(a) { + it(this, Wt)[s] = a; + }, + enumerable: !0 + }); + it(this, Wt).$set = /** @param {Record} next */ + (s) => { + Object.assign(o, s); + }, it(this, Wt).$destroy = () => { + f1(it(this, Wt)); + }; + } + /** @param {Record} props */ + $set(t) { + it(this, Wt).$set(t); + } + /** + * @param {string} event + * @param {(...args: any[]) => any} callback + * @returns {any} + */ + $on(t, n) { + it(this, Sn)[t] = it(this, Sn)[t] || []; + const r = (...o) => n.call(this, ...o); + return it(this, Sn)[t].push(r), () => { + it(this, Sn)[t] = it(this, Sn)[t].filter( + /** @param {any} fn */ + (o) => o !== r + ); + }; + } + $destroy() { + it(this, Wt).$destroy(); + } +} +Sn = new WeakMap(), Wt = new WeakMap(); +let bu; +typeof HTMLElement == "function" && (bu = class extends HTMLElement { + /** + * @param {*} $$componentCtor + * @param {*} $$slots + * @param {*} use_shadow_dom + */ + constructor(t, n, r) { + super(); + /** The Svelte component constructor */ + wt(this, "$$ctor"); + /** Slots */ + wt(this, "$$s"); + /** @type {any} The Svelte component instance */ + wt(this, "$$c"); + /** Whether or not the custom element is connected */ + wt(this, "$$cn", !1); + /** @type {Record} Component props data */ + wt(this, "$$d", {}); + /** `true` if currently in the process of reflecting component props back to attributes */ + wt(this, "$$r", !1); + /** @type {Record} Props definition (name, reflected, type etc) */ + wt(this, "$$p_d", {}); + /** @type {Record} Event listeners */ + wt(this, "$$l", {}); + /** @type {Map} Event listener unsubscribe functions */ + wt(this, "$$l_u", /* @__PURE__ */ new Map()); + /** @type {any} The managed render effect for reflecting attributes */ + wt(this, "$$me"); + this.$$ctor = t, this.$$s = n, r && this.attachShadow({ mode: "open" }); + } + /** + * @param {string} type + * @param {EventListenerOrEventListenerObject} listener + * @param {boolean | AddEventListenerOptions} [options] + */ + addEventListener(t, n, r) { + if (this.$$l[t] = this.$$l[t] || [], this.$$l[t].push(n), this.$$c) { + const o = this.$$c.$on(t, n); + this.$$l_u.set(n, o); + } + super.addEventListener(t, n, r); + } + /** + * @param {string} type + * @param {EventListenerOrEventListenerObject} listener + * @param {boolean | AddEventListenerOptions} [options] + */ + removeEventListener(t, n, r) { + if (super.removeEventListener(t, n, r), this.$$c) { + const o = this.$$l_u.get(n); + o && (o(), this.$$l_u.delete(n)); + } + } + async connectedCallback() { + if (this.$$cn = !0, !this.$$c) { + let t = function(o) { + return (i) => { + const s = document.createElement("slot"); + o !== "default" && (s.name = o), L(i, s); + }; + }; + if (await Promise.resolve(), !this.$$cn || this.$$c) + return; + const n = {}, r = T1(this); + for (const o of this.$$s) + o in r && (o === "default" && !this.$$d.children ? (this.$$d.children = t(o), n.default = !0) : n[o] = t(o)); + for (const o of this.attributes) { + const i = this.$$g_p(o.name); + i in this.$$d || (this.$$d[i] = Go(i, o.value, this.$$p_d, "toProp")); + } + for (const o in this.$$p_d) + !(o in this.$$d) && this[o] !== void 0 && (this.$$d[o] = this[o], delete this[o]); + this.$$c = N1({ + component: this.$$ctor, + target: this.shadowRoot || this, + props: { + ...this.$$d, + $$slots: n, + $$host: this + } + }), this.$$me = Kf(() => { + Fr(() => { + var o; + this.$$r = !0; + for (const i of ri(this.$$c)) { + if (!((o = this.$$p_d[i]) != null && o.reflect)) continue; + this.$$d[i] = this.$$c[i]; + const s = Go( + i, + this.$$d[i], + this.$$p_d, + "toAttribute" + ); + s == null ? this.removeAttribute(this.$$p_d[i].attribute || i) : this.setAttribute(this.$$p_d[i].attribute || i, s); + } + this.$$r = !1; + }); + }); + for (const o in this.$$l) + for (const i of this.$$l[o]) { + const s = this.$$c.$on(o, i); + this.$$l_u.set(i, s); + } + this.$$l = {}; + } + } + // We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte + // and setting attributes through setAttribute etc, this is helpful + /** + * @param {string} attr + * @param {string} _oldValue + * @param {string} newValue + */ + attributeChangedCallback(t, n, r) { + var o; + this.$$r || (t = this.$$g_p(t), this.$$d[t] = Go(t, r, this.$$p_d, "toProp"), (o = this.$$c) == null || o.$set({ [t]: this.$$d[t] })); + } + disconnectedCallback() { + this.$$cn = !1, Promise.resolve().then(() => { + !this.$$cn && this.$$c && (this.$$c.$destroy(), this.$$me(), this.$$c = void 0); + }); + } + /** + * @param {string} attribute_name + */ + $$g_p(t) { + return ri(this.$$p_d).find( + (n) => this.$$p_d[n].attribute === t || !this.$$p_d[n].attribute && n.toLowerCase() === t + ) || t; + } +}); +function Go(e, t, n, r) { + var i; + const o = (i = n[e]) == null ? void 0 : i.type; + if (t = o === "Boolean" && typeof t != "boolean" ? t != null : t, !r || !n[e]) + return t; + if (r === "toAttribute") + switch (o) { + case "Object": + case "Array": + return t == null ? null : JSON.stringify(t); + case "Boolean": + return t ? "" : null; + case "Number": + return t ?? null; + default: + return t; + } + else + switch (o) { + case "Object": + case "Array": + return t && JSON.parse(t); + case "Boolean": + return t; + // conversion already handled above + case "Number": + return t != null ? +t : t; + default: + return t; + } +} +function T1(e) { + const t = {}; + return e.childNodes.forEach((n) => { + t[ + /** @type {Element} node */ + n.slot || "default" + ] = !0; + }), t; +} +function ae(e, t, n, r, o, i) { + let s = class extends bu { + constructor() { + super(e, n, o), this.$$p_d = t; + } + static get observedAttributes() { + return ri(t).map( + (a) => (t[a].attribute || a).toLowerCase() + ); + } + }; + return ri(t).forEach((a) => { + so(s.prototype, a, { + get() { + return this.$$c && a in this.$$c ? this.$$c[a] : this.$$d[a]; + }, + set(l) { + var f; + l = Go(a, l, t), this.$$d[a] = l; + var u = this.$$c; + if (u) { + var c = (f = Tn(u, a)) == null ? void 0 : f.get; + c ? u[a] = l : u.$set({ [a]: l }); + } + } + }); + }), r.forEach((a) => { + so(s.prototype, a, { + get() { + var l; + return (l = this.$$c) == null ? void 0 : l[a]; + } + }); + }), e.element = /** @type {any} */ + s, s; +} +function Et(e) { + if (typeof e == "string" || typeof e == "number") return "" + e; + let t = ""; + if (Array.isArray(e)) + for (let n = 0, r; n < e.length; n++) + (r = Et(e[n])) !== "" && (t += (t && " ") + r); + else + for (let n in e) + e[n] && (t += (t && " ") + n); + return t; +} +var H1 = { value: () => { +} }; +function Ii() { + for (var e = 0, t = arguments.length, n = {}, r; e < t; ++e) { + if (!(r = arguments[e] + "") || r in n || /[\s.]/.test(r)) throw new Error("illegal type: " + r); + n[r] = []; + } + return new Uo(n); +} +function Uo(e) { + this._ = e; +} +function V1(e, t) { + return e.trim().split(/^|\s+/).map(function(n) { + var r = "", o = n.indexOf("."); + if (o >= 0 && (r = n.slice(o + 1), n = n.slice(0, o)), n && !t.hasOwnProperty(n)) throw new Error("unknown type: " + n); + return { type: n, name: r }; + }); +} +Uo.prototype = Ii.prototype = { + constructor: Uo, + on: function(e, t) { + var n = this._, r = V1(e + "", n), o, i = -1, s = r.length; + if (arguments.length < 2) { + for (; ++i < s; ) if ((o = (e = r[i]).type) && (o = D1(n[o], e.name))) return o; + return; + } + if (t != null && typeof t != "function") throw new Error("invalid callback: " + t); + for (; ++i < s; ) + if (o = (e = r[i]).type) n[o] = Za(n[o], e.name, t); + else if (t == null) for (o in n) n[o] = Za(n[o], e.name, null); + return this; + }, + copy: function() { + var e = {}, t = this._; + for (var n in t) e[n] = t[n].slice(); + return new Uo(e); + }, + call: function(e, t) { + if ((o = arguments.length - 2) > 0) for (var n = new Array(o), r = 0, o, i; r < o; ++r) n[r] = arguments[r + 2]; + if (!this._.hasOwnProperty(e)) throw new Error("unknown type: " + e); + for (i = this._[e], r = 0, o = i.length; r < o; ++r) i[r].value.apply(t, n); + }, + apply: function(e, t, n) { + if (!this._.hasOwnProperty(e)) throw new Error("unknown type: " + e); + for (var r = this._[e], o = 0, i = r.length; o < i; ++o) r[o].value.apply(t, n); + } +}; +function D1(e, t) { + for (var n = 0, r = e.length, o; n < r; ++n) + if ((o = e[n]).name === t) + return o.value; +} +function Za(e, t, n) { + for (var r = 0, o = e.length; r < o; ++r) + if (e[r].name === t) { + e[r] = H1, e = e.slice(0, r).concat(e.slice(r + 1)); + break; + } + return n != null && e.push({ name: t, value: n }), e; +} +var xs = "http://www.w3.org/1999/xhtml"; +const Xa = { + svg: "http://www.w3.org/2000/svg", + xhtml: xs, + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +}; +function zi(e) { + var t = e += "", n = t.indexOf(":"); + return n >= 0 && (t = e.slice(0, n)) !== "xmlns" && (e = e.slice(n + 1)), Xa.hasOwnProperty(t) ? { space: Xa[t], local: e } : e; +} +function A1(e) { + return function() { + var t = this.ownerDocument, n = this.namespaceURI; + return n === xs && t.documentElement.namespaceURI === xs ? t.createElement(e) : t.createElementNS(n, e); + }; +} +function L1(e) { + return function() { + return this.ownerDocument.createElementNS(e.space, e.local); + }; +} +function Cu(e) { + var t = zi(e); + return (t.local ? L1 : A1)(t); +} +function O1() { +} +function ta(e) { + return e == null ? O1 : function() { + return this.querySelector(e); + }; +} +function I1(e) { + typeof e != "function" && (e = ta(e)); + for (var t = this._groups, n = t.length, r = new Array(n), o = 0; o < n; ++o) + for (var i = t[o], s = i.length, a = r[o] = new Array(s), l, u, c = 0; c < s; ++c) + (l = i[c]) && (u = e.call(l, l.__data__, c, i)) && ("__data__" in l && (u.__data__ = l.__data__), a[c] = u); + return new Zt(r, this._parents); +} +function z1(e) { + return e == null ? [] : Array.isArray(e) ? e : Array.from(e); +} +function R1() { + return []; +} +function ku(e) { + return e == null ? R1 : function() { + return this.querySelectorAll(e); + }; +} +function B1(e) { + return function() { + return z1(e.apply(this, arguments)); + }; +} +function Y1(e) { + typeof e == "function" ? e = B1(e) : e = ku(e); + for (var t = this._groups, n = t.length, r = [], o = [], i = 0; i < n; ++i) + for (var s = t[i], a = s.length, l, u = 0; u < a; ++u) + (l = s[u]) && (r.push(e.call(l, l.__data__, u, s)), o.push(l)); + return new Zt(r, o); +} +function $u(e) { + return function() { + return this.matches(e); + }; +} +function Eu(e) { + return function(t) { + return t.matches(e); + }; +} +var Z1 = Array.prototype.find; +function X1(e) { + return function() { + return Z1.call(this.children, e); + }; +} +function F1() { + return this.firstElementChild; +} +function W1(e) { + return this.select(e == null ? F1 : X1(typeof e == "function" ? e : Eu(e))); +} +var K1 = Array.prototype.filter; +function q1() { + return Array.from(this.children); +} +function G1(e) { + return function() { + return K1.call(this.children, e); + }; +} +function U1(e) { + return this.selectAll(e == null ? q1 : G1(typeof e == "function" ? e : Eu(e))); +} +function j1(e) { + typeof e != "function" && (e = $u(e)); + for (var t = this._groups, n = t.length, r = new Array(n), o = 0; o < n; ++o) + for (var i = t[o], s = i.length, a = r[o] = [], l, u = 0; u < s; ++u) + (l = i[u]) && e.call(l, l.__data__, u, i) && a.push(l); + return new Zt(r, this._parents); +} +function Su(e) { + return new Array(e.length); +} +function J1() { + return new Zt(this._enter || this._groups.map(Su), this._parents); +} +function ui(e, t) { + this.ownerDocument = e.ownerDocument, this.namespaceURI = e.namespaceURI, this._next = null, this._parent = e, this.__data__ = t; +} +ui.prototype = { + constructor: ui, + appendChild: function(e) { + return this._parent.insertBefore(e, this._next); + }, + insertBefore: function(e, t) { + return this._parent.insertBefore(e, t); + }, + querySelector: function(e) { + return this._parent.querySelector(e); + }, + querySelectorAll: function(e) { + return this._parent.querySelectorAll(e); + } +}; +function Q1(e) { + return function() { + return e; + }; +} +function eg(e, t, n, r, o, i) { + for (var s = 0, a, l = t.length, u = i.length; s < u; ++s) + (a = t[s]) ? (a.__data__ = i[s], r[s] = a) : n[s] = new ui(e, i[s]); + for (; s < l; ++s) + (a = t[s]) && (o[s] = a); +} +function tg(e, t, n, r, o, i, s) { + var a, l, u = /* @__PURE__ */ new Map(), c = t.length, f = i.length, d = new Array(c), g; + for (a = 0; a < c; ++a) + (l = t[a]) && (d[a] = g = s.call(l, l.__data__, a, t) + "", u.has(g) ? o[a] = l : u.set(g, l)); + for (a = 0; a < f; ++a) + g = s.call(e, i[a], a, i) + "", (l = u.get(g)) ? (r[a] = l, l.__data__ = i[a], u.delete(g)) : n[a] = new ui(e, i[a]); + for (a = 0; a < c; ++a) + (l = t[a]) && u.get(d[a]) === l && (o[a] = l); +} +function ng(e) { + return e.__data__; +} +function rg(e, t) { + if (!arguments.length) return Array.from(this, ng); + var n = t ? tg : eg, r = this._parents, o = this._groups; + typeof e != "function" && (e = Q1(e)); + for (var i = o.length, s = new Array(i), a = new Array(i), l = new Array(i), u = 0; u < i; ++u) { + var c = r[u], f = o[u], d = f.length, g = og(e.call(c, c && c.__data__, u, r)), p = g.length, x = a[u] = new Array(p), C = s[u] = new Array(p), $ = l[u] = new Array(d); + n(c, f, x, C, $, g, t); + for (var m = 0, _ = 0, v, b; m < p; ++m) + if (v = x[m]) { + for (m >= _ && (_ = m + 1); !(b = C[_]) && ++_ < p; ) ; + v._next = b || null; + } + } + return s = new Zt(s, r), s._enter = a, s._exit = l, s; +} +function og(e) { + return typeof e == "object" && "length" in e ? e : Array.from(e); +} +function ig() { + return new Zt(this._exit || this._groups.map(Su), this._parents); +} +function sg(e, t, n) { + var r = this.enter(), o = this, i = this.exit(); + return typeof e == "function" ? (r = e(r), r && (r = r.selection())) : r = r.append(e + ""), t != null && (o = t(o), o && (o = o.selection())), n == null ? i.remove() : n(i), r && o ? r.merge(o).order() : o; +} +function ag(e) { + for (var t = e.selection ? e.selection() : e, n = this._groups, r = t._groups, o = n.length, i = r.length, s = Math.min(o, i), a = new Array(o), l = 0; l < s; ++l) + for (var u = n[l], c = r[l], f = u.length, d = a[l] = new Array(f), g, p = 0; p < f; ++p) + (g = u[p] || c[p]) && (d[p] = g); + for (; l < o; ++l) + a[l] = n[l]; + return new Zt(a, this._parents); +} +function lg() { + for (var e = this._groups, t = -1, n = e.length; ++t < n; ) + for (var r = e[t], o = r.length - 1, i = r[o], s; --o >= 0; ) + (s = r[o]) && (i && s.compareDocumentPosition(i) ^ 4 && i.parentNode.insertBefore(s, i), i = s); + return this; +} +function ug(e) { + e || (e = cg); + function t(f, d) { + return f && d ? e(f.__data__, d.__data__) : !f - !d; + } + for (var n = this._groups, r = n.length, o = new Array(r), i = 0; i < r; ++i) { + for (var s = n[i], a = s.length, l = o[i] = new Array(a), u, c = 0; c < a; ++c) + (u = s[c]) && (l[c] = u); + l.sort(t); + } + return new Zt(o, this._parents).order(); +} +function cg(e, t) { + return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN; +} +function dg() { + var e = arguments[0]; + return arguments[0] = this, e.apply(null, arguments), this; +} +function fg() { + return Array.from(this); +} +function gg() { + for (var e = this._groups, t = 0, n = e.length; t < n; ++t) + for (var r = e[t], o = 0, i = r.length; o < i; ++o) { + var s = r[o]; + if (s) return s; + } + return null; +} +function hg() { + let e = 0; + for (const t of this) ++e; + return e; +} +function vg() { + return !this.node(); +} +function pg(e) { + for (var t = this._groups, n = 0, r = t.length; n < r; ++n) + for (var o = t[n], i = 0, s = o.length, a; i < s; ++i) + (a = o[i]) && e.call(a, a.__data__, i, o); + return this; +} +function mg(e) { + return function() { + this.removeAttribute(e); + }; +} +function yg(e) { + return function() { + this.removeAttributeNS(e.space, e.local); + }; +} +function wg(e, t) { + return function() { + this.setAttribute(e, t); + }; +} +function _g(e, t) { + return function() { + this.setAttributeNS(e.space, e.local, t); + }; +} +function xg(e, t) { + return function() { + var n = t.apply(this, arguments); + n == null ? this.removeAttribute(e) : this.setAttribute(e, n); + }; +} +function bg(e, t) { + return function() { + var n = t.apply(this, arguments); + n == null ? this.removeAttributeNS(e.space, e.local) : this.setAttributeNS(e.space, e.local, n); + }; +} +function Cg(e, t) { + var n = zi(e); + if (arguments.length < 2) { + var r = this.node(); + return n.local ? r.getAttributeNS(n.space, n.local) : r.getAttribute(n); + } + return this.each((t == null ? n.local ? yg : mg : typeof t == "function" ? n.local ? bg : xg : n.local ? _g : wg)(n, t)); +} +function Pu(e) { + return e.ownerDocument && e.ownerDocument.defaultView || e.document && e || e.defaultView; +} +function kg(e) { + return function() { + this.style.removeProperty(e); + }; +} +function $g(e, t, n) { + return function() { + this.style.setProperty(e, t, n); + }; +} +function Eg(e, t, n) { + return function() { + var r = t.apply(this, arguments); + r == null ? this.style.removeProperty(e) : this.style.setProperty(e, r, n); + }; +} +function Sg(e, t, n) { + return arguments.length > 1 ? this.each((t == null ? kg : typeof t == "function" ? Eg : $g)(e, t, n ?? "")) : Hr(this.node(), e); +} +function Hr(e, t) { + return e.style.getPropertyValue(t) || Pu(e).getComputedStyle(e, null).getPropertyValue(t); +} +function Pg(e) { + return function() { + delete this[e]; + }; +} +function Ng(e, t) { + return function() { + this[e] = t; + }; +} +function Mg(e, t) { + return function() { + var n = t.apply(this, arguments); + n == null ? delete this[e] : this[e] = n; + }; +} +function Tg(e, t) { + return arguments.length > 1 ? this.each((t == null ? Pg : typeof t == "function" ? Mg : Ng)(e, t)) : this.node()[e]; +} +function Nu(e) { + return e.trim().split(/^|\s+/); +} +function na(e) { + return e.classList || new Mu(e); +} +function Mu(e) { + this._node = e, this._names = Nu(e.getAttribute("class") || ""); +} +Mu.prototype = { + add: function(e) { + var t = this._names.indexOf(e); + t < 0 && (this._names.push(e), this._node.setAttribute("class", this._names.join(" "))); + }, + remove: function(e) { + var t = this._names.indexOf(e); + t >= 0 && (this._names.splice(t, 1), this._node.setAttribute("class", this._names.join(" "))); + }, + contains: function(e) { + return this._names.indexOf(e) >= 0; + } +}; +function Tu(e, t) { + for (var n = na(e), r = -1, o = t.length; ++r < o; ) n.add(t[r]); +} +function Hu(e, t) { + for (var n = na(e), r = -1, o = t.length; ++r < o; ) n.remove(t[r]); +} +function Hg(e) { + return function() { + Tu(this, e); + }; +} +function Vg(e) { + return function() { + Hu(this, e); + }; +} +function Dg(e, t) { + return function() { + (t.apply(this, arguments) ? Tu : Hu)(this, e); + }; +} +function Ag(e, t) { + var n = Nu(e + ""); + if (arguments.length < 2) { + for (var r = na(this.node()), o = -1, i = n.length; ++o < i; ) if (!r.contains(n[o])) return !1; + return !0; + } + return this.each((typeof t == "function" ? Dg : t ? Hg : Vg)(n, t)); +} +function Lg() { + this.textContent = ""; +} +function Og(e) { + return function() { + this.textContent = e; + }; +} +function Ig(e) { + return function() { + var t = e.apply(this, arguments); + this.textContent = t ?? ""; + }; +} +function zg(e) { + return arguments.length ? this.each(e == null ? Lg : (typeof e == "function" ? Ig : Og)(e)) : this.node().textContent; +} +function Rg() { + this.innerHTML = ""; +} +function Bg(e) { + return function() { + this.innerHTML = e; + }; +} +function Yg(e) { + return function() { + var t = e.apply(this, arguments); + this.innerHTML = t ?? ""; + }; +} +function Zg(e) { + return arguments.length ? this.each(e == null ? Rg : (typeof e == "function" ? Yg : Bg)(e)) : this.node().innerHTML; +} +function Xg() { + this.nextSibling && this.parentNode.appendChild(this); +} +function Fg() { + return this.each(Xg); +} +function Wg() { + this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild); +} +function Kg() { + return this.each(Wg); +} +function qg(e) { + var t = typeof e == "function" ? e : Cu(e); + return this.select(function() { + return this.appendChild(t.apply(this, arguments)); + }); +} +function Gg() { + return null; +} +function Ug(e, t) { + var n = typeof e == "function" ? e : Cu(e), r = t == null ? Gg : typeof t == "function" ? t : ta(t); + return this.select(function() { + return this.insertBefore(n.apply(this, arguments), r.apply(this, arguments) || null); + }); +} +function jg() { + var e = this.parentNode; + e && e.removeChild(this); +} +function Jg() { + return this.each(jg); +} +function Qg() { + var e = this.cloneNode(!1), t = this.parentNode; + return t ? t.insertBefore(e, this.nextSibling) : e; +} +function eh() { + var e = this.cloneNode(!0), t = this.parentNode; + return t ? t.insertBefore(e, this.nextSibling) : e; +} +function th(e) { + return this.select(e ? eh : Qg); +} +function nh(e) { + return arguments.length ? this.property("__data__", e) : this.node().__data__; +} +function rh(e) { + return function(t) { + e.call(this, t, this.__data__); + }; +} +function oh(e) { + return e.trim().split(/^|\s+/).map(function(t) { + var n = "", r = t.indexOf("."); + return r >= 0 && (n = t.slice(r + 1), t = t.slice(0, r)), { type: t, name: n }; + }); +} +function ih(e) { + return function() { + var t = this.__on; + if (t) { + for (var n = 0, r = -1, o = t.length, i; n < o; ++n) + i = t[n], (!e.type || i.type === e.type) && i.name === e.name ? this.removeEventListener(i.type, i.listener, i.options) : t[++r] = i; + ++r ? t.length = r : delete this.__on; + } + }; +} +function sh(e, t, n) { + return function() { + var r = this.__on, o, i = rh(t); + if (r) { + for (var s = 0, a = r.length; s < a; ++s) + if ((o = r[s]).type === e.type && o.name === e.name) { + this.removeEventListener(o.type, o.listener, o.options), this.addEventListener(o.type, o.listener = i, o.options = n), o.value = t; + return; + } + } + this.addEventListener(e.type, i, n), o = { type: e.type, name: e.name, value: t, listener: i, options: n }, r ? r.push(o) : this.__on = [o]; + }; +} +function ah(e, t, n) { + var r = oh(e + ""), o, i = r.length, s; + if (arguments.length < 2) { + var a = this.node().__on; + if (a) { + for (var l = 0, u = a.length, c; l < u; ++l) + for (o = 0, c = a[l]; o < i; ++o) + if ((s = r[o]).type === c.type && s.name === c.name) + return c.value; + } + return; + } + for (a = t ? sh : ih, o = 0; o < i; ++o) this.each(a(r[o], t, n)); + return this; +} +function Vu(e, t, n) { + var r = Pu(e), o = r.CustomEvent; + typeof o == "function" ? o = new o(t, n) : (o = r.document.createEvent("Event"), n ? (o.initEvent(t, n.bubbles, n.cancelable), o.detail = n.detail) : o.initEvent(t, !1, !1)), e.dispatchEvent(o); +} +function lh(e, t) { + return function() { + return Vu(this, e, t); + }; +} +function uh(e, t) { + return function() { + return Vu(this, e, t.apply(this, arguments)); + }; +} +function ch(e, t) { + return this.each((typeof t == "function" ? uh : lh)(e, t)); +} +function* dh() { + for (var e = this._groups, t = 0, n = e.length; t < n; ++t) + for (var r = e[t], o = 0, i = r.length, s; o < i; ++o) + (s = r[o]) && (yield s); +} +var Du = [null]; +function Zt(e, t) { + this._groups = e, this._parents = t; +} +function Eo() { + return new Zt([[document.documentElement]], Du); +} +function fh() { + return this; +} +Zt.prototype = Eo.prototype = { + constructor: Zt, + select: I1, + selectAll: Y1, + selectChild: W1, + selectChildren: U1, + filter: j1, + data: rg, + enter: J1, + exit: ig, + join: sg, + merge: ag, + selection: fh, + order: lg, + sort: ug, + call: dg, + nodes: fg, + node: gg, + size: hg, + empty: vg, + each: pg, + attr: Cg, + style: Sg, + property: Tg, + classed: Ag, + text: zg, + html: Zg, + raise: Fg, + lower: Kg, + append: qg, + insert: Ug, + remove: Jg, + clone: th, + datum: nh, + on: ah, + dispatch: ch, + [Symbol.iterator]: dh +}; +function Kt(e) { + return typeof e == "string" ? new Zt([[document.querySelector(e)]], [document.documentElement]) : new Zt([[e]], Du); +} +function gh(e) { + let t; + for (; t = e.sourceEvent; ) e = t; + return e; +} +function Qt(e, t) { + if (e = gh(e), t === void 0 && (t = e.currentTarget), t) { + var n = t.ownerSVGElement || t; + if (n.createSVGPoint) { + var r = n.createSVGPoint(); + return r.x = e.clientX, r.y = e.clientY, r = r.matrixTransform(t.getScreenCTM().inverse()), [r.x, r.y]; + } + if (t.getBoundingClientRect) { + var o = t.getBoundingClientRect(); + return [e.clientX - o.left - t.clientLeft, e.clientY - o.top - t.clientTop]; + } + } + return [e.pageX, e.pageY]; +} +const hh = { passive: !1 }, fo = { capture: !0, passive: !1 }; +function ts(e) { + e.stopImmediatePropagation(); +} +function xr(e) { + e.preventDefault(), e.stopImmediatePropagation(); +} +function Au(e) { + var t = e.document.documentElement, n = Kt(e).on("dragstart.drag", xr, fo); + "onselectstart" in t ? n.on("selectstart.drag", xr, fo) : (t.__noselect = t.style.MozUserSelect, t.style.MozUserSelect = "none"); +} +function Lu(e, t) { + var n = e.document.documentElement, r = Kt(e).on("dragstart.drag", null); + t && (r.on("click.drag", xr, fo), setTimeout(function() { + r.on("click.drag", null); + }, 0)), "onselectstart" in n ? r.on("selectstart.drag", null) : (n.style.MozUserSelect = n.__noselect, delete n.__noselect); +} +const Yo = (e) => () => e; +function bs(e, { + sourceEvent: t, + subject: n, + target: r, + identifier: o, + active: i, + x: s, + y: a, + dx: l, + dy: u, + dispatch: c +}) { + Object.defineProperties(this, { + type: { value: e, enumerable: !0, configurable: !0 }, + sourceEvent: { value: t, enumerable: !0, configurable: !0 }, + subject: { value: n, enumerable: !0, configurable: !0 }, + target: { value: r, enumerable: !0, configurable: !0 }, + identifier: { value: o, enumerable: !0, configurable: !0 }, + active: { value: i, enumerable: !0, configurable: !0 }, + x: { value: s, enumerable: !0, configurable: !0 }, + y: { value: a, enumerable: !0, configurable: !0 }, + dx: { value: l, enumerable: !0, configurable: !0 }, + dy: { value: u, enumerable: !0, configurable: !0 }, + _: { value: c } + }); +} +bs.prototype.on = function() { + var e = this._.on.apply(this._, arguments); + return e === this._ ? this : e; +}; +function vh(e) { + return !e.ctrlKey && !e.button; +} +function ph() { + return this.parentNode; +} +function mh(e, t) { + return t ?? { x: e.x, y: e.y }; +} +function yh() { + return navigator.maxTouchPoints || "ontouchstart" in this; +} +function wh() { + var e = vh, t = ph, n = mh, r = yh, o = {}, i = Ii("start", "drag", "end"), s = 0, a, l, u, c, f = 0; + function d(v) { + v.on("mousedown.drag", g).filter(r).on("touchstart.drag", C).on("touchmove.drag", $, hh).on("touchend.drag touchcancel.drag", m).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + function g(v, b) { + if (!(c || !e.call(this, v, b))) { + var N = _(this, t.call(this, v, b), v, b, "mouse"); + N && (Kt(v.view).on("mousemove.drag", p, fo).on("mouseup.drag", x, fo), Au(v.view), ts(v), u = !1, a = v.clientX, l = v.clientY, N("start", v)); + } + } + function p(v) { + if (xr(v), !u) { + var b = v.clientX - a, N = v.clientY - l; + u = b * b + N * N > f; + } + o.mouse("drag", v); + } + function x(v) { + Kt(v.view).on("mousemove.drag mouseup.drag", null), Lu(v.view, u), xr(v), o.mouse("end", v); + } + function C(v, b) { + if (e.call(this, v, b)) { + var N = v.changedTouches, E = t.call(this, v, b), M = N.length, D, V; + for (D = 0; D < M; ++D) + (V = _(this, E, v, b, N[D].identifier, N[D])) && (ts(v), V("start", v, N[D])); + } + } + function $(v) { + var b = v.changedTouches, N = b.length, E, M; + for (E = 0; E < N; ++E) + (M = o[b[E].identifier]) && (xr(v), M("drag", v, b[E])); + } + function m(v) { + var b = v.changedTouches, N = b.length, E, M; + for (c && clearTimeout(c), c = setTimeout(function() { + c = null; + }, 500), E = 0; E < N; ++E) + (M = o[b[E].identifier]) && (ts(v), M("end", v, b[E])); + } + function _(v, b, N, E, M, D) { + var V = i.copy(), A = Qt(D || N, b), O, R, S; + if ((S = n.call(v, new bs("beforestart", { + sourceEvent: N, + target: d, + identifier: M, + active: s, + x: A[0], + y: A[1], + dx: 0, + dy: 0, + dispatch: V + }), E)) != null) + return O = S.x - A[0] || 0, R = S.y - A[1] || 0, function T(k, P, H) { + var I = A, B; + switch (k) { + case "start": + o[M] = T, B = s++; + break; + case "end": + delete o[M], --s; + // falls through + case "drag": + A = Qt(H || P, b), B = s; + break; + } + V.call( + k, + v, + new bs(k, { + sourceEvent: P, + subject: S, + target: d, + identifier: M, + active: B, + x: A[0] + O, + y: A[1] + R, + dx: A[0] - I[0], + dy: A[1] - I[1], + dispatch: V + }), + E + ); + }; + } + return d.filter = function(v) { + return arguments.length ? (e = typeof v == "function" ? v : Yo(!!v), d) : e; + }, d.container = function(v) { + return arguments.length ? (t = typeof v == "function" ? v : Yo(v), d) : t; + }, d.subject = function(v) { + return arguments.length ? (n = typeof v == "function" ? v : Yo(v), d) : n; + }, d.touchable = function(v) { + return arguments.length ? (r = typeof v == "function" ? v : Yo(!!v), d) : r; + }, d.on = function() { + var v = i.on.apply(i, arguments); + return v === i ? d : v; + }, d.clickDistance = function(v) { + return arguments.length ? (f = (v = +v) * v, d) : Math.sqrt(f); + }, d; +} +function ra(e, t, n) { + e.prototype = t.prototype = n, n.constructor = e; +} +function Ou(e, t) { + var n = Object.create(e.prototype); + for (var r in t) n[r] = t[r]; + return n; +} +function So() { +} +var go = 0.7, ci = 1 / go, br = "\\s*([+-]?\\d+)\\s*", ho = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", pn = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", _h = /^#([0-9a-f]{3,8})$/, xh = new RegExp(`^rgb\\(${br},${br},${br}\\)$`), bh = new RegExp(`^rgb\\(${pn},${pn},${pn}\\)$`), Ch = new RegExp(`^rgba\\(${br},${br},${br},${ho}\\)$`), kh = new RegExp(`^rgba\\(${pn},${pn},${pn},${ho}\\)$`), $h = new RegExp(`^hsl\\(${ho},${pn},${pn}\\)$`), Eh = new RegExp(`^hsla\\(${ho},${pn},${pn},${ho}\\)$`), Fa = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 +}; +ra(So, vo, { + copy(e) { + return Object.assign(new this.constructor(), this, e); + }, + displayable() { + return this.rgb().displayable(); + }, + hex: Wa, + // Deprecated! Use color.formatHex. + formatHex: Wa, + formatHex8: Sh, + formatHsl: Ph, + formatRgb: Ka, + toString: Ka +}); +function Wa() { + return this.rgb().formatHex(); +} +function Sh() { + return this.rgb().formatHex8(); +} +function Ph() { + return Iu(this).formatHsl(); +} +function Ka() { + return this.rgb().formatRgb(); +} +function vo(e) { + var t, n; + return e = (e + "").trim().toLowerCase(), (t = _h.exec(e)) ? (n = t[1].length, t = parseInt(t[1], 16), n === 6 ? qa(t) : n === 3 ? new Ht(t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | t & 240, (t & 15) << 4 | t & 15, 1) : n === 8 ? Zo(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, (t & 255) / 255) : n === 4 ? Zo(t >> 12 & 15 | t >> 8 & 240, t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | t & 240, ((t & 15) << 4 | t & 15) / 255) : null) : (t = xh.exec(e)) ? new Ht(t[1], t[2], t[3], 1) : (t = bh.exec(e)) ? new Ht(t[1] * 255 / 100, t[2] * 255 / 100, t[3] * 255 / 100, 1) : (t = Ch.exec(e)) ? Zo(t[1], t[2], t[3], t[4]) : (t = kh.exec(e)) ? Zo(t[1] * 255 / 100, t[2] * 255 / 100, t[3] * 255 / 100, t[4]) : (t = $h.exec(e)) ? ja(t[1], t[2] / 100, t[3] / 100, 1) : (t = Eh.exec(e)) ? ja(t[1], t[2] / 100, t[3] / 100, t[4]) : Fa.hasOwnProperty(e) ? qa(Fa[e]) : e === "transparent" ? new Ht(NaN, NaN, NaN, 0) : null; +} +function qa(e) { + return new Ht(e >> 16 & 255, e >> 8 & 255, e & 255, 1); +} +function Zo(e, t, n, r) { + return r <= 0 && (e = t = n = NaN), new Ht(e, t, n, r); +} +function Nh(e) { + return e instanceof So || (e = vo(e)), e ? (e = e.rgb(), new Ht(e.r, e.g, e.b, e.opacity)) : new Ht(); +} +function Cs(e, t, n, r) { + return arguments.length === 1 ? Nh(e) : new Ht(e, t, n, r ?? 1); +} +function Ht(e, t, n, r) { + this.r = +e, this.g = +t, this.b = +n, this.opacity = +r; +} +ra(Ht, Cs, Ou(So, { + brighter(e) { + return e = e == null ? ci : Math.pow(ci, e), new Ht(this.r * e, this.g * e, this.b * e, this.opacity); + }, + darker(e) { + return e = e == null ? go : Math.pow(go, e), new Ht(this.r * e, this.g * e, this.b * e, this.opacity); + }, + rgb() { + return this; + }, + clamp() { + return new Ht(sr(this.r), sr(this.g), sr(this.b), di(this.opacity)); + }, + displayable() { + return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; + }, + hex: Ga, + // Deprecated! Use color.formatHex. + formatHex: Ga, + formatHex8: Mh, + formatRgb: Ua, + toString: Ua +})); +function Ga() { + return `#${or(this.r)}${or(this.g)}${or(this.b)}`; +} +function Mh() { + return `#${or(this.r)}${or(this.g)}${or(this.b)}${or((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; +} +function Ua() { + const e = di(this.opacity); + return `${e === 1 ? "rgb(" : "rgba("}${sr(this.r)}, ${sr(this.g)}, ${sr(this.b)}${e === 1 ? ")" : `, ${e})`}`; +} +function di(e) { + return isNaN(e) ? 1 : Math.max(0, Math.min(1, e)); +} +function sr(e) { + return Math.max(0, Math.min(255, Math.round(e) || 0)); +} +function or(e) { + return e = sr(e), (e < 16 ? "0" : "") + e.toString(16); +} +function ja(e, t, n, r) { + return r <= 0 ? e = t = n = NaN : n <= 0 || n >= 1 ? e = t = NaN : t <= 0 && (e = NaN), new tn(e, t, n, r); +} +function Iu(e) { + if (e instanceof tn) return new tn(e.h, e.s, e.l, e.opacity); + if (e instanceof So || (e = vo(e)), !e) return new tn(); + if (e instanceof tn) return e; + e = e.rgb(); + var t = e.r / 255, n = e.g / 255, r = e.b / 255, o = Math.min(t, n, r), i = Math.max(t, n, r), s = NaN, a = i - o, l = (i + o) / 2; + return a ? (t === i ? s = (n - r) / a + (n < r) * 6 : n === i ? s = (r - t) / a + 2 : s = (t - n) / a + 4, a /= l < 0.5 ? i + o : 2 - i - o, s *= 60) : a = l > 0 && l < 1 ? 0 : s, new tn(s, a, l, e.opacity); +} +function Th(e, t, n, r) { + return arguments.length === 1 ? Iu(e) : new tn(e, t, n, r ?? 1); +} +function tn(e, t, n, r) { + this.h = +e, this.s = +t, this.l = +n, this.opacity = +r; +} +ra(tn, Th, Ou(So, { + brighter(e) { + return e = e == null ? ci : Math.pow(ci, e), new tn(this.h, this.s, this.l * e, this.opacity); + }, + darker(e) { + return e = e == null ? go : Math.pow(go, e), new tn(this.h, this.s, this.l * e, this.opacity); + }, + rgb() { + var e = this.h % 360 + (this.h < 0) * 360, t = isNaN(e) || isNaN(this.s) ? 0 : this.s, n = this.l, r = n + (n < 0.5 ? n : 1 - n) * t, o = 2 * n - r; + return new Ht( + ns(e >= 240 ? e - 240 : e + 120, o, r), + ns(e, o, r), + ns(e < 120 ? e + 240 : e - 120, o, r), + this.opacity + ); + }, + clamp() { + return new tn(Ja(this.h), Xo(this.s), Xo(this.l), di(this.opacity)); + }, + displayable() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; + }, + formatHsl() { + const e = di(this.opacity); + return `${e === 1 ? "hsl(" : "hsla("}${Ja(this.h)}, ${Xo(this.s) * 100}%, ${Xo(this.l) * 100}%${e === 1 ? ")" : `, ${e})`}`; + } +})); +function Ja(e) { + return e = (e || 0) % 360, e < 0 ? e + 360 : e; +} +function Xo(e) { + return Math.max(0, Math.min(1, e || 0)); +} +function ns(e, t, n) { + return (e < 60 ? t + (n - t) * e / 60 : e < 180 ? n : e < 240 ? t + (n - t) * (240 - e) / 60 : t) * 255; +} +const zu = (e) => () => e; +function Hh(e, t) { + return function(n) { + return e + n * t; + }; +} +function Vh(e, t, n) { + return e = Math.pow(e, n), t = Math.pow(t, n) - e, n = 1 / n, function(r) { + return Math.pow(e + r * t, n); + }; +} +function Dh(e) { + return (e = +e) == 1 ? Ru : function(t, n) { + return n - t ? Vh(t, n, e) : zu(isNaN(t) ? n : t); + }; +} +function Ru(e, t) { + var n = t - e; + return n ? Hh(e, n) : zu(isNaN(e) ? t : e); +} +const Qa = function e(t) { + var n = Dh(t); + function r(o, i) { + var s = n((o = Cs(o)).r, (i = Cs(i)).r), a = n(o.g, i.g), l = n(o.b, i.b), u = Ru(o.opacity, i.opacity); + return function(c) { + return o.r = s(c), o.g = a(c), o.b = l(c), o.opacity = u(c), o + ""; + }; + } + return r.gamma = e, r; +}(1); +function Yn(e, t) { + return e = +e, t = +t, function(n) { + return e * (1 - n) + t * n; + }; +} +var ks = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, rs = new RegExp(ks.source, "g"); +function Ah(e) { + return function() { + return e; + }; +} +function Lh(e) { + return function(t) { + return e(t) + ""; + }; +} +function Oh(e, t) { + var n = ks.lastIndex = rs.lastIndex = 0, r, o, i, s = -1, a = [], l = []; + for (e = e + "", t = t + ""; (r = ks.exec(e)) && (o = rs.exec(t)); ) + (i = o.index) > n && (i = t.slice(n, i), a[s] ? a[s] += i : a[++s] = i), (r = r[0]) === (o = o[0]) ? a[s] ? a[s] += o : a[++s] = o : (a[++s] = null, l.push({ i: s, x: Yn(r, o) })), n = rs.lastIndex; + return n < t.length && (i = t.slice(n), a[s] ? a[s] += i : a[++s] = i), a.length < 2 ? l[0] ? Lh(l[0].x) : Ah(t) : (t = l.length, function(u) { + for (var c = 0, f; c < t; ++c) a[(f = l[c]).i] = f.x(u); + return a.join(""); + }); +} +var el = 180 / Math.PI, $s = { + translateX: 0, + translateY: 0, + rotate: 0, + skewX: 0, + scaleX: 1, + scaleY: 1 +}; +function Bu(e, t, n, r, o, i) { + var s, a, l; + return (s = Math.sqrt(e * e + t * t)) && (e /= s, t /= s), (l = e * n + t * r) && (n -= e * l, r -= t * l), (a = Math.sqrt(n * n + r * r)) && (n /= a, r /= a, l /= a), e * r < t * n && (e = -e, t = -t, l = -l, s = -s), { + translateX: o, + translateY: i, + rotate: Math.atan2(t, e) * el, + skewX: Math.atan(l) * el, + scaleX: s, + scaleY: a + }; +} +var Fo; +function Ih(e) { + const t = new (typeof DOMMatrix == "function" ? DOMMatrix : WebKitCSSMatrix)(e + ""); + return t.isIdentity ? $s : Bu(t.a, t.b, t.c, t.d, t.e, t.f); +} +function zh(e) { + return e == null || (Fo || (Fo = document.createElementNS("http://www.w3.org/2000/svg", "g")), Fo.setAttribute("transform", e), !(e = Fo.transform.baseVal.consolidate())) ? $s : (e = e.matrix, Bu(e.a, e.b, e.c, e.d, e.e, e.f)); +} +function Yu(e, t, n, r) { + function o(u) { + return u.length ? u.pop() + " " : ""; + } + function i(u, c, f, d, g, p) { + if (u !== f || c !== d) { + var x = g.push("translate(", null, t, null, n); + p.push({ i: x - 4, x: Yn(u, f) }, { i: x - 2, x: Yn(c, d) }); + } else (f || d) && g.push("translate(" + f + t + d + n); + } + function s(u, c, f, d) { + u !== c ? (u - c > 180 ? c += 360 : c - u > 180 && (u += 360), d.push({ i: f.push(o(f) + "rotate(", null, r) - 2, x: Yn(u, c) })) : c && f.push(o(f) + "rotate(" + c + r); + } + function a(u, c, f, d) { + u !== c ? d.push({ i: f.push(o(f) + "skewX(", null, r) - 2, x: Yn(u, c) }) : c && f.push(o(f) + "skewX(" + c + r); + } + function l(u, c, f, d, g, p) { + if (u !== f || c !== d) { + var x = g.push(o(g) + "scale(", null, ",", null, ")"); + p.push({ i: x - 4, x: Yn(u, f) }, { i: x - 2, x: Yn(c, d) }); + } else (f !== 1 || d !== 1) && g.push(o(g) + "scale(" + f + "," + d + ")"); + } + return function(u, c) { + var f = [], d = []; + return u = e(u), c = e(c), i(u.translateX, u.translateY, c.translateX, c.translateY, f, d), s(u.rotate, c.rotate, f, d), a(u.skewX, c.skewX, f, d), l(u.scaleX, u.scaleY, c.scaleX, c.scaleY, f, d), u = c = null, function(g) { + for (var p = -1, x = d.length, C; ++p < x; ) f[(C = d[p]).i] = C.x(g); + return f.join(""); + }; + }; +} +var Rh = Yu(Ih, "px, ", "px)", "deg)"), Bh = Yu(zh, ", ", ")", ")"), Yh = 1e-12; +function tl(e) { + return ((e = Math.exp(e)) + 1 / e) / 2; +} +function Zh(e) { + return ((e = Math.exp(e)) - 1 / e) / 2; +} +function Xh(e) { + return ((e = Math.exp(2 * e)) - 1) / (e + 1); +} +const Fh = function e(t, n, r) { + function o(i, s) { + var a = i[0], l = i[1], u = i[2], c = s[0], f = s[1], d = s[2], g = c - a, p = f - l, x = g * g + p * p, C, $; + if (x < Yh) + $ = Math.log(d / u) / t, C = function(E) { + return [ + a + E * g, + l + E * p, + u * Math.exp(t * E * $) + ]; + }; + else { + var m = Math.sqrt(x), _ = (d * d - u * u + r * x) / (2 * u * n * m), v = (d * d - u * u - r * x) / (2 * d * n * m), b = Math.log(Math.sqrt(_ * _ + 1) - _), N = Math.log(Math.sqrt(v * v + 1) - v); + $ = (N - b) / t, C = function(E) { + var M = E * $, D = tl(b), V = u / (n * m) * (D * Xh(t * M + b) - Zh(b)); + return [ + a + V * g, + l + V * p, + u * D / tl(t * M + b) + ]; + }; + } + return C.duration = $ * 1e3 * t / Math.SQRT2, C; + } + return o.rho = function(i) { + var s = Math.max(1e-3, +i), a = s * s, l = a * a; + return e(s, a, l); + }, o; +}(Math.SQRT2, 2, 4); +var Vr = 0, to = 0, Jr = 0, Zu = 1e3, fi, no, gi = 0, ur = 0, Ri = 0, po = typeof performance == "object" && performance.now ? performance : Date, Xu = typeof window == "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(e) { + setTimeout(e, 17); +}; +function oa() { + return ur || (Xu(Wh), ur = po.now() + Ri); +} +function Wh() { + ur = 0; +} +function hi() { + this._call = this._time = this._next = null; +} +hi.prototype = Fu.prototype = { + constructor: hi, + restart: function(e, t, n) { + if (typeof e != "function") throw new TypeError("callback is not a function"); + n = (n == null ? oa() : +n) + (t == null ? 0 : +t), !this._next && no !== this && (no ? no._next = this : fi = this, no = this), this._call = e, this._time = n, Es(); + }, + stop: function() { + this._call && (this._call = null, this._time = 1 / 0, Es()); + } +}; +function Fu(e, t, n) { + var r = new hi(); + return r.restart(e, t, n), r; +} +function Kh() { + oa(), ++Vr; + for (var e = fi, t; e; ) + (t = ur - e._time) >= 0 && e._call.call(void 0, t), e = e._next; + --Vr; +} +function nl() { + ur = (gi = po.now()) + Ri, Vr = to = 0; + try { + Kh(); + } finally { + Vr = 0, Gh(), ur = 0; + } +} +function qh() { + var e = po.now(), t = e - gi; + t > Zu && (Ri -= t, gi = e); +} +function Gh() { + for (var e, t = fi, n, r = 1 / 0; t; ) + t._call ? (r > t._time && (r = t._time), e = t, t = t._next) : (n = t._next, t._next = null, t = e ? e._next = n : fi = n); + no = e, Es(r); +} +function Es(e) { + if (!Vr) { + to && (to = clearTimeout(to)); + var t = e - ur; + t > 24 ? (e < 1 / 0 && (to = setTimeout(nl, e - po.now() - Ri)), Jr && (Jr = clearInterval(Jr))) : (Jr || (gi = po.now(), Jr = setInterval(qh, Zu)), Vr = 1, Xu(nl)); + } +} +function rl(e, t, n) { + var r = new hi(); + return t = t == null ? 0 : +t, r.restart((o) => { + r.stop(), e(o + t); + }, t, n), r; +} +var Uh = Ii("start", "end", "cancel", "interrupt"), jh = [], Wu = 0, ol = 1, Ss = 2, jo = 3, il = 4, Ps = 5, Jo = 6; +function Bi(e, t, n, r, o, i) { + var s = e.__transition; + if (!s) e.__transition = {}; + else if (n in s) return; + Jh(e, n, { + name: t, + index: r, + // For context during callback. + group: o, + // For context during callback. + on: Uh, + tween: jh, + time: i.time, + delay: i.delay, + duration: i.duration, + ease: i.ease, + timer: null, + state: Wu + }); +} +function ia(e, t) { + var n = cn(e, t); + if (n.state > Wu) throw new Error("too late; already scheduled"); + return n; +} +function Cn(e, t) { + var n = cn(e, t); + if (n.state > jo) throw new Error("too late; already running"); + return n; +} +function cn(e, t) { + var n = e.__transition; + if (!n || !(n = n[t])) throw new Error("transition not found"); + return n; +} +function Jh(e, t, n) { + var r = e.__transition, o; + r[t] = n, n.timer = Fu(i, 0, n.time); + function i(u) { + n.state = ol, n.timer.restart(s, n.delay, n.time), n.delay <= u && s(u - n.delay); + } + function s(u) { + var c, f, d, g; + if (n.state !== ol) return l(); + for (c in r) + if (g = r[c], g.name === n.name) { + if (g.state === jo) return rl(s); + g.state === il ? (g.state = Jo, g.timer.stop(), g.on.call("interrupt", e, e.__data__, g.index, g.group), delete r[c]) : +c < t && (g.state = Jo, g.timer.stop(), g.on.call("cancel", e, e.__data__, g.index, g.group), delete r[c]); + } + if (rl(function() { + n.state === jo && (n.state = il, n.timer.restart(a, n.delay, n.time), a(u)); + }), n.state = Ss, n.on.call("start", e, e.__data__, n.index, n.group), n.state === Ss) { + for (n.state = jo, o = new Array(d = n.tween.length), c = 0, f = -1; c < d; ++c) + (g = n.tween[c].value.call(e, e.__data__, n.index, n.group)) && (o[++f] = g); + o.length = f + 1; + } + } + function a(u) { + for (var c = u < n.duration ? n.ease.call(null, u / n.duration) : (n.timer.restart(l), n.state = Ps, 1), f = -1, d = o.length; ++f < d; ) + o[f].call(e, c); + n.state === Ps && (n.on.call("end", e, e.__data__, n.index, n.group), l()); + } + function l() { + n.state = Jo, n.timer.stop(), delete r[t]; + for (var u in r) return; + delete e.__transition; + } +} +function Qo(e, t) { + var n = e.__transition, r, o, i = !0, s; + if (n) { + t = t == null ? null : t + ""; + for (s in n) { + if ((r = n[s]).name !== t) { + i = !1; + continue; + } + o = r.state > Ss && r.state < Ps, r.state = Jo, r.timer.stop(), r.on.call(o ? "interrupt" : "cancel", e, e.__data__, r.index, r.group), delete n[s]; + } + i && delete e.__transition; + } +} +function Qh(e) { + return this.each(function() { + Qo(this, e); + }); +} +function ev(e, t) { + var n, r; + return function() { + var o = Cn(this, e), i = o.tween; + if (i !== n) { + r = n = i; + for (var s = 0, a = r.length; s < a; ++s) + if (r[s].name === t) { + r = r.slice(), r.splice(s, 1); + break; + } + } + o.tween = r; + }; +} +function tv(e, t, n) { + var r, o; + if (typeof n != "function") throw new Error(); + return function() { + var i = Cn(this, e), s = i.tween; + if (s !== r) { + o = (r = s).slice(); + for (var a = { name: t, value: n }, l = 0, u = o.length; l < u; ++l) + if (o[l].name === t) { + o[l] = a; + break; + } + l === u && o.push(a); + } + i.tween = o; + }; +} +function nv(e, t) { + var n = this._id; + if (e += "", arguments.length < 2) { + for (var r = cn(this.node(), n).tween, o = 0, i = r.length, s; o < i; ++o) + if ((s = r[o]).name === e) + return s.value; + return null; + } + return this.each((t == null ? ev : tv)(n, e, t)); +} +function sa(e, t, n) { + var r = e._id; + return e.each(function() { + var o = Cn(this, r); + (o.value || (o.value = {}))[t] = n.apply(this, arguments); + }), function(o) { + return cn(o, r).value[t]; + }; +} +function Ku(e, t) { + var n; + return (typeof t == "number" ? Yn : t instanceof vo ? Qa : (n = vo(t)) ? (t = n, Qa) : Oh)(e, t); +} +function rv(e) { + return function() { + this.removeAttribute(e); + }; +} +function ov(e) { + return function() { + this.removeAttributeNS(e.space, e.local); + }; +} +function iv(e, t, n) { + var r, o = n + "", i; + return function() { + var s = this.getAttribute(e); + return s === o ? null : s === r ? i : i = t(r = s, n); + }; +} +function sv(e, t, n) { + var r, o = n + "", i; + return function() { + var s = this.getAttributeNS(e.space, e.local); + return s === o ? null : s === r ? i : i = t(r = s, n); + }; +} +function av(e, t, n) { + var r, o, i; + return function() { + var s, a = n(this), l; + return a == null ? void this.removeAttribute(e) : (s = this.getAttribute(e), l = a + "", s === l ? null : s === r && l === o ? i : (o = l, i = t(r = s, a))); + }; +} +function lv(e, t, n) { + var r, o, i; + return function() { + var s, a = n(this), l; + return a == null ? void this.removeAttributeNS(e.space, e.local) : (s = this.getAttributeNS(e.space, e.local), l = a + "", s === l ? null : s === r && l === o ? i : (o = l, i = t(r = s, a))); + }; +} +function uv(e, t) { + var n = zi(e), r = n === "transform" ? Bh : Ku; + return this.attrTween(e, typeof t == "function" ? (n.local ? lv : av)(n, r, sa(this, "attr." + e, t)) : t == null ? (n.local ? ov : rv)(n) : (n.local ? sv : iv)(n, r, t)); +} +function cv(e, t) { + return function(n) { + this.setAttribute(e, t.call(this, n)); + }; +} +function dv(e, t) { + return function(n) { + this.setAttributeNS(e.space, e.local, t.call(this, n)); + }; +} +function fv(e, t) { + var n, r; + function o() { + var i = t.apply(this, arguments); + return i !== r && (n = (r = i) && dv(e, i)), n; + } + return o._value = t, o; +} +function gv(e, t) { + var n, r; + function o() { + var i = t.apply(this, arguments); + return i !== r && (n = (r = i) && cv(e, i)), n; + } + return o._value = t, o; +} +function hv(e, t) { + var n = "attr." + e; + if (arguments.length < 2) return (n = this.tween(n)) && n._value; + if (t == null) return this.tween(n, null); + if (typeof t != "function") throw new Error(); + var r = zi(e); + return this.tween(n, (r.local ? fv : gv)(r, t)); +} +function vv(e, t) { + return function() { + ia(this, e).delay = +t.apply(this, arguments); + }; +} +function pv(e, t) { + return t = +t, function() { + ia(this, e).delay = t; + }; +} +function mv(e) { + var t = this._id; + return arguments.length ? this.each((typeof e == "function" ? vv : pv)(t, e)) : cn(this.node(), t).delay; +} +function yv(e, t) { + return function() { + Cn(this, e).duration = +t.apply(this, arguments); + }; +} +function wv(e, t) { + return t = +t, function() { + Cn(this, e).duration = t; + }; +} +function _v(e) { + var t = this._id; + return arguments.length ? this.each((typeof e == "function" ? yv : wv)(t, e)) : cn(this.node(), t).duration; +} +function xv(e, t) { + if (typeof t != "function") throw new Error(); + return function() { + Cn(this, e).ease = t; + }; +} +function bv(e) { + var t = this._id; + return arguments.length ? this.each(xv(t, e)) : cn(this.node(), t).ease; +} +function Cv(e, t) { + return function() { + var n = t.apply(this, arguments); + if (typeof n != "function") throw new Error(); + Cn(this, e).ease = n; + }; +} +function kv(e) { + if (typeof e != "function") throw new Error(); + return this.each(Cv(this._id, e)); +} +function $v(e) { + typeof e != "function" && (e = $u(e)); + for (var t = this._groups, n = t.length, r = new Array(n), o = 0; o < n; ++o) + for (var i = t[o], s = i.length, a = r[o] = [], l, u = 0; u < s; ++u) + (l = i[u]) && e.call(l, l.__data__, u, i) && a.push(l); + return new Ln(r, this._parents, this._name, this._id); +} +function Ev(e) { + if (e._id !== this._id) throw new Error(); + for (var t = this._groups, n = e._groups, r = t.length, o = n.length, i = Math.min(r, o), s = new Array(r), a = 0; a < i; ++a) + for (var l = t[a], u = n[a], c = l.length, f = s[a] = new Array(c), d, g = 0; g < c; ++g) + (d = l[g] || u[g]) && (f[g] = d); + for (; a < r; ++a) + s[a] = t[a]; + return new Ln(s, this._parents, this._name, this._id); +} +function Sv(e) { + return (e + "").trim().split(/^|\s+/).every(function(t) { + var n = t.indexOf("."); + return n >= 0 && (t = t.slice(0, n)), !t || t === "start"; + }); +} +function Pv(e, t, n) { + var r, o, i = Sv(t) ? ia : Cn; + return function() { + var s = i(this, e), a = s.on; + a !== r && (o = (r = a).copy()).on(t, n), s.on = o; + }; +} +function Nv(e, t) { + var n = this._id; + return arguments.length < 2 ? cn(this.node(), n).on.on(e) : this.each(Pv(n, e, t)); +} +function Mv(e) { + return function() { + var t = this.parentNode; + for (var n in this.__transition) if (+n !== e) return; + t && t.removeChild(this); + }; +} +function Tv() { + return this.on("end.remove", Mv(this._id)); +} +function Hv(e) { + var t = this._name, n = this._id; + typeof e != "function" && (e = ta(e)); + for (var r = this._groups, o = r.length, i = new Array(o), s = 0; s < o; ++s) + for (var a = r[s], l = a.length, u = i[s] = new Array(l), c, f, d = 0; d < l; ++d) + (c = a[d]) && (f = e.call(c, c.__data__, d, a)) && ("__data__" in c && (f.__data__ = c.__data__), u[d] = f, Bi(u[d], t, n, d, u, cn(c, n))); + return new Ln(i, this._parents, t, n); +} +function Vv(e) { + var t = this._name, n = this._id; + typeof e != "function" && (e = ku(e)); + for (var r = this._groups, o = r.length, i = [], s = [], a = 0; a < o; ++a) + for (var l = r[a], u = l.length, c, f = 0; f < u; ++f) + if (c = l[f]) { + for (var d = e.call(c, c.__data__, f, l), g, p = cn(c, n), x = 0, C = d.length; x < C; ++x) + (g = d[x]) && Bi(g, t, n, x, d, p); + i.push(d), s.push(c); + } + return new Ln(i, s, t, n); +} +var Dv = Eo.prototype.constructor; +function Av() { + return new Dv(this._groups, this._parents); +} +function Lv(e, t) { + var n, r, o; + return function() { + var i = Hr(this, e), s = (this.style.removeProperty(e), Hr(this, e)); + return i === s ? null : i === n && s === r ? o : o = t(n = i, r = s); + }; +} +function qu(e) { + return function() { + this.style.removeProperty(e); + }; +} +function Ov(e, t, n) { + var r, o = n + "", i; + return function() { + var s = Hr(this, e); + return s === o ? null : s === r ? i : i = t(r = s, n); + }; +} +function Iv(e, t, n) { + var r, o, i; + return function() { + var s = Hr(this, e), a = n(this), l = a + ""; + return a == null && (l = a = (this.style.removeProperty(e), Hr(this, e))), s === l ? null : s === r && l === o ? i : (o = l, i = t(r = s, a)); + }; +} +function zv(e, t) { + var n, r, o, i = "style." + t, s = "end." + i, a; + return function() { + var l = Cn(this, e), u = l.on, c = l.value[i] == null ? a || (a = qu(t)) : void 0; + (u !== n || o !== c) && (r = (n = u).copy()).on(s, o = c), l.on = r; + }; +} +function Rv(e, t, n) { + var r = (e += "") == "transform" ? Rh : Ku; + return t == null ? this.styleTween(e, Lv(e, r)).on("end.style." + e, qu(e)) : typeof t == "function" ? this.styleTween(e, Iv(e, r, sa(this, "style." + e, t))).each(zv(this._id, e)) : this.styleTween(e, Ov(e, r, t), n).on("end.style." + e, null); +} +function Bv(e, t, n) { + return function(r) { + this.style.setProperty(e, t.call(this, r), n); + }; +} +function Yv(e, t, n) { + var r, o; + function i() { + var s = t.apply(this, arguments); + return s !== o && (r = (o = s) && Bv(e, s, n)), r; + } + return i._value = t, i; +} +function Zv(e, t, n) { + var r = "style." + (e += ""); + if (arguments.length < 2) return (r = this.tween(r)) && r._value; + if (t == null) return this.tween(r, null); + if (typeof t != "function") throw new Error(); + return this.tween(r, Yv(e, t, n ?? "")); +} +function Xv(e) { + return function() { + this.textContent = e; + }; +} +function Fv(e) { + return function() { + var t = e(this); + this.textContent = t ?? ""; + }; +} +function Wv(e) { + return this.tween("text", typeof e == "function" ? Fv(sa(this, "text", e)) : Xv(e == null ? "" : e + "")); +} +function Kv(e) { + return function(t) { + this.textContent = e.call(this, t); + }; +} +function qv(e) { + var t, n; + function r() { + var o = e.apply(this, arguments); + return o !== n && (t = (n = o) && Kv(o)), t; + } + return r._value = e, r; +} +function Gv(e) { + var t = "text"; + if (arguments.length < 1) return (t = this.tween(t)) && t._value; + if (e == null) return this.tween(t, null); + if (typeof e != "function") throw new Error(); + return this.tween(t, qv(e)); +} +function Uv() { + for (var e = this._name, t = this._id, n = Gu(), r = this._groups, o = r.length, i = 0; i < o; ++i) + for (var s = r[i], a = s.length, l, u = 0; u < a; ++u) + if (l = s[u]) { + var c = cn(l, t); + Bi(l, e, n, u, s, { + time: c.time + c.delay + c.duration, + delay: 0, + duration: c.duration, + ease: c.ease + }); + } + return new Ln(r, this._parents, e, n); +} +function jv() { + var e, t, n = this, r = n._id, o = n.size(); + return new Promise(function(i, s) { + var a = { value: s }, l = { value: function() { + --o === 0 && i(); + } }; + n.each(function() { + var u = Cn(this, r), c = u.on; + c !== e && (t = (e = c).copy(), t._.cancel.push(a), t._.interrupt.push(a), t._.end.push(l)), u.on = t; + }), o === 0 && i(); + }); +} +var Jv = 0; +function Ln(e, t, n, r) { + this._groups = e, this._parents = t, this._name = n, this._id = r; +} +function Gu() { + return ++Jv; +} +var $n = Eo.prototype; +Ln.prototype = { + constructor: Ln, + select: Hv, + selectAll: Vv, + selectChild: $n.selectChild, + selectChildren: $n.selectChildren, + filter: $v, + merge: Ev, + selection: Av, + transition: Uv, + call: $n.call, + nodes: $n.nodes, + node: $n.node, + size: $n.size, + empty: $n.empty, + each: $n.each, + on: Nv, + attr: uv, + attrTween: hv, + style: Rv, + styleTween: Zv, + text: Wv, + textTween: Gv, + remove: Tv, + tween: nv, + delay: mv, + duration: _v, + ease: bv, + easeVarying: kv, + end: jv, + [Symbol.iterator]: $n[Symbol.iterator] +}; +function Qv(e) { + return ((e *= 2) <= 1 ? e * e * e : (e -= 2) * e * e + 2) / 2; +} +var e0 = { + time: null, + // Set on use. + delay: 0, + duration: 250, + ease: Qv +}; +function t0(e, t) { + for (var n; !(n = e.__transition) || !(n = n[t]); ) + if (!(e = e.parentNode)) + throw new Error(`transition ${t} not found`); + return n; +} +function n0(e) { + var t, n; + e instanceof Ln ? (t = e._id, e = e._name) : (t = Gu(), (n = e0).time = oa(), e = e == null ? null : e + ""); + for (var r = this._groups, o = r.length, i = 0; i < o; ++i) + for (var s = r[i], a = s.length, l, u = 0; u < a; ++u) + (l = s[u]) && Bi(l, e, t, u, s, n || t0(l, t)); + return new Ln(r, this._parents, e, t); +} +Eo.prototype.interrupt = Qh; +Eo.prototype.transition = n0; +const Wo = (e) => () => e; +function r0(e, { + sourceEvent: t, + target: n, + transform: r, + dispatch: o +}) { + Object.defineProperties(this, { + type: { value: e, enumerable: !0, configurable: !0 }, + sourceEvent: { value: t, enumerable: !0, configurable: !0 }, + target: { value: n, enumerable: !0, configurable: !0 }, + transform: { value: r, enumerable: !0, configurable: !0 }, + _: { value: o } + }); +} +function Pn(e, t, n) { + this.k = e, this.x = t, this.y = n; +} +Pn.prototype = { + constructor: Pn, + scale: function(e) { + return e === 1 ? this : new Pn(this.k * e, this.x, this.y); + }, + translate: function(e, t) { + return e === 0 & t === 0 ? this : new Pn(this.k, this.x + this.k * e, this.y + this.k * t); + }, + apply: function(e) { + return [e[0] * this.k + this.x, e[1] * this.k + this.y]; + }, + applyX: function(e) { + return e * this.k + this.x; + }, + applyY: function(e) { + return e * this.k + this.y; + }, + invert: function(e) { + return [(e[0] - this.x) / this.k, (e[1] - this.y) / this.k]; + }, + invertX: function(e) { + return (e - this.x) / this.k; + }, + invertY: function(e) { + return (e - this.y) / this.k; + }, + rescaleX: function(e) { + return e.copy().domain(e.range().map(this.invertX, this).map(e.invert, e)); + }, + rescaleY: function(e) { + return e.copy().domain(e.range().map(this.invertY, this).map(e.invert, e)); + }, + toString: function() { + return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; + } +}; +var Yi = new Pn(1, 0, 0); +Uu.prototype = Pn.prototype; +function Uu(e) { + for (; !e.__zoom; ) if (!(e = e.parentNode)) return Yi; + return e.__zoom; +} +function os(e) { + e.stopImmediatePropagation(); +} +function Qr(e) { + e.preventDefault(), e.stopImmediatePropagation(); +} +function o0(e) { + return (!e.ctrlKey || e.type === "wheel") && !e.button; +} +function i0() { + var e = this; + return e instanceof SVGElement ? (e = e.ownerSVGElement || e, e.hasAttribute("viewBox") ? (e = e.viewBox.baseVal, [[e.x, e.y], [e.x + e.width, e.y + e.height]]) : [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]) : [[0, 0], [e.clientWidth, e.clientHeight]]; +} +function sl() { + return this.__zoom || Yi; +} +function s0(e) { + return -e.deltaY * (e.deltaMode === 1 ? 0.05 : e.deltaMode ? 1 : 2e-3) * (e.ctrlKey ? 10 : 1); +} +function a0() { + return navigator.maxTouchPoints || "ontouchstart" in this; +} +function l0(e, t, n) { + var r = e.invertX(t[0][0]) - n[0][0], o = e.invertX(t[1][0]) - n[1][0], i = e.invertY(t[0][1]) - n[0][1], s = e.invertY(t[1][1]) - n[1][1]; + return e.translate( + o > r ? (r + o) / 2 : Math.min(0, r) || Math.max(0, o), + s > i ? (i + s) / 2 : Math.min(0, i) || Math.max(0, s) + ); +} +function ju() { + var e = o0, t = i0, n = l0, r = s0, o = a0, i = [0, 1 / 0], s = [[-1 / 0, -1 / 0], [1 / 0, 1 / 0]], a = 250, l = Fh, u = Ii("start", "zoom", "end"), c, f, d, g = 500, p = 150, x = 0, C = 10; + function $(S) { + S.property("__zoom", sl).on("wheel.zoom", M, { passive: !1 }).on("mousedown.zoom", D).on("dblclick.zoom", V).filter(o).on("touchstart.zoom", A).on("touchmove.zoom", O).on("touchend.zoom touchcancel.zoom", R).style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + $.transform = function(S, T, k, P) { + var H = S.selection ? S.selection() : S; + H.property("__zoom", sl), S !== H ? b(S, T, k, P) : H.interrupt().each(function() { + N(this, arguments).event(P).start().zoom(null, typeof T == "function" ? T.apply(this, arguments) : T).end(); + }); + }, $.scaleBy = function(S, T, k, P) { + $.scaleTo(S, function() { + var H = this.__zoom.k, I = typeof T == "function" ? T.apply(this, arguments) : T; + return H * I; + }, k, P); + }, $.scaleTo = function(S, T, k, P) { + $.transform(S, function() { + var H = t.apply(this, arguments), I = this.__zoom, B = k == null ? v(H) : typeof k == "function" ? k.apply(this, arguments) : k, F = I.invert(B), K = typeof T == "function" ? T.apply(this, arguments) : T; + return n(_(m(I, K), B, F), H, s); + }, k, P); + }, $.translateBy = function(S, T, k, P) { + $.transform(S, function() { + return n(this.__zoom.translate( + typeof T == "function" ? T.apply(this, arguments) : T, + typeof k == "function" ? k.apply(this, arguments) : k + ), t.apply(this, arguments), s); + }, null, P); + }, $.translateTo = function(S, T, k, P, H) { + $.transform(S, function() { + var I = t.apply(this, arguments), B = this.__zoom, F = P == null ? v(I) : typeof P == "function" ? P.apply(this, arguments) : P; + return n(Yi.translate(F[0], F[1]).scale(B.k).translate( + typeof T == "function" ? -T.apply(this, arguments) : -T, + typeof k == "function" ? -k.apply(this, arguments) : -k + ), I, s); + }, P, H); + }; + function m(S, T) { + return T = Math.max(i[0], Math.min(i[1], T)), T === S.k ? S : new Pn(T, S.x, S.y); + } + function _(S, T, k) { + var P = T[0] - k[0] * S.k, H = T[1] - k[1] * S.k; + return P === S.x && H === S.y ? S : new Pn(S.k, P, H); + } + function v(S) { + return [(+S[0][0] + +S[1][0]) / 2, (+S[0][1] + +S[1][1]) / 2]; + } + function b(S, T, k, P) { + S.on("start.zoom", function() { + N(this, arguments).event(P).start(); + }).on("interrupt.zoom end.zoom", function() { + N(this, arguments).event(P).end(); + }).tween("zoom", function() { + var H = this, I = arguments, B = N(H, I).event(P), F = t.apply(H, I), K = k == null ? v(F) : typeof k == "function" ? k.apply(H, I) : k, ie = Math.max(F[1][0] - F[0][0], F[1][1] - F[0][1]), ee = H.__zoom, W = typeof T == "function" ? T.apply(H, I) : T, ue = l(ee.invert(K).concat(ie / ee.k), W.invert(K).concat(ie / W.k)); + return function(me) { + if (me === 1) me = W; + else { + var Ce = ue(me), ge = ie / Ce[2]; + me = new Pn(ge, K[0] - Ce[0] * ge, K[1] - Ce[1] * ge); + } + B.zoom(null, me); + }; + }); + } + function N(S, T, k) { + return !k && S.__zooming || new E(S, T); + } + function E(S, T) { + this.that = S, this.args = T, this.active = 0, this.sourceEvent = null, this.extent = t.apply(S, T), this.taps = 0; + } + E.prototype = { + event: function(S) { + return S && (this.sourceEvent = S), this; + }, + start: function() { + return ++this.active === 1 && (this.that.__zooming = this, this.emit("start")), this; + }, + zoom: function(S, T) { + return this.mouse && S !== "mouse" && (this.mouse[1] = T.invert(this.mouse[0])), this.touch0 && S !== "touch" && (this.touch0[1] = T.invert(this.touch0[0])), this.touch1 && S !== "touch" && (this.touch1[1] = T.invert(this.touch1[0])), this.that.__zoom = T, this.emit("zoom"), this; + }, + end: function() { + return --this.active === 0 && (delete this.that.__zooming, this.emit("end")), this; + }, + emit: function(S) { + var T = Kt(this.that).datum(); + u.call( + S, + this.that, + new r0(S, { + sourceEvent: this.sourceEvent, + target: $, + transform: this.that.__zoom, + dispatch: u + }), + T + ); + } + }; + function M(S, ...T) { + if (!e.apply(this, arguments)) return; + var k = N(this, T).event(S), P = this.__zoom, H = Math.max(i[0], Math.min(i[1], P.k * Math.pow(2, r.apply(this, arguments)))), I = Qt(S); + if (k.wheel) + (k.mouse[0][0] !== I[0] || k.mouse[0][1] !== I[1]) && (k.mouse[1] = P.invert(k.mouse[0] = I)), clearTimeout(k.wheel); + else { + if (P.k === H) return; + k.mouse = [I, P.invert(I)], Qo(this), k.start(); + } + Qr(S), k.wheel = setTimeout(B, p), k.zoom("mouse", n(_(m(P, H), k.mouse[0], k.mouse[1]), k.extent, s)); + function B() { + k.wheel = null, k.end(); + } + } + function D(S, ...T) { + if (d || !e.apply(this, arguments)) return; + var k = S.currentTarget, P = N(this, T, !0).event(S), H = Kt(S.view).on("mousemove.zoom", K, !0).on("mouseup.zoom", ie, !0), I = Qt(S, k), B = S.clientX, F = S.clientY; + Au(S.view), os(S), P.mouse = [I, this.__zoom.invert(I)], Qo(this), P.start(); + function K(ee) { + if (Qr(ee), !P.moved) { + var W = ee.clientX - B, ue = ee.clientY - F; + P.moved = W * W + ue * ue > x; + } + P.event(ee).zoom("mouse", n(_(P.that.__zoom, P.mouse[0] = Qt(ee, k), P.mouse[1]), P.extent, s)); + } + function ie(ee) { + H.on("mousemove.zoom mouseup.zoom", null), Lu(ee.view, P.moved), Qr(ee), P.event(ee).end(); + } + } + function V(S, ...T) { + if (e.apply(this, arguments)) { + var k = this.__zoom, P = Qt(S.changedTouches ? S.changedTouches[0] : S, this), H = k.invert(P), I = k.k * (S.shiftKey ? 0.5 : 2), B = n(_(m(k, I), P, H), t.apply(this, T), s); + Qr(S), a > 0 ? Kt(this).transition().duration(a).call(b, B, P, S) : Kt(this).call($.transform, B, P, S); + } + } + function A(S, ...T) { + if (e.apply(this, arguments)) { + var k = S.touches, P = k.length, H = N(this, T, S.changedTouches.length === P).event(S), I, B, F, K; + for (os(S), B = 0; B < P; ++B) + F = k[B], K = Qt(F, this), K = [K, this.__zoom.invert(K), F.identifier], H.touch0 ? !H.touch1 && H.touch0[2] !== K[2] && (H.touch1 = K, H.taps = 0) : (H.touch0 = K, I = !0, H.taps = 1 + !!c); + c && (c = clearTimeout(c)), I && (H.taps < 2 && (f = K[0], c = setTimeout(function() { + c = null; + }, g)), Qo(this), H.start()); + } + } + function O(S, ...T) { + if (this.__zooming) { + var k = N(this, T).event(S), P = S.changedTouches, H = P.length, I, B, F, K; + for (Qr(S), I = 0; I < H; ++I) + B = P[I], F = Qt(B, this), k.touch0 && k.touch0[2] === B.identifier ? k.touch0[0] = F : k.touch1 && k.touch1[2] === B.identifier && (k.touch1[0] = F); + if (B = k.that.__zoom, k.touch1) { + var ie = k.touch0[0], ee = k.touch0[1], W = k.touch1[0], ue = k.touch1[1], me = (me = W[0] - ie[0]) * me + (me = W[1] - ie[1]) * me, Ce = (Ce = ue[0] - ee[0]) * Ce + (Ce = ue[1] - ee[1]) * Ce; + B = m(B, Math.sqrt(me / Ce)), F = [(ie[0] + W[0]) / 2, (ie[1] + W[1]) / 2], K = [(ee[0] + ue[0]) / 2, (ee[1] + ue[1]) / 2]; + } else if (k.touch0) F = k.touch0[0], K = k.touch0[1]; + else return; + k.zoom("touch", n(_(B, F, K), k.extent, s)); + } + } + function R(S, ...T) { + if (this.__zooming) { + var k = N(this, T).event(S), P = S.changedTouches, H = P.length, I, B; + for (os(S), d && clearTimeout(d), d = setTimeout(function() { + d = null; + }, g), I = 0; I < H; ++I) + B = P[I], k.touch0 && k.touch0[2] === B.identifier ? delete k.touch0 : k.touch1 && k.touch1[2] === B.identifier && delete k.touch1; + if (k.touch1 && !k.touch0 && (k.touch0 = k.touch1, delete k.touch1), k.touch0) k.touch0[1] = this.__zoom.invert(k.touch0[0]); + else if (k.end(), k.taps === 2 && (B = Qt(B, this), Math.hypot(f[0] - B[0], f[1] - B[1]) < C)) { + var F = Kt(this).on("dblclick.zoom"); + F && F.apply(this, arguments); + } + } + } + return $.wheelDelta = function(S) { + return arguments.length ? (r = typeof S == "function" ? S : Wo(+S), $) : r; + }, $.filter = function(S) { + return arguments.length ? (e = typeof S == "function" ? S : Wo(!!S), $) : e; + }, $.touchable = function(S) { + return arguments.length ? (o = typeof S == "function" ? S : Wo(!!S), $) : o; + }, $.extent = function(S) { + return arguments.length ? (t = typeof S == "function" ? S : Wo([[+S[0][0], +S[0][1]], [+S[1][0], +S[1][1]]]), $) : t; + }, $.scaleExtent = function(S) { + return arguments.length ? (i[0] = +S[0], i[1] = +S[1], $) : [i[0], i[1]]; + }, $.translateExtent = function(S) { + return arguments.length ? (s[0][0] = +S[0][0], s[1][0] = +S[1][0], s[0][1] = +S[0][1], s[1][1] = +S[1][1], $) : [[s[0][0], s[0][1]], [s[1][0], s[1][1]]]; + }, $.constrain = function(S) { + return arguments.length ? (n = S, $) : n; + }, $.duration = function(S) { + return arguments.length ? (a = +S, $) : a; + }, $.interpolate = function(S) { + return arguments.length ? (l = S, $) : l; + }, $.on = function() { + var S = u.on.apply(u, arguments); + return S === u ? $ : S; + }, $.clickDistance = function(S) { + return arguments.length ? (x = (S = +S) * S, $) : Math.sqrt(x); + }, $.tapDistance = function(S) { + return arguments.length ? (C = +S, $) : C; + }, $; +} +const Dr = { + error001: () => "[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001", + error002: () => "It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.", + error003: (e) => `Node type "${e}" not found. Using fallback type "default".`, + error004: () => "The React Flow parent container needs a width and a height to render the graph.", + error005: () => "Only child nodes can use a parent extent.", + error006: () => "Can't create edge. An edge needs a source and a target.", + error007: (e) => `The old edge with id=${e} does not exist.`, + error009: (e) => `Marker type "${e}" doesn't exist.`, + error008: (e, { id: t, sourceHandle: n, targetHandle: r }) => `Couldn't create edge for ${e} handle id: "${e === "source" ? n : r}", edge id: ${t}.`, + error010: () => "Handle: No node id found. Make sure to only use a Handle inside a custom Node.", + error011: (e) => `Edge type "${e}" not found. Using fallback type "default".`, + error012: (e) => `Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`, + error013: (e = "react") => `It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`, + error014: () => "useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.", + error015: () => "It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs." +}, vi = [ + [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], + [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY] +]; +var cr; +(function(e) { + e.Strict = "strict", e.Loose = "loose"; +})(cr || (cr = {})); +var qn; +(function(e) { + e.Free = "free", e.Vertical = "vertical", e.Horizontal = "horizontal"; +})(qn || (qn = {})); +var pi; +(function(e) { + e.Partial = "partial", e.Full = "full"; +})(pi || (pi = {})); +const Ns = { + inProgress: !1, + isValid: null, + from: null, + fromHandle: null, + fromPosition: null, + fromNode: null, + to: null, + toHandle: null, + toPosition: null, + toNode: null +}; +var Cr; +(function(e) { + e.Bezier = "default", e.Straight = "straight", e.Step = "step", e.SmoothStep = "smoothstep", e.SimpleBezier = "simplebezier"; +})(Cr || (Cr = {})); +var mo; +(function(e) { + e.Arrow = "arrow", e.ArrowClosed = "arrowclosed"; +})(mo || (mo = {})); +var $e; +(function(e) { + e.Left = "left", e.Top = "top", e.Right = "right", e.Bottom = "bottom"; +})($e || ($e = {})); +const al = { + [$e.Left]: $e.Right, + [$e.Right]: $e.Left, + [$e.Top]: $e.Bottom, + [$e.Bottom]: $e.Top +}; +function u0(e, t) { + if (!e && !t) + return !0; + if (!e || !t || e.size !== t.size) + return !1; + if (!e.size && !t.size) + return !0; + for (const n of e.keys()) + if (!t.has(n)) + return !1; + return !0; +} +function ll(e, t, n) { + if (!n) + return; + const r = []; + e.forEach((o, i) => { + t != null && t.has(i) || r.push(o); + }), r.length && n(r); +} +function c0(e) { + return e === null ? null : e ? "valid" : "invalid"; +} +const d0 = (e) => "id" in e && "source" in e && "target" in e, f0 = (e) => "id" in e && "position" in e && !("source" in e) && !("target" in e), aa = (e) => "id" in e && "internals" in e && !("source" in e) && !("target" in e), Po = (e, t = [0, 0]) => { + const { width: n, height: r } = tr(e), o = e.origin ?? t, i = n * o[0], s = r * o[1]; + return { + x: e.position.x - i, + y: e.position.y - s + }; +}, g0 = (e, t = { nodeOrigin: [0, 0], nodeLookup: void 0 }) => { + if (e.length === 0) + return { x: 0, y: 0, width: 0, height: 0 }; + const n = e.reduce((r, o) => { + const i = typeof o == "string"; + let s = !t.nodeLookup && !i ? o : void 0; + t.nodeLookup && (s = i ? t.nodeLookup.get(o) : aa(o) ? o : t.nodeLookup.get(o.id)); + const a = s ? mi(s, t.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 }; + return Zi(r, a); + }, { x: 1 / 0, y: 1 / 0, x2: -1 / 0, y2: -1 / 0 }); + return Xi(n); +}, No = (e, t = {}) => { + if (e.size === 0) + return { x: 0, y: 0, width: 0, height: 0 }; + let n = { x: 1 / 0, y: 1 / 0, x2: -1 / 0, y2: -1 / 0 }; + return e.forEach((r) => { + if (t.filter === void 0 || t.filter(r)) { + const o = mi(r); + n = Zi(n, o); + } + }), Xi(n); +}, Ju = (e, t, [n, r, o] = [0, 0, 1], i = !1, s = !1) => { + const a = { + ...Mo(t, [n, r, o]), + width: t.width / o, + height: t.height / o + }, l = []; + for (const u of e.values()) { + const { measured: c, selectable: f = !0, hidden: d = !1 } = u; + if (s && !f || d) + continue; + const g = c.width ?? u.width ?? u.initialWidth ?? null, p = c.height ?? u.height ?? u.initialHeight ?? null, x = yo(a, Lr(u)), C = (g ?? 0) * (p ?? 0), $ = i && x > 0; + (!u.internals.handleBounds || $ || x >= C || u.dragging) && l.push(u); + } + return l; +}, Ms = (e, t) => { + const n = /* @__PURE__ */ new Set(); + return e.forEach((r) => { + n.add(r.id); + }), t.filter((r) => n.has(r.source) || n.has(r.target)); +}; +function ul(e, t) { + const n = /* @__PURE__ */ new Map(), r = t != null && t.nodes ? new Set(t.nodes.map((o) => o.id)) : null; + return e.forEach((o) => { + o.measured.width && o.measured.height && ((t == null ? void 0 : t.includeHiddenNodes) || !o.hidden) && (!r || r.has(o.id)) && n.set(o.id, o); + }), n; +} +async function cl({ nodes: e, width: t, height: n, panZoom: r, minZoom: o, maxZoom: i }, s) { + if (e.size === 0) + return Promise.resolve(!1); + const a = No(e), l = ua(a, t, n, (s == null ? void 0 : s.minZoom) ?? o, (s == null ? void 0 : s.maxZoom) ?? i, (s == null ? void 0 : s.padding) ?? 0.1); + return await r.setViewport(l, { duration: s == null ? void 0 : s.duration }), Promise.resolve(!0); +} +function h0({ nodeId: e, nextPosition: t, nodeLookup: n, nodeOrigin: r = [0, 0], nodeExtent: o, onError: i }) { + const s = n.get(e), a = s.parentId ? n.get(s.parentId) : void 0, { x: l, y: u } = a ? a.internals.positionAbsolute : { x: 0, y: 0 }, c = s.origin ?? r; + let f = o; + if (s.extent === "parent" && !s.expandParent) + if (!a) + i == null || i("005", Dr.error005()); + else { + const g = a.measured.width, p = a.measured.height; + g && p && (f = [ + [l, u], + [l + g, u + p] + ]); + } + else a && Or(s.extent) && (f = [ + [s.extent[0][0] + l, s.extent[0][1] + u], + [s.extent[1][0] + l, s.extent[1][1] + u] + ]); + const d = Or(f) ? dr(t, f, s.measured) : t; + return (s.measured.width === void 0 || s.measured.height === void 0) && (i == null || i("015", Dr.error015())), { + position: { + x: d.x - l + (s.measured.width ?? 0) * c[0], + y: d.y - u + (s.measured.height ?? 0) * c[1] + }, + positionAbsolute: d + }; +} +async function Qu({ nodesToRemove: e = [], edgesToRemove: t = [], nodes: n, edges: r, onBeforeDelete: o }) { + const i = new Set(e.map((d) => d.id)), s = []; + for (const d of n) { + if (d.deletable === !1) + continue; + const g = i.has(d.id), p = !g && d.parentId && s.find((x) => x.id === d.parentId); + (g || p) && s.push(d); + } + const a = new Set(t.map((d) => d.id)), l = r.filter((d) => d.deletable !== !1), c = Ms(s, l); + for (const d of l) + a.has(d.id) && !c.find((p) => p.id === d.id) && c.push(d); + if (!o) + return { + edges: c, + nodes: s + }; + const f = await o({ + nodes: s, + edges: c + }); + return typeof f == "boolean" ? f ? { edges: c, nodes: s } : { edges: [], nodes: [] } : f; +} +const Ar = (e, t = 0, n = 1) => Math.min(Math.max(e, t), n), dr = (e = { x: 0, y: 0 }, t, n) => ({ + x: Ar(e.x, t[0][0], t[1][0] - ((n == null ? void 0 : n.width) ?? 0)), + y: Ar(e.y, t[0][1], t[1][1] - ((n == null ? void 0 : n.height) ?? 0)) +}); +function ec(e, t, n) { + const { width: r, height: o } = tr(n), { x: i, y: s } = n.internals.positionAbsolute; + return dr(e, [ + [i, s], + [i + r, s + o] + ], t); +} +const dl = (e, t, n) => e < t ? Ar(Math.abs(e - t), 1, t) / t : e > n ? -Ar(Math.abs(e - n), 1, t) / t : 0, tc = (e, t, n = 15, r = 40) => { + const o = dl(e.x, r, t.width - r) * n, i = dl(e.y, r, t.height - r) * n; + return [o, i]; +}, Zi = (e, t) => ({ + x: Math.min(e.x, t.x), + y: Math.min(e.y, t.y), + x2: Math.max(e.x2, t.x2), + y2: Math.max(e.y2, t.y2) +}), Ts = ({ x: e, y: t, width: n, height: r }) => ({ + x: e, + y: t, + x2: e + n, + y2: t + r +}), Xi = ({ x: e, y: t, x2: n, y2: r }) => ({ + x: e, + y: t, + width: n - e, + height: r - t +}), Lr = (e, t = [0, 0]) => { + var o, i; + const { x: n, y: r } = aa(e) ? e.internals.positionAbsolute : Po(e, t); + return { + x: n, + y: r, + width: ((o = e.measured) == null ? void 0 : o.width) ?? e.width ?? e.initialWidth ?? 0, + height: ((i = e.measured) == null ? void 0 : i.height) ?? e.height ?? e.initialHeight ?? 0 + }; +}, mi = (e, t = [0, 0]) => { + var o, i; + const { x: n, y: r } = aa(e) ? e.internals.positionAbsolute : Po(e, t); + return { + x: n, + y: r, + x2: n + (((o = e.measured) == null ? void 0 : o.width) ?? e.width ?? e.initialWidth ?? 0), + y2: r + (((i = e.measured) == null ? void 0 : i.height) ?? e.height ?? e.initialHeight ?? 0) + }; +}, nc = (e, t) => Xi(Zi(Ts(e), Ts(t))), yo = (e, t) => { + const n = Math.max(0, Math.min(e.x + e.width, t.x + t.width) - Math.max(e.x, t.x)), r = Math.max(0, Math.min(e.y + e.height, t.y + t.height) - Math.max(e.y, t.y)); + return Math.ceil(n * r); +}, fl = (e) => Nn(e.width) && Nn(e.height) && Nn(e.x) && Nn(e.y), Nn = (e) => !isNaN(e) && isFinite(e), v0 = (e, t) => { +}, la = (e, t = [1, 1]) => ({ + x: t[0] * Math.round(e.x / t[0]), + y: t[1] * Math.round(e.y / t[1]) +}), Mo = ({ x: e, y: t }, [n, r, o], i = !1, s = [1, 1]) => { + const a = { + x: (e - n) / o, + y: (t - r) / o + }; + return i ? la(a, s) : a; +}, rc = ({ x: e, y: t }, [n, r, o]) => ({ + x: e * o + n, + y: t * o + r +}), ua = (e, t, n, r, o, i) => { + const s = t / (e.width * (1 + i)), a = n / (e.height * (1 + i)), l = Math.min(s, a), u = Ar(l, r, o), c = e.x + e.width / 2, f = e.y + e.height / 2, d = t / 2 - c * u, g = n / 2 - f * u; + return { x: d, y: g, zoom: u }; +}, yi = () => { + var e; + return typeof navigator < "u" && ((e = navigator == null ? void 0 : navigator.userAgent) == null ? void 0 : e.indexOf("Mac")) >= 0; +}; +function Or(e) { + return e !== void 0 && e !== "parent"; +} +function tr(e) { + var t, n; + return { + width: ((t = e.measured) == null ? void 0 : t.width) ?? e.width ?? e.initialWidth ?? 0, + height: ((n = e.measured) == null ? void 0 : n.height) ?? e.height ?? e.initialHeight ?? 0 + }; +} +function oc(e) { + var t, n; + return (((t = e.measured) == null ? void 0 : t.width) ?? e.width ?? e.initialWidth) !== void 0 && (((n = e.measured) == null ? void 0 : n.height) ?? e.height ?? e.initialHeight) !== void 0; +} +function p0(e, t = { width: 0, height: 0 }, n, r, o) { + const i = { ...e }, s = r.get(n); + if (s) { + const a = s.origin || o; + i.x += s.internals.positionAbsolute.x - (t.width ?? 0) * a[0], i.y += s.internals.positionAbsolute.y - (t.height ?? 0) * a[1]; + } + return i; +} +function is(e, { snapGrid: t = [0, 0], snapToGrid: n = !1, transform: r, containerBounds: o }) { + const { x: i, y: s } = Hn(e), a = Mo({ x: i - ((o == null ? void 0 : o.left) ?? 0), y: s - ((o == null ? void 0 : o.top) ?? 0) }, r), { x: l, y: u } = n ? la(a, t) : a; + return { + xSnapped: l, + ySnapped: u, + ...a + }; +} +const ca = (e) => ({ + width: e.offsetWidth, + height: e.offsetHeight +}), m0 = (e) => { + var t; + return ((t = e == null ? void 0 : e.getRootNode) == null ? void 0 : t.call(e)) || (window == null ? void 0 : window.document); +}, y0 = ["INPUT", "SELECT", "TEXTAREA"]; +function w0(e) { + var r, o; + const t = ((o = (r = e.composedPath) == null ? void 0 : r.call(e)) == null ? void 0 : o[0]) || e.target; + return (t == null ? void 0 : t.nodeType) !== 1 ? !1 : y0.includes(t.nodeName) || t.hasAttribute("contenteditable") || !!t.closest(".nokey"); +} +const ic = (e) => "clientX" in e, Hn = (e, t) => { + var i, s; + const n = ic(e), r = n ? e.clientX : (i = e.touches) == null ? void 0 : i[0].clientX, o = n ? e.clientY : (s = e.touches) == null ? void 0 : s[0].clientY; + return { + x: r - ((t == null ? void 0 : t.left) ?? 0), + y: o - ((t == null ? void 0 : t.top) ?? 0) + }; +}, gl = (e, t, n, r, o) => { + const i = t.querySelectorAll(`.${e}`); + return !i || !i.length ? null : Array.from(i).map((s) => { + const a = s.getBoundingClientRect(); + return { + id: s.getAttribute("data-handleid"), + type: e, + nodeId: o, + position: s.getAttribute("data-handlepos"), + x: (a.left - n.left) / r, + y: (a.top - n.top) / r, + ...ca(s) + }; + }); +}; +function _0({ sourceX: e, sourceY: t, targetX: n, targetY: r, sourceControlX: o, sourceControlY: i, targetControlX: s, targetControlY: a }) { + const l = e * 0.125 + o * 0.375 + s * 0.375 + n * 0.125, u = t * 0.125 + i * 0.375 + a * 0.375 + r * 0.125, c = Math.abs(l - e), f = Math.abs(u - t); + return [l, u, c, f]; +} +function Ko(e, t) { + return e >= 0 ? 0.5 * e : t * 25 * Math.sqrt(-e); +} +function hl({ pos: e, x1: t, y1: n, x2: r, y2: o, c: i }) { + switch (e) { + case $e.Left: + return [t - Ko(t - r, i), n]; + case $e.Right: + return [t + Ko(r - t, i), n]; + case $e.Top: + return [t, n - Ko(n - o, i)]; + case $e.Bottom: + return [t, n + Ko(o - n, i)]; + } +} +function sc({ sourceX: e, sourceY: t, sourcePosition: n = $e.Bottom, targetX: r, targetY: o, targetPosition: i = $e.Top, curvature: s = 0.25 }) { + const [a, l] = hl({ + pos: n, + x1: e, + y1: t, + x2: r, + y2: o, + c: s + }), [u, c] = hl({ + pos: i, + x1: r, + y1: o, + x2: e, + y2: t, + c: s + }), [f, d, g, p] = _0({ + sourceX: e, + sourceY: t, + targetX: r, + targetY: o, + sourceControlX: a, + sourceControlY: l, + targetControlX: u, + targetControlY: c + }); + return [ + `M${e},${t} C${a},${l} ${u},${c} ${r},${o}`, + f, + d, + g, + p + ]; +} +function ac({ sourceX: e, sourceY: t, targetX: n, targetY: r }) { + const o = Math.abs(n - e) / 2, i = n < e ? n + o : n - o, s = Math.abs(r - t) / 2, a = r < t ? r + s : r - s; + return [i, a, o, s]; +} +function x0({ sourceNode: e, targetNode: t, selected: n = !1, zIndex: r = 0, elevateOnSelect: o = !1 }) { + if (!o) + return r; + const i = n || t.selected || e.selected, s = Math.max(e.internals.z || 0, t.internals.z || 0, 1e3); + return r + (i ? s : 0); +} +function b0({ sourceNode: e, targetNode: t, width: n, height: r, transform: o }) { + const i = Zi(mi(e), mi(t)); + i.x === i.x2 && (i.x2 += 1), i.y === i.y2 && (i.y2 += 1); + const s = { + x: -o[0] / o[2], + y: -o[1] / o[2], + width: n / o[2], + height: r / o[2] + }; + return yo(s, Xi(i)) > 0; +} +const C0 = ({ source: e, sourceHandle: t, target: n, targetHandle: r }) => `xy-edge__${e}${t || ""}-${n}${r || ""}`, k0 = (e, t) => t.some((n) => n.source === e.source && n.target === e.target && (n.sourceHandle === e.sourceHandle || !n.sourceHandle && !e.sourceHandle) && (n.targetHandle === e.targetHandle || !n.targetHandle && !e.targetHandle)), $0 = (e, t) => { + if (!e.source || !e.target) + return t; + let n; + return d0(e) ? n = { ...e } : n = { + ...e, + id: C0(e) + }, k0(n, t) ? t : (n.sourceHandle === null && delete n.sourceHandle, n.targetHandle === null && delete n.targetHandle, t.concat(n)); +}; +function Hs({ sourceX: e, sourceY: t, targetX: n, targetY: r }) { + const [o, i, s, a] = ac({ + sourceX: e, + sourceY: t, + targetX: n, + targetY: r + }); + return [`M ${e},${t}L ${n},${r}`, o, i, s, a]; +} +const vl = { + [$e.Left]: { x: -1, y: 0 }, + [$e.Right]: { x: 1, y: 0 }, + [$e.Top]: { x: 0, y: -1 }, + [$e.Bottom]: { x: 0, y: 1 } +}, E0 = ({ source: e, sourcePosition: t = $e.Bottom, target: n }) => t === $e.Left || t === $e.Right ? e.x < n.x ? { x: 1, y: 0 } : { x: -1, y: 0 } : e.y < n.y ? { x: 0, y: 1 } : { x: 0, y: -1 }, pl = (e, t) => Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)); +function S0({ source: e, sourcePosition: t = $e.Bottom, target: n, targetPosition: r = $e.Top, center: o, offset: i }) { + const s = vl[t], a = vl[r], l = { x: e.x + s.x * i, y: e.y + s.y * i }, u = { x: n.x + a.x * i, y: n.y + a.y * i }, c = E0({ + source: l, + sourcePosition: t, + target: u + }), f = c.x !== 0 ? "x" : "y", d = c[f]; + let g = [], p, x; + const C = { x: 0, y: 0 }, $ = { x: 0, y: 0 }, [m, _, v, b] = ac({ + sourceX: e.x, + sourceY: e.y, + targetX: n.x, + targetY: n.y + }); + if (s[f] * a[f] === -1) { + p = o.x ?? m, x = o.y ?? _; + const E = [ + { x: p, y: l.y }, + { x: p, y: u.y } + ], M = [ + { x: l.x, y: x }, + { x: u.x, y: x } + ]; + s[f] === d ? g = f === "x" ? E : M : g = f === "x" ? M : E; + } else { + const E = [{ x: l.x, y: u.y }], M = [{ x: u.x, y: l.y }]; + if (f === "x" ? g = s.x === d ? M : E : g = s.y === d ? E : M, t === r) { + const R = Math.abs(e[f] - n[f]); + if (R <= i) { + const S = Math.min(i - 1, i - R); + s[f] === d ? C[f] = (l[f] > e[f] ? -1 : 1) * S : $[f] = (u[f] > n[f] ? -1 : 1) * S; + } + } + if (t !== r) { + const R = f === "x" ? "y" : "x", S = s[f] === a[R], T = l[R] > u[R], k = l[R] < u[R]; + (s[f] === 1 && (!S && T || S && k) || s[f] !== 1 && (!S && k || S && T)) && (g = f === "x" ? E : M); + } + const D = { x: l.x + C.x, y: l.y + C.y }, V = { x: u.x + $.x, y: u.y + $.y }, A = Math.max(Math.abs(D.x - g[0].x), Math.abs(V.x - g[0].x)), O = Math.max(Math.abs(D.y - g[0].y), Math.abs(V.y - g[0].y)); + A >= O ? (p = (D.x + V.x) / 2, x = g[0].y) : (p = g[0].x, x = (D.y + V.y) / 2); + } + return [[ + e, + { x: l.x + C.x, y: l.y + C.y }, + ...g, + { x: u.x + $.x, y: u.y + $.y }, + n + ], p, x, v, b]; +} +function P0(e, t, n, r) { + const o = Math.min(pl(e, t) / 2, pl(t, n) / 2, r), { x: i, y: s } = t; + if (e.x === i && i === n.x || e.y === s && s === n.y) + return `L${i} ${s}`; + if (e.y === s) { + const u = e.x < n.x ? -1 : 1, c = e.y < n.y ? 1 : -1; + return `L ${i + o * u},${s}Q ${i},${s} ${i},${s + o * c}`; + } + const a = e.x < n.x ? 1 : -1, l = e.y < n.y ? -1 : 1; + return `L ${i},${s + o * l}Q ${i},${s} ${i + o * a},${s}`; +} +function wi({ sourceX: e, sourceY: t, sourcePosition: n = $e.Bottom, targetX: r, targetY: o, targetPosition: i = $e.Top, borderRadius: s = 5, centerX: a, centerY: l, offset: u = 20 }) { + const [c, f, d, g, p] = S0({ + source: { x: e, y: t }, + sourcePosition: n, + target: { x: r, y: o }, + targetPosition: i, + center: { x: a, y: l }, + offset: u + }); + return [c.reduce((C, $, m) => { + let _ = ""; + return m > 0 && m < c.length - 1 ? _ = P0(c[m - 1], $, c[m + 1], s) : _ = `${m === 0 ? "M" : "L"}${$.x} ${$.y}`, C += _, C; + }, ""), f, d, g, p]; +} +function ml(e) { + var t; + return e && !!(e.internals.handleBounds || (t = e.handles) != null && t.length) && !!(e.measured.width || e.width || e.initialWidth); +} +function N0(e) { + var f; + const { sourceNode: t, targetNode: n } = e; + if (!ml(t) || !ml(n)) + return null; + const r = t.internals.handleBounds || yl(t.handles), o = n.internals.handleBounds || yl(n.handles), i = wl((r == null ? void 0 : r.source) ?? [], e.sourceHandle), s = wl( + // when connection type is loose we can define all handles as sources and connect source -> source + e.connectionMode === cr.Strict ? (o == null ? void 0 : o.target) ?? [] : ((o == null ? void 0 : o.target) ?? []).concat((o == null ? void 0 : o.source) ?? []), + e.targetHandle + ); + if (!i || !s) + return (f = e.onError) == null || f.call(e, "008", Dr.error008(i ? "target" : "source", { + id: e.id, + sourceHandle: e.sourceHandle, + targetHandle: e.targetHandle + })), null; + const a = (i == null ? void 0 : i.position) || $e.Bottom, l = (s == null ? void 0 : s.position) || $e.Top, u = wo(t, i, a), c = wo(n, s, l); + return { + sourceX: u.x, + sourceY: u.y, + targetX: c.x, + targetY: c.y, + sourcePosition: a, + targetPosition: l + }; +} +function yl(e) { + if (!e) + return null; + const t = [], n = []; + for (const r of e) + r.width = r.width ?? 1, r.height = r.height ?? 1, r.type === "source" ? t.push(r) : r.type === "target" && n.push(r); + return { + source: t, + target: n + }; +} +function wo(e, t, n = $e.Left, r = !1) { + const o = ((t == null ? void 0 : t.x) ?? 0) + e.internals.positionAbsolute.x, i = ((t == null ? void 0 : t.y) ?? 0) + e.internals.positionAbsolute.y, { width: s, height: a } = t ?? tr(e); + if (r) + return { x: o + s / 2, y: i + a / 2 }; + switch ((t == null ? void 0 : t.position) ?? n) { + case $e.Top: + return { x: o + s / 2, y: i }; + case $e.Right: + return { x: o + s, y: i + a / 2 }; + case $e.Bottom: + return { x: o + s / 2, y: i + a }; + case $e.Left: + return { x: o, y: i + a / 2 }; + } +} +function wl(e, t) { + return e && (t ? e.find((n) => n.id === t) : e[0]) || null; +} +function Vs(e, t) { + return e ? typeof e == "string" ? e : `${t ? `${t}__` : ""}${Object.keys(e).sort().map((r) => `${r}=${e[r]}`).join("&")}` : ""; +} +function M0(e, { id: t, defaultColor: n, defaultMarkerStart: r, defaultMarkerEnd: o }) { + const i = /* @__PURE__ */ new Set(); + return e.reduce((s, a) => ([a.markerStart || r, a.markerEnd || o].forEach((l) => { + if (l && typeof l == "object") { + const u = Vs(l, t); + i.has(u) || (s.push({ id: u, color: l.color || n, ...l }), i.add(u)); + } + }), s), []).sort((s, a) => s.id.localeCompare(a.id)); +} +function T0(e, t, n, r, o) { + let i = 0.5; + o === "start" ? i = 0 : o === "end" && (i = 1); + let s = [ + (e.x + e.width * i) * t.zoom + t.x, + e.y * t.zoom + t.y - r + ], a = [-100 * i, -100]; + switch (n) { + case $e.Right: + s = [ + (e.x + e.width) * t.zoom + t.x + r, + (e.y + e.height * i) * t.zoom + t.y + ], a = [0, -100 * i]; + break; + case $e.Bottom: + s[1] = (e.y + e.height) * t.zoom + t.y + r, a[1] = 0; + break; + case $e.Left: + s = [ + e.x * t.zoom + t.x - r, + (e.y + e.height * i) * t.zoom + t.y + ], a = [-100, -100 * i]; + break; + } + return `translate(${s[0]}px, ${s[1]}px) translate(${a[0]}%, ${a[1]}%)`; +} +const da = { + nodeOrigin: [0, 0], + nodeExtent: vi, + elevateNodesOnSelect: !0, + defaults: {} +}, H0 = { + ...da, + checkEquality: !0 +}; +function fa(e, t) { + const n = { ...e }; + for (const r in t) + t[r] !== void 0 && (n[r] = t[r]); + return n; +} +function V0(e, t, n) { + const r = fa(da, n); + for (const o of e.values()) + if (o.parentId) + ga(o, e, t, r); + else { + const i = Po(o, r.nodeOrigin), s = Or(o.extent) ? o.extent : r.nodeExtent, a = dr(i, s, tr(o)); + o.internals.positionAbsolute = a; + } +} +function lc(e, t, n, r) { + var a, l; + const o = fa(H0, r), i = new Map(t), s = o != null && o.elevateNodesOnSelect ? 1e3 : 0; + t.clear(), n.clear(); + for (const u of e) { + let c = i.get(u.id); + if (o.checkEquality && u === (c == null ? void 0 : c.internals.userNode)) + t.set(u.id, c); + else { + const f = Po(u, o.nodeOrigin), d = Or(u.extent) ? u.extent : o.nodeExtent, g = dr(f, d, tr(u)); + c = { + ...o.defaults, + ...u, + measured: { + width: (a = u.measured) == null ? void 0 : a.width, + height: (l = u.measured) == null ? void 0 : l.height + }, + internals: { + positionAbsolute: g, + // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured + handleBounds: u.measured ? c == null ? void 0 : c.internals.handleBounds : void 0, + z: uc(u, s), + userNode: u + } + }, t.set(u.id, c); + } + u.parentId && ga(c, t, n, r); + } +} +function D0(e, t) { + if (!e.parentId) + return; + const n = t.get(e.parentId); + n ? n.set(e.id, e) : t.set(e.parentId, /* @__PURE__ */ new Map([[e.id, e]])); +} +function ga(e, t, n, r) { + const { elevateNodesOnSelect: o, nodeOrigin: i, nodeExtent: s } = fa(da, r), a = e.parentId, l = t.get(a); + if (!l) { + console.warn(`Parent node ${a} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`); + return; + } + D0(e, n); + const u = o ? 1e3 : 0, { x: c, y: f, z: d } = A0(e, l, i, s, u), { positionAbsolute: g } = e.internals, p = c !== g.x || f !== g.y; + (p || d !== e.internals.z) && t.set(e.id, { + ...e, + internals: { + ...e.internals, + positionAbsolute: p ? { x: c, y: f } : g, + z: d + } + }); +} +function uc(e, t) { + return (Nn(e.zIndex) ? e.zIndex : 0) + (e.selected ? t : 0); +} +function A0(e, t, n, r, o) { + const { x: i, y: s } = t.internals.positionAbsolute, a = tr(e), l = Po(e, n), u = Or(e.extent) ? dr(l, e.extent, a) : l; + let c = dr({ x: i + u.x, y: s + u.y }, r, a); + e.extent === "parent" && (c = ec(c, a, t)); + const f = uc(e, o), d = t.internals.z ?? 0; + return { + x: c.x, + y: c.y, + z: d > f ? d : f + }; +} +function L0(e, t, n, r = [0, 0]) { + var s; + const o = [], i = /* @__PURE__ */ new Map(); + for (const a of e) { + const l = t.get(a.parentId); + if (!l) + continue; + const u = ((s = i.get(a.parentId)) == null ? void 0 : s.expandedRect) ?? Lr(l), c = nc(u, a.rect); + i.set(a.parentId, { expandedRect: c, parent: l }); + } + return i.size > 0 && i.forEach(({ expandedRect: a, parent: l }, u) => { + var _; + const c = l.internals.positionAbsolute, f = tr(l), d = l.origin ?? r, g = a.x < c.x ? Math.round(Math.abs(c.x - a.x)) : 0, p = a.y < c.y ? Math.round(Math.abs(c.y - a.y)) : 0, x = Math.max(f.width, Math.round(a.width)), C = Math.max(f.height, Math.round(a.height)), $ = (x - f.width) * d[0], m = (C - f.height) * d[1]; + (g > 0 || p > 0 || $ || m) && (o.push({ + id: u, + type: "position", + position: { + x: l.position.x - g + $, + y: l.position.y - p + m + } + }), (_ = n.get(u)) == null || _.forEach((v) => { + e.some((b) => b.id === v.id) || o.push({ + id: v.id, + type: "position", + position: { + x: v.position.x + g, + y: v.position.y + p + } + }); + })), (f.width < a.width || f.height < a.height || g || p) && o.push({ + id: u, + type: "dimensions", + setAttributes: !0, + dimensions: { + width: x + (g ? d[0] * g - $ : 0), + height: C + (p ? d[1] * p - m : 0) + } + }); + }), o; +} +function O0(e, t, n, r, o, i) { + const s = r == null ? void 0 : r.querySelector(".xyflow__viewport"); + let a = !1; + if (!s) + return { changes: [], updatedInternals: a }; + const l = [], u = window.getComputedStyle(s), { m22: c } = new window.DOMMatrixReadOnly(u.transform), f = []; + for (const d of e.values()) { + const g = t.get(d.id); + if (!g) + continue; + if (g.hidden) { + t.set(g.id, { + ...g, + internals: { + ...g.internals, + handleBounds: void 0 + } + }), a = !0; + continue; + } + const p = ca(d.nodeElement), x = g.measured.width !== p.width || g.measured.height !== p.height; + if (!!(p.width && p.height && (x || !g.internals.handleBounds || d.force))) { + const $ = d.nodeElement.getBoundingClientRect(), m = Or(g.extent) ? g.extent : i; + let { positionAbsolute: _ } = g.internals; + g.parentId && g.extent === "parent" ? _ = ec(_, p, t.get(g.parentId)) : m && (_ = dr(_, m, p)); + const v = { + ...g, + measured: p, + internals: { + ...g.internals, + positionAbsolute: _, + handleBounds: { + source: gl("source", d.nodeElement, $, c, g.id), + target: gl("target", d.nodeElement, $, c, g.id) + } + } + }; + t.set(g.id, v), g.parentId && ga(v, t, n, { nodeOrigin: o }), a = !0, x && (l.push({ + id: g.id, + type: "dimensions", + dimensions: p + }), g.expandParent && g.parentId && f.push({ + id: g.id, + parentId: g.parentId, + rect: Lr(v, o) + })); + } + } + if (f.length > 0) { + const d = L0(f, t, n, o); + l.push(...d); + } + return { changes: l, updatedInternals: a }; +} +async function I0({ delta: e, panZoom: t, transform: n, translateExtent: r, width: o, height: i }) { + if (!t || !e.x && !e.y) + return Promise.resolve(!1); + const s = await t.setViewportConstrained({ + x: n[0] + e.x, + y: n[1] + e.y, + zoom: n[2] + }, [ + [0, 0], + [o, i] + ], r), a = !!s && (s.x !== n[0] || s.y !== n[1] || s.k !== n[2]); + return Promise.resolve(a); +} +function _l(e, t, n, r, o, i) { + let s = o; + const a = r.get(s) || /* @__PURE__ */ new Map(); + r.set(s, a.set(n, t)), s = `${o}-${e}`; + const l = r.get(s) || /* @__PURE__ */ new Map(); + if (r.set(s, l.set(n, t)), i) { + s = `${o}-${e}-${i}`; + const u = r.get(s) || /* @__PURE__ */ new Map(); + r.set(s, u.set(n, t)); + } +} +function cc(e, t, n) { + e.clear(), t.clear(); + for (const r of n) { + const { source: o, target: i, sourceHandle: s = null, targetHandle: a = null } = r, l = { edgeId: r.id, source: o, target: i, sourceHandle: s, targetHandle: a }, u = `${o}-${s}--${i}-${a}`, c = `${i}-${a}--${o}-${s}`; + _l("source", l, c, e, o, s), _l("target", l, u, e, i, a), t.set(r.id, r); + } +} +function z0(e, t) { + if (e === null || t === null) + return !1; + const n = Array.isArray(e) ? e : [e], r = Array.isArray(t) ? t : [t]; + if (n.length !== r.length) + return !1; + for (let o = 0; o < n.length; o++) + if (n[o].id !== r[o].id || n[o].type !== r[o].type || !Object.is(n[o].data, r[o].data)) + return !1; + return !0; +} +function dc(e, t) { + if (!e.parentId) + return !1; + const n = t.get(e.parentId); + return n ? n.selected ? !0 : dc(n, t) : !1; +} +function xl(e, t, n) { + var o; + let r = e; + do { + if ((o = r == null ? void 0 : r.matches) != null && o.call(r, t)) + return !0; + if (r === n) + return !1; + r = r == null ? void 0 : r.parentElement; + } while (r); + return !1; +} +function R0(e, t, n, r) { + const o = /* @__PURE__ */ new Map(); + for (const [i, s] of e) + if ((s.selected || s.id === r) && (!s.parentId || !dc(s, e)) && (s.draggable || t && typeof s.draggable > "u")) { + const a = e.get(i); + a && o.set(i, { + id: i, + position: a.position || { x: 0, y: 0 }, + distance: { + x: n.x - a.internals.positionAbsolute.x, + y: n.y - a.internals.positionAbsolute.y + }, + extent: a.extent, + parentId: a.parentId, + origin: a.origin, + expandParent: a.expandParent, + internals: { + positionAbsolute: a.internals.positionAbsolute || { x: 0, y: 0 } + }, + measured: { + width: a.measured.width ?? 0, + height: a.measured.height ?? 0 + } + }); + } + return o; +} +function ss({ nodeId: e, dragItems: t, nodeLookup: n, dragging: r = !0 }) { + var s, a, l; + const o = []; + for (const [u, c] of t) { + const f = (s = n.get(u)) == null ? void 0 : s.internals.userNode; + f && o.push({ + ...f, + position: c.position, + dragging: r + }); + } + if (!e) + return [o[0], o]; + const i = (a = n.get(e)) == null ? void 0 : a.internals.userNode; + return [ + i ? { + ...i, + position: ((l = t.get(e)) == null ? void 0 : l.position) || i.position, + dragging: r + } : o[0], + o + ]; +} +function B0({ onNodeMouseDown: e, getStoreItems: t, onDragStart: n, onDrag: r, onDragStop: o }) { + let i = { x: null, y: null }, s = 0, a = /* @__PURE__ */ new Map(), l = !1, u = { x: 0, y: 0 }, c = null, f = !1, d = null, g = !1; + function p({ noDragClassName: C, handleSelector: $, domNode: m, isSelectable: _, nodeId: v, nodeClickDistance: b = 0 }) { + d = Kt(m); + function N({ x: V, y: A }, O) { + const { nodeLookup: R, nodeExtent: S, snapGrid: T, snapToGrid: k, nodeOrigin: P, onNodeDrag: H, onSelectionDrag: I, onError: B, updateNodePositions: F } = t(); + i = { x: V, y: A }; + let K = !1, ie = { x: 0, y: 0, x2: 0, y2: 0 }; + if (a.size > 1 && S) { + const ee = No(a); + ie = Ts(ee); + } + for (const [ee, W] of a) { + if (!R.has(ee)) + continue; + let ue = { x: V - W.distance.x, y: A - W.distance.y }; + k && (ue = la(ue, T)); + let me = [ + [S[0][0], S[0][1]], + [S[1][0], S[1][1]] + ]; + if (a.size > 1 && S && !W.extent) { + const { positionAbsolute: ze } = W.internals, G = ze.x - ie.x + S[0][0], se = ze.x + W.measured.width - ie.x2 + S[1][0], Te = ze.y - ie.y + S[0][1], Ae = ze.y + W.measured.height - ie.y2 + S[1][1]; + me = [ + [G, Te], + [se, Ae] + ]; + } + const { position: Ce, positionAbsolute: ge } = h0({ + nodeId: ee, + nextPosition: ue, + nodeLookup: R, + nodeExtent: me, + nodeOrigin: P, + onError: B + }); + K = K || W.position.x !== Ce.x || W.position.y !== Ce.y, W.position = Ce, W.internals.positionAbsolute = ge; + } + if (K && (F(a, !0), O && (r || H || !v && I))) { + const [ee, W] = ss({ + nodeId: v, + dragItems: a, + nodeLookup: R + }); + r == null || r(O, a, ee, W), H == null || H(O, ee, W), v || I == null || I(O, W); + } + } + async function E() { + if (!c) + return; + const { transform: V, panBy: A, autoPanSpeed: O, autoPanOnNodeDrag: R } = t(); + if (!R) { + l = !1, cancelAnimationFrame(s); + return; + } + const [S, T] = tc(u, c, O); + (S !== 0 || T !== 0) && (i.x = (i.x ?? 0) - S / V[2], i.y = (i.y ?? 0) - T / V[2], await A({ x: S, y: T }) && N(i, null)), s = requestAnimationFrame(E); + } + function M(V) { + var K; + const { nodeLookup: A, multiSelectionActive: O, nodesDraggable: R, transform: S, snapGrid: T, snapToGrid: k, selectNodesOnDrag: P, onNodeDragStart: H, onSelectionDragStart: I, unselectNodesAndEdges: B } = t(); + f = !0, (!P || !_) && !O && v && ((K = A.get(v)) != null && K.selected || B()), _ && P && v && (e == null || e(v)); + const F = is(V.sourceEvent, { transform: S, snapGrid: T, snapToGrid: k, containerBounds: c }); + if (i = F, a = R0(A, R, F, v), a.size > 0 && (n || H || !v && I)) { + const [ie, ee] = ss({ + nodeId: v, + dragItems: a, + nodeLookup: A + }); + n == null || n(V.sourceEvent, a, ie, ee), H == null || H(V.sourceEvent, ie, ee), v || I == null || I(V.sourceEvent, ee); + } + } + const D = wh().clickDistance(b).on("start", (V) => { + const { domNode: A, nodeDragThreshold: O, transform: R, snapGrid: S, snapToGrid: T } = t(); + c = (A == null ? void 0 : A.getBoundingClientRect()) || null, g = !1, O === 0 && M(V), i = is(V.sourceEvent, { transform: R, snapGrid: S, snapToGrid: T, containerBounds: c }), u = Hn(V.sourceEvent, c); + }).on("drag", (V) => { + const { autoPanOnNodeDrag: A, transform: O, snapGrid: R, snapToGrid: S, nodeDragThreshold: T, nodeLookup: k } = t(), P = is(V.sourceEvent, { transform: O, snapGrid: R, snapToGrid: S, containerBounds: c }); + if ((V.sourceEvent.type === "touchmove" && V.sourceEvent.touches.length > 1 || // if user deletes a node while dragging, we need to abort the drag to prevent errors + v && !k.has(v)) && (g = !0), !g) { + if (!l && A && f && (l = !0, E()), !f) { + const H = P.xSnapped - (i.x ?? 0), I = P.ySnapped - (i.y ?? 0); + Math.sqrt(H * H + I * I) > T && M(V); + } + (i.x !== P.xSnapped || i.y !== P.ySnapped) && a && f && (u = Hn(V.sourceEvent, c), N(P, V.sourceEvent)); + } + }).on("end", (V) => { + if (!(!f || g) && (l = !1, f = !1, cancelAnimationFrame(s), a.size > 0)) { + const { nodeLookup: A, updateNodePositions: O, onNodeDragStop: R, onSelectionDragStop: S } = t(); + if (O(a, !1), o || R || !v && S) { + const [T, k] = ss({ + nodeId: v, + dragItems: a, + nodeLookup: A, + dragging: !1 + }); + o == null || o(V.sourceEvent, a, T, k), R == null || R(V.sourceEvent, T, k), v || S == null || S(V.sourceEvent, k); + } + } + }).filter((V) => { + const A = V.target; + return !V.button && (!C || !xl(A, `.${C}`, m)) && (!$ || xl(A, $, m)); + }); + d.call(D); + } + function x() { + d == null || d.on(".drag", null); + } + return { + update: p, + destroy: x + }; +} +function Y0(e, t, n) { + const r = [], o = { + x: e.x - n, + y: e.y - n, + width: n * 2, + height: n * 2 + }; + for (const i of t.values()) + yo(o, Lr(i)) > 0 && r.push(i); + return r; +} +const Z0 = 250; +function X0(e, t, n, r) { + var a, l; + let o = [], i = 1 / 0; + const s = Y0(e, n, t + Z0); + for (const u of s) { + const c = [...((a = u.internals.handleBounds) == null ? void 0 : a.source) ?? [], ...((l = u.internals.handleBounds) == null ? void 0 : l.target) ?? []]; + for (const f of c) { + if (r.nodeId === f.nodeId && r.type === f.type && r.id === f.id) + continue; + const { x: d, y: g } = wo(u, f, f.position, !0), p = Math.sqrt(Math.pow(d - e.x, 2) + Math.pow(g - e.y, 2)); + p > t || (p < i ? (o = [{ ...f, x: d, y: g }], i = p) : p === i && o.push({ ...f, x: d, y: g })); + } + } + if (!o.length) + return null; + if (o.length > 1) { + const u = r.type === "source" ? "target" : "source"; + return o.find((c) => c.type === u) ?? o[0]; + } + return o[0]; +} +function fc(e, t, n, r, o, i = !1) { + var u, c, f; + const s = r.get(e); + if (!s) + return null; + const a = o === "strict" ? (u = s.internals.handleBounds) == null ? void 0 : u[t] : [...((c = s.internals.handleBounds) == null ? void 0 : c.source) ?? [], ...((f = s.internals.handleBounds) == null ? void 0 : f.target) ?? []], l = (n ? a == null ? void 0 : a.find((d) => d.id === n) : a == null ? void 0 : a[0]) ?? null; + return l && i ? { ...l, ...wo(s, l, l.position, !0) } : l; +} +function gc(e, t) { + return e || (t != null && t.classList.contains("target") ? "target" : t != null && t.classList.contains("source") ? "source" : null); +} +function F0(e, t) { + let n = null; + return t ? n = !0 : e && !t && (n = !1), n; +} +const hc = () => !0; +function W0(e, { connectionMode: t, connectionRadius: n, handleId: r, nodeId: o, edgeUpdaterType: i, isTarget: s, domNode: a, nodeLookup: l, lib: u, autoPanOnConnect: c, flowId: f, panBy: d, cancelConnection: g, onConnectStart: p, onConnect: x, onConnectEnd: C, isValidConnection: $ = hc, onReconnectEnd: m, updateConnection: _, getTransform: v, getFromHandle: b, autoPanSpeed: N }) { + const E = m0(e.target); + let M = 0, D; + const { x: V, y: A } = Hn(e), O = E == null ? void 0 : E.elementFromPoint(V, A), R = gc(i, O), S = a == null ? void 0 : a.getBoundingClientRect(); + if (!S || !R) + return; + const T = fc(o, R, r, l, t); + if (!T) + return; + let k = Hn(e, S), P = !1, H = null, I = !1, B = null; + function F() { + if (!c || !S) + return; + const [ge, ze] = tc(k, S, N); + d({ x: ge, y: ze }), M = requestAnimationFrame(F); + } + const K = { + ...T, + nodeId: o, + type: R, + position: T.position + }, ie = l.get(o), W = { + inProgress: !0, + isValid: null, + from: wo(ie, K, $e.Left, !0), + fromHandle: K, + fromPosition: K.position, + fromNode: ie, + to: k, + toHandle: null, + toPosition: al[K.position], + toNode: null + }; + _(W); + let ue = W; + p == null || p(e, { nodeId: o, handleId: r, handleType: R }); + function me(ge) { + if (!b() || !K) { + Ce(ge); + return; + } + const ze = v(); + k = Hn(ge, S), D = X0(Mo(k, ze, !1, [1, 1]), n, l, K), P || (F(), P = !0); + const G = vc(ge, { + handle: D, + connectionMode: t, + fromNodeId: o, + fromHandleId: r, + fromType: s ? "target" : "source", + isValidConnection: $, + doc: E, + lib: u, + flowId: f, + nodeLookup: l + }); + B = G.handleDomNode, H = G.connection, I = F0(!!D, G.isValid); + const se = { + // from stays the same + ...ue, + isValid: I, + to: D && I ? rc({ x: D.x, y: D.y }, ze) : k, + toHandle: G.toHandle, + toPosition: I && G.toHandle ? G.toHandle.position : al[K.position], + toNode: G.toHandle ? l.get(G.toHandle.nodeId) : null + }; + I && D && ue.toHandle && se.toHandle && ue.toHandle.type === se.toHandle.type && ue.toHandle.nodeId === se.toHandle.nodeId && ue.toHandle.id === se.toHandle.id && ue.to.x === se.to.x && ue.to.y === se.to.y || (_(se), ue = se); + } + function Ce(ge) { + (D || B) && H && I && (x == null || x(H)); + const { inProgress: ze, ...G } = ue, se = { + ...G, + toPosition: ue.toHandle ? ue.toPosition : null + }; + C == null || C(ge, se), i && (m == null || m(ge, se)), g(), cancelAnimationFrame(M), P = !1, I = !1, H = null, B = null, E.removeEventListener("mousemove", me), E.removeEventListener("mouseup", Ce), E.removeEventListener("touchmove", me), E.removeEventListener("touchend", Ce); + } + E.addEventListener("mousemove", me), E.addEventListener("mouseup", Ce), E.addEventListener("touchmove", me), E.addEventListener("touchend", Ce); +} +function vc(e, { handle: t, connectionMode: n, fromNodeId: r, fromHandleId: o, fromType: i, doc: s, lib: a, flowId: l, isValidConnection: u = hc, nodeLookup: c }) { + const f = i === "target", d = t ? s.querySelector(`.${a}-flow__handle[data-id="${l}-${t == null ? void 0 : t.nodeId}-${t == null ? void 0 : t.id}-${t == null ? void 0 : t.type}"]`) : null, { x: g, y: p } = Hn(e), x = s.elementFromPoint(g, p), C = x != null && x.classList.contains(`${a}-flow__handle`) ? x : d, $ = { + handleDomNode: C, + isValid: !1, + connection: null, + toHandle: null + }; + if (C) { + const m = gc(void 0, C), _ = C.getAttribute("data-nodeid"), v = C.getAttribute("data-handleid"), b = C.classList.contains("connectable"), N = C.classList.contains("connectableend"); + if (!_ || !m) + return $; + const E = { + source: f ? _ : r, + sourceHandle: f ? v : o, + target: f ? r : _, + targetHandle: f ? o : v + }; + $.connection = E; + const D = b && N && (n === cr.Strict ? f && m === "source" || !f && m === "target" : _ !== r || v !== o); + $.isValid = D && u(E), $.toHandle = fc(_, m, v, c, n, !1); + } + return $; +} +const K0 = { + onPointerDown: W0, + isValid: vc +}; +function q0({ domNode: e, panZoom: t, getTransform: n, getViewScale: r }) { + const o = Kt(e); + function i({ translateExtent: a, width: l, height: u, zoomStep: c = 10, pannable: f = !0, zoomable: d = !0, inversePan: g = !1 }) { + const p = (_) => { + const v = n(); + if (_.sourceEvent.type !== "wheel" || !t) + return; + const b = -_.sourceEvent.deltaY * (_.sourceEvent.deltaMode === 1 ? 0.05 : _.sourceEvent.deltaMode ? 1 : 2e-3) * c, N = v[2] * Math.pow(2, b); + t.scaleTo(N); + }; + let x = [0, 0]; + const C = (_) => { + (_.sourceEvent.type === "mousedown" || _.sourceEvent.type === "touchstart") && (x = [ + _.sourceEvent.clientX ?? _.sourceEvent.touches[0].clientX, + _.sourceEvent.clientY ?? _.sourceEvent.touches[0].clientY + ]); + }, $ = (_) => { + const v = n(); + if (_.sourceEvent.type !== "mousemove" && _.sourceEvent.type !== "touchmove" || !t) + return; + const b = [ + _.sourceEvent.clientX ?? _.sourceEvent.touches[0].clientX, + _.sourceEvent.clientY ?? _.sourceEvent.touches[0].clientY + ], N = [b[0] - x[0], b[1] - x[1]]; + x = b; + const E = r() * Math.max(v[2], Math.log(v[2])) * (g ? -1 : 1), M = { + x: v[0] - N[0] * E, + y: v[1] - N[1] * E + }, D = [ + [0, 0], + [l, u] + ]; + t.setViewportConstrained({ + x: M.x, + y: M.y, + zoom: v[2] + }, D, a); + }, m = ju().on("start", C).on("zoom", f ? $ : null).on("zoom.wheel", d ? p : null); + o.call(m, {}); + } + function s() { + o.on("zoom", null); + } + return { + update: i, + destroy: s, + pointer: Qt + }; +} +const G0 = (e, t) => e.x !== t.x || e.y !== t.y || e.zoom !== t.k, Fi = (e) => ({ + x: e.x, + y: e.y, + zoom: e.k +}), as = ({ x: e, y: t, zoom: n }) => Yi.translate(e, t).scale(n), wr = (e, t) => e.target.closest(`.${t}`), pc = (e, t) => t === 2 && Array.isArray(e) && e.includes(2), ls = (e, t = 0, n = () => { +}) => { + const r = typeof t == "number" && t > 0; + return r || n(), r ? e.transition().duration(t).on("end", n) : e; +}, mc = (e) => { + const t = e.ctrlKey && yi() ? 10 : 1; + return -e.deltaY * (e.deltaMode === 1 ? 0.05 : e.deltaMode ? 1 : 2e-3) * t; +}; +function U0({ zoomPanValues: e, noWheelClassName: t, d3Selection: n, d3Zoom: r, panOnScrollMode: o, panOnScrollSpeed: i, zoomOnPinch: s, onPanZoomStart: a, onPanZoom: l, onPanZoomEnd: u }) { + return (c) => { + if (wr(c, t)) + return !1; + c.preventDefault(), c.stopImmediatePropagation(); + const f = n.property("__zoom").k || 1; + if (c.ctrlKey && s) { + const C = Qt(c), $ = mc(c), m = f * Math.pow(2, $); + r.scaleTo(n, m, C, c); + return; + } + const d = c.deltaMode === 1 ? 20 : 1; + let g = o === qn.Vertical ? 0 : c.deltaX * d, p = o === qn.Horizontal ? 0 : c.deltaY * d; + !yi() && c.shiftKey && o !== qn.Vertical && (g = c.deltaY * d, p = 0), r.translateBy( + n, + -(g / f) * i, + -(p / f) * i, + // @ts-ignore + { internal: !0 } + ); + const x = Fi(n.property("__zoom")); + clearTimeout(e.panScrollTimeout), e.isPanScrolling || (e.isPanScrolling = !0, a == null || a(c, x)), e.isPanScrolling && (l == null || l(c, x), e.panScrollTimeout = setTimeout(() => { + u == null || u(c, x), e.isPanScrolling = !1; + }, 150)); + }; +} +function j0({ noWheelClassName: e, preventScrolling: t, d3ZoomHandler: n }) { + return function(r, o) { + if (!t && r.type === "wheel" && !r.ctrlKey || wr(r, e)) + return null; + r.preventDefault(), n.call(this, r, o); + }; +} +function J0({ zoomPanValues: e, onDraggingChange: t, onPanZoomStart: n }) { + return (r) => { + var i, s, a; + if ((i = r.sourceEvent) != null && i.internal) + return; + const o = Fi(r.transform); + e.mouseButton = ((s = r.sourceEvent) == null ? void 0 : s.button) || 0, e.isZoomingOrPanning = !0, e.prevViewport = o, ((a = r.sourceEvent) == null ? void 0 : a.type) === "mousedown" && t(!0), n && (n == null || n(r.sourceEvent, o)); + }; +} +function Q0({ zoomPanValues: e, panOnDrag: t, onPaneContextMenu: n, onTransformChange: r, onPanZoom: o }) { + return (i) => { + var s, a; + e.usedRightMouseButton = !!(n && pc(t, e.mouseButton ?? 0)), (s = i.sourceEvent) != null && s.sync || r([i.transform.x, i.transform.y, i.transform.k]), o && !((a = i.sourceEvent) != null && a.internal) && (o == null || o(i.sourceEvent, Fi(i.transform))); + }; +} +function e2({ zoomPanValues: e, panOnDrag: t, panOnScroll: n, onDraggingChange: r, onPanZoomEnd: o, onPaneContextMenu: i }) { + return (s) => { + var a; + if (!((a = s.sourceEvent) != null && a.internal) && (e.isZoomingOrPanning = !1, i && pc(t, e.mouseButton ?? 0) && !e.usedRightMouseButton && s.sourceEvent && i(s.sourceEvent), e.usedRightMouseButton = !1, r(!1), o && G0(e.prevViewport, s.transform))) { + const l = Fi(s.transform); + e.prevViewport = l, clearTimeout(e.timerId), e.timerId = setTimeout( + () => { + o == null || o(s.sourceEvent, l); + }, + // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll + n ? 150 : 0 + ); + } + }; +} +function t2({ zoomActivationKeyPressed: e, zoomOnScroll: t, zoomOnPinch: n, panOnDrag: r, panOnScroll: o, zoomOnDoubleClick: i, userSelectionActive: s, noWheelClassName: a, noPanClassName: l, lib: u }) { + return (c) => { + var p; + const f = e || t, d = n && c.ctrlKey; + if (c.button === 1 && c.type === "mousedown" && (wr(c, `${u}-flow__node`) || wr(c, `${u}-flow__edge`))) + return !0; + if (!r && !f && !o && !i && !n || s || wr(c, a) && c.type === "wheel" || wr(c, l) && (c.type !== "wheel" || o && c.type === "wheel" && !e) || !n && c.ctrlKey && c.type === "wheel") + return !1; + if (!n && c.type === "touchstart" && ((p = c.touches) == null ? void 0 : p.length) > 1) + return c.preventDefault(), !1; + if (!f && !o && !d && c.type === "wheel" || !r && (c.type === "mousedown" || c.type === "touchstart") || Array.isArray(r) && !r.includes(c.button) && c.type === "mousedown") + return !1; + const g = Array.isArray(r) && r.includes(c.button) || !c.button || c.button <= 1; + return (!c.ctrlKey || c.type === "wheel") && g; + }; +} +function n2({ domNode: e, minZoom: t, maxZoom: n, paneClickDistance: r, translateExtent: o, viewport: i, onPanZoom: s, onPanZoomStart: a, onPanZoomEnd: l, onDraggingChange: u }) { + const c = { + isZoomingOrPanning: !1, + usedRightMouseButton: !1, + prevViewport: { x: 0, y: 0, zoom: 0 }, + mouseButton: 0, + timerId: void 0, + panScrollTimeout: void 0, + isPanScrolling: !1 + }, f = e.getBoundingClientRect(), d = ju().clickDistance(!Nn(r) || r < 0 ? 0 : r).scaleExtent([t, n]).translateExtent(o), g = Kt(e).call(d); + _({ + x: i.x, + y: i.y, + zoom: Ar(i.zoom, t, n) + }, [ + [0, 0], + [f.width, f.height] + ], o); + const p = g.on("wheel.zoom"), x = g.on("dblclick.zoom"); + d.wheelDelta(mc); + function C(O, R) { + return g ? new Promise((S) => { + d == null || d.transform(ls(g, R == null ? void 0 : R.duration, () => S(!0)), O); + }) : Promise.resolve(!1); + } + function $({ noWheelClassName: O, noPanClassName: R, onPaneContextMenu: S, userSelectionActive: T, panOnScroll: k, panOnDrag: P, panOnScrollMode: H, panOnScrollSpeed: I, preventScrolling: B, zoomOnPinch: F, zoomOnScroll: K, zoomOnDoubleClick: ie, zoomActivationKeyPressed: ee, lib: W, onTransformChange: ue }) { + T && !c.isZoomingOrPanning && m(); + const Ce = k && !ee && !T ? U0({ + zoomPanValues: c, + noWheelClassName: O, + d3Selection: g, + d3Zoom: d, + panOnScrollMode: H, + panOnScrollSpeed: I, + zoomOnPinch: F, + onPanZoomStart: a, + onPanZoom: s, + onPanZoomEnd: l + }) : j0({ + noWheelClassName: O, + preventScrolling: B, + d3ZoomHandler: p + }); + if (g.on("wheel.zoom", Ce, { passive: !1 }), !T) { + const ze = J0({ + zoomPanValues: c, + onDraggingChange: u, + onPanZoomStart: a + }); + d.on("start", ze); + const G = Q0({ + zoomPanValues: c, + panOnDrag: P, + onPaneContextMenu: !!S, + onPanZoom: s, + onTransformChange: ue + }); + d.on("zoom", G); + const se = e2({ + zoomPanValues: c, + panOnDrag: P, + panOnScroll: k, + onPaneContextMenu: S, + onPanZoomEnd: l, + onDraggingChange: u + }); + d.on("end", se); + } + const ge = t2({ + zoomActivationKeyPressed: ee, + panOnDrag: P, + zoomOnScroll: K, + panOnScroll: k, + zoomOnDoubleClick: ie, + zoomOnPinch: F, + userSelectionActive: T, + noPanClassName: R, + noWheelClassName: O, + lib: W + }); + d.filter(ge), ie ? g.on("dblclick.zoom", x) : g.on("dblclick.zoom", null); + } + function m() { + d.on("zoom", null); + } + async function _(O, R, S) { + const T = as(O), k = d == null ? void 0 : d.constrain()(T, R, S); + return k && await C(k), new Promise((P) => P(k)); + } + async function v(O, R) { + const S = as(O); + return await C(S, R), new Promise((T) => T(S)); + } + function b(O) { + if (g) { + const R = as(O), S = g.property("__zoom"); + (S.k !== O.zoom || S.x !== O.x || S.y !== O.y) && (d == null || d.transform(g, R, null, { sync: !0 })); + } + } + function N() { + const O = g ? Uu(g.node()) : { x: 0, y: 0, k: 1 }; + return { x: O.x, y: O.y, zoom: O.k }; + } + function E(O, R) { + return g ? new Promise((S) => { + d == null || d.scaleTo(ls(g, R == null ? void 0 : R.duration, () => S(!0)), O); + }) : Promise.resolve(!1); + } + function M(O, R) { + return g ? new Promise((S) => { + d == null || d.scaleBy(ls(g, R == null ? void 0 : R.duration, () => S(!0)), O); + }) : Promise.resolve(!1); + } + function D(O) { + d == null || d.scaleExtent(O); + } + function V(O) { + d == null || d.translateExtent(O); + } + function A(O) { + const R = !Nn(O) || O < 0 ? 0 : O; + d == null || d.clickDistance(R); + } + return { + update: $, + destroy: m, + setViewport: v, + setViewportConstrained: _, + getViewport: N, + scaleTo: E, + scaleBy: M, + setScaleExtent: D, + setTranslateExtent: V, + syncViewport: b, + setClickDistance: A + }; +} +var bl; +(function(e) { + e.Line = "line", e.Handle = "handle"; +})(bl || (bl = {})); +var r2 = /* @__PURE__ */ ne('
    '); +function Qn(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(ie, "$connectable", n), i = () => Q(Ce, "$connectionRadius", n), s = () => Q(ue, "$domNode", n), a = () => Q(me, "$nodeLookup", n), l = () => Q(W, "$connectionMode", n), u = () => Q(G, "$lib", n), c = () => Q(Fe, "$autoPanOnConnect", n), f = () => Q(Oe, "$flowId", n), d = () => Q(ze, "$isValidConnectionStore", n), g = () => Q(Te, "$onedgecreate", n), p = () => Q(oe, "$onConnectAction", n), x = () => Q(ve, "$onConnectStartAction", n), C = () => Q(xe, "$onConnectEndAction", n), $ = () => Q(ge, "$viewport", n), m = () => Q(ct, "$connection", n), _ = () => Q(Le, "$edges", n), v = () => Q(Qe, "$connectionLookup", n), b = re(), N = re(), E = re(), M = re(), D = re(), V = re(), A = re(), O = re(); + let R = w(t, "id", 12, void 0), S = w(t, "type", 12, "source"), T = w(t, "position", 28, () => $e.Top), k = w(t, "style", 12, void 0), P = w(t, "isValidConnection", 12, void 0), H = w(t, "onconnect", 12, void 0), I = w(t, "ondisconnect", 12, void 0), B = w(t, "isConnectable", 12, void 0), F = w(t, "class", 12, void 0); + const K = ar("svelteflow__node_id"), ie = ar("svelteflow__node_connectable"), ee = Ue(), { + connectionMode: W, + domNode: ue, + nodeLookup: me, + connectionRadius: Ce, + viewport: ge, + isValidConnection: ze, + lib: G, + addEdge: se, + onedgecreate: Te, + panBy: Ae, + cancelConnection: Xe, + updateConnection: te, + autoPanOnConnect: Fe, + edges: Le, + connectionLookup: Qe, + onconnect: oe, + onconnectstart: ve, + onconnectend: xe, + flowId: Oe, + connection: ct + } = ee; + function lt(Ne) { + const rt = ic(Ne); + (rt && Ne.button === 0 || !rt) && K0.onPointerDown(Ne, { + handleId: h(E), + nodeId: K, + isTarget: h(b), + connectionRadius: i(), + domNode: s(), + nodeLookup: a(), + connectionMode: l(), + lib: u(), + autoPanOnConnect: c(), + flowId: f(), + isValidConnection: P() ?? d(), + updateConnection: te, + cancelConnection: Xe, + panBy: Ae, + onConnect: (ye) => { + var at; + const ot = g() ? g()(ye) : ye; + ot && (se(ot), (at = p()) == null || at(ye)); + }, + onConnectStart: (ye, ot) => { + var at; + (at = x()) == null || at(ye, { + nodeId: ot.nodeId, + handleId: ot.handleId, + handleType: ot.handleType + }); + }, + onConnectEnd: (ye, ot) => { + var at; + (at = C()) == null || at(ye, ot); + }, + getTransform: () => [ + $().x, + $().y, + $().zoom + ], + getFromHandle: () => m().fromHandle + }); + } + let J = re(null), Re = re(); + he(() => j(S()), () => { + U(b, S() === "target"); + }), he( + () => (j(B()), o()), + () => { + U(N, B() !== void 0 ? B() : o()); + } + ), he(() => j(R()), () => { + U(E, R() || null); + }), he( + () => (j(H()), j(I()), _(), v(), j(S()), j(R())), + () => { + (H() || I()) && (_(), U(Re, v().get(`${K}-${S()}${R() ? `-${R()}` : ""}`))); + } + ), he( + () => (h(J), h(Re), j(I()), j(H())), + () => { + if (h(J) && !u0(h(Re), h(J))) { + const Ne = h(Re) ?? /* @__PURE__ */ new Map(); + ll(h(J), Ne, I()), ll(Ne, h(J), H()); + } + U(J, h(Re) ?? /* @__PURE__ */ new Map()); + } + ), he(() => m(), () => { + U(M, !!m().fromHandle); + }), he( + () => (m(), j(S()), h(E)), + () => { + var Ne, rt, ye; + U(D, ((Ne = m().fromHandle) == null ? void 0 : Ne.nodeId) === K && ((rt = m().fromHandle) == null ? void 0 : rt.type) === S() && ((ye = m().fromHandle) == null ? void 0 : ye.id) === h(E)); + } + ), he( + () => (m(), j(S()), h(E)), + () => { + var Ne, rt, ye; + U(V, ((Ne = m().toHandle) == null ? void 0 : Ne.nodeId) === K && ((rt = m().toHandle) == null ? void 0 : rt.type) === S() && ((ye = m().toHandle) == null ? void 0 : ye.id) === h(E)); + } + ), he( + () => (l(), m(), j(S()), h(E)), + () => { + var Ne, rt, ye; + U(A, l() === cr.Strict ? ((Ne = m().fromHandle) == null ? void 0 : Ne.type) !== S() : K !== ((rt = m().fromHandle) == null ? void 0 : rt.nodeId) || h(E) !== ((ye = m().fromHandle) == null ? void 0 : ye.id)); + } + ), he(() => (h(V), m()), () => { + U(O, h(V) && m().isValid); + }), gt(), He(); + var le = r2(); + ce(le, "data-nodeid", K); + let fn; + var Ut = X(le); + pt(Ut, t, "default", {}), Z(le), Ee( + (Ne) => { + ce(le, "data-handleid", h(E)), ce(le, "data-handlepos", T()), ce(le, "data-id", `${f() ?? ""}-${K ?? ""}-${R() || ""}-${S() ?? ""}`), fn = kt(le, 1, bn(Ne), null, fn, { + valid: h(O), + connectingto: h(V), + connectingfrom: h(D), + source: !h(b), + target: h(b), + connectablestart: h(N), + connectableend: h(N), + connectable: h(N), + connectionindicator: h(N) && (!h(M) || h(A)) + }), ce(le, "style", k()); + }, + [ + () => Et([ + "svelte-flow__handle", + `svelte-flow__handle-${T()}`, + "nodrag", + "nopan", + T(), + F() + ]) + ], + pe + ), Ye("mousedown", le, lt), Ye("touchstart", le, lt), L(e, le); + var gn = fe({ + get id() { + return R(); + }, + set id(Ne) { + R(Ne), y(); + }, + get type() { + return S(); + }, + set type(Ne) { + S(Ne), y(); + }, + get position() { + return T(); + }, + set position(Ne) { + T(Ne), y(); + }, + get style() { + return k(); + }, + set style(Ne) { + k(Ne), y(); + }, + get isValidConnection() { + return P(); + }, + set isValidConnection(Ne) { + P(Ne), y(); + }, + get onconnect() { + return H(); + }, + set onconnect(Ne) { + H(Ne), y(); + }, + get ondisconnect() { + return I(); + }, + set ondisconnect(Ne) { + I(Ne), y(); + }, + get isConnectable() { + return B(); + }, + set isConnectable(Ne) { + B(Ne), y(); + }, + get class() { + return F(); + }, + set class(Ne) { + F(Ne), y(); + } + }); + return r(), gn; +} +ae( + Qn, + { + id: {}, + type: {}, + position: {}, + style: {}, + isValidConnection: {}, + onconnect: {}, + ondisconnect: {}, + isConnectable: {}, + class: {} + }, + ["default"], + [], + !0 +); +var o2 = /* @__PURE__ */ ne(" ", 1); +function _i(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, ["data", "targetPosition", "sourcePosition"]), de(t, !1); + let r = w(t, "data", 28, () => ({ label: "Node" })), o = w(t, "targetPosition", 12, void 0), i = w(t, "sourcePosition", 12, void 0); + He(); + var s = o2(), a = be(s); + const l = /* @__PURE__ */ pe(() => o() ?? $e.Top); + Qn(a, { + type: "target", + get position() { + return h(l); + } + }); + var u = z(a), c = z(u); + const f = /* @__PURE__ */ pe(() => i() ?? $e.Bottom); + return Qn(c, { + type: "source", + get position() { + return h(f); + } + }), Ee(() => { + var d; + return Rt(u, ` ${((d = r()) == null ? void 0 : d.label) ?? ""} `); + }), L(e, s), fe({ + get data() { + return r(); + }, + set data(d) { + r(d), y(); + }, + get targetPosition() { + return o(); + }, + set targetPosition(d) { + o(d), y(); + }, + get sourcePosition() { + return i(); + }, + set sourcePosition(d) { + i(d), y(); + } + }); +} +ae( + _i, + { + data: {}, + targetPosition: {}, + sourcePosition: {} + }, + [], + [], + !0 +); +var i2 = /* @__PURE__ */ ne(" ", 1); +function yc(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, ["data", "sourcePosition"]), de(t, !1); + let r = w(t, "data", 28, () => ({ label: "Node" })), o = w(t, "sourcePosition", 12, void 0); + He(), Se(); + var i = i2(), s = be(i), a = z(s); + const l = /* @__PURE__ */ pe(() => o() ?? $e.Bottom); + return Qn(a, { + type: "source", + get position() { + return h(l); + } + }), Ee(() => { + var u; + return Rt(s, `${((u = r()) == null ? void 0 : u.label) ?? ""} `); + }), L(e, i), fe({ + get data() { + return r(); + }, + set data(u) { + r(u), y(); + }, + get sourcePosition() { + return o(); + }, + set sourcePosition(u) { + o(u), y(); + } + }); +} +ae(yc, { data: {}, sourcePosition: {} }, [], [], !0); +var s2 = /* @__PURE__ */ ne(" ", 1); +function wc(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, ["data", "targetPosition"]), de(t, !1); + let r = w(t, "data", 28, () => ({ label: "Node" })), o = w(t, "targetPosition", 12, void 0); + He(), Se(); + var i = s2(), s = be(i), a = z(s); + const l = /* @__PURE__ */ pe(() => o() ?? $e.Top); + return Qn(a, { + type: "target", + get position() { + return h(l); + } + }), Ee(() => { + var u; + return Rt(s, `${((u = r()) == null ? void 0 : u.label) ?? ""} `); + }), L(e, i), fe({ + get data() { + return r(); + }, + set data(u) { + r(u), y(); + }, + get targetPosition() { + return o(); + }, + set targetPosition(u) { + o(u), y(); + } + }); +} +ae(wc, { data: {}, targetPosition: {} }, [], [], !0); +function _c(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, []); +} +ae(_c, {}, [], [], !0); +function Cl(e, t, n) { + if (!t) + return; + const r = n ? t.querySelector(n) : t; + r && r.appendChild(e); +} +function kr(e, { target: t, domNode: n }) { + return Cl(e, n, t), { + async update({ target: r, domNode: o }) { + Cl(e, o, r); + }, + destroy() { + e.parentNode && e.parentNode.removeChild(e); + } + }; +} +var a2 = /* @__PURE__ */ ne("
    "); +function xc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(i, "$domNode", n), { domNode: i } = Ue(); + He(); + var s = a2(), a = X(s); + pt(a, t, "default", {}), Z(s), vt(s, (l, u) => kr == null ? void 0 : kr(l, u), () => ({ + target: ".svelte-flow__edgelabel-renderer", + domNode: o() + })), L(e, s), fe(), r(); +} +ae(xc, {}, ["default"], [], !0); +function bc() { + const { edgeLookup: e, selectionRect: t, selectionRectMode: n, multiselectionKeyPressed: r, addSelectedEdges: o, unselectNodesAndEdges: i, elementsSelectable: s } = Ue(); + return (a) => { + const l = q(e).get(a); + if (!l) { + console.warn("012", Dr.error012(a)); + return; + } + (l.selectable || q(s) && typeof l.selectable > "u") && (t.set(null), n.set(null), l.selected ? l.selected && q(r) && i({ nodes: [], edges: [l] }) : o([a])); + }; +} +var l2 = /* @__PURE__ */ ne('
    '); +function Cc(e, t) { + de(t, !1); + let n = w(t, "style", 12, void 0), r = w(t, "x", 12, void 0), o = w(t, "y", 12, void 0); + const i = bc(), s = ar("svelteflow__edge_id"); + return He(), xc(e, { + children: (a, l) => { + var u = l2(), c = X(u); + pt(c, t, "default", {}), Z(u), Ee(() => { + ce(u, "style", "pointer-events: all;" + n()), st(u, "transform", `translate(-50%, -50%) translate(${r() ?? ""}px,${o() ?? ""}px)`); + }), Ye("keyup", u, () => { + }), Ye("click", u, () => { + s && i(s); + }), L(a, u); + }, + $$slots: { default: !0 } + }), fe({ + get style() { + return n(); + }, + set style(a) { + n(a), y(); + }, + get x() { + return r(); + }, + set x(a) { + r(a), y(); + }, + get y() { + return o(); + }, + set y(a) { + o(a), y(); + } + }); +} +ae(Cc, { style: {}, x: {}, y: {} }, ["default"], [], !0); +var u2 = /* @__PURE__ */ _e(''), c2 = /* @__PURE__ */ _e('', 1); +function To(e, t) { + de(t, !1); + let n = w(t, "id", 12, void 0), r = w(t, "path", 12), o = w(t, "label", 12, void 0), i = w(t, "labelX", 12, void 0), s = w(t, "labelY", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "markerStart", 12, void 0), u = w(t, "markerEnd", 12, void 0), c = w(t, "style", 12, void 0), f = w(t, "interactionWidth", 12, 20), d = w(t, "class", 12, void 0), g = f() === void 0 ? 20 : f(); + He(); + var p = c2(), x = be(p), C = z(x); + { + var $ = (v) => { + var b = u2(); + ce(b, "stroke-opacity", 0), ce(b, "stroke-width", g), Ee(() => ce(b, "d", r())), L(v, b); + }; + ke(C, (v) => { + g && v($); + }); + } + var m = z(C); + { + var _ = (v) => { + Cc(v, { + get x() { + return i(); + }, + get y() { + return s(); + }, + get style() { + return a(); + }, + children: (b, N) => { + Se(); + var E = Ie(); + Ee(() => Rt(E, o())), L(b, E); + }, + $$slots: { default: !0 } + }); + }; + ke(m, (v) => { + o() && v(_); + }); + } + return Ee( + (v) => { + ce(x, "id", n()), ce(x, "d", r()), kt(x, 0, bn(v)), ce(x, "marker-start", l()), ce(x, "marker-end", u()), ce(x, "style", c()); + }, + [ + () => Et(["svelte-flow__edge-path", d()]) + ], + pe + ), L(e, p), fe({ + get id() { + return n(); + }, + set id(v) { + n(v), y(); + }, + get path() { + return r(); + }, + set path(v) { + r(v), y(); + }, + get label() { + return o(); + }, + set label(v) { + o(v), y(); + }, + get labelX() { + return i(); + }, + set labelX(v) { + i(v), y(); + }, + get labelY() { + return s(); + }, + set labelY(v) { + s(v), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(v) { + a(v), y(); + }, + get markerStart() { + return l(); + }, + set markerStart(v) { + l(v), y(); + }, + get markerEnd() { + return u(); + }, + set markerEnd(v) { + u(v), y(); + }, + get style() { + return c(); + }, + set style(v) { + c(v), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(v) { + f(v), y(); + }, + get class() { + return d(); + }, + set class(v) { + d(v), y(); + } + }); +} +ae( + To, + { + id: {}, + path: {}, + label: {}, + labelX: {}, + labelY: {}, + labelStyle: {}, + markerStart: {}, + markerEnd: {}, + style: {}, + interactionWidth: {}, + class: {} + }, + [], + [], + !0 +); +function xi(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "sourcePosition", + "targetX", + "targetY", + "targetPosition" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "sourcePosition", 12), x = w(t, "targetX", 12), C = w(t, "targetY", 12), $ = w(t, "targetPosition", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(x()), j(C()), j(p()), j($())), + () => { + ((m) => (U(r, m[0]), U(o, m[1]), U(i, m[2])))(sc({ + sourceX: d(), + sourceY: g(), + targetX: x(), + targetY: C(), + sourcePosition: p(), + targetPosition: $() + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(m) { + s(m), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(m) { + a(m), y(); + }, + get style() { + return l(); + }, + set style(m) { + l(m), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(m) { + u(m), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(m) { + c(m), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(m) { + f(m), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(m) { + d(m), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(m) { + g(m), y(); + }, + get sourcePosition() { + return p(); + }, + set sourcePosition(m) { + p(m), y(); + }, + get targetX() { + return x(); + }, + set targetX(m) { + x(m), y(); + }, + get targetY() { + return C(); + }, + set targetY(m) { + C(m), y(); + }, + get targetPosition() { + return $(); + }, + set targetPosition(m) { + $(m), y(); + } + }); +} +ae( + xi, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + sourcePosition: {}, + targetX: {}, + targetY: {}, + targetPosition: {} + }, + [], + [], + !0 +); +function kc(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "sourcePosition", + "targetX", + "targetY", + "targetPosition" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "sourcePosition", 12), x = w(t, "targetX", 12), C = w(t, "targetY", 12), $ = w(t, "targetPosition", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(x()), j(C()), j(p()), j($())), + () => { + ((m) => (U(r, m[0]), U(o, m[1]), U(i, m[2])))(wi({ + sourceX: d(), + sourceY: g(), + targetX: x(), + targetY: C(), + sourcePosition: p(), + targetPosition: $() + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(m) { + s(m), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(m) { + a(m), y(); + }, + get style() { + return l(); + }, + set style(m) { + l(m), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(m) { + u(m), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(m) { + c(m), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(m) { + f(m), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(m) { + d(m), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(m) { + g(m), y(); + }, + get sourcePosition() { + return p(); + }, + set sourcePosition(m) { + p(m), y(); + }, + get targetX() { + return x(); + }, + set targetX(m) { + x(m), y(); + }, + get targetY() { + return C(); + }, + set targetY(m) { + C(m), y(); + }, + get targetPosition() { + return $(); + }, + set targetPosition(m) { + $(m), y(); + } + }); +} +ae( + kc, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + sourcePosition: {}, + targetX: {}, + targetY: {}, + targetPosition: {} + }, + [], + [], + !0 +); +function $c(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "targetX", + "targetY" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "targetX", 12), x = w(t, "targetY", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(p()), j(x())), + () => { + ((C) => (U(r, C[0]), U(o, C[1]), U(i, C[2])))(Hs({ + sourceX: d(), + sourceY: g(), + targetX: p(), + targetY: x() + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(C) { + s(C), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(C) { + a(C), y(); + }, + get style() { + return l(); + }, + set style(C) { + l(C), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(C) { + u(C), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(C) { + c(C), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(C) { + f(C), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(C) { + d(C), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(C) { + g(C), y(); + }, + get targetX() { + return p(); + }, + set targetX(C) { + p(C), y(); + }, + get targetY() { + return x(); + }, + set targetY(C) { + x(C), y(); + } + }); +} +ae( + $c, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + targetX: {}, + targetY: {} + }, + [], + [], + !0 +); +function Ec(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "sourcePosition", + "targetX", + "targetY", + "targetPosition" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "sourcePosition", 12), x = w(t, "targetX", 12), C = w(t, "targetY", 12), $ = w(t, "targetPosition", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(x()), j(C()), j(p()), j($())), + () => { + ((m) => (U(r, m[0]), U(o, m[1]), U(i, m[2])))(wi({ + sourceX: d(), + sourceY: g(), + targetX: x(), + targetY: C(), + sourcePosition: p(), + targetPosition: $(), + borderRadius: 0 + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(m) { + s(m), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(m) { + a(m), y(); + }, + get style() { + return l(); + }, + set style(m) { + l(m), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(m) { + u(m), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(m) { + c(m), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(m) { + f(m), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(m) { + d(m), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(m) { + g(m), y(); + }, + get sourcePosition() { + return p(); + }, + set sourcePosition(m) { + p(m), y(); + }, + get targetX() { + return x(); + }, + set targetX(m) { + x(m), y(); + }, + get targetY() { + return C(); + }, + set targetY(m) { + C(m), y(); + }, + get targetPosition() { + return $(); + }, + set targetPosition(m) { + $(m), y(); + } + }); +} +ae( + Ec, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + sourcePosition: {}, + targetX: {}, + targetY: {}, + targetPosition: {} + }, + [], + [], + !0 +); +function d2(e, t) { + const n = e.set, r = t.set, o = q(e), i = q(t); + let a = o.length === 0 && i.length > 0 ? i : o; + e.set(a); + const l = (u) => { + const c = n(u); + return a = c, r(a), c; + }; + e.set = t.set = l, e.update = t.update = (u) => l(u(a)); +} +function f2(e, t) { + const n = e.set, r = t.set; + let o = q(t); + e.set(o); + const i = (s) => { + n(s), r(s), o = s; + }; + e.set = t.set = i, e.update = t.update = (s) => i(s(o)); +} +const g2 = (e, t, n) => { + if (!n) + return; + const r = q(e), o = t.set, i = n.set; + let s = n ? q(n) : { x: 0, y: 0, zoom: 1 }; + t.set(s), t.set = (a) => (o(a), i(a), s = a, a), n.set = (a) => (r == null || r.syncViewport(a), o(a), i(a), s = a, a), t.update = (a) => { + t.set(a(s)); + }, n.update = (a) => { + n.set(a(s)); + }; +}, h2 = (e, t, n, r = [0, 0], o = vi) => { + const { subscribe: i, set: s, update: a } = we([]); + let l = e, u = {}, c = !0; + const f = (x) => (lc(x, t, n, { + elevateNodesOnSelect: c, + nodeOrigin: r, + nodeExtent: o, + defaults: u, + checkEquality: !1 + }), l = x, s(l), l), d = (x) => f(x(l)), g = (x) => { + u = x; + }, p = (x) => { + c = x.elevateNodesOnSelect ?? c; + }; + return f(l), { + subscribe: i, + set: f, + update: d, + setDefaultOptions: g, + setOptions: p + }; +}, v2 = (e, t, n, r) => { + const { subscribe: o, set: i, update: s } = we([]); + let a = e, l = {}; + const u = (d) => { + const g = l ? d.map((p) => ({ ...l, ...p })) : d; + cc(t, n, g), a = g, i(a); + }, c = (d) => u(d(a)), f = (d) => { + l = d; + }; + return u(a), { + subscribe: o, + set: u, + update: c, + setDefaultOptions: f + }; +}, Sc = { + input: yc, + output: wc, + default: _i, + group: _c +}, Pc = { + straight: $c, + smoothstep: kc, + default: xi, + step: Ec +}, p2 = ({ nodes: e = [], edges: t = [], width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }) => { + const a = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), f = i ?? [0, 0], d = s ?? vi; + lc(e, a, l, { + nodeExtent: d, + nodeOrigin: f, + elevateNodesOnSelect: !1, + checkEquality: !1 + }), cc(u, c, t); + let g = { x: 0, y: 0, zoom: 1 }; + if (o && n && r) { + const p = No(a, { + filter: (x) => !!((x.width || x.initialWidth) && (x.height || x.initialHeight)) + }); + g = ua(p, n, r, 0.5, 2, 0.1); + } + return { + flowId: we(null), + nodes: h2(e, a, l, f, d), + nodeLookup: Ft(a), + parentLookup: Ft(l), + edgeLookup: Ft(c), + visibleNodes: Ft([]), + edges: v2(t, u, c), + visibleEdges: Ft([]), + connectionLookup: Ft(u), + height: we(500), + width: we(500), + minZoom: we(0.5), + maxZoom: we(2), + nodeOrigin: we(f), + nodeDragThreshold: we(1), + nodeExtent: we(d), + translateExtent: we(vi), + autoPanOnNodeDrag: we(!0), + autoPanOnConnect: we(!0), + fitViewOnInit: we(!1), + fitViewOnInitDone: we(!1), + fitViewOptions: we(void 0), + panZoom: we(null), + snapGrid: we(null), + dragging: we(!1), + selectionRect: we(null), + selectionKeyPressed: we(!1), + multiselectionKeyPressed: we(!1), + deleteKeyPressed: we(!1), + panActivationKeyPressed: we(!1), + zoomActivationKeyPressed: we(!1), + selectionRectMode: we(null), + selectionMode: we(pi.Partial), + nodeTypes: we(Sc), + edgeTypes: we(Pc), + viewport: we(g), + connectionMode: we(cr.Strict), + domNode: we(null), + connection: Ft(Ns), + connectionLineType: we(Cr.Bezier), + connectionRadius: we(20), + isValidConnection: we(() => !0), + nodesDraggable: we(!0), + nodesConnectable: we(!0), + elementsSelectable: we(!0), + selectNodesOnDrag: we(!0), + markers: Ft([]), + defaultMarkerColor: we("#b1b1b7"), + lib: Ft("svelte"), + onlyRenderVisibleElements: we(!1), + onerror: we(v0), + ondelete: we(void 0), + onedgecreate: we(void 0), + onconnect: we(void 0), + onconnectstart: we(void 0), + onconnectend: we(void 0), + onbeforedelete: we(void 0), + nodesInitialized: we(!1), + edgesInitialized: we(!1), + viewportInitialized: we(!1), + initialized: Ft(!1) + }; +}; +function m2(e) { + const t = Kn([ + e.edges, + e.nodes, + e.nodeLookup, + e.onlyRenderVisibleElements, + e.viewport, + e.width, + e.height + ], ([n, , r, o, i, s, a]) => o && s && a ? n.filter((u) => { + const c = r.get(u.source), f = r.get(u.target); + return c && f && b0({ + sourceNode: c, + targetNode: f, + width: s, + height: a, + transform: [i.x, i.y, i.zoom] + }); + }) : n); + return Kn([t, e.nodes, e.nodeLookup, e.connectionMode, e.onerror], ([n, , r, o, i]) => n.reduce((a, l) => { + const u = r.get(l.source), c = r.get(l.target); + if (!u || !c) + return a; + const f = N0({ + id: l.id, + sourceNode: u, + targetNode: c, + sourceHandle: l.sourceHandle || null, + targetHandle: l.targetHandle || null, + connectionMode: o, + onError: i + }); + return f && a.push({ + ...l, + zIndex: x0({ + selected: l.selected, + zIndex: l.zIndex, + sourceNode: u, + targetNode: c, + elevateOnSelect: !1 + }), + ...f + }), a; + }, [])); +} +function y2(e) { + return Kn([ + e.nodeLookup, + e.onlyRenderVisibleElements, + e.width, + e.height, + e.viewport, + e.nodes + ], ([t, n, r, o, i]) => { + const s = [i.x, i.y, i.zoom]; + return n ? Ju(t, { x: 0, y: 0, width: r, height: o }, s, !0) : Array.from(t.values()); + }); +} +const Wi = Symbol(); +function Nc({ nodes: e, edges: t, width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }) { + const a = p2({ + nodes: e, + edges: t, + width: n, + height: r, + fitView: o, + nodeOrigin: i, + nodeExtent: s + }); + function l(k) { + a.nodeTypes.set({ + ...Sc, + ...k + }); + } + function u(k) { + a.edgeTypes.set({ + ...Pc, + ...k + }); + } + function c(k) { + const P = q(a.edges); + a.edges.set($0(k, P)); + } + const f = (k, P = !1) => { + var I; + const H = q(a.nodeLookup); + for (const [B, F] of k) { + const K = (I = H.get(B)) == null ? void 0 : I.internals.userNode; + K && (K.position = F.position, K.dragging = P); + } + a.nodes.update((B) => B); + }; + function d(k) { + var F, K, ie; + const P = q(a.nodeLookup), H = q(a.parentLookup), { changes: I, updatedInternals: B } = O0(k, P, q(a.parentLookup), q(a.domNode), q(a.nodeOrigin)); + if (B) { + if (V0(P, H, { nodeOrigin: i, nodeExtent: s }), !q(a.fitViewOnInitDone) && q(a.fitViewOnInit)) { + const ee = q(a.fitViewOptions), W = p({ + ...ee, + nodes: ee == null ? void 0 : ee.nodes + }); + a.fitViewOnInitDone.set(W); + } + for (const ee of I) { + const W = (F = P.get(ee.id)) == null ? void 0 : F.internals.userNode; + if (W) + switch (ee.type) { + case "dimensions": { + const ue = { ...W.measured, ...ee.dimensions }; + ee.setAttributes && (W.width = ((K = ee.dimensions) == null ? void 0 : K.width) ?? W.width, W.height = ((ie = ee.dimensions) == null ? void 0 : ie.height) ?? W.height), W.measured = ue; + break; + } + case "position": + W.position = ee.position ?? W.position; + break; + } + } + a.nodes.update((ee) => ee), q(a.nodesInitialized) || a.nodesInitialized.set(!0); + } + } + function g(k) { + const P = q(a.panZoom), H = q(a.domNode); + if (!P || !H) + return Promise.resolve(!1); + const { width: I, height: B } = ca(H), F = ul(q(a.nodeLookup), k); + return cl({ + nodes: F, + width: I, + height: B, + minZoom: q(a.minZoom), + maxZoom: q(a.maxZoom), + panZoom: P + }, k); + } + function p(k) { + const P = q(a.panZoom); + if (!P) + return !1; + const H = ul(q(a.nodeLookup), k); + return cl({ + nodes: H, + width: q(a.width), + height: q(a.height), + minZoom: q(a.minZoom), + maxZoom: q(a.maxZoom), + panZoom: P + }, k), H.size > 0; + } + function x(k, P) { + const H = q(a.panZoom); + return H ? H.scaleBy(k, P) : Promise.resolve(!1); + } + function C(k) { + return x(1.2, k); + } + function $(k) { + return x(1 / 1.2, k); + } + function m(k) { + const P = q(a.panZoom); + P && (P.setScaleExtent([k, q(a.maxZoom)]), a.minZoom.set(k)); + } + function _(k) { + const P = q(a.panZoom); + P && (P.setScaleExtent([q(a.minZoom), k]), a.maxZoom.set(k)); + } + function v(k) { + const P = q(a.panZoom); + P && (P.setTranslateExtent(k), a.translateExtent.set(k)); + } + function b(k) { + let P = !1; + return k.forEach((H) => { + H.selected && (H.selected = !1, P = !0); + }), P; + } + function N(k) { + var P; + (P = q(a.panZoom)) == null || P.setClickDistance(k); + } + function E(k) { + b((k == null ? void 0 : k.nodes) || q(a.nodes)) && a.nodes.set(q(a.nodes)), b((k == null ? void 0 : k.edges) || q(a.edges)) && a.edges.set(q(a.edges)); + } + a.deleteKeyPressed.subscribe(async (k) => { + var P; + if (k) { + const H = q(a.nodes), I = q(a.edges), B = H.filter((ee) => ee.selected), F = I.filter((ee) => ee.selected), { nodes: K, edges: ie } = await Qu({ + nodesToRemove: B, + edgesToRemove: F, + nodes: H, + edges: I, + onBeforeDelete: q(a.onbeforedelete) + }); + (K.length || ie.length) && (a.nodes.update((ee) => ee.filter((W) => !K.some((ue) => ue.id === W.id))), a.edges.update((ee) => ee.filter((W) => !ie.some((ue) => ue.id === W.id))), (P = q(a.ondelete)) == null || P({ + nodes: K, + edges: ie + })); + } + }); + function M(k) { + const P = q(a.multiselectionKeyPressed); + a.nodes.update((H) => H.map((I) => { + const B = k.includes(I.id), F = P && I.selected || B; + return I.selected = F, I; + })), P || a.edges.update((H) => H.map((I) => (I.selected = !1, I))); + } + function D(k) { + const P = q(a.multiselectionKeyPressed); + a.edges.update((H) => H.map((I) => { + const B = k.includes(I.id), F = P && I.selected || B; + return I.selected = F, I; + })), P || a.nodes.update((H) => H.map((I) => (I.selected = !1, I))); + } + function V(k) { + var H; + const P = (H = q(a.nodes)) == null ? void 0 : H.find((I) => I.id === k); + if (!P) { + console.warn("012", Dr.error012(k)); + return; + } + a.selectionRect.set(null), a.selectionRectMode.set(null), P.selected ? P.selected && q(a.multiselectionKeyPressed) && E({ nodes: [P], edges: [] }) : M([k]); + } + function A(k) { + const P = q(a.viewport); + return I0({ + delta: k, + panZoom: q(a.panZoom), + transform: [P.x, P.y, P.zoom], + translateExtent: q(a.translateExtent), + width: q(a.width), + height: q(a.height) + }); + } + const O = we(Ns), R = (k) => { + O.set({ ...k }); + }; + function S() { + O.set(Ns); + } + function T() { + a.fitViewOnInitDone.set(!1), a.selectionRect.set(null), a.selectionRectMode.set(null), a.snapGrid.set(null), a.isValidConnection.set(() => !0), E(), S(); + } + return { + // state + ...a, + // derived state + visibleEdges: m2(a), + visibleNodes: y2(a), + connection: Kn([O, a.viewport], ([k, P]) => k.inProgress ? { + ...k, + to: Mo(k.to, [P.x, P.y, P.zoom]) + } : { ...k }), + markers: Kn([a.edges, a.defaultMarkerColor, a.flowId], ([k, P, H]) => M0(k, { defaultColor: P, id: H })), + initialized: (() => { + let k = !1; + const P = q(a.nodes).length, H = q(a.edges).length; + return Kn([a.nodesInitialized, a.edgesInitialized, a.viewportInitialized], ([I, B, F]) => k || (P === 0 ? k = F : H === 0 ? k = F && I : k = F && I && B, k)); + })(), + // actions + syncNodeStores: (k) => d2(a.nodes, k), + syncEdgeStores: (k) => f2(a.edges, k), + syncViewport: (k) => g2(a.panZoom, a.viewport, k), + setNodeTypes: l, + setEdgeTypes: u, + addEdge: c, + updateNodePositions: f, + updateNodeInternals: d, + zoomIn: C, + zoomOut: $, + fitView: (k) => g(k), + setMinZoom: m, + setMaxZoom: _, + setTranslateExtent: v, + setPaneClickDistance: N, + unselectNodesAndEdges: E, + addSelectedNodes: M, + addSelectedEdges: D, + handleNodeSelection: V, + panBy: A, + updateConnection: R, + cancelConnection: S, + reset: T + }; +} +function Ue() { + const e = ar(Wi); + if (!e) + throw new Error("In order to use useStore you need to wrap your component in a "); + return e.getStore(); +} +function w2({ nodes: e, edges: t, width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }) { + const a = Nc({ nodes: e, edges: t, width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }); + return Tr(Wi, { + getStore: () => a + }), a; +} +function us(e, t) { + const { panZoom: n, minZoom: r, maxZoom: o, initialViewport: i, viewport: s, dragging: a, translateExtent: l, paneClickDistance: u } = t, c = n2({ + domNode: e, + minZoom: r, + maxZoom: o, + translateExtent: l, + viewport: i, + paneClickDistance: u, + onDraggingChange: a.set + }), f = c.getViewport(); + return s.set(f), n.set(c), c.update(t), { + update(d) { + c.update(d); + } + }; +} +var _2 = /* @__PURE__ */ ne('
    '); +const x2 = { + hash: "svelte-4xkw84", + code: ".svelte-flow__zoom.svelte-4xkw84 {width:100%;height:100%;position:absolute;top:0;left:0;z-index:4;}" +}; +function Mc(e, t) { + de(t, !1), Je(e, x2); + const [n, r] = tt(), o = () => Q(H, "$panActivationKeyPressed", n), i = () => Q(R, "$minZoom", n), s = () => Q(S, "$maxZoom", n), a = () => Q(I, "$zoomActivationKeyPressed", n), l = () => Q(O, "$selectionRect", n), u = () => Q(k, "$translateExtent", n), c = () => Q(P, "$lib", n), f = re(), d = re(), g = re(); + let p = w(t, "initialViewport", 12, void 0), x = w(t, "onMoveStart", 12, void 0), C = w(t, "onMove", 12, void 0), $ = w(t, "onMoveEnd", 12, void 0), m = w(t, "panOnScrollMode", 12), _ = w(t, "preventScrolling", 12), v = w(t, "zoomOnScroll", 12), b = w(t, "zoomOnDoubleClick", 12), N = w(t, "zoomOnPinch", 12), E = w(t, "panOnDrag", 12), M = w(t, "panOnScroll", 12), D = w(t, "paneClickDistance", 12); + const { + viewport: V, + panZoom: A, + selectionRect: O, + minZoom: R, + maxZoom: S, + dragging: T, + translateExtent: k, + lib: P, + panActivationKeyPressed: H, + zoomActivationKeyPressed: I, + viewportInitialized: B + } = Ue(), F = (W) => V.set({ + x: W[0], + y: W[1], + zoom: W[2] + }); + un(() => { + li(B, !0); + }), he(() => j(p()), () => { + U(f, p() || { x: 0, y: 0, zoom: 1 }); + }), he( + () => (o(), j(E())), + () => { + U(d, o() || E()); + } + ), he( + () => (o(), j(M())), + () => { + U(g, o() || M()); + } + ), gt(), He(); + var K = _2(), ie = X(K); + pt(ie, t, "default", {}), Z(K), vt(K, (W, ue) => us == null ? void 0 : us(W, ue), () => ({ + viewport: V, + minZoom: i(), + maxZoom: s(), + initialViewport: h(f), + dragging: T, + panZoom: A, + onPanZoomStart: x(), + onPanZoom: C(), + onPanZoomEnd: $(), + zoomOnScroll: v(), + zoomOnDoubleClick: b(), + zoomOnPinch: N(), + panOnScroll: h(g), + panOnDrag: h(d), + panOnScrollSpeed: 0.5, + panOnScrollMode: m() || qn.Free, + zoomActivationKeyPressed: a(), + preventScrolling: typeof _() == "boolean" ? _() : !0, + noPanClassName: "nopan", + noWheelClassName: "nowheel", + userSelectionActive: !!l(), + translateExtent: u(), + lib: c(), + paneClickDistance: D(), + onTransformChange: F + })), L(e, K); + var ee = fe({ + get initialViewport() { + return p(); + }, + set initialViewport(W) { + p(W), y(); + }, + get onMoveStart() { + return x(); + }, + set onMoveStart(W) { + x(W), y(); + }, + get onMove() { + return C(); + }, + set onMove(W) { + C(W), y(); + }, + get onMoveEnd() { + return $(); + }, + set onMoveEnd(W) { + $(W), y(); + }, + get panOnScrollMode() { + return m(); + }, + set panOnScrollMode(W) { + m(W), y(); + }, + get preventScrolling() { + return _(); + }, + set preventScrolling(W) { + _(W), y(); + }, + get zoomOnScroll() { + return v(); + }, + set zoomOnScroll(W) { + v(W), y(); + }, + get zoomOnDoubleClick() { + return b(); + }, + set zoomOnDoubleClick(W) { + b(W), y(); + }, + get zoomOnPinch() { + return N(); + }, + set zoomOnPinch(W) { + N(W), y(); + }, + get panOnDrag() { + return E(); + }, + set panOnDrag(W) { + E(W), y(); + }, + get panOnScroll() { + return M(); + }, + set panOnScroll(W) { + M(W), y(); + }, + get paneClickDistance() { + return D(); + }, + set paneClickDistance(W) { + D(W), y(); + } + }); + return r(), ee; +} +ae( + Mc, + { + initialViewport: {}, + onMoveStart: {}, + onMove: {}, + onMoveEnd: {}, + panOnScrollMode: {}, + preventScrolling: {}, + zoomOnScroll: {}, + zoomOnDoubleClick: {}, + zoomOnPinch: {}, + panOnDrag: {}, + panOnScroll: {}, + paneClickDistance: {} + }, + ["default"], + [], + !0 +); +function kl(e, t) { + return (n) => { + n.target === t && (e == null || e(n)); + }; +} +function $l(e) { + return (t) => { + const n = e.includes(t.id); + return t.selected !== n && (t.selected = n), t; + }; +} +var b2 = /* @__PURE__ */ ne("
    "); +const C2 = { + hash: "svelte-1esy7hx", + code: ".svelte-flow__pane.svelte-1esy7hx {position:absolute;top:0;left:0;width:100%;height:100%;}" +}; +function Tc(e, t) { + de(t, !1), Je(e, C2); + const [n, r] = tt(), o = () => Q(S, "$panActivationKeyPressed", n), i = () => Q(O, "$selectionKeyPressed", n), s = () => Q(V, "$selectionRect", n), a = () => Q(D, "$elementsSelectable", n), l = () => Q(A, "$selectionRectMode", n), u = () => Q(N, "$edges", n), c = () => Q(b, "$nodeLookup", n), f = () => Q(E, "$viewport", n), d = () => Q(R, "$selectionMode", n), g = () => Q(M, "$dragging", n), p = re(), x = re(), C = re(); + let $ = w(t, "panOnDrag", 12, void 0), m = w(t, "selectionOnDrag", 12, void 0); + const _ = Oi(), { + nodes: v, + nodeLookup: b, + edges: N, + viewport: E, + dragging: M, + elementsSelectable: D, + selectionRect: V, + selectionRectMode: A, + selectionKeyPressed: O, + selectionMode: R, + panActivationKeyPressed: S, + unselectNodesAndEdges: T + } = Ue(); + let k = re(), P = null, H = [], I = !1; + function B(G) { + if (I) { + I = !1; + return; + } + _("paneclick", { event: G }), T(), A.set(null); + } + function F(G) { + var Ae, Xe; + if (P = h(k).getBoundingClientRect(), !D || !h(x) || G.button !== 0 || G.target !== h(k) || !P) + return; + (Xe = (Ae = G.target) == null ? void 0 : Ae.setPointerCapture) == null || Xe.call(Ae, G.pointerId); + const { x: se, y: Te } = Hn(G, P); + T(), V.set({ + width: 0, + height: 0, + startX: se, + startY: Te, + x: se, + y: Te + }); + } + function K(G) { + if (!h(x) || !P || !s()) + return; + I = !0; + const se = Hn(G, P), Te = s().startX ?? 0, Ae = s().startY ?? 0, Xe = { + ...s(), + x: se.x < Te ? se.x : Te, + y: se.y < Ae ? se.y : Ae, + width: Math.abs(se.x - Te), + height: Math.abs(se.y - Ae) + }, te = H.map((oe) => oe.id), Fe = Ms(H, u()).map((oe) => oe.id); + H = Ju( + c(), + Xe, + [ + f().x, + f().y, + f().zoom + ], + d() === pi.Partial, + !0 + ); + const Le = Ms(H, u()).map((oe) => oe.id), Qe = H.map((oe) => oe.id); + (te.length !== Qe.length || Qe.some((oe) => !te.includes(oe))) && v.update((oe) => oe.map($l(Qe))), (Fe.length !== Le.length || Le.some((oe) => !Fe.includes(oe))) && N.update((oe) => oe.map($l(Le))), A.set("user"), V.set(Xe); + } + function ie(G) { + var se, Te; + G.button === 0 && ((Te = (se = G.target) == null ? void 0 : se.releasePointerCapture) == null || Te.call(se, G.pointerId), !h(x) && l() === "user" && G.target === h(k) && (B == null || B(G)), V.set(null), H.length > 0 && li(A, "nodes"), i() && (I = !1)); + } + const ee = (G) => { + var se; + if (Array.isArray(h(p)) && ((se = h(p)) != null && se.includes(2))) { + G.preventDefault(); + return; + } + _("panecontextmenu", { event: G }); + }; + he( + () => (o(), j($())), + () => { + U(p, o() || $()); + } + ), he( + () => (i(), s(), j(m()), h(p)), + () => { + U(x, i() || s() || m() && h(p) !== !0); + } + ), he( + () => (a(), h(x), l()), + () => { + U(C, a() && (h(x) || l() === "user")); + } + ), gt(), He(); + var W = b2(), ue = /* @__PURE__ */ Me(() => h(C) ? void 0 : kl(B, h(k))), me = /* @__PURE__ */ Me(() => kl(ee, h(k))); + let Ce; + var ge = X(W); + pt(ge, t, "default", {}), Z(W), An(W, (G) => U(k, G), () => h(k)), Ee( + (G) => Ce = kt(W, 1, "svelte-flow__pane svelte-1esy7hx", null, Ce, { + draggable: G, + dragging: g(), + selection: h(x) + }), + [ + () => $() === !0 || Array.isArray($()) && $().includes(0) + ], + pe + ), Ye("click", W, function(...G) { + var se; + (se = h(ue)) == null || se.apply(this, G); + }), Ye("pointerdown", W, function(...G) { + var se; + (se = h(C) ? F : void 0) == null || se.apply(this, G); + }), Ye("pointermove", W, function(...G) { + var se; + (se = h(C) ? K : void 0) == null || se.apply(this, G); + }), Ye("pointerup", W, function(...G) { + var se; + (se = h(C) ? ie : void 0) == null || se.apply(this, G); + }), Ye("contextmenu", W, function(...G) { + var se; + (se = h(me)) == null || se.apply(this, G); + }), L(e, W); + var ze = fe({ + get panOnDrag() { + return $(); + }, + set panOnDrag(G) { + $(G), y(); + }, + get selectionOnDrag() { + return m(); + }, + set selectionOnDrag(G) { + m(G), y(); + } + }); + return r(), ze; +} +ae(Tc, { panOnDrag: {}, selectionOnDrag: {} }, ["default"], [], !0); +var k2 = /* @__PURE__ */ ne('
    '); +const $2 = { + hash: "svelte-1floaup", + code: ".svelte-flow__viewport.svelte-1floaup {width:100%;height:100%;position:absolute;top:0;left:0;}" +}; +function Hc(e, t) { + de(t, !1), Je(e, $2); + const [n, r] = tt(), o = () => Q(i, "$viewport", n), { viewport: i } = Ue(); + He(); + var s = k2(), a = X(s); + pt(a, t, "default", {}), Z(s), Ee(() => ce(s, "style", `transform: translate(${o().x ?? ""}px, ${o().y ?? ""}px) scale(${o().zoom ?? ""})`)), L(e, s), fe(), r(); +} +ae(Hc, {}, ["default"], [], !0); +function $r(e, t) { + const { store: n, onDrag: r, onDragStart: o, onDragStop: i, onNodeMouseDown: s } = t, a = B0({ + onDrag: r, + onDragStart: o, + onDragStop: i, + onNodeMouseDown: s, + getStoreItems: () => { + const u = q(n.snapGrid), c = q(n.viewport); + return { + nodes: q(n.nodes), + nodeLookup: q(n.nodeLookup), + edges: q(n.edges), + nodeExtent: q(n.nodeExtent), + snapGrid: u || [0, 0], + snapToGrid: !!u, + nodeOrigin: q(n.nodeOrigin), + multiSelectionActive: q(n.multiselectionKeyPressed), + domNode: q(n.domNode), + transform: [c.x, c.y, c.zoom], + autoPanOnNodeDrag: q(n.autoPanOnNodeDrag), + nodesDraggable: q(n.nodesDraggable), + selectNodesOnDrag: q(n.selectNodesOnDrag), + nodeDragThreshold: q(n.nodeDragThreshold), + unselectNodesAndEdges: n.unselectNodesAndEdges, + updateNodePositions: n.updateNodePositions, + panBy: n.panBy + }; + } + }); + function l(u, c) { + if (c.disabled) { + a.destroy(); + return; + } + a.update({ + domNode: u, + noDragClassName: c.noDragClass, + handleSelector: c.handleSelector, + nodeId: c.nodeId, + isSelectable: c.isSelectable, + nodeClickDistance: c.nodeClickDistance + }); + } + return l(e, t), { + update(u) { + l(e, u); + }, + destroy() { + a.destroy(); + } + }; +} +function E2({ width: e, height: t, initialWidth: n, initialHeight: r, measuredWidth: o, measuredHeight: i }) { + if (o === void 0 && i === void 0) { + const s = e ?? n, a = t ?? r; + return { + width: s ? `width:${s}px;` : "", + height: a ? `height:${a}px;` : "" + }; + } + return { + width: e ? `width:${e}px;` : "", + height: t ? `height:${t}px;` : "" + }; +} +var S2 = /* @__PURE__ */ ne("
    "); +function Vc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(me, "$nodeTypes", n), i = () => Q(se, "$elementsSelectable", n), s = () => Q(Te, "$nodesDraggable", n), a = () => Q(Fe, "$connectableStore", n), l = re(void 0, !0), u = re(void 0, !0), c = re(void 0, !0), f = re(void 0, !0); + let d = w(t, "node", 13), g = w(t, "id", 13), p = w(t, "data", 29, () => ({})), x = w(t, "selected", 13, !1), C = w(t, "draggable", 13, void 0), $ = w(t, "selectable", 13, void 0), m = w(t, "connectable", 13, !0), _ = w(t, "deletable", 13, !0), v = w(t, "hidden", 13, !1), b = w(t, "dragging", 13, !1), N = w(t, "resizeObserver", 13, null), E = w(t, "style", 13, void 0), M = w(t, "type", 13, "default"), D = w(t, "isParent", 13, !1), V = w(t, "positionX", 13), A = w(t, "positionY", 13), O = w(t, "sourcePosition", 13, void 0), R = w(t, "targetPosition", 13, void 0), S = w(t, "zIndex", 13), T = w(t, "measuredWidth", 13, void 0), k = w(t, "measuredHeight", 13, void 0), P = w(t, "initialWidth", 13, void 0), H = w(t, "initialHeight", 13, void 0), I = w(t, "width", 13, void 0), B = w(t, "height", 13, void 0), F = w(t, "dragHandle", 13, void 0), K = w(t, "initialized", 13, !1), ie = w(t, "parentId", 13, void 0), ee = w(t, "nodeClickDistance", 13, void 0), W = w(t, "class", 13, ""); + const ue = Ue(), { + nodeTypes: me, + nodeDragThreshold: Ce, + selectNodesOnDrag: ge, + handleNodeSelection: ze, + updateNodeInternals: G, + elementsSelectable: se, + nodesDraggable: Te + } = ue; + let Ae = re(void 0, !0), Xe = re(null, !0); + const te = Oi(), Fe = we(m()); + let Le = re(void 0, !0), Qe = re(void 0, !0), oe = re(void 0, !0); + Tr("svelteflow__node_id", g()), Tr("svelteflow__node_connectable", Fe), Qs(() => { + var J; + h(Xe) && ((J = N()) == null || J.unobserve(h(Xe))); + }); + function ve(J) { + $() && (!q(ge) || !C() || q(Ce) > 0) && ze(g()), te("nodeclick", { node: d().internals.userNode, event: J }); + } + he(() => j(M()), () => { + U(l, M() || "default"); + }), he(() => (o(), h(l)), () => { + U(u, !!o()[h(l)]); + }), he( + () => (o(), h(l), _i), + () => { + U(c, o()[h(l)] || _i); + } + ), he( + () => (h(u), j(M())), + () => { + h(u) || console.warn("003", Dr.error003(M())); + } + ), he( + () => (j(I()), j(B()), j(P()), j(H()), j(T()), j(k())), + () => { + U(f, E2({ + width: I(), + height: B(), + initialWidth: P(), + initialHeight: H(), + measuredWidth: T(), + measuredHeight: k() + })); + } + ), he(() => j(m()), () => { + Fe.set(!!m()); + }), he( + () => (h(Le), h(l), h(Qe), j(O()), h(oe), j(R()), j(g()), h(Ae)), + () => { + (h(Le) && h(l) !== h(Le) || h(Qe) && O() !== h(Qe) || h(oe) && R() !== h(oe)) && requestAnimationFrame(() => G(/* @__PURE__ */ new Map([ + [ + g(), + { + id: g(), + nodeElement: h(Ae), + force: !0 + } + ] + ]))), U(Le, h(l)), U(Qe, O()), U(oe, R()); + } + ), he( + () => (j(N()), h(Ae), h(Xe), j(K())), + () => { + N() && (h(Ae) !== h(Xe) || !K()) && (h(Xe) && N().unobserve(h(Xe)), h(Ae) && N().observe(h(Ae)), U(Xe, h(Ae))); + } + ), gt(), He(!0); + var xe = et(), Oe = be(xe); + { + var ct = (J) => { + var Re = S2(); + let le; + var fn = X(Re); + const Ut = /* @__PURE__ */ pe(() => x() ?? !1), gn = /* @__PURE__ */ pe(() => $() ?? i() ?? !0), Ne = /* @__PURE__ */ pe(() => _() ?? !0), rt = /* @__PURE__ */ pe(() => C() ?? s() ?? !0); + yu(fn, () => h(c), (ye, ot) => { + ot(ye, { + get data() { + return p(); + }, + get id() { + return g(); + }, + get selected() { + return h(Ut); + }, + get selectable() { + return h(gn); + }, + get deletable() { + return h(Ne); + }, + get sourcePosition() { + return O(); + }, + get targetPosition() { + return R(); + }, + get zIndex() { + return S(); + }, + get dragging() { + return b(); + }, + get draggable() { + return h(rt); + }, + get dragHandle() { + return F(); + }, + get parentId() { + return ie(); + }, + get type() { + return h(l); + }, + get isConnectable() { + return a(); + }, + get positionAbsoluteX() { + return V(); + }, + get positionAbsoluteY() { + return A(); + }, + get width() { + return I(); + }, + get height() { + return B(); + } + }); + }), Z(Re), vt(Re, (ye, ot) => $r == null ? void 0 : $r(ye, ot), () => ({ + nodeId: g(), + isSelectable: $(), + disabled: !1, + handleSelector: F(), + noDragClass: "nodrag", + nodeClickDistance: ee(), + onNodeMouseDown: ze, + onDrag: (ye, ot, at, Xt) => { + te("nodedrag", { event: ye, targetNode: at, nodes: Xt }); + }, + onDragStart: (ye, ot, at, Xt) => { + te("nodedragstart", { event: ye, targetNode: at, nodes: Xt }); + }, + onDragStop: (ye, ot, at, Xt) => { + te("nodedragstop", { event: ye, targetNode: at, nodes: Xt }); + }, + store: ue + })), An(Re, (ye) => U(Ae, ye), () => h(Ae)), Ot(() => Ye("click", Re, ve)), Ot(() => Ye("mouseenter", Re, (ye) => te("nodemouseenter", { node: d(), event: ye }))), Ot(() => Ye("mouseleave", Re, (ye) => te("nodemouseleave", { node: d(), event: ye }))), Ot(() => Ye("mousemove", Re, (ye) => te("nodemousemove", { node: d(), event: ye }))), Ot(() => Ye("contextmenu", Re, (ye) => te("nodecontextmenu", { node: d(), event: ye }))), Ee( + (ye) => { + ce(Re, "data-id", g()), le = kt(Re, 1, bn(ye), null, le, { + dragging: b(), + selected: x(), + draggable: C(), + connectable: m(), + selectable: $(), + nopan: C(), + parent: D() + }), ce(Re, "style", `${E() ?? ""};${h(f).width ?? ""}${h(f).height ?? ""}`), st(Re, "z-index", S()), st(Re, "transform", `translate(${V() ?? ""}px, ${A() ?? ""}px)`), st(Re, "visibility", K() ? "visible" : "hidden"); + }, + [ + () => Et([ + "svelte-flow__node", + `svelte-flow__node-${h(l)}`, + W() + ]) + ], + pe + ), L(J, Re); + }; + ke(Oe, (J) => { + v() || J(ct); + }); + } + L(e, xe); + var lt = fe({ + get node() { + return d(); + }, + set node(J) { + d(J), y(); + }, + get id() { + return g(); + }, + set id(J) { + g(J), y(); + }, + get data() { + return p(); + }, + set data(J) { + p(J), y(); + }, + get selected() { + return x(); + }, + set selected(J) { + x(J), y(); + }, + get draggable() { + return C(); + }, + set draggable(J) { + C(J), y(); + }, + get selectable() { + return $(); + }, + set selectable(J) { + $(J), y(); + }, + get connectable() { + return m(); + }, + set connectable(J) { + m(J), y(); + }, + get deletable() { + return _(); + }, + set deletable(J) { + _(J), y(); + }, + get hidden() { + return v(); + }, + set hidden(J) { + v(J), y(); + }, + get dragging() { + return b(); + }, + set dragging(J) { + b(J), y(); + }, + get resizeObserver() { + return N(); + }, + set resizeObserver(J) { + N(J), y(); + }, + get style() { + return E(); + }, + set style(J) { + E(J), y(); + }, + get type() { + return M(); + }, + set type(J) { + M(J), y(); + }, + get isParent() { + return D(); + }, + set isParent(J) { + D(J), y(); + }, + get positionX() { + return V(); + }, + set positionX(J) { + V(J), y(); + }, + get positionY() { + return A(); + }, + set positionY(J) { + A(J), y(); + }, + get sourcePosition() { + return O(); + }, + set sourcePosition(J) { + O(J), y(); + }, + get targetPosition() { + return R(); + }, + set targetPosition(J) { + R(J), y(); + }, + get zIndex() { + return S(); + }, + set zIndex(J) { + S(J), y(); + }, + get measuredWidth() { + return T(); + }, + set measuredWidth(J) { + T(J), y(); + }, + get measuredHeight() { + return k(); + }, + set measuredHeight(J) { + k(J), y(); + }, + get initialWidth() { + return P(); + }, + set initialWidth(J) { + P(J), y(); + }, + get initialHeight() { + return H(); + }, + set initialHeight(J) { + H(J), y(); + }, + get width() { + return I(); + }, + set width(J) { + I(J), y(); + }, + get height() { + return B(); + }, + set height(J) { + B(J), y(); + }, + get dragHandle() { + return F(); + }, + set dragHandle(J) { + F(J), y(); + }, + get initialized() { + return K(); + }, + set initialized(J) { + K(J), y(); + }, + get parentId() { + return ie(); + }, + set parentId(J) { + ie(J), y(); + }, + get nodeClickDistance() { + return ee(); + }, + set nodeClickDistance(J) { + ee(J), y(); + }, + get class() { + return W(); + }, + set class(J) { + W(J), y(); + } + }); + return r(), lt; +} +ae( + Vc, + { + node: {}, + id: {}, + data: {}, + selected: {}, + draggable: {}, + selectable: {}, + connectable: {}, + deletable: {}, + hidden: {}, + dragging: {}, + resizeObserver: {}, + style: {}, + type: {}, + isParent: {}, + positionX: {}, + positionY: {}, + sourcePosition: {}, + targetPosition: {}, + zIndex: {}, + measuredWidth: {}, + measuredHeight: {}, + initialWidth: {}, + initialHeight: {}, + width: {}, + height: {}, + dragHandle: {}, + initialized: {}, + parentId: {}, + nodeClickDistance: {}, + class: {} + }, + [], + [], + !0 +); +var P2 = /* @__PURE__ */ ne('
    '); +const N2 = { + hash: "svelte-tf4uy4", + code: ".svelte-flow__nodes.svelte-tf4uy4 {width:100%;height:100%;position:absolute;left:0;top:0;}" +}; +function Dc(e, t) { + de(t, !1), Je(e, N2); + const [n, r] = tt(), o = () => Q(c, "$visibleNodes", n), i = () => Q(f, "$nodesDraggable", n), s = () => Q(g, "$elementsSelectable", n), a = () => Q(d, "$nodesConnectable", n), l = () => Q(x, "$parentLookup", n); + let u = w(t, "nodeClickDistance", 12, 0); + const { + visibleNodes: c, + nodesDraggable: f, + nodesConnectable: d, + elementsSelectable: g, + updateNodeInternals: p, + parentLookup: x + } = Ue(), C = typeof ResizeObserver > "u" ? null : new ResizeObserver((_) => { + const v = /* @__PURE__ */ new Map(); + _.forEach((b) => { + const N = b.target.getAttribute("data-id"); + v.set(N, { id: N, nodeElement: b.target, force: !0 }); + }), p(v); + }); + Qs(() => { + C == null || C.disconnect(); + }), He(); + var $ = P2(); + Yt($, 5, o, (_) => _.id, (_, v) => { + const b = /* @__PURE__ */ pe(() => !!h(v).selected), N = /* @__PURE__ */ pe(() => !!h(v).hidden), E = /* @__PURE__ */ pe(() => !!(h(v).draggable || i() && typeof h(v).draggable > "u")), M = /* @__PURE__ */ pe(() => !!(h(v).selectable || s() && typeof h(v).selectable > "u")), D = /* @__PURE__ */ pe(() => !!(h(v).connectable || a() && typeof h(v).connectable > "u")), V = /* @__PURE__ */ pe(() => h(v).deletable ?? !0), A = /* @__PURE__ */ pe(() => l().has(h(v).id)), O = /* @__PURE__ */ pe(() => h(v).type ?? "default"), R = /* @__PURE__ */ pe(() => h(v).internals.z ?? 0), S = /* @__PURE__ */ pe(() => oc(h(v))); + Vc(_, { + get node() { + return h(v); + }, + get id() { + return h(v).id; + }, + get data() { + return h(v).data; + }, + get selected() { + return h(b); + }, + get hidden() { + return h(N); + }, + get draggable() { + return h(E); + }, + get selectable() { + return h(M); + }, + get connectable() { + return h(D); + }, + get deletable() { + return h(V); + }, + get positionX() { + return h(v).internals.positionAbsolute.x; + }, + get positionY() { + return h(v).internals.positionAbsolute.y; + }, + get isParent() { + return h(A); + }, + get style() { + return h(v).style; + }, + get class() { + return h(v).class; + }, + get type() { + return h(O); + }, + get sourcePosition() { + return h(v).sourcePosition; + }, + get targetPosition() { + return h(v).targetPosition; + }, + get dragging() { + return h(v).dragging; + }, + get zIndex() { + return h(R); + }, + get dragHandle() { + return h(v).dragHandle; + }, + get initialized() { + return h(S); + }, + get width() { + return h(v).width; + }, + get height() { + return h(v).height; + }, + get initialWidth() { + return h(v).initialWidth; + }, + get initialHeight() { + return h(v).initialHeight; + }, + get measuredWidth() { + return h(v).measured.width; + }, + get measuredHeight() { + return h(v).measured.height; + }, + get parentId() { + return h(v).parentId; + }, + resizeObserver: C, + get nodeClickDistance() { + return u(); + }, + $$events: { + nodeclick(T) { + Ve.call(this, t, T); + }, + nodemouseenter(T) { + Ve.call(this, t, T); + }, + nodemousemove(T) { + Ve.call(this, t, T); + }, + nodemouseleave(T) { + Ve.call(this, t, T); + }, + nodedrag(T) { + Ve.call(this, t, T); + }, + nodedragstart(T) { + Ve.call(this, t, T); + }, + nodedragstop(T) { + Ve.call(this, t, T); + }, + nodecontextmenu(T) { + Ve.call(this, t, T); + } + } + }); + }), Z($), L(e, $); + var m = fe({ + get nodeClickDistance() { + return u(); + }, + set nodeClickDistance(_) { + u(_), y(); + } + }); + return r(), m; +} +ae(Dc, { nodeClickDistance: {} }, [], [], !0); +var M2 = /* @__PURE__ */ _e(''); +function Ac(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(W, "$edgeTypes", n), i = () => Q(ue, "$flowId", n), s = () => Q(me, "$elementsSelectable", n), a = () => Q(ee, "$edgeLookup", n), l = re(void 0, !0), u = re(void 0, !0), c = re(void 0, !0), f = re(void 0, !0), d = re(void 0, !0); + let g = w(t, "id", 13), p = w(t, "type", 13, "default"), x = w(t, "source", 13, ""), C = w(t, "target", 13, ""), $ = w(t, "data", 29, () => ({})), m = w(t, "style", 13, void 0), _ = w(t, "zIndex", 13, void 0), v = w(t, "animated", 13, !1), b = w(t, "selected", 13, !1), N = w(t, "selectable", 13, void 0), E = w(t, "deletable", 13, void 0), M = w(t, "hidden", 13, !1), D = w(t, "label", 13, void 0), V = w(t, "labelStyle", 13, void 0), A = w(t, "markerStart", 13, void 0), O = w(t, "markerEnd", 13, void 0), R = w(t, "sourceHandle", 13, void 0), S = w(t, "targetHandle", 13, void 0), T = w(t, "sourceX", 13), k = w(t, "sourceY", 13), P = w(t, "targetX", 13), H = w(t, "targetY", 13), I = w(t, "sourcePosition", 13), B = w(t, "targetPosition", 13), F = w(t, "ariaLabel", 13, void 0), K = w(t, "interactionWidth", 13, void 0), ie = w(t, "class", 13, ""); + Tr("svelteflow__edge_id", g()); + const { + edgeLookup: ee, + edgeTypes: W, + flowId: ue, + elementsSelectable: me + } = Ue(), Ce = Oi(), ge = bc(); + function ze(te) { + const Fe = a().get(g()); + Fe && (ge(g()), Ce("edgeclick", { event: te, edge: Fe })); + } + function G(te, Fe) { + const Le = a().get(g()); + Le && Ce(Fe, { event: te, edge: Le }); + } + he(() => j(p()), () => { + U(l, p() || "default"); + }), he( + () => (o(), h(l), xi), + () => { + U(u, o()[h(l)] || xi); + } + ), he( + () => (j(A()), i()), + () => { + U(c, A() ? `url('#${Vs(A(), i())}')` : void 0); + } + ), he( + () => (j(O()), i()), + () => { + U(f, O() ? `url('#${Vs(O(), i())}')` : void 0); + } + ), he( + () => (j(N()), s()), + () => { + U(d, N() ?? s()); + } + ), gt(), He(!0); + var se = et(), Te = be(se); + { + var Ae = (te) => { + var Fe = M2(), Le = X(Fe); + let Qe; + var oe = X(Le); + const ve = /* @__PURE__ */ pe(() => E() ?? !0); + yu(oe, () => h(u), (xe, Oe) => { + Oe(xe, { + get id() { + return g(); + }, + get source() { + return x(); + }, + get target() { + return C(); + }, + get sourceX() { + return T(); + }, + get sourceY() { + return k(); + }, + get targetX() { + return P(); + }, + get targetY() { + return H(); + }, + get sourcePosition() { + return I(); + }, + get targetPosition() { + return B(); + }, + get animated() { + return v(); + }, + get selected() { + return b(); + }, + get label() { + return D(); + }, + get labelStyle() { + return V(); + }, + get data() { + return $(); + }, + get style() { + return m(); + }, + get interactionWidth() { + return K(); + }, + get selectable() { + return h(d); + }, + get deletable() { + return h(ve); + }, + get type() { + return h(l); + }, + get sourceHandleId() { + return R(); + }, + get targetHandleId() { + return S(); + }, + get markerStart() { + return h(c); + }, + get markerEnd() { + return h(f); + } + }); + }), Z(Le), Z(Fe), Ee( + (xe) => { + st(Fe, "z-index", _()), Qe = kt(Le, 0, bn(xe), null, Qe, { + animated: v(), + selected: b(), + selectable: h(d) + }), ce(Le, "data-id", g()), ce(Le, "aria-label", F() === null ? void 0 : F() ? F() : `Edge from ${x()} to ${C()}`); + }, + [ + () => Et(["svelte-flow__edge", ie()]) + ], + pe + ), Ye("click", Le, ze), Ye("contextmenu", Le, (xe) => { + G(xe, "edgecontextmenu"); + }), Ye("mouseenter", Le, (xe) => { + G(xe, "edgemouseenter"); + }), Ye("mouseleave", Le, (xe) => { + G(xe, "edgemouseleave"); + }), L(te, Fe); + }; + ke(Te, (te) => { + M() || te(Ae); + }); + } + L(e, se); + var Xe = fe({ + get id() { + return g(); + }, + set id(te) { + g(te), y(); + }, + get type() { + return p(); + }, + set type(te) { + p(te), y(); + }, + get source() { + return x(); + }, + set source(te) { + x(te), y(); + }, + get target() { + return C(); + }, + set target(te) { + C(te), y(); + }, + get data() { + return $(); + }, + set data(te) { + $(te), y(); + }, + get style() { + return m(); + }, + set style(te) { + m(te), y(); + }, + get zIndex() { + return _(); + }, + set zIndex(te) { + _(te), y(); + }, + get animated() { + return v(); + }, + set animated(te) { + v(te), y(); + }, + get selected() { + return b(); + }, + set selected(te) { + b(te), y(); + }, + get selectable() { + return N(); + }, + set selectable(te) { + N(te), y(); + }, + get deletable() { + return E(); + }, + set deletable(te) { + E(te), y(); + }, + get hidden() { + return M(); + }, + set hidden(te) { + M(te), y(); + }, + get label() { + return D(); + }, + set label(te) { + D(te), y(); + }, + get labelStyle() { + return V(); + }, + set labelStyle(te) { + V(te), y(); + }, + get markerStart() { + return A(); + }, + set markerStart(te) { + A(te), y(); + }, + get markerEnd() { + return O(); + }, + set markerEnd(te) { + O(te), y(); + }, + get sourceHandle() { + return R(); + }, + set sourceHandle(te) { + R(te), y(); + }, + get targetHandle() { + return S(); + }, + set targetHandle(te) { + S(te), y(); + }, + get sourceX() { + return T(); + }, + set sourceX(te) { + T(te), y(); + }, + get sourceY() { + return k(); + }, + set sourceY(te) { + k(te), y(); + }, + get targetX() { + return P(); + }, + set targetX(te) { + P(te), y(); + }, + get targetY() { + return H(); + }, + set targetY(te) { + H(te), y(); + }, + get sourcePosition() { + return I(); + }, + set sourcePosition(te) { + I(te), y(); + }, + get targetPosition() { + return B(); + }, + set targetPosition(te) { + B(te), y(); + }, + get ariaLabel() { + return F(); + }, + set ariaLabel(te) { + F(te), y(); + }, + get interactionWidth() { + return K(); + }, + set interactionWidth(te) { + K(te), y(); + }, + get class() { + return ie(); + }, + set class(te) { + ie(te), y(); + } + }); + return r(), Xe; +} +ae( + Ac, + { + id: {}, + type: {}, + source: {}, + target: {}, + data: {}, + style: {}, + zIndex: {}, + animated: {}, + selected: {}, + selectable: {}, + deletable: {}, + hidden: {}, + label: {}, + labelStyle: {}, + markerStart: {}, + markerEnd: {}, + sourceHandle: {}, + targetHandle: {}, + sourceX: {}, + sourceY: {}, + targetX: {}, + targetY: {}, + sourcePosition: {}, + targetPosition: {}, + ariaLabel: {}, + interactionWidth: {}, + class: {} + }, + [], + [], + !0 +); +function Lc(e, t) { + de(t, !1); + let n = w(t, "onMount", 12, void 0), r = w(t, "onDestroy", 12, void 0); + return un(() => { + var o; + return (o = n()) == null || o(), r(); + }), He(), fe({ + get onMount() { + return n(); + }, + set onMount(o) { + n(o), y(); + }, + get onDestroy() { + return r(); + }, + set onDestroy(o) { + r(o), y(); + } + }); +} +ae(Lc, { onMount: {}, onDestroy: {} }, [], [], !0); +var T2 = /* @__PURE__ */ _e(""); +function Oc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(i, "$markers", n), { markers: i } = Ue(); + He(); + var s = T2(); + Yt(s, 5, o, (a) => a.id, (a, l) => { + Ic(a, ut(() => h(l))); + }), Z(s), L(e, s), fe(), r(); +} +ae(Oc, {}, [], [], !0); +var H2 = /* @__PURE__ */ _e(''), V2 = /* @__PURE__ */ _e(''), D2 = /* @__PURE__ */ _e(''); +function Ic(e, t) { + de(t, !1); + let n = w(t, "id", 12), r = w(t, "type", 12), o = w(t, "width", 12, 12.5), i = w(t, "height", 12, 12.5), s = w(t, "markerUnits", 12, "strokeWidth"), a = w(t, "orient", 12, "auto-start-reverse"), l = w(t, "color", 12, void 0), u = w(t, "strokeWidth", 12, void 0); + He(); + var c = D2(), f = X(c); + { + var d = (p) => { + var x = H2(); + Ee(() => { + ce(x, "stroke", l()), ce(x, "stroke-width", u()); + }), L(p, x); + }, g = (p, x) => { + { + var C = ($) => { + var m = V2(); + Ee(() => { + ce(m, "stroke", l()), ce(m, "stroke-width", u()), ce(m, "fill", l()); + }), L($, m); + }; + ke( + p, + ($) => { + r() === mo.ArrowClosed && $(C); + }, + x + ); + } + }; + ke(f, (p) => { + r() === mo.Arrow ? p(d) : p(g, !1); + }); + } + return Z(c), Ee(() => { + ce(c, "id", n()), ce(c, "markerWidth", `${o()}`), ce(c, "markerHeight", `${i()}`), ce(c, "markerUnits", s()), ce(c, "orient", a()); + }), L(e, c), fe({ + get id() { + return n(); + }, + set id(p) { + n(p), y(); + }, + get type() { + return r(); + }, + set type(p) { + r(p), y(); + }, + get width() { + return o(); + }, + set width(p) { + o(p), y(); + }, + get height() { + return i(); + }, + set height(p) { + i(p), y(); + }, + get markerUnits() { + return s(); + }, + set markerUnits(p) { + s(p), y(); + }, + get orient() { + return a(); + }, + set orient(p) { + a(p), y(); + }, + get color() { + return l(); + }, + set color(p) { + l(p), y(); + }, + get strokeWidth() { + return u(); + }, + set strokeWidth(p) { + u(p), y(); + } + }); +} +ae( + Ic, + { + id: {}, + type: {}, + width: {}, + height: {}, + markerUnits: {}, + orient: {}, + color: {}, + strokeWidth: {} + }, + [], + [], + !0 +); +var A2 = /* @__PURE__ */ ne('
    '); +function zc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(a, "$visibleEdges", n), i = () => Q(c, "$elementsSelectable", n); + let s = w(t, "defaultEdgeOptions", 12); + const { + visibleEdges: a, + edgesInitialized: l, + edges: { setDefaultOptions: u }, + elementsSelectable: c + } = Ue(); + un(() => { + s() && u(s()); + }), He(); + var f = A2(), d = X(f), g = X(d); + Oc(g, {}), Z(d); + var p = z(d, 2); + Yt(p, 1, o, (m) => m.id, (m, _) => { + const v = /* @__PURE__ */ pe(() => h(_).selectable ?? i()), b = /* @__PURE__ */ pe(() => h(_).type || "default"); + Ac(m, { + get id() { + return h(_).id; + }, + get source() { + return h(_).source; + }, + get target() { + return h(_).target; + }, + get data() { + return h(_).data; + }, + get style() { + return h(_).style; + }, + get animated() { + return h(_).animated; + }, + get selected() { + return h(_).selected; + }, + get selectable() { + return h(v); + }, + get deletable() { + return h(_).deletable; + }, + get hidden() { + return h(_).hidden; + }, + get label() { + return h(_).label; + }, + get labelStyle() { + return h(_).labelStyle; + }, + get markerStart() { + return h(_).markerStart; + }, + get markerEnd() { + return h(_).markerEnd; + }, + get sourceHandle() { + return h(_).sourceHandle; + }, + get targetHandle() { + return h(_).targetHandle; + }, + get sourceX() { + return h(_).sourceX; + }, + get sourceY() { + return h(_).sourceY; + }, + get targetX() { + return h(_).targetX; + }, + get targetY() { + return h(_).targetY; + }, + get sourcePosition() { + return h(_).sourcePosition; + }, + get targetPosition() { + return h(_).targetPosition; + }, + get ariaLabel() { + return h(_).ariaLabel; + }, + get interactionWidth() { + return h(_).interactionWidth; + }, + get class() { + return h(_).class; + }, + get type() { + return h(b); + }, + get zIndex() { + return h(_).zIndex; + }, + $$events: { + edgeclick(N) { + Ve.call(this, t, N); + }, + edgecontextmenu(N) { + Ve.call(this, t, N); + }, + edgemouseenter(N) { + Ve.call(this, t, N); + }, + edgemouseleave(N) { + Ve.call(this, t, N); + } + } + }); + }); + var x = z(p, 2); + { + var C = (m) => { + Lc(m, { + onMount: () => { + li(l, !0); + }, + onDestroy: () => { + li(l, !1); + } + }); + }; + ke(x, (m) => { + o().length > 0 && m(C); + }); + } + Z(f), L(e, f); + var $ = fe({ + get defaultEdgeOptions() { + return s(); + }, + set defaultEdgeOptions(m) { + s(m), y(); + } + }); + return r(), $; +} +ae(zc, { defaultEdgeOptions: {} }, [], [], !0); +var L2 = /* @__PURE__ */ ne('
    '); +const O2 = { + hash: "svelte-1iugwpu", + code: ".svelte-flow__selection.svelte-1iugwpu {position:absolute;top:0;left:0;}" +}; +function ha(e, t) { + de(t, !1), Je(e, O2); + let n = w(t, "x", 12, 0), r = w(t, "y", 12, 0), o = w(t, "width", 12, 0), i = w(t, "height", 12, 0), s = w(t, "isVisible", 12, !0); + var a = et(), l = be(a); + { + var u = (c) => { + var f = L2(); + Ee(() => { + st(f, "width", typeof o() == "string" ? o() : `${o()}px`), st(f, "height", typeof i() == "string" ? i() : `${i()}px`), st(f, "transform", `translate(${n()}px, ${r()}px)`); + }), L(c, f); + }; + ke(l, (c) => { + s() && c(u); + }); + } + return L(e, a), fe({ + get x() { + return n(); + }, + set x(c) { + n(c), y(); + }, + get y() { + return r(); + }, + set y(c) { + r(c), y(); + }, + get width() { + return o(); + }, + set width(c) { + o(c), y(); + }, + get height() { + return i(); + }, + set height(c) { + i(c), y(); + }, + get isVisible() { + return s(); + }, + set isVisible(c) { + s(c), y(); + } + }); +} +ae( + ha, + { + x: {}, + y: {}, + width: {}, + height: {}, + isVisible: {} + }, + [], + [], + !0 +); +function Rc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(s, "$selectionRect", n), i = () => Q(a, "$selectionRectMode", n), { selectionRect: s, selectionRectMode: a } = Ue(); + He(); + const l = /* @__PURE__ */ pe(() => !!(o() && i() === "user")), u = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.width; + }), c = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.height; + }), f = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.x; + }), d = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.y; + }); + ha(e, { + get isVisible() { + return h(l); + }, + get width() { + return h(u); + }, + get height() { + return h(c); + }, + get x() { + return h(f); + }, + get y() { + return h(d); + } + }), fe(), r(); +} +ae(Rc, {}, [], [], !0); +var I2 = /* @__PURE__ */ ne('
    '); +const z2 = { + hash: "svelte-5pxri", + code: ".selection-wrapper.svelte-5pxri {position:absolute;top:0;left:0;z-index:7;pointer-events:all;}" +}; +function Bc(e, t) { + de(t, !1), Je(e, z2); + const [n, r] = tt(), o = () => Q(l, "$selectionRectMode", n), i = () => Q(c, "$nodeLookup", n), s = () => Q(u, "$nodes", n), a = Ue(), { selectionRectMode: l, nodes: u, nodeLookup: c } = a, f = Oi(); + let d = re(null); + function g(m) { + const _ = s().filter((v) => v.selected); + f("selectioncontextmenu", { nodes: _, event: m }); + } + function p(m) { + const _ = s().filter((v) => v.selected); + f("selectionclick", { nodes: _, event: m }); + } + he( + () => (o(), i(), s()), + () => { + o() === "nodes" && (U(d, No(i(), { filter: (m) => !!m.selected })), s()); + } + ), gt(), He(); + var x = et(), C = be(x); + { + var $ = (m) => { + var _ = I2(), v = X(_); + ha(v, { width: "100%", height: "100%", x: 0, y: 0 }), Z(_), vt(_, (b, N) => $r == null ? void 0 : $r(b, N), () => ({ + disabled: !1, + store: a, + onDrag: (b, N, E, M) => { + f("nodedrag", { event: b, targetNode: null, nodes: M }); + }, + onDragStart: (b, N, E, M) => { + f("nodedragstart", { event: b, targetNode: null, nodes: M }); + }, + onDragStop: (b, N, E, M) => { + f("nodedragstop", { event: b, targetNode: null, nodes: M }); + } + })), Ot(() => Ye("contextmenu", _, g)), Ot(() => Ye("click", _, p)), Ot(() => Ye("keyup", _, () => { + })), Ee(() => ce(_, "style", `width: ${h(d).width ?? ""}px; height: ${h(d).height ?? ""}px; transform: translate(${h(d).x ?? ""}px, ${h(d).y ?? ""}px)`)), L(m, _); + }; + ke(C, (m) => { + o() === "nodes" && h(d) && Nn(h(d).x) && Nn(h(d).y) && m($); + }); + } + L(e, x), fe(), r(); +} +ae(Bc, {}, [], [], !0); +function We(e, t) { + let { enabled: n = !0, trigger: r, type: o = "keydown" } = t; + function i(s) { + const a = Array.isArray(r) ? r : [r], l = { + alt: s.altKey, + ctrl: s.ctrlKey, + shift: s.shiftKey, + meta: s.metaKey + }; + for (const u of a) { + const c = { + modifier: [], + preventDefault: !1, + enabled: !0, + ...u + }, { modifier: f, key: d, callback: g, preventDefault: p, enabled: x } = c; + if (x) { + if (f.length && !(Array.isArray(f) ? f : [f]).map( + (m) => typeof m == "string" ? [m] : m + ).some( + (m) => m.every((_) => l[_]) + )) + continue; + if (s.key === d) { + p && s.preventDefault(); + const C = { + node: e, + trigger: c, + originalEvent: s + }; + e.dispatchEvent(new CustomEvent("shortcut", { detail: C })), g == null || g(C); + } + } + } + } + return n && e.addEventListener(o, i), { + update: (s) => { + const { enabled: a = !0, type: l = "keydown" } = s; + n && (!a || o !== l) ? e.removeEventListener(o, i) : !n && a && e.addEventListener(l, i), n = a, o = l, r = s.trigger; + }, + destroy: () => { + e.removeEventListener(o, i); + } + }; +} +function Yc(e, t) { + de(t, !1); + let n = w(t, "selectionKey", 12, "Shift"), r = w(t, "multiSelectionKey", 28, () => yi() ? "Meta" : "Control"), o = w(t, "deleteKey", 12, "Backspace"), i = w(t, "panActivationKey", 12, " "), s = w(t, "zoomActivationKey", 28, () => yi() ? "Meta" : "Control"); + const { + selectionKeyPressed: a, + multiselectionKeyPressed: l, + deleteKeyPressed: u, + panActivationKeyPressed: c, + zoomActivationKeyPressed: f, + selectionRect: d + } = Ue(); + function g(m) { + return m !== null && typeof m == "object"; + } + function p(m) { + return g(m) ? m.modifier || [] : []; + } + function x(m) { + return m == null ? "" : g(m) ? m.key : m; + } + function C(m, _) { + return (Array.isArray(m) ? m : [m]).map((b) => { + const N = x(b); + return { + key: N, + modifier: p(b), + enabled: N !== null, + callback: _ + }; + }); + } + function $() { + d.set(null), a.set(!1), l.set(!1), u.set(!1), c.set(!1), f.set(!1); + } + return He(), Ye("blur", Nt, $), Ye("contextmenu", Nt, $), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(n(), () => a.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(n(), () => a.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(r(), () => l.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(r(), () => l.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(o(), (m) => { + !(m.originalEvent.ctrlKey || m.originalEvent.metaKey || m.originalEvent.shiftKey) && !w0(m.originalEvent) && u.set(!0); + }), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(o(), () => u.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(i(), () => c.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(i(), () => c.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(s(), () => f.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(s(), () => f.set(!1)), + type: "keyup" + })), fe({ + get selectionKey() { + return n(); + }, + set selectionKey(m) { + n(m), y(); + }, + get multiSelectionKey() { + return r(); + }, + set multiSelectionKey(m) { + r(m), y(); + }, + get deleteKey() { + return o(); + }, + set deleteKey(m) { + o(m), y(); + }, + get panActivationKey() { + return i(); + }, + set panActivationKey(m) { + i(m), y(); + }, + get zoomActivationKey() { + return s(); + }, + set zoomActivationKey(m) { + s(m), y(); + } + }); +} +ae( + Yc, + { + selectionKey: {}, + multiSelectionKey: {}, + deleteKey: {}, + panActivationKey: {}, + zoomActivationKey: {} + }, + [], + [], + !0 +); +var R2 = /* @__PURE__ */ _e(''), B2 = /* @__PURE__ */ _e(''); +function Zc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(g, "$connection", n), i = () => Q(p, "$connectionLineType", n), s = () => Q(f, "$width", n), a = () => Q(d, "$height", n); + let l = w(t, "containerStyle", 12, ""), u = w(t, "style", 12, ""), c = w(t, "isCustomComponent", 12, !1); + const { + width: f, + height: d, + connection: g, + connectionLineType: p + } = Ue(); + let x = re(null); + he( + () => (o(), j(c()), i(), h(x), Hs), + () => { + if (o().inProgress && !c()) { + const { from: v, to: b, fromPosition: N, toPosition: E } = o(), M = { + sourceX: v.x, + sourceY: v.y, + sourcePosition: N, + targetX: b.x, + targetY: b.y, + targetPosition: E + }; + switch (i()) { + case Cr.Bezier: + ((D) => U(x, D[0]))(sc(M)); + break; + case Cr.Step: + ((D) => U(x, D[0]))(wi({ ...M, borderRadius: 0 })); + break; + case Cr.SmoothStep: + ((D) => U(x, D[0]))(wi(M)); + break; + default: + ((D) => U(x, D[0]))(Hs(M)); + } + } + } + ), gt(), He(); + var C = et(), $ = be(C); + { + var m = (v) => { + var b = B2(), N = X(b), E = X(N); + pt(E, t, "connectionLine", {}); + var M = z(E); + { + var D = (V) => { + var A = R2(); + Ee(() => { + ce(A, "d", h(x)), ce(A, "style", u()); + }), L(V, A); + }; + ke(M, (V) => { + c() || V(D); + }); + } + Z(N), Z(b), Ee( + (V) => { + ce(b, "width", s()), ce(b, "height", a()), ce(b, "style", l()), kt(N, 0, bn(V)); + }, + [ + () => Et([ + "svelte-flow__connection", + c0(o().isValid) + ]) + ], + pe + ), L(v, b); + }; + ke($, (v) => { + o().inProgress && v(m); + }); + } + L(e, C); + var _ = fe({ + get containerStyle() { + return l(); + }, + set containerStyle(v) { + l(v), y(); + }, + get style() { + return u(); + }, + set style(v) { + u(v), y(); + }, + get isCustomComponent() { + return c(); + }, + set isCustomComponent(v) { + c(v), y(); + } + }); + return r(), _; +} +ae( + Zc, + { + containerStyle: {}, + style: {}, + isCustomComponent: {} + }, + ["connectionLine"], + [], + !0 +); +var Y2 = /* @__PURE__ */ ne("
    "); +function Ho(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), r = nt(n, ["position", "style", "class"]); + de(t, !1); + const [o, i] = tt(), s = () => Q(f, "$selectionRectMode", o), a = re(); + let l = w(t, "position", 12, "top-right"), u = w(t, "style", 12, void 0), c = w(t, "class", 12, void 0); + const { selectionRectMode: f } = Ue(); + he(() => j(l()), () => { + U(a, `${l()}`.split("-")); + }), gt(), He(); + var d = Y2(); + let g; + var p = X(d); + pt(p, t, "default", {}), Z(d), Ee( + (C) => { + g = on(d, g, { + class: C, + style: u(), + ...r + }), st(d, "pointer-events", s() ? "none" : ""); + }, + [ + () => Et([ + "svelte-flow__panel", + c(), + ...h(a) + ]) + ], + pe + ), L(e, d); + var x = fe({ + get position() { + return l(); + }, + set position(C) { + l(C), y(); + }, + get style() { + return u(); + }, + set style(C) { + u(C), y(); + }, + get class() { + return c(); + }, + set class(C) { + c(C), y(); + } + }); + return i(), x; +} +ae(Ho, { position: {}, style: {}, class: {} }, ["default"], [], !0); +var Z2 = /* @__PURE__ */ ne('
    Svelte Flow'); +function Xc(e, t) { + de(t, !1); + let n = w(t, "proOptions", 12, void 0), r = w(t, "position", 12, "bottom-right"); + He(); + var o = et(), i = be(o); + { + var s = (a) => { + Ho(a, { + get position() { + return r(); + }, + class: "svelte-flow__attribution", + "data-message": "Feel free to remove the attribution or check out how you could support us: https://svelteflow.dev/support-us", + children: (l, u) => { + var c = Z2(); + L(l, c); + }, + $$slots: { default: !0 } + }); + }; + ke(i, (a) => { + var l; + (l = n()) != null && l.hideAttribution || a(s); + }); + } + return L(e, o), fe({ + get proOptions() { + return n(); + }, + set proOptions(a) { + n(a), y(); + }, + get position() { + return r(); + }, + set position(a) { + r(a), y(); + } + }); +} +ae(Xc, { proOptions: {}, position: {} }, [], [], !0); +function El(e, { nodeTypes: t, edgeTypes: n, minZoom: r, maxZoom: o, translateExtent: i, paneClickDistance: s }) { + t !== void 0 && e.setNodeTypes(t), n !== void 0 && e.setEdgeTypes(n), r !== void 0 && e.setMinZoom(r), o !== void 0 && e.setMaxZoom(o), i !== void 0 && e.setTranslateExtent(i), s !== void 0 && e.setPaneClickDistance(s); +} +const X2 = (e) => Object.keys(e); +function Sl(e, t) { + X2(t).forEach((n) => { + const r = t[n]; + r !== void 0 && e[n].set(r); + }); +} +function F2() { + return typeof window > "u" || !window.matchMedia ? null : window.matchMedia("(prefers-color-scheme: dark)"); +} +function W2(e = "light") { + return Ft("light", (n) => { + if (e !== "system") { + n(e); + return; + } + const r = F2(), o = () => n(r != null && r.matches ? "dark" : "light"); + return n(r != null && r.matches ? "dark" : "light"), r == null || r.addEventListener("change", o), () => { + r == null || r.removeEventListener("change", o); + }; + }); +} +var K2 = /* @__PURE__ */ ne('
    ', 1), q2 = /* @__PURE__ */ ne(" ", 1), G2 = /* @__PURE__ */ ne("
    "); +const U2 = { + hash: "svelte-12wlba6", + code: ".svelte-flow.svelte-12wlba6 {width:100%;height:100%;overflow:hidden;position:relative;z-index:0;background-color:var(--background-color, var(--background-color-default));}:root {--background-color-default: #fff;--background-pattern-color-default: #ddd;--minimap-mask-color-default: rgb(240, 240, 240, 0.6);--minimap-mask-stroke-color-default: none;--minimap-mask-stroke-width-default: 1;--controls-button-background-color-default: #fefefe;--controls-button-background-color-hover-default: #f4f4f4;--controls-button-color-default: inherit;--controls-button-color-hover-default: inherit;--controls-button-border-color-default: #eee;}" +}; +function Fc(e, t) { + const n = p1(t), r = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), o = nt(r, [ + "id", + "nodes", + "edges", + "fitView", + "fitViewOptions", + "minZoom", + "maxZoom", + "initialViewport", + "viewport", + "nodeTypes", + "edgeTypes", + "selectionKey", + "selectionMode", + "panActivationKey", + "multiSelectionKey", + "zoomActivationKey", + "nodesDraggable", + "nodesConnectable", + "nodeDragThreshold", + "elementsSelectable", + "snapGrid", + "deleteKey", + "connectionRadius", + "connectionLineType", + "connectionMode", + "connectionLineStyle", + "connectionLineContainerStyle", + "onMoveStart", + "onMove", + "onMoveEnd", + "isValidConnection", + "translateExtent", + "nodeExtent", + "onlyRenderVisibleElements", + "panOnScrollMode", + "preventScrolling", + "zoomOnScroll", + "zoomOnDoubleClick", + "zoomOnPinch", + "panOnScroll", + "panOnDrag", + "selectionOnDrag", + "autoPanOnConnect", + "autoPanOnNodeDrag", + "onerror", + "ondelete", + "onedgecreate", + "attributionPosition", + "proOptions", + "defaultEdgeOptions", + "width", + "height", + "colorMode", + "onconnect", + "onconnectstart", + "onconnectend", + "onbeforedelete", + "oninit", + "nodeOrigin", + "paneClickDistance", + "nodeClickDistance", + "defaultMarkerColor", + "style", + "class" + ]); + de(t, !1), Je(e, U2); + const [i, s] = tt(), a = () => Q(_(), "$viewport", i), l = () => Q(ji, "$initialized", i), u = () => Q(h(c), "$colorModeClass", i), c = re(); + let f = w(t, "id", 12, "1"), d = w(t, "nodes", 12), g = w(t, "edges", 12), p = w(t, "fitView", 12, void 0), x = w(t, "fitViewOptions", 12, void 0), C = w(t, "minZoom", 12, void 0), $ = w(t, "maxZoom", 12, void 0), m = w(t, "initialViewport", 12, void 0), _ = w(t, "viewport", 12, void 0), v = w(t, "nodeTypes", 12, void 0), b = w(t, "edgeTypes", 12, void 0), N = w(t, "selectionKey", 12, void 0), E = w(t, "selectionMode", 12, void 0), M = w(t, "panActivationKey", 12, void 0), D = w(t, "multiSelectionKey", 12, void 0), V = w(t, "zoomActivationKey", 12, void 0), A = w(t, "nodesDraggable", 12, void 0), O = w(t, "nodesConnectable", 12, void 0), R = w(t, "nodeDragThreshold", 12, void 0), S = w(t, "elementsSelectable", 12, void 0), T = w(t, "snapGrid", 12, void 0), k = w(t, "deleteKey", 12, void 0), P = w(t, "connectionRadius", 12, void 0), H = w(t, "connectionLineType", 12, void 0), I = w(t, "connectionMode", 28, () => cr.Strict), B = w(t, "connectionLineStyle", 12, ""), F = w(t, "connectionLineContainerStyle", 12, ""), K = w(t, "onMoveStart", 12, void 0), ie = w(t, "onMove", 12, void 0), ee = w(t, "onMoveEnd", 12, void 0), W = w(t, "isValidConnection", 12, void 0), ue = w(t, "translateExtent", 12, void 0), me = w(t, "nodeExtent", 12, void 0), Ce = w(t, "onlyRenderVisibleElements", 12, void 0), ge = w(t, "panOnScrollMode", 28, () => qn.Free), ze = w(t, "preventScrolling", 12, !0), G = w(t, "zoomOnScroll", 12, !0), se = w(t, "zoomOnDoubleClick", 12, !0), Te = w(t, "zoomOnPinch", 12, !0), Ae = w(t, "panOnScroll", 12, !1), Xe = w(t, "panOnDrag", 12, !0), te = w(t, "selectionOnDrag", 12, void 0), Fe = w(t, "autoPanOnConnect", 12, !0), Le = w(t, "autoPanOnNodeDrag", 12, !0), Qe = w(t, "onerror", 12, void 0), oe = w(t, "ondelete", 12, void 0), ve = w(t, "onedgecreate", 12, void 0), xe = w(t, "attributionPosition", 12, void 0), Oe = w(t, "proOptions", 12, void 0), ct = w(t, "defaultEdgeOptions", 12, void 0), lt = w(t, "width", 12, void 0), J = w(t, "height", 12, void 0), Re = w(t, "colorMode", 12, "light"), le = w(t, "onconnect", 12, void 0), fn = w(t, "onconnectstart", 12, void 0), Ut = w(t, "onconnectend", 12, void 0), gn = w(t, "onbeforedelete", 12, void 0), Ne = w(t, "oninit", 12, void 0), rt = w(t, "nodeOrigin", 12, void 0), ye = w(t, "paneClickDistance", 12, 0), ot = w(t, "nodeClickDistance", 12, 0), at = w(t, "defaultMarkerColor", 12, "#b1b1b7"), Xt = w(t, "style", 12, void 0), Kr = w(t, "class", 12, void 0), At = re(), St = re(), hn = re(); + const jt = a() || m(), ft = Uf(Wi) ? Ue() : w2({ + nodes: q(d()), + edges: q(g()), + width: lt(), + height: J(), + fitView: p(), + nodeOrigin: rt(), + nodeExtent: me() + }); + un(() => (ft.width.set(h(St)), ft.height.set(h(hn)), ft.domNode.set(h(At)), ft.syncNodeStores(d()), ft.syncEdgeStores(g()), ft.syncViewport(_()), p() !== void 0 && ft.fitViewOnInit.set(p()), x() && ft.fitViewOptions.set(x()), El(ft, { + nodeTypes: v(), + edgeTypes: b(), + minZoom: C(), + maxZoom: $(), + translateExtent: ue(), + paneClickDistance: ye() + }), () => { + ft.reset(); + })); + const { initialized: ji } = ft; + let nr = re(!1); + he( + () => (h(St), h(hn)), + () => { + h(St) !== void 0 && h(hn) !== void 0 && (ft.width.set(h(St)), ft.height.set(h(hn))); + } + ), he( + () => (h(nr), l(), j(Ne())), + () => { + var Y; + !h(nr) && l() && ((Y = Ne()) == null || Y(), U(nr, !0)); + } + ), he( + () => (j(f()), j(H()), j(P()), j(E()), j(T()), j(at()), j(A()), j(O()), j(S()), j(Ce()), j(W()), j(Fe()), j(Le()), j(Qe()), j(oe()), j(ve()), j(I()), j(R()), j(le()), j(fn()), j(Ut()), j(gn()), j(rt()), Sl), + () => { + const Y = { + flowId: f(), + connectionLineType: H(), + connectionRadius: P(), + selectionMode: E(), + snapGrid: T(), + defaultMarkerColor: at(), + nodesDraggable: A(), + nodesConnectable: O(), + elementsSelectable: S(), + onlyRenderVisibleElements: Ce(), + isValidConnection: W(), + autoPanOnConnect: Fe(), + autoPanOnNodeDrag: Le(), + onerror: Qe(), + ondelete: oe(), + onedgecreate: ve(), + connectionMode: I(), + nodeDragThreshold: R(), + onconnect: le(), + onconnectstart: fn(), + onconnectend: Ut(), + onbeforedelete: gn(), + nodeOrigin: rt() + }; + Sl(ft, Y); + } + ), he( + () => (j(v()), j(b()), j(C()), j($()), j(ue()), j(ye())), + () => { + El(ft, { + nodeTypes: v(), + edgeTypes: b(), + minZoom: C(), + maxZoom: $(), + translateExtent: ue(), + paneClickDistance: ye() + }); + } + ), he( + () => j(Re()), + () => { + k1(U(c, W2(Re())), "$colorModeClass", i); + } + ), gt(), He(); + var Jt = G2(); + let Io; + var zo = X(Jt); + Yc(zo, { + get selectionKey() { + return N(); + }, + get deleteKey() { + return k(); + }, + get panActivationKey() { + return M(); + }, + get multiSelectionKey() { + return D(); + }, + get zoomActivationKey() { + return V(); + } + }); + var Ro = z(zo, 2); + const Rd = /* @__PURE__ */ pe(() => ge() === void 0 ? qn.Free : ge()), Bd = /* @__PURE__ */ pe(() => ze() === void 0 ? !0 : ze()), Yd = /* @__PURE__ */ pe(() => G() === void 0 ? !0 : G()), Zd = /* @__PURE__ */ pe(() => se() === void 0 ? !0 : se()), Xd = /* @__PURE__ */ pe(() => Te() === void 0 ? !0 : Te()), Fd = /* @__PURE__ */ pe(() => Ae() === void 0 ? !1 : Ae()), Wd = /* @__PURE__ */ pe(() => Xe() === void 0 ? !0 : Xe()), Kd = /* @__PURE__ */ pe(() => ye() === void 0 ? 0 : ye()); + Mc(Ro, { + initialViewport: jt, + get onMoveStart() { + return K(); + }, + get onMove() { + return ie(); + }, + get onMoveEnd() { + return ee(); + }, + get panOnScrollMode() { + return h(Rd); + }, + get preventScrolling() { + return h(Bd); + }, + get zoomOnScroll() { + return h(Yd); + }, + get zoomOnDoubleClick() { + return h(Zd); + }, + get zoomOnPinch() { + return h(Xd); + }, + get panOnScroll() { + return h(Fd); + }, + get panOnDrag() { + return h(Wd); + }, + get paneClickDistance() { + return h(Kd); + }, + children: (Y, gw) => { + const Ud = /* @__PURE__ */ pe(() => Xe() === void 0 ? !0 : Xe()); + Tc(Y, { + get panOnDrag() { + return h(Ud); + }, + get selectionOnDrag() { + return te(); + }, + $$events: { + paneclick(qr) { + Ve.call(this, t, qr); + }, + panecontextmenu(qr) { + Ve.call(this, t, qr); + } + }, + children: (qr, hw) => { + var xa = q2(), ba = be(xa); + Hc(ba, { + children: (Jd, vw) => { + var Ca = K2(), ka = be(Ca); + zc(ka, { + get defaultEdgeOptions() { + return ct(); + }, + $$events: { + edgeclick(Be) { + Ve.call(this, t, Be); + }, + edgecontextmenu(Be) { + Ve.call(this, t, Be); + }, + edgemouseenter(Be) { + Ve.call(this, t, Be); + }, + edgemouseleave(Be) { + Ve.call(this, t, Be); + } + } + }); + var $a = z(ka, 2); + Zc($a, { + get containerStyle() { + return F(); + }, + get style() { + return B(); + }, + isCustomComponent: n.connectionLine, + $$slots: { + connectionLine: (Be, pw) => { + var Sa = et(), ef = be(Sa); + pt(ef, t, "connectionLine", {}), L(Be, Sa); + } + } + }); + var Ea = z($a, 6); + Dc(Ea, { + get nodeClickDistance() { + return ot(); + }, + $$events: { + nodeclick(Be) { + Ve.call(this, t, Be); + }, + nodemouseenter(Be) { + Ve.call(this, t, Be); + }, + nodemousemove(Be) { + Ve.call(this, t, Be); + }, + nodemouseleave(Be) { + Ve.call(this, t, Be); + }, + nodedragstart(Be) { + Ve.call(this, t, Be); + }, + nodedrag(Be) { + Ve.call(this, t, Be); + }, + nodedragstop(Be) { + Ve.call(this, t, Be); + }, + nodecontextmenu(Be) { + Ve.call(this, t, Be); + } + } + }); + var Qd = z(Ea, 2); + Bc(Qd, { + $$events: { + selectionclick(Be) { + Ve.call(this, t, Be); + }, + selectioncontextmenu(Be) { + Ve.call(this, t, Be); + }, + nodedragstart(Be) { + Ve.call(this, t, Be); + }, + nodedrag(Be) { + Ve.call(this, t, Be); + }, + nodedragstop(Be) { + Ve.call(this, t, Be); + } + } + }), L(Jd, Ca); + }, + $$slots: { default: !0 } + }); + var jd = z(ba, 2); + Rc(jd, {}), L(qr, xa); + }, + $$slots: { default: !0 } + }); + }, + $$slots: { default: !0 } + }); + var _a = z(Ro, 2); + Xc(_a, { + get proOptions() { + return Oe(); + }, + get position() { + return xe(); + } + }); + var qd = z(_a, 2); + pt(qd, t, "default", {}), Z(Jt), An(Jt, (Y) => U(At, Y), () => h(At)), Ee( + (Y) => Io = on( + Jt, + Io, + { + style: Xt(), + class: Y, + "data-testid": "svelte-flow__wrapper", + ...o, + role: "application" + }, + "svelte-12wlba6" + ), + [ + () => Et([ + "svelte-flow", + Kr(), + u() + ]) + ], + pe + ), Ra(Jt, "clientWidth", (Y) => U(St, Y)), Ra(Jt, "clientHeight", (Y) => U(hn, Y)), Ye("dragover", Jt, function(Y) { + Ve.call(this, t, Y); + }), Ye("drop", Jt, function(Y) { + Ve.call(this, t, Y); + }), L(e, Jt); + var Gd = fe({ + get id() { + return f(); + }, + set id(Y) { + f(Y), y(); + }, + get nodes() { + return d(); + }, + set nodes(Y) { + d(Y), y(); + }, + get edges() { + return g(); + }, + set edges(Y) { + g(Y), y(); + }, + get fitView() { + return p(); + }, + set fitView(Y) { + p(Y), y(); + }, + get fitViewOptions() { + return x(); + }, + set fitViewOptions(Y) { + x(Y), y(); + }, + get minZoom() { + return C(); + }, + set minZoom(Y) { + C(Y), y(); + }, + get maxZoom() { + return $(); + }, + set maxZoom(Y) { + $(Y), y(); + }, + get initialViewport() { + return m(); + }, + set initialViewport(Y) { + m(Y), y(); + }, + get viewport() { + return _(); + }, + set viewport(Y) { + _(Y), y(); + }, + get nodeTypes() { + return v(); + }, + set nodeTypes(Y) { + v(Y), y(); + }, + get edgeTypes() { + return b(); + }, + set edgeTypes(Y) { + b(Y), y(); + }, + get selectionKey() { + return N(); + }, + set selectionKey(Y) { + N(Y), y(); + }, + get selectionMode() { + return E(); + }, + set selectionMode(Y) { + E(Y), y(); + }, + get panActivationKey() { + return M(); + }, + set panActivationKey(Y) { + M(Y), y(); + }, + get multiSelectionKey() { + return D(); + }, + set multiSelectionKey(Y) { + D(Y), y(); + }, + get zoomActivationKey() { + return V(); + }, + set zoomActivationKey(Y) { + V(Y), y(); + }, + get nodesDraggable() { + return A(); + }, + set nodesDraggable(Y) { + A(Y), y(); + }, + get nodesConnectable() { + return O(); + }, + set nodesConnectable(Y) { + O(Y), y(); + }, + get nodeDragThreshold() { + return R(); + }, + set nodeDragThreshold(Y) { + R(Y), y(); + }, + get elementsSelectable() { + return S(); + }, + set elementsSelectable(Y) { + S(Y), y(); + }, + get snapGrid() { + return T(); + }, + set snapGrid(Y) { + T(Y), y(); + }, + get deleteKey() { + return k(); + }, + set deleteKey(Y) { + k(Y), y(); + }, + get connectionRadius() { + return P(); + }, + set connectionRadius(Y) { + P(Y), y(); + }, + get connectionLineType() { + return H(); + }, + set connectionLineType(Y) { + H(Y), y(); + }, + get connectionMode() { + return I(); + }, + set connectionMode(Y) { + I(Y), y(); + }, + get connectionLineStyle() { + return B(); + }, + set connectionLineStyle(Y) { + B(Y), y(); + }, + get connectionLineContainerStyle() { + return F(); + }, + set connectionLineContainerStyle(Y) { + F(Y), y(); + }, + get onMoveStart() { + return K(); + }, + set onMoveStart(Y) { + K(Y), y(); + }, + get onMove() { + return ie(); + }, + set onMove(Y) { + ie(Y), y(); + }, + get onMoveEnd() { + return ee(); + }, + set onMoveEnd(Y) { + ee(Y), y(); + }, + get isValidConnection() { + return W(); + }, + set isValidConnection(Y) { + W(Y), y(); + }, + get translateExtent() { + return ue(); + }, + set translateExtent(Y) { + ue(Y), y(); + }, + get nodeExtent() { + return me(); + }, + set nodeExtent(Y) { + me(Y), y(); + }, + get onlyRenderVisibleElements() { + return Ce(); + }, + set onlyRenderVisibleElements(Y) { + Ce(Y), y(); + }, + get panOnScrollMode() { + return ge(); + }, + set panOnScrollMode(Y) { + ge(Y), y(); + }, + get preventScrolling() { + return ze(); + }, + set preventScrolling(Y) { + ze(Y), y(); + }, + get zoomOnScroll() { + return G(); + }, + set zoomOnScroll(Y) { + G(Y), y(); + }, + get zoomOnDoubleClick() { + return se(); + }, + set zoomOnDoubleClick(Y) { + se(Y), y(); + }, + get zoomOnPinch() { + return Te(); + }, + set zoomOnPinch(Y) { + Te(Y), y(); + }, + get panOnScroll() { + return Ae(); + }, + set panOnScroll(Y) { + Ae(Y), y(); + }, + get panOnDrag() { + return Xe(); + }, + set panOnDrag(Y) { + Xe(Y), y(); + }, + get selectionOnDrag() { + return te(); + }, + set selectionOnDrag(Y) { + te(Y), y(); + }, + get autoPanOnConnect() { + return Fe(); + }, + set autoPanOnConnect(Y) { + Fe(Y), y(); + }, + get autoPanOnNodeDrag() { + return Le(); + }, + set autoPanOnNodeDrag(Y) { + Le(Y), y(); + }, + get onerror() { + return Qe(); + }, + set onerror(Y) { + Qe(Y), y(); + }, + get ondelete() { + return oe(); + }, + set ondelete(Y) { + oe(Y), y(); + }, + get onedgecreate() { + return ve(); + }, + set onedgecreate(Y) { + ve(Y), y(); + }, + get attributionPosition() { + return xe(); + }, + set attributionPosition(Y) { + xe(Y), y(); + }, + get proOptions() { + return Oe(); + }, + set proOptions(Y) { + Oe(Y), y(); + }, + get defaultEdgeOptions() { + return ct(); + }, + set defaultEdgeOptions(Y) { + ct(Y), y(); + }, + get width() { + return lt(); + }, + set width(Y) { + lt(Y), y(); + }, + get height() { + return J(); + }, + set height(Y) { + J(Y), y(); + }, + get colorMode() { + return Re(); + }, + set colorMode(Y) { + Re(Y), y(); + }, + get onconnect() { + return le(); + }, + set onconnect(Y) { + le(Y), y(); + }, + get onconnectstart() { + return fn(); + }, + set onconnectstart(Y) { + fn(Y), y(); + }, + get onconnectend() { + return Ut(); + }, + set onconnectend(Y) { + Ut(Y), y(); + }, + get onbeforedelete() { + return gn(); + }, + set onbeforedelete(Y) { + gn(Y), y(); + }, + get oninit() { + return Ne(); + }, + set oninit(Y) { + Ne(Y), y(); + }, + get nodeOrigin() { + return rt(); + }, + set nodeOrigin(Y) { + rt(Y), y(); + }, + get paneClickDistance() { + return ye(); + }, + set paneClickDistance(Y) { + ye(Y), y(); + }, + get nodeClickDistance() { + return ot(); + }, + set nodeClickDistance(Y) { + ot(Y), y(); + }, + get defaultMarkerColor() { + return at(); + }, + set defaultMarkerColor(Y) { + at(Y), y(); + }, + get style() { + return Xt(); + }, + set style(Y) { + Xt(Y), y(); + }, + get class() { + return Kr(); + }, + set class(Y) { + Kr(Y), y(); + } + }); + return s(), Gd; +} +ae( + Fc, + { + id: {}, + nodes: {}, + edges: {}, + fitView: {}, + fitViewOptions: {}, + minZoom: {}, + maxZoom: {}, + initialViewport: {}, + viewport: {}, + nodeTypes: {}, + edgeTypes: {}, + selectionKey: {}, + selectionMode: {}, + panActivationKey: {}, + multiSelectionKey: {}, + zoomActivationKey: {}, + nodesDraggable: {}, + nodesConnectable: {}, + nodeDragThreshold: {}, + elementsSelectable: {}, + snapGrid: {}, + deleteKey: {}, + connectionRadius: {}, + connectionLineType: {}, + connectionMode: {}, + connectionLineStyle: {}, + connectionLineContainerStyle: {}, + onMoveStart: {}, + onMove: {}, + onMoveEnd: {}, + isValidConnection: {}, + translateExtent: {}, + nodeExtent: {}, + onlyRenderVisibleElements: {}, + panOnScrollMode: {}, + preventScrolling: {}, + zoomOnScroll: {}, + zoomOnDoubleClick: {}, + zoomOnPinch: {}, + panOnScroll: {}, + panOnDrag: {}, + selectionOnDrag: {}, + autoPanOnConnect: {}, + autoPanOnNodeDrag: {}, + onerror: {}, + ondelete: {}, + onedgecreate: {}, + attributionPosition: {}, + proOptions: {}, + defaultEdgeOptions: {}, + width: {}, + height: {}, + colorMode: {}, + onconnect: {}, + onconnectstart: {}, + onconnectend: {}, + onbeforedelete: {}, + oninit: {}, + nodeOrigin: {}, + paneClickDistance: {}, + nodeClickDistance: {}, + defaultMarkerColor: {}, + style: {}, + class: {} + }, + ["connectionLine", "default"], + [], + !0 +); +function Wc(e, t) { + de(t, !1); + let n = w(t, "initialNodes", 12, void 0), r = w(t, "initialEdges", 12, void 0), o = w(t, "initialWidth", 12, void 0), i = w(t, "initialHeight", 12, void 0), s = w(t, "fitView", 12, void 0), a = w(t, "nodeOrigin", 12, void 0); + const l = Nc({ + nodes: n(), + edges: r(), + width: o(), + height: i(), + nodeOrigin: a(), + fitView: s() + }); + Tr(Wi, { getStore: () => l }), Qs(() => { + l.reset(); + }), He(); + var u = et(), c = be(u); + return pt(c, t, "default", {}), L(e, u), fe({ + get initialNodes() { + return n(); + }, + set initialNodes(f) { + n(f), y(); + }, + get initialEdges() { + return r(); + }, + set initialEdges(f) { + r(f), y(); + }, + get initialWidth() { + return o(); + }, + set initialWidth(f) { + o(f), y(); + }, + get initialHeight() { + return i(); + }, + set initialHeight(f) { + i(f), y(); + }, + get fitView() { + return s(); + }, + set fitView(f) { + s(f), y(); + }, + get nodeOrigin() { + return a(); + }, + set nodeOrigin(f) { + a(f), y(); + } + }); +} +ae( + Wc, + { + initialNodes: {}, + initialEdges: {}, + initialWidth: {}, + initialHeight: {}, + fitView: {}, + nodeOrigin: {} + }, + ["default"], + [], + !0 +); +var j2 = /* @__PURE__ */ ne(""); +function ro(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), r = nt(n, [ + "class", + "bgColor", + "bgColorHover", + "color", + "colorHover", + "borderColor" + ]); + de(t, !1); + let o = w(t, "class", 12, void 0), i = w(t, "bgColor", 12, void 0), s = w(t, "bgColorHover", 12, void 0), a = w(t, "color", 12, void 0), l = w(t, "colorHover", 12, void 0), u = w(t, "borderColor", 12, void 0); + He(); + var c = j2(); + let f; + var d = X(c); + return pt(d, t, "default", { class: "button-svg" }), Z(c), Ee( + (g) => { + f = on(c, f, { type: "button", class: g, ...r }), st(c, "--xy-controls-button-background-color-props", i()), st(c, "--xy-controls-button-background-color-hover-props", s()), st(c, "--xy-controls-button-color-props", a()), st(c, "--xy-controls-button-color-hover-props", l()), st(c, "--xy-controls-button-border-color-props", u()); + }, + [ + () => Et([ + "svelte-flow__controls-button", + o() + ]) + ], + pe + ), Ye("click", c, function(g) { + Ve.call(this, t, g); + }), L(e, c), fe({ + get class() { + return o(); + }, + set class(g) { + o(g), y(); + }, + get bgColor() { + return i(); + }, + set bgColor(g) { + i(g), y(); + }, + get bgColorHover() { + return s(); + }, + set bgColorHover(g) { + s(g), y(); + }, + get color() { + return a(); + }, + set color(g) { + a(g), y(); + }, + get colorHover() { + return l(); + }, + set colorHover(g) { + l(g), y(); + }, + get borderColor() { + return u(); + }, + set borderColor(g) { + u(g), y(); + } + }); +} +ae( + ro, + { + class: {}, + bgColor: {}, + bgColorHover: {}, + color: {}, + colorHover: {}, + borderColor: {} + }, + ["default"], + [], + !0 +); +var J2 = /* @__PURE__ */ _e(''); +function Kc(e) { + var t = J2(); + L(e, t); +} +ae(Kc, {}, [], [], !0); +var Q2 = /* @__PURE__ */ _e(''); +function qc(e) { + var t = Q2(); + L(e, t); +} +ae(qc, {}, [], [], !0); +var ep = /* @__PURE__ */ _e(''); +function Gc(e) { + var t = ep(); + L(e, t); +} +ae(Gc, {}, [], [], !0); +var tp = /* @__PURE__ */ _e(''); +function Uc(e) { + var t = tp(); + L(e, t); +} +ae(Uc, {}, [], [], !0); +var np = /* @__PURE__ */ _e(''); +function jc(e) { + var t = np(); + L(e, t); +} +ae(jc, {}, [], [], !0); +var rp = /* @__PURE__ */ ne(" ", 1), op = /* @__PURE__ */ ne(" ", 1); +function Jc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(H, "$nodesDraggable", n), i = () => Q(I, "$nodesConnectable", n), s = () => Q(B, "$elementsSelectable", n), a = () => Q(T, "$viewport", n), l = () => Q(k, "$minZoom", n), u = () => Q(P, "$maxZoom", n), c = re(), f = re(), d = re(), g = re(); + let p = w(t, "position", 12, "bottom-left"), x = w(t, "showZoom", 12, !0), C = w(t, "showFitView", 12, !0), $ = w(t, "showLock", 12, !0), m = w(t, "buttonBgColor", 12, void 0), _ = w(t, "buttonBgColorHover", 12, void 0), v = w(t, "buttonColor", 12, void 0), b = w(t, "buttonColorHover", 12, void 0), N = w(t, "buttonBorderColor", 12, void 0), E = w(t, "ariaLabel", 12, void 0), M = w(t, "style", 12, void 0), D = w(t, "orientation", 12, "vertical"), V = w(t, "fitViewOptions", 12, void 0), A = w(t, "class", 12, ""); + const { + zoomIn: O, + zoomOut: R, + fitView: S, + viewport: T, + minZoom: k, + maxZoom: P, + nodesDraggable: H, + nodesConnectable: I, + elementsSelectable: B + } = Ue(), F = { + bgColor: m(), + bgColorHover: _(), + color: v(), + colorHover: b(), + borderColor: N() + }, K = () => { + O(); + }, ie = () => { + R(); + }, ee = () => { + S(V()); + }, W = () => { + U(c, !h(c)), H.set(h(c)), I.set(h(c)), B.set(h(c)); + }; + he( + () => (o(), i(), s()), + () => { + U(c, o() || i() || s()); + } + ), he(() => (a(), l()), () => { + U(f, a().zoom <= l()); + }), he(() => (a(), u()), () => { + U(d, a().zoom >= u()); + }), he(() => j(D()), () => { + U(g, D() === "horizontal" ? "horizontal" : "vertical"); + }), gt(), He(); + const ue = /* @__PURE__ */ pe(() => Et([ + "svelte-flow__controls", + h(g), + A() + ])), me = /* @__PURE__ */ pe(() => E() ?? "Svelte Flow controls"); + Ho(e, { + get class() { + return h(ue); + }, + get position() { + return p(); + }, + "data-testid": "svelte-flow__controls", + get "aria-label"() { + return h(me); + }, + get style() { + return M(); + }, + children: (ge, ze) => { + var G = op(), se = be(G); + pt(se, t, "before", {}); + var Te = z(se, 2); + { + var Ae = (ve) => { + var xe = rp(), Oe = be(xe); + ro(Oe, ut( + { + class: "svelte-flow__controls-zoomin", + title: "zoom in", + "aria-label": "zoom in", + get disabled() { + return h(d); + } + }, + F, + { + $$events: { click: K }, + children: (lt, J) => { + Kc(lt); + }, + $$slots: { default: !0 } + } + )); + var ct = z(Oe, 2); + ro(ct, ut( + { + class: "svelte-flow__controls-zoomout", + title: "zoom out", + "aria-label": "zoom out", + get disabled() { + return h(f); + } + }, + F, + { + $$events: { click: ie }, + children: (lt, J) => { + qc(lt); + }, + $$slots: { default: !0 } + } + )), L(ve, xe); + }; + ke(Te, (ve) => { + x() && ve(Ae); + }); + } + var Xe = z(Te, 2); + { + var te = (ve) => { + ro(ve, ut( + { + class: "svelte-flow__controls-fitview", + title: "fit view", + "aria-label": "fit view" + }, + F, + { + $$events: { click: ee }, + children: (xe, Oe) => { + Gc(xe); + }, + $$slots: { default: !0 } + } + )); + }; + ke(Xe, (ve) => { + C() && ve(te); + }); + } + var Fe = z(Xe, 2); + { + var Le = (ve) => { + ro(ve, ut( + { + class: "svelte-flow__controls-interactive", + title: "toggle interactivity", + "aria-label": "toggle interactivity" + }, + F, + { + $$events: { click: W }, + children: (xe, Oe) => { + var ct = et(), lt = be(ct); + { + var J = (le) => { + jc(le); + }, Re = (le) => { + Uc(le); + }; + ke(lt, (le) => { + h(c) ? le(J) : le(Re, !1); + }); + } + L(xe, ct); + }, + $$slots: { default: !0 } + } + )); + }; + ke(Fe, (ve) => { + $() && ve(Le); + }); + } + var Qe = z(Fe, 2); + pt(Qe, t, "default", {}); + var oe = z(Qe, 2); + pt(oe, t, "after", {}), L(ge, G); + }, + $$slots: { default: !0 } + }); + var Ce = fe({ + get position() { + return p(); + }, + set position(ge) { + p(ge), y(); + }, + get showZoom() { + return x(); + }, + set showZoom(ge) { + x(ge), y(); + }, + get showFitView() { + return C(); + }, + set showFitView(ge) { + C(ge), y(); + }, + get showLock() { + return $(); + }, + set showLock(ge) { + $(ge), y(); + }, + get buttonBgColor() { + return m(); + }, + set buttonBgColor(ge) { + m(ge), y(); + }, + get buttonBgColorHover() { + return _(); + }, + set buttonBgColorHover(ge) { + _(ge), y(); + }, + get buttonColor() { + return v(); + }, + set buttonColor(ge) { + v(ge), y(); + }, + get buttonColorHover() { + return b(); + }, + set buttonColorHover(ge) { + b(ge), y(); + }, + get buttonBorderColor() { + return N(); + }, + set buttonBorderColor(ge) { + N(ge), y(); + }, + get ariaLabel() { + return E(); + }, + set ariaLabel(ge) { + E(ge), y(); + }, + get style() { + return M(); + }, + set style(ge) { + M(ge), y(); + }, + get orientation() { + return D(); + }, + set orientation(ge) { + D(ge), y(); + }, + get fitViewOptions() { + return V(); + }, + set fitViewOptions(ge) { + V(ge), y(); + }, + get class() { + return A(); + }, + set class(ge) { + A(ge), y(); + } + }); + return r(), Ce; +} +ae( + Jc, + { + position: {}, + showZoom: {}, + showFitView: {}, + showLock: {}, + buttonBgColor: {}, + buttonBgColorHover: {}, + buttonColor: {}, + buttonColorHover: {}, + buttonBorderColor: {}, + ariaLabel: {}, + style: {}, + orientation: {}, + fitViewOptions: {}, + class: {} + }, + ["before", "default", "after"], + [], + !0 +); +var Gn; +(function(e) { + e.Lines = "lines", e.Dots = "dots", e.Cross = "cross"; +})(Gn || (Gn = {})); +var ip = /* @__PURE__ */ _e(""); +function Qc(e, t) { + de(t, !1); + let n = w(t, "radius", 12, 5), r = w(t, "class", 12, ""); + He(); + var o = ip(); + return Ee( + (i) => { + ce(o, "cx", n()), ce(o, "cy", n()), ce(o, "r", n()), kt(o, 0, bn(i)); + }, + [ + () => Et([ + "svelte-flow__background-pattern", + "dots", + r() + ]) + ], + pe + ), L(e, o), fe({ + get radius() { + return n(); + }, + set radius(i) { + n(i), y(); + }, + get class() { + return r(); + }, + set class(i) { + r(i), y(); + } + }); +} +ae(Qc, { radius: {}, class: {} }, [], [], !0); +var sp = /* @__PURE__ */ _e(""); +function ed(e, t) { + de(t, !1); + let n = w(t, "lineWidth", 12, 1), r = w(t, "dimensions", 12), o = w(t, "variant", 12, void 0), i = w(t, "class", 12, ""); + He(); + var s = sp(); + return Ee( + (a) => { + ce(s, "stroke-width", n()), ce(s, "d", `M${r()[0] / 2} 0 V${r()[1]} M0 ${r()[1] / 2} H${r()[0]}`), kt(s, 0, bn(a)); + }, + [ + () => Et([ + "svelte-flow__background-pattern", + o(), + i() + ]) + ], + pe + ), L(e, s), fe({ + get lineWidth() { + return n(); + }, + set lineWidth(a) { + n(a), y(); + }, + get dimensions() { + return r(); + }, + set dimensions(a) { + r(a), y(); + }, + get variant() { + return o(); + }, + set variant(a) { + o(a), y(); + }, + get class() { + return i(); + }, + set class(a) { + i(a), y(); + } + }); +} +ae( + ed, + { + lineWidth: {}, + dimensions: {}, + variant: {}, + class: {} + }, + [], + [], + !0 +); +const ap = { + [Gn.Dots]: 1, + [Gn.Lines]: 1, + [Gn.Cross]: 6 +}; +var lp = /* @__PURE__ */ _e(''); +const up = { + hash: "svelte-1r7pe8d", + code: ".svelte-flow__background.svelte-1r7pe8d {position:absolute;width:100%;height:100%;top:0;left:0;}" +}; +function td(e, t) { + de(t, !1), Je(e, up); + const [n, r] = tt(), o = () => Q(b, "$flowId", n), i = () => Q(v, "$viewport", n), s = re(), a = re(), l = re(), u = re(), c = re(); + let f = w(t, "id", 12, void 0), d = w(t, "variant", 28, () => Gn.Dots), g = w(t, "gap", 12, 20), p = w(t, "size", 12, 1), x = w(t, "lineWidth", 12, 1), C = w(t, "bgColor", 12, void 0), $ = w(t, "patternColor", 12, void 0), m = w(t, "patternClass", 12, void 0), _ = w(t, "class", 12, ""); + const { viewport: v, flowId: b } = Ue(), N = p() || ap[d()], E = d() === Gn.Dots, M = d() === Gn.Cross, D = Array.isArray(g()) ? g() : [g(), g()]; + he( + () => (o(), j(f())), + () => { + U(s, `background-pattern-${o()}-${f() ? f() : ""}`); + } + ), he(() => i(), () => { + U(a, [ + D[0] * i().zoom || 1, + D[1] * i().zoom || 1 + ]); + }), he(() => i(), () => { + U(l, N * i().zoom); + }), he(() => (h(l), h(a)), () => { + U(u, M ? [h(l), h(l)] : h(a)); + }), he( + () => (h(l), h(u)), + () => { + U(c, E ? [ + h(l) / 2, + h(l) / 2 + ] : [ + h(u)[0] / 2, + h(u)[1] / 2 + ]); + } + ), gt(), He(); + var V = lp(), A = X(V), O = X(A); + { + var R = (P) => { + const H = /* @__PURE__ */ pe(() => h(l) / 2); + Qc(P, { + get radius() { + return h(H); + }, + get class() { + return m(); + } + }); + }, S = (P) => { + ed(P, { + get dimensions() { + return h(u); + }, + get variant() { + return d(); + }, + get lineWidth() { + return x(); + }, + get class() { + return m(); + } + }); + }; + ke(O, (P) => { + E ? P(R) : P(S, !1); + }); + } + Z(A); + var T = z(A); + Z(V), Ee( + (P) => { + kt(V, 0, bn(P), "svelte-1r7pe8d"), st(V, "--xy-background-color-props", C()), st(V, "--xy-background-pattern-color-props", $()), ce(A, "id", h(s)), ce(A, "x", i().x % h(a)[0]), ce(A, "y", i().y % h(a)[1]), ce(A, "width", h(a)[0]), ce(A, "height", h(a)[1]), ce(A, "patternTransform", `translate(-${h(c)[0]},-${h(c)[1]})`), ce(T, "fill", `url(#${h(s)})`); + }, + [ + () => Et(["svelte-flow__background", _()]) + ], + pe + ), L(e, V); + var k = fe({ + get id() { + return f(); + }, + set id(P) { + f(P), y(); + }, + get variant() { + return d(); + }, + set variant(P) { + d(P), y(); + }, + get gap() { + return g(); + }, + set gap(P) { + g(P), y(); + }, + get size() { + return p(); + }, + set size(P) { + p(P), y(); + }, + get lineWidth() { + return x(); + }, + set lineWidth(P) { + x(P), y(); + }, + get bgColor() { + return C(); + }, + set bgColor(P) { + C(P), y(); + }, + get patternColor() { + return $(); + }, + set patternColor(P) { + $(P), y(); + }, + get patternClass() { + return m(); + }, + set patternClass(P) { + m(P), y(); + }, + get class() { + return _(); + }, + set class(P) { + _(P), y(); + } + }); + return r(), k; +} +ae( + td, + { + id: {}, + variant: {}, + gap: {}, + size: {}, + lineWidth: {}, + bgColor: {}, + patternColor: {}, + patternClass: {}, + class: {} + }, + [], + [], + !0 +); +var cp = /* @__PURE__ */ _e(""); +function nd(e, t) { + de(t, !1); + let n = w(t, "x", 12), r = w(t, "y", 12), o = w(t, "width", 12, 0), i = w(t, "height", 12, 0), s = w(t, "borderRadius", 12, 5), a = w(t, "color", 12, void 0), l = w(t, "shapeRendering", 12), u = w(t, "strokeColor", 12, void 0), c = w(t, "strokeWidth", 12, 2), f = w(t, "selected", 12, !1), d = w(t, "class", 12, ""); + He(); + var g = cp(); + let p; + return Ee( + (x) => { + p = kt(g, 0, bn(x), null, p, { selected: f() }), ce(g, "x", n()), ce(g, "y", r()), ce(g, "rx", s()), ce(g, "ry", s()), ce(g, "width", o()), ce(g, "height", i()), ce(g, "style", `${a() ? `fill: ${a()};` : ""}${u() ? `stroke: ${u()};` : ""}${c() ? `stroke-width: ${c()};` : ""}`), ce(g, "shape-rendering", l()); + }, + [ + () => Et(["svelte-flow__minimap-node", d()]) + ], + pe + ), L(e, g), fe({ + get x() { + return n(); + }, + set x(x) { + n(x), y(); + }, + get y() { + return r(); + }, + set y(x) { + r(x), y(); + }, + get width() { + return o(); + }, + set width(x) { + o(x), y(); + }, + get height() { + return i(); + }, + set height(x) { + i(x), y(); + }, + get borderRadius() { + return s(); + }, + set borderRadius(x) { + s(x), y(); + }, + get color() { + return a(); + }, + set color(x) { + a(x), y(); + }, + get shapeRendering() { + return l(); + }, + set shapeRendering(x) { + l(x), y(); + }, + get strokeColor() { + return u(); + }, + set strokeColor(x) { + u(x), y(); + }, + get strokeWidth() { + return c(); + }, + set strokeWidth(x) { + c(x), y(); + }, + get selected() { + return f(); + }, + set selected(x) { + f(x), y(); + }, + get class() { + return d(); + }, + set class(x) { + d(x), y(); + } + }); +} +ae( + nd, + { + x: {}, + y: {}, + width: {}, + height: {}, + borderRadius: {}, + color: {}, + shapeRendering: {}, + strokeColor: {}, + strokeWidth: {}, + selected: {}, + class: {} + }, + [], + [], + !0 +); +function cs(e, t) { + const n = q0({ + domNode: e, + panZoom: t.panZoom, + getTransform: () => { + const o = q(t.viewport); + return [o.x, o.y, o.zoom]; + }, + getViewScale: t.getViewScale + }); + function r(o) { + n.update({ + translateExtent: o.translateExtent, + width: o.width, + height: o.height, + inversePan: o.inversePan, + zoomStep: o.zoomStep, + pannable: o.pannable, + zoomable: o.zoomable + }); + } + return { + update: r, + destroy() { + n.destroy(); + } + }; +} +const ds = (e) => e instanceof Function ? e : () => e; +var dp = /* @__PURE__ */ _e(" "), fp = /* @__PURE__ */ _e(''); +function rd(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(Xe, "$flowId", n), i = () => Q(se, "$viewport", n), s = () => Q(Te, "$containerWidth", n), a = () => Q(Ae, "$containerHeight", n), l = () => Q(G, "$nodeLookup", n), u = () => Q(ze, "$nodes", n), c = () => Q(te, "$panZoom", n), f = () => Q(Fe, "$translateExtent", n), d = re(), g = re(), p = re(), x = re(), C = re(), $ = re(), m = re(), _ = re(), v = re(), b = re(), N = re(), E = re(), M = re(); + let D = w(t, "position", 12, "bottom-right"), V = w(t, "ariaLabel", 12, "Mini map"), A = w(t, "nodeStrokeColor", 12, "transparent"), O = w(t, "nodeColor", 12, void 0), R = w(t, "nodeClass", 12, ""), S = w(t, "nodeBorderRadius", 12, 5), T = w(t, "nodeStrokeWidth", 12, 2), k = w(t, "bgColor", 12, void 0), P = w(t, "maskColor", 12, void 0), H = w(t, "maskStrokeColor", 12, void 0), I = w(t, "maskStrokeWidth", 12, void 0), B = w(t, "width", 12, void 0), F = w(t, "height", 12, void 0), K = w(t, "pannable", 12, !0), ie = w(t, "zoomable", 12, !0), ee = w(t, "inversePan", 12, void 0), W = w(t, "zoomStep", 12, void 0), ue = w(t, "style", 12, ""), me = w(t, "class", 12, ""); + const Ce = 200, ge = 150, { + nodes: ze, + nodeLookup: G, + viewport: se, + width: Te, + height: Ae, + flowId: Xe, + panZoom: te, + translateExtent: Fe + } = Ue(), Le = O() === void 0 ? void 0 : ds(O()), Qe = ds(A()), oe = ds(R()), ve = ( + // @ts-expect-error - TS doesn't know about chrome + typeof window > "u" || window.chrome ? "crispEdges" : "geometricPrecision" + ), xe = `svelte-flow__minimap-desc-${o()}`; + let Oe = re(h(d)); + const ct = () => h($); + he( + () => (i(), s(), a()), + () => { + U(d, { + x: -i().x / i().zoom, + y: -i().y / i().zoom, + width: s() / i().zoom, + height: a() / i().zoom + }); + } + ), he( + () => (l(), h(d), u()), + () => { + U(Oe, l().size > 0 ? nc(No(l()), h(d)) : h(d)), u(); + } + ), he(() => j(B()), () => { + U(g, B() ?? Ce); + }), he(() => j(F()), () => { + U(p, F() ?? ge); + }), he( + () => (h(Oe), h(g)), + () => { + U(x, h(Oe).width / h(g)); + } + ), he( + () => (h(Oe), h(p)), + () => { + U(C, h(Oe).height / h(p)); + } + ), he( + () => (h(x), h(C)), + () => { + U($, Math.max(h(x), h(C))); + } + ), he(() => (h($), h(g)), () => { + U(m, h($) * h(g)); + }), he( + () => (h($), h(p)), + () => { + U(_, h($) * h(p)); + } + ), he(() => h($), () => { + U(v, 5 * h($)); + }), he( + () => (h(Oe), h(m), h(v)), + () => { + U(b, h(Oe).x - (h(m) - h(Oe).width) / 2 - h(v)); + } + ), he( + () => (h(Oe), h(_), h(v)), + () => { + U(N, h(Oe).y - (h(_) - h(Oe).height) / 2 - h(v)); + } + ), he(() => (h(m), h(v)), () => { + U(E, h(m) + h(v) * 2); + }), he(() => (h(_), h(v)), () => { + U(M, h(_) + h(v) * 2); + }), gt(), He(); + const lt = /* @__PURE__ */ pe(() => ue() + (k() ? `;--xy-minimap-background-color-props:${k()}` : "")), J = /* @__PURE__ */ pe(() => Et(["svelte-flow__minimap", me()])); + Ho(e, { + get position() { + return D(); + }, + get style() { + return h(lt); + }, + get class() { + return h(J); + }, + "data-testid": "svelte-flow__minimap", + children: (le, fn) => { + var Ut = et(), gn = be(Ut); + { + var Ne = (rt) => { + var ye = fp(); + ce(ye, "aria-labelledby", xe); + var ot = X(ye); + { + var at = (At) => { + var St = dp(); + ce(St, "id", xe); + var hn = X(St, !0); + Z(St), Ee(() => Rt(hn, V())), L(At, St); + }; + ke(ot, (At) => { + V() && At(at); + }); + } + var Xt = z(ot); + Yt(Xt, 1, u, (At) => At.id, (At, St) => { + var hn = et(); + const jt = /* @__PURE__ */ pe(() => l().get(h(St).id)); + var ft = be(hn); + { + var ji = (nr) => { + const Jt = /* @__PURE__ */ pe(() => tr(h(jt))), Io = /* @__PURE__ */ pe(() => Le == null ? void 0 : Le(h(jt))), zo = /* @__PURE__ */ pe(() => Qe(h(jt))), Ro = /* @__PURE__ */ pe(() => oe(h(jt))); + nd(nr, ut( + { + get x() { + return h(jt).internals.positionAbsolute.x; + }, + get y() { + return h(jt).internals.positionAbsolute.y; + } + }, + () => h(Jt), + { + get selected() { + return h(jt).selected; + }, + get color() { + return h(Io); + }, + get borderRadius() { + return S(); + }, + get strokeColor() { + return h(zo); + }, + get strokeWidth() { + return T(); + }, + shapeRendering: ve, + get class() { + return h(Ro); + } + } + )); + }; + ke(ft, (nr) => { + h(jt) && oc(h(jt)) && nr(ji); + }); + } + L(At, hn); + }); + var Kr = z(Xt); + Z(ye), vt(ye, (At, St) => cs == null ? void 0 : cs(At, St), () => ({ + panZoom: c(), + viewport: se, + getViewScale: ct, + translateExtent: f(), + width: s(), + height: a(), + inversePan: ee(), + zoomStep: W(), + pannable: K(), + zoomable: ie() + })), Ee(() => { + ce(ye, "width", h(g)), ce(ye, "height", h(p)), ce(ye, "viewBox", `${h(b) ?? ""} ${h(N) ?? ""} ${h(E) ?? ""} ${h(M) ?? ""}`), st(ye, "--xy-minimap-mask-background-color-props", P()), st(ye, "--xy-minimap-mask-stroke-color-props", H()), st(ye, "--xy-minimap-mask-stroke-width-props", I() ? I() * h($) : void 0), ce(Kr, "d", `M${h(b) - h(v)},${h(N) - h(v)}h${h(E) + h(v) * 2}v${h(M) + h(v) * 2}h${-h(E) - h(v) * 2}z + M${h(d).x ?? ""},${h(d).y ?? ""}h${h(d).width ?? ""}v${h(d).height ?? ""}h${-h(d).width}z`); + }), L(rt, ye); + }; + ke(gn, (rt) => { + c() && rt(Ne); + }); + } + L(le, Ut); + }, + $$slots: { default: !0 } + }); + var Re = fe({ + get position() { + return D(); + }, + set position(le) { + D(le), y(); + }, + get ariaLabel() { + return V(); + }, + set ariaLabel(le) { + V(le), y(); + }, + get nodeStrokeColor() { + return A(); + }, + set nodeStrokeColor(le) { + A(le), y(); + }, + get nodeColor() { + return O(); + }, + set nodeColor(le) { + O(le), y(); + }, + get nodeClass() { + return R(); + }, + set nodeClass(le) { + R(le), y(); + }, + get nodeBorderRadius() { + return S(); + }, + set nodeBorderRadius(le) { + S(le), y(); + }, + get nodeStrokeWidth() { + return T(); + }, + set nodeStrokeWidth(le) { + T(le), y(); + }, + get bgColor() { + return k(); + }, + set bgColor(le) { + k(le), y(); + }, + get maskColor() { + return P(); + }, + set maskColor(le) { + P(le), y(); + }, + get maskStrokeColor() { + return H(); + }, + set maskStrokeColor(le) { + H(le), y(); + }, + get maskStrokeWidth() { + return I(); + }, + set maskStrokeWidth(le) { + I(le), y(); + }, + get width() { + return B(); + }, + set width(le) { + B(le), y(); + }, + get height() { + return F(); + }, + set height(le) { + F(le), y(); + }, + get pannable() { + return K(); + }, + set pannable(le) { + K(le), y(); + }, + get zoomable() { + return ie(); + }, + set zoomable(le) { + ie(le), y(); + }, + get inversePan() { + return ee(); + }, + set inversePan(le) { + ee(le), y(); + }, + get zoomStep() { + return W(); + }, + set zoomStep(le) { + W(le), y(); + }, + get style() { + return ue(); + }, + set style(le) { + ue(le), y(); + }, + get class() { + return me(); + }, + set class(le) { + me(le), y(); + } + }); + return r(), Re; +} +ae( + rd, + { + position: {}, + ariaLabel: {}, + nodeStrokeColor: {}, + nodeColor: {}, + nodeClass: {}, + nodeBorderRadius: {}, + nodeStrokeWidth: {}, + bgColor: {}, + maskColor: {}, + maskStrokeColor: {}, + maskStrokeWidth: {}, + width: {}, + height: {}, + pannable: {}, + zoomable: {}, + inversePan: {}, + zoomStep: {}, + style: {}, + class: {} + }, + [], + [], + !0 +); +const Pl = (e) => f0(e); +function Dt() { + const { zoomIn: e, zoomOut: t, fitView: n, onbeforedelete: r, snapGrid: o, viewport: i, width: s, height: a, minZoom: l, maxZoom: u, panZoom: c, nodes: f, edges: d, domNode: g, nodeLookup: p, nodeOrigin: x, edgeLookup: C, connectionLookup: $ } = Ue(), m = (b) => { + var V, A; + const N = q(p), E = Pl(b) ? b : N.get(b.id), M = E.parentId ? p0(E.position, E.measured, E.parentId, N, q(x)) : E.position, D = { + ...E, + position: M, + width: ((V = E.measured) == null ? void 0 : V.width) ?? E.width, + height: ((A = E.measured) == null ? void 0 : A.height) ?? E.height + }; + return Lr(D); + }, _ = (b, N, E = { replace: !1 }) => { + var V; + const M = (V = q(p).get(b)) == null ? void 0 : V.internals.userNode; + if (!M) + return; + const D = typeof N == "function" ? N(M) : N; + E.replace ? f.update((A) => A.map((O) => O.id === b ? Pl(D) ? D : { ...O, ...D } : O)) : (Object.assign(M, D), f.update((A) => A)); + }, v = (b) => q(p).get(b); + return { + zoomIn: e, + zoomOut: t, + getInternalNode: v, + getNode: (b) => { + var N; + return (N = v(b)) == null ? void 0 : N.internals.userNode; + }, + getNodes: (b) => b === void 0 ? q(f) : Nl(q(p), b), + getEdge: (b) => q(C).get(b), + getEdges: (b) => b === void 0 ? q(d) : Nl(q(C), b), + setZoom: (b, N) => { + const E = q(c); + return E ? E.scaleTo(b, { duration: N == null ? void 0 : N.duration }) : Promise.resolve(!1); + }, + getZoom: () => q(i).zoom, + setViewport: async (b, N) => { + const E = q(i), M = q(c); + return M ? (await M.setViewport({ + x: b.x ?? E.x, + y: b.y ?? E.y, + zoom: b.zoom ?? E.zoom + }, { duration: N == null ? void 0 : N.duration }), Promise.resolve(!0)) : Promise.resolve(!1); + }, + getViewport: () => q(i), + setCenter: async (b, N, E) => { + const M = typeof (E == null ? void 0 : E.zoom) < "u" ? E.zoom : q(u), D = q(c); + return D ? (await D.setViewport({ + x: q(s) / 2 - b * M, + y: q(a) / 2 - N * M, + zoom: M + }, { duration: E == null ? void 0 : E.duration }), Promise.resolve(!0)) : Promise.resolve(!1); + }, + fitView: n, + fitBounds: async (b, N) => { + const E = q(c); + if (!E) + return Promise.resolve(!1); + const M = ua(b, q(s), q(a), q(l), q(u), (N == null ? void 0 : N.padding) ?? 0.1); + return await E.setViewport(M, { duration: N == null ? void 0 : N.duration }), Promise.resolve(!0); + }, + getIntersectingNodes: (b, N = !0, E) => { + const M = fl(b), D = M ? b : m(b); + return D ? (E || q(f)).filter((V) => { + const A = q(p).get(V.id); + if (!A || !M && V.id === b.id) + return !1; + const O = Lr(A), R = yo(O, D); + return N && R > 0 || R >= D.width * D.height; + }) : []; + }, + isNodeIntersecting: (b, N, E = !0) => { + const D = fl(b) ? b : m(b); + if (!D) + return !1; + const V = yo(D, N); + return E && V > 0 || V >= D.width * D.height; + }, + deleteElements: async ({ nodes: b = [], edges: N = [] }) => { + const { nodes: E, edges: M } = await Qu({ + nodesToRemove: b, + edgesToRemove: N, + nodes: q(f), + edges: q(d), + onBeforeDelete: q(r) + }); + return E && f.update((D) => D.filter((V) => !E.some(({ id: A }) => A === V.id))), M && d.update((D) => D.filter((V) => !M.some(({ id: A }) => A === V.id))), { + deletedNodes: E, + deletedEdges: M + }; + }, + screenToFlowPosition: (b, N = { snapToGrid: !0 }) => { + const E = q(g); + if (!E) + return b; + const M = N.snapToGrid ? q(o) : !1, { x: D, y: V, zoom: A } = q(i), { x: O, y: R } = E.getBoundingClientRect(), S = { + x: b.x - O, + y: b.y - R + }; + return Mo(S, [D, V, A], M !== null, M || [1, 1]); + }, + /** + * + * @param position + * @returns + */ + flowToScreenPosition: (b) => { + const N = q(g); + if (!N) + return b; + const { x: E, y: M, zoom: D } = q(i), { x: V, y: A } = N.getBoundingClientRect(), O = rc(b, [E, M, D]); + return { + x: O.x + V, + y: O.y + A + }; + }, + toObject: () => ({ + nodes: q(f).map((b) => ({ + ...b, + // we want to make sure that changes to the nodes object that gets returned by toObject + // do not affect the nodes object + position: { ...b.position }, + data: { ...b.data } + })), + edges: q(d).map((b) => ({ ...b })), + viewport: { ...q(i) } + }), + updateNode: _, + updateNodeData: (b, N, E) => { + var V; + const M = (V = q(p).get(b)) == null ? void 0 : V.internals.userNode; + if (!M) + return; + const D = typeof N == "function" ? N(M) : N; + M.data = E != null && E.replace ? D : { ...M.data, ...D }, f.update((A) => A); + }, + getNodesBounds: (b) => { + const N = q(p), E = q(x); + return g0(b, { nodeLookup: N, nodeOrigin: E }); + }, + getHandleConnections: ({ type: b, id: N, nodeId: E }) => { + var M; + return Array.from(((M = q($).get(`${E}-${b}-${N ?? null}`)) == null ? void 0 : M.values()) ?? []); + }, + viewport: i + }; +} +function Nl(e, t) { + var r; + const n = []; + for (const o of t) { + const i = e.get(o); + if (i) { + const s = "internals" in i ? (r = i.internals) == null ? void 0 : r.userNode : i; + n.push(s); + } + } + return n; +} +var gp = /* @__PURE__ */ ne('
    '); +function od(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(_, "$nodes", n), i = () => Q(m, "$nodeLookup", n), s = () => Q($, "$viewport", n), a = () => Q(C, "$domNode", n), l = re(), u = re(), c = re(); + let f = w(t, "nodeId", 12, void 0), d = w(t, "position", 12, void 0), g = w(t, "align", 12, void 0), p = w(t, "offset", 12, void 0), x = w(t, "isVisible", 12, void 0); + const { domNode: C, viewport: $, nodeLookup: m, nodes: _ } = Ue(), { getNodesBounds: v } = Dt(), b = ar("svelteflow__node_id"); + let N = re(), E = re([]), M = p() !== void 0 ? p() : 10, D = d() !== void 0 ? d() : $e.Top, V = g() !== void 0 ? g() : "center"; + he( + () => (o(), j(f()), i()), + () => { + o(); + const T = Array.isArray(f()) ? f() : [f() || b]; + U(E, T.reduce( + (k, P) => { + const H = i().get(P); + return H && k.push(H), k; + }, + [] + )); + } + ), he( + () => (h(E), s()), + () => { + const T = v(h(E)); + T && U(N, T0(T, s(), D, M, V)); + } + ), he(() => h(E), () => { + U(l, h(E).length === 0 ? 1 : Math.max(...h(E).map((T) => (T.internals.z || 5) + 1))); + }), he(() => o(), () => { + U(u, o().filter((T) => T.selected).length); + }), he( + () => (j(x()), h(E), h(u)), + () => { + U(c, typeof x() == "boolean" ? x() : h(E).length === 1 && h(E)[0].selected && h(u) === 1); + } + ), gt(), He(); + var A = et(), O = be(A); + { + var R = (T) => { + var k = gp(), P = X(k); + pt(P, t, "default", {}), Z(k), vt(k, (H, I) => kr == null ? void 0 : kr(H, I), () => ({ domNode: a() })), Ee( + (H) => { + ce(k, "data-id", H), st(k, "position", "absolute"), st(k, "transform", h(N)), st(k, "z-index", h(l)); + }, + [ + () => h(E).reduce((H, I) => `${H}${I.id} `, "").trim() + ], + pe + ), L(T, k); + }; + ke(O, (T) => { + a() && h(c) && h(E) && T(R); + }); + } + L(e, A); + var S = fe({ + get nodeId() { + return f(); + }, + set nodeId(T) { + f(T), y(); + }, + get position() { + return d(); + }, + set position(T) { + d(T), y(); + }, + get align() { + return g(); + }, + set align(T) { + g(T), y(); + }, + get offset() { + return p(); + }, + set offset(T) { + p(T), y(); + }, + get isVisible() { + return x(); + }, + set isVisible(T) { + x(T), y(); + } + }); + return r(), S; +} +ae( + od, + { + nodeId: {}, + position: {}, + align: {}, + offset: {}, + isVisible: {} + }, + ["default"], + [], + !0 +); +function pr(e) { + const { nodes: t, nodeLookup: n } = Ue(); + let r = [], o = !0; + return Kn([t, n], ([, i], s) => { + var c; + const a = [], l = Array.isArray(e), u = l ? e : [e]; + for (const f of u) { + const d = (c = i.get(f)) == null ? void 0 : c.internals.userNode; + d && a.push({ + id: d.id, + type: d.type, + data: d.data + }); + } + (!z0(a, r) || o) && (r = a, s(l ? a : a[0] ?? null), o = !1); + }); +} +const Ml = "tinyflow-component"; +class yw { + constructor(t) { + wt(this, "options"); + wt(this, "rootEl"); + wt(this, "svelteFlowInstance"); + if (typeof t.element != "string" && !(t.element instanceof Element)) + throw new Error("element must be a string or Element"); + this._setOptions(t), this._init(); + } + _init() { + if (typeof this.options.element == "string") { + if (this.rootEl = document.querySelector(this.options.element), !this.rootEl) + throw new Error( + `element not found by document.querySelector('${this.options.element}')` + ); + } else if (this.options.element instanceof Element) + this.rootEl = this.options.element; + else + throw new Error("element must be a string or Element"); + const t = document.createElement(Ml); + t.style.display = "block", t.style.width = "100%", t.style.height = "100%", t.classList.add("tf-theme-light"), t.options = this.options, t.onInit = (n) => { + this.svelteFlowInstance = n; + }, this.rootEl.appendChild(t); + } + _setOptions(t) { + this.options = { + ...t + }; + } + getOptions() { + return this.options; + } + getData() { + return this.svelteFlowInstance.toObject(); + } + setData(t) { + this.options.data = t; + const n = document.createElement(Ml); + n.style.display = "block", n.style.width = "100%", n.style.height = "100%", n.classList.add("tf-theme-light"), n.options = this.options, n.onInit = (r) => { + this.svelteFlowInstance = r; + }, this.destroy(), this.rootEl.appendChild(n); + } + destroy() { + for (; this.rootEl.firstChild; ) + this.rootEl.removeChild(this.rootEl.firstChild); + } +} +const hp = () => { + const e = we([]), t = we([]), n = we({ x: 250, y: 100, zoom: 1 }); + return { + nodes: e, + edges: t, + viewport: n, + init: (r, o) => { + e.set(r), t.set(o); + }, + addNode: (r) => { + e.update((o) => [...o, r]); + }, + removeNode: (r) => { + e.update((o) => o.filter((i) => i.id !== r)); + }, + updateNode: (r, o) => { + e.update((i) => i.map((s) => s.id === r ? o : s)); + }, + updateNodeData: (r, o) => { + e.update( + (i) => i.map((s) => s.id === r ? { ...s, data: { ...s.data, ...o } } : s) + ); + }, + selectNodeOnly: (r) => { + e.update( + (o) => o.map( + (i) => i.id === r ? { ...i, selected: !0 } : { ...i, selected: !1 } + ) + ); + }, + addEdge: (r) => { + t.update((o) => [...o, r]); + }, + removeEdge: (r) => { + t.update((o) => o.filter((i) => i.id !== r)); + }, + updateEdge: (r, o) => { + t.update((i) => i.map((s) => s.id === r ? o : s)); + }, + updateEdgeData: (r, o) => { + t.update((i) => i.map((s) => s.id === r ? { ...s, data: o } : s)); + } + }; +}, ei = hp(); +var vp = /* @__PURE__ */ ne(""); +function Ke(e, t) { + de(t, !0); + const n = w(t, "children", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "children" + ]); + var o = vp(); + let i; + var s = X(o); + return lr(s, () => n() ?? dt), Z(o), Ee(() => i = on(o, i, { + type: "button", + ...r, + class: `tf-btn nopan nodrag ${t.class ?? ""}` + })), L(e, o), fe({ + get children() { + return n(); + }, + set children(a) { + n(a), y(); + } + }); +} +ae(Ke, { children: {} }, [], [], !0); +var pp = /* @__PURE__ */ ne(""); +function id(e, t) { + de(t, !0); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + var r = pp(); + io(r); + let o; + Ee(() => o = on(r, o, { + type: "checkbox", + ...n, + class: `tf-checkbox nopan nodrag ${t.class ?? ""}` + })), L(e, r), fe(); +} +ae(id, {}, [], [], !0); +var mp = /* @__PURE__ */ ne(""); +function xt(e, t) { + de(t, !0); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + var r = mp(); + io(r); + let o; + Ee(() => o = on(r, o, { + type: "text", + ...n, + class: `tf-input nopan nodrag ${t.class ?? ""}` + })), L(e, r), fe(); +} +ae(xt, {}, [], [], !0); +var yp = /* @__PURE__ */ ne(""); +function $t(e, t) { + de(t, !0); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + var r = yp(); + l1(r); + let o; + Ee(() => o = on(r, o, { + ...n, + class: `tf-textarea nodrag ${t.class ?? ""}` + })), L(e, r), fe(); +} +ae($t, {}, [], [], !0); +var wp = /* @__PURE__ */ ne('
    '), _p = /* @__PURE__ */ ne("
    "); +function sd(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), r = nt(n, ["items", "onChange", "activeIndex"]); + de(t, !1); + let o = w(t, "items", 28, () => []), i = w(t, "onChange", 12, () => { + }), s = w(t, "activeIndex", 12, 0); + function a(c, f) { + var d; + s(f), (d = i()) == null || d(c, f); + } + He(); + var l = _p(); + let u; + return Yt(l, 5, o, Li, (c, f, d) => { + var g = wp(); + ce(g, "tabindex", d), g.__click = () => a(h(f), d), g.__keydown = ($) => { + ($.key === "Enter" || $.key === " ") && ($.preventDefault(), a(h(f), d)); + }; + var p = X(g); + { + var x = ($) => { + var m = Ie(); + Ee(() => Rt(m, h(f).label)), L($, m); + }, C = ($) => { + var m = et(), _ = be(m); + lr(_, () => h(f).label ?? dt), L($, m); + }; + ke(p, ($) => { + typeof h(f).label == "string" ? $(x) : $(C, !1); + }); + } + Z(g), Ee(() => kt(g, 1, `tf-tabs-item ${(d === s() ? "active" : "") ?? ""}`)), L(c, g); + }), Z(l), Ee(() => u = on(l, u, { + ...r, + class: `tf-tabs ${r.class ?? ""}` + })), L(e, l), fe({ + get items() { + return o(); + }, + set items(c) { + o(c), y(); + }, + get onChange() { + return i(); + }, + set onChange(c) { + i(c), y(); + }, + get activeIndex() { + return s(); + }, + set activeIndex(c) { + s(c), y(); + } + }); +} +Ai(["click", "keydown"]); +ae(sd, { items: {}, onChange: {}, activeIndex: {} }, [], [], !0); +var xp = (e, t, n) => t(h(n)), bp = (e, t, n) => { + (e.key === "Enter" || e.key === " ") && (e.preventDefault(), t(h(n))); +}, Cp = /* @__PURE__ */ ne(''), kp = /* @__PURE__ */ ne('
    '), $p = /* @__PURE__ */ ne('
    '), Ep = /* @__PURE__ */ ne('
    '), Sp = /* @__PURE__ */ ne("
    "); +const Pp = { + hash: "svelte-1jfktzw", + code: `\r + /* 定义旋转的 CSS 类 */.rotate-90.svelte-1jfktzw {transform:rotate(90deg);transition:transform 0.3s ease;}` +}; +function ad(e, t) { + de(t, !0), Je(e, Pp); + let n = w(t, "items", 7), r = w(t, "onChange", 7), o = w(t, "activeKeys", 31, () => Tt([])); + function i(a) { + var l; + o().includes(a.key) ? o(o().filter((u) => u !== a.key)) : (o().push(a.key), o(o())), (l = r()) == null || l(a, o()); + } + var s = Sp(); + return Yt(s, 21, n, Li, (a, l, u) => { + var c = Ep(), f = X(c); + ce(f, "tabindex", u), f.__click = [xp, i, l], f.__keydown = [bp, i, l]; + var d = X(f); + { + var g = (v) => { + var b = Cp(), N = X(b); + Fn(N, { + get target() { + return h(l).icon; + } + }), Z(b), L(v, b); + }; + ke(d, (v) => { + h(l).icon && v(g); + }); + } + var p = z(d, 2); + Fn(p, { + get target() { + return h(l).title; + } + }); + var x = z(p, 2); + Z(f); + var C = z(f, 2); + { + var $ = (v) => { + var b = kp(), N = X(b); + Fn(N, { + get target() { + return h(l).description; + } + }), Z(b), L(v, b); + }; + ke(C, (v) => { + h(l).description && v($); + }); + } + var m = z(C, 2); + { + var _ = (v) => { + var b = $p(), N = X(b); + Fn(N, { + get target() { + return h(l).content; + } + }), Z(b), L(v, b); + }; + ke(m, (v) => { + o().includes(h(l).key) && v(_); + }); + } + Z(c), Ee((v) => kt(x, 1, `tf-collapse-item-title-arrow ${v ?? ""}`, "svelte-1jfktzw"), [ + () => o().includes(h(l).key) ? "rotate-90" : "" + ]), L(a, c); + }), Z(s), Ee(() => { + ce(s, "style", t.style), kt(s, 1, `tf-collapse ${t.class ?? ""}`, "svelte-1jfktzw"); + }), L(e, s), fe({ + get items() { + return n(); + }, + set items(a) { + n(a), y(); + }, + get onChange() { + return r(); + }, + set onChange(a) { + r(a), y(); + }, + get activeKeys() { + return o(); + }, + set activeKeys(a = []) { + o(a), y(); + } + }); +} +Ai(["click", "keydown"]); +ae(ad, { items: {}, onChange: {}, activeKeys: {} }, [], [], !0); +function Fn(e, t) { + de(t, !0); + let n = w(t, "target", 7); + typeof n() > "u" && n("undefined"); + var r = et(), o = be(r); + { + var i = (a) => { + var l = et(), u = be(l); + lr(u, () => n() ?? dt), L(a, l); + }, s = (a) => { + var l = et(), u = be(l); + mu(u, n), L(a, l); + }; + ke(o, (a) => { + typeof n() == "function" ? a(i) : a(s, !1); + }); + } + return L(e, r), fe({ + get target() { + return n(); + }, + set target(a) { + n(a), y(); + } + }); +} +ae(Fn, { target: {} }, [], [], !0); +var Np = (e, t, n) => t(h(n)), Mp = /* @__PURE__ */ _e(''), Tp = /* @__PURE__ */ ne('
    '), Hp = /* @__PURE__ */ ne(' ', 1), Vp = /* @__PURE__ */ ne('
    '), Dp = /* @__PURE__ */ ne(" ", 1), Ap = /* @__PURE__ */ ne('
    '), Lp = /* @__PURE__ */ ne(''), Op = /* @__PURE__ */ ne("
    "); +function sn(e, t) { + de(t, !0); + const n = (_, v = dt) => { + var b = et(), N = be(b); + Yt(N, 19, v, (E, M) => `${M}_${E.value}`, (E, M) => { + var D = Hp(), V = be(D); + V.__click = [Np, x, M]; + var A = X(V), O = X(A); + { + var R = (P) => { + var H = Mp(); + L(P, H); + }; + ke(O, (P) => { + h(M).children && h(M).children.length > 0 && P(R); + }); + } + Z(A); + var S = z(A, 2); + Fn(S, { + get target() { + return h(M).label; + } + }), Z(V); + var T = z(V, 2); + { + var k = (P) => { + var H = Tp(), I = X(H); + n(I, () => h(M).children), Z(H), L(P, H); + }; + ke(T, (P) => { + h(M).children && h(M).children.length > 0 && (l() || c().includes(h(M).value)) && P(k); + }); + } + L(E, D); + }), L(_, b); + }; + let r = w(t, "items", 7), o = w(t, "onExpand", 7), i = w(t, "onSelect", 7), s = w(t, "value", 23, () => []), a = w(t, "defaultValue", 23, () => []), l = w(t, "expandAll", 7, !0), u = w(t, "multiple", 7, !1), c = w(t, "expandValue", 23, () => []), f = w(t, "placeholder", 7), d = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "items", + "onExpand", + "onSelect", + "value", + "defaultValue", + "expandAll", + "multiple", + "expandValue", + "placeholder" + ]), g = /* @__PURE__ */ Me(() => { + const _ = [], v = (b) => { + for (let N of b) + s().length > 0 ? s().includes(N.value) && _.push(N) : a().includes(N.value) && _.push(N), N.children && N.children.length > 0 && v(N.children); + }; + return v(r()), _; + }), p; + function x(_) { + var v, b; + if (_.children && _.children.length > 0) { + (v = o()) == null || v(_); + return; + } else + p == null || p.hide(), (b = i()) == null || b(_); + } + var C = Op(); + let $; + var m = X(C); + return An( + Lo(m, { + floating: (v) => { + var b = Vp(), N = X(b); + n(N, r), Z(b), L(v, b); + }, + children: (v, b) => { + var N = Lp(); + let E; + var M = X(N); + Yt( + M, + 23, + () => h(g), + (D, V) => `${V}_${D.value}`, + (D, V, A) => { + var O = et(), R = be(O); + { + var S = (k) => { + var P = et(), H = be(P); + { + var I = (B) => { + Fn(B, { + get target() { + return h(V).label; + } + }); + }; + ke(H, (B) => { + h(A) === 0 && B(I); + }); + } + L(k, P); + }, T = (k) => { + var P = Dp(), H = be(P); + Fn(H, { + get target() { + return h(V).label; + } + }); + var I = z(H, 2); + { + var B = (F) => { + var K = Ie(","); + L(F, K); + }; + ke(I, (F) => { + h(A) < h(g).length - 1 && F(B); + }); + } + L(k, P); + }; + ke(R, (k) => { + u() ? k(T, !1) : k(S); + }); + } + L(D, O); + }, + (D) => { + var V = Ap(), A = X(V, !0); + Z(V), Ee(() => Rt(A, f())), L(D, V); + } + ), Z(M), Se(2), Z(N), Ee(() => E = on(N, E, { + class: "tf-select-input nopan nodrag", + ...d + })), L(v, N); + }, + $$slots: { floating: !0, default: !0 } + }), + (v) => p = v, + () => p + ), Z(C), Ee(() => $ = on(C, $, { + ...d, + class: `tf-select ${d.class ?? ""}` + })), L(e, C), fe({ + get items() { + return r(); + }, + set items(_) { + r(_), y(); + }, + get onExpand() { + return o(); + }, + set onExpand(_) { + o(_), y(); + }, + get onSelect() { + return i(); + }, + set onSelect(_) { + i(_), y(); + }, + get value() { + return s(); + }, + set value(_ = []) { + s(_), y(); + }, + get defaultValue() { + return a(); + }, + set defaultValue(_ = []) { + a(_), y(); + }, + get expandAll() { + return l(); + }, + set expandAll(_ = !0) { + l(_), y(); + }, + get multiple() { + return u(); + }, + set multiple(_ = !1) { + u(_), y(); + }, + get expandValue() { + return c(); + }, + set expandValue(_ = []) { + c(_), y(); + }, + get placeholder() { + return f(); + }, + set placeholder(_) { + f(_), y(); + } + }); +} +Ai(["click"]); +ae( + sn, + { + items: {}, + onExpand: {}, + onSelect: {}, + value: {}, + defaultValue: {}, + expandAll: {}, + multiple: {}, + expandValue: {}, + placeholder: {} + }, + [], + [], + !0 +); +const _o = Math.min, Er = Math.max, bi = Math.round, mn = (e) => ({ + x: e, + y: e +}), Ip = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" +}, zp = { + start: "end", + end: "start" +}; +function Ds(e, t, n) { + return Er(e, _o(t, n)); +} +function Vo(e, t) { + return typeof e == "function" ? e(t) : e; +} +function fr(e) { + return e.split("-")[0]; +} +function Do(e) { + return e.split("-")[1]; +} +function ld(e) { + return e === "x" ? "y" : "x"; +} +function va(e) { + return e === "y" ? "height" : "width"; +} +function Ir(e) { + return ["top", "bottom"].includes(fr(e)) ? "y" : "x"; +} +function pa(e) { + return ld(Ir(e)); +} +function Rp(e, t, n) { + n === void 0 && (n = !1); + const r = Do(e), o = pa(e), i = va(o); + let s = o === "x" ? r === (n ? "end" : "start") ? "right" : "left" : r === "start" ? "bottom" : "top"; + return t.reference[i] > t.floating[i] && (s = Ci(s)), [s, Ci(s)]; +} +function Bp(e) { + const t = Ci(e); + return [As(e), t, As(t)]; +} +function As(e) { + return e.replace(/start|end/g, (t) => zp[t]); +} +function Yp(e, t, n) { + const r = ["left", "right"], o = ["right", "left"], i = ["top", "bottom"], s = ["bottom", "top"]; + switch (e) { + case "top": + case "bottom": + return n ? t ? o : r : t ? r : o; + case "left": + case "right": + return t ? i : s; + default: + return []; + } +} +function Zp(e, t, n, r) { + const o = Do(e); + let i = Yp(fr(e), n === "start", r); + return o && (i = i.map((s) => s + "-" + o), t && (i = i.concat(i.map(As)))), i; +} +function Ci(e) { + return e.replace(/left|right|bottom|top/g, (t) => Ip[t]); +} +function Xp(e) { + return { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...e + }; +} +function ud(e) { + return typeof e != "number" ? Xp(e) : { + top: e, + right: e, + bottom: e, + left: e + }; +} +function ki(e) { + const { + x: t, + y: n, + width: r, + height: o + } = e; + return { + width: r, + height: o, + top: n, + left: t, + right: t + r, + bottom: n + o, + x: t, + y: n + }; +} +function Tl(e, t, n) { + let { + reference: r, + floating: o + } = e; + const i = Ir(t), s = pa(t), a = va(s), l = fr(t), u = i === "y", c = r.x + r.width / 2 - o.width / 2, f = r.y + r.height / 2 - o.height / 2, d = r[a] / 2 - o[a] / 2; + let g; + switch (l) { + case "top": + g = { + x: c, + y: r.y - o.height + }; + break; + case "bottom": + g = { + x: c, + y: r.y + r.height + }; + break; + case "right": + g = { + x: r.x + r.width, + y: f + }; + break; + case "left": + g = { + x: r.x - o.width, + y: f + }; + break; + default: + g = { + x: r.x, + y: r.y + }; + } + switch (Do(t)) { + case "start": + g[s] -= d * (n && u ? -1 : 1); + break; + case "end": + g[s] += d * (n && u ? -1 : 1); + break; + } + return g; +} +const Fp = async (e, t, n) => { + const { + placement: r = "bottom", + strategy: o = "absolute", + middleware: i = [], + platform: s + } = n, a = i.filter(Boolean), l = await (s.isRTL == null ? void 0 : s.isRTL(t)); + let u = await s.getElementRects({ + reference: e, + floating: t, + strategy: o + }), { + x: c, + y: f + } = Tl(u, r, l), d = r, g = {}, p = 0; + for (let x = 0; x < a.length; x++) { + const { + name: C, + fn: $ + } = a[x], { + x: m, + y: _, + data: v, + reset: b + } = await $({ + x: c, + y: f, + initialPlacement: r, + placement: d, + strategy: o, + middlewareData: g, + rects: u, + platform: s, + elements: { + reference: e, + floating: t + } + }); + c = m ?? c, f = _ ?? f, g = { + ...g, + [C]: { + ...g[C], + ...v + } + }, b && p <= 50 && (p++, typeof b == "object" && (b.placement && (d = b.placement), b.rects && (u = b.rects === !0 ? await s.getElementRects({ + reference: e, + floating: t, + strategy: o + }) : b.rects), { + x: c, + y: f + } = Tl(u, d, l)), x = -1); + } + return { + x: c, + y: f, + placement: d, + strategy: o, + middlewareData: g + }; +}; +async function cd(e, t) { + var n; + t === void 0 && (t = {}); + const { + x: r, + y: o, + platform: i, + rects: s, + elements: a, + strategy: l + } = e, { + boundary: u = "clippingAncestors", + rootBoundary: c = "viewport", + elementContext: f = "floating", + altBoundary: d = !1, + padding: g = 0 + } = Vo(t, e), p = ud(g), C = a[d ? f === "floating" ? "reference" : "floating" : f], $ = ki(await i.getClippingRect({ + element: (n = await (i.isElement == null ? void 0 : i.isElement(C))) == null || n ? C : C.contextElement || await (i.getDocumentElement == null ? void 0 : i.getDocumentElement(a.floating)), + boundary: u, + rootBoundary: c, + strategy: l + })), m = f === "floating" ? { + x: r, + y: o, + width: s.floating.width, + height: s.floating.height + } : s.reference, _ = await (i.getOffsetParent == null ? void 0 : i.getOffsetParent(a.floating)), v = await (i.isElement == null ? void 0 : i.isElement(_)) ? await (i.getScale == null ? void 0 : i.getScale(_)) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }, b = ki(i.convertOffsetParentRelativeRectToViewportRelativeRect ? await i.convertOffsetParentRelativeRectToViewportRelativeRect({ + elements: a, + rect: m, + offsetParent: _, + strategy: l + }) : m); + return { + top: ($.top - b.top + p.top) / v.y, + bottom: (b.bottom - $.bottom + p.bottom) / v.y, + left: ($.left - b.left + p.left) / v.x, + right: (b.right - $.right + p.right) / v.x + }; +} +const Wp = (e) => ({ + name: "arrow", + options: e, + async fn(t) { + const { + x: n, + y: r, + placement: o, + rects: i, + platform: s, + elements: a, + middlewareData: l + } = t, { + element: u, + padding: c = 0 + } = Vo(e, t) || {}; + if (u == null) + return {}; + const f = ud(c), d = { + x: n, + y: r + }, g = pa(o), p = va(g), x = await s.getDimensions(u), C = g === "y", $ = C ? "top" : "left", m = C ? "bottom" : "right", _ = C ? "clientHeight" : "clientWidth", v = i.reference[p] + i.reference[g] - d[g] - i.floating[p], b = d[g] - i.reference[g], N = await (s.getOffsetParent == null ? void 0 : s.getOffsetParent(u)); + let E = N ? N[_] : 0; + (!E || !await (s.isElement == null ? void 0 : s.isElement(N))) && (E = a.floating[_] || i.floating[p]); + const M = v / 2 - b / 2, D = E / 2 - x[p] / 2 - 1, V = _o(f[$], D), A = _o(f[m], D), O = V, R = E - x[p] - A, S = E / 2 - x[p] / 2 + M, T = Ds(O, S, R), k = !l.arrow && Do(o) != null && S !== T && i.reference[p] / 2 - (S < O ? V : A) - x[p] / 2 < 0, P = k ? S < O ? S - O : S - R : 0; + return { + [g]: d[g] + P, + data: { + [g]: T, + centerOffset: S - T - P, + ...k && { + alignmentOffset: P + } + }, + reset: k + }; + } +}), Kp = function(e) { + return e === void 0 && (e = {}), { + name: "flip", + options: e, + async fn(t) { + var n, r; + const { + placement: o, + middlewareData: i, + rects: s, + initialPlacement: a, + platform: l, + elements: u + } = t, { + mainAxis: c = !0, + crossAxis: f = !0, + fallbackPlacements: d, + fallbackStrategy: g = "bestFit", + fallbackAxisSideDirection: p = "none", + flipAlignment: x = !0, + ...C + } = Vo(e, t); + if ((n = i.arrow) != null && n.alignmentOffset) + return {}; + const $ = fr(o), m = Ir(a), _ = fr(a) === a, v = await (l.isRTL == null ? void 0 : l.isRTL(u.floating)), b = d || (_ || !x ? [Ci(a)] : Bp(a)), N = p !== "none"; + !d && N && b.push(...Zp(a, x, p, v)); + const E = [a, ...b], M = await cd(t, C), D = []; + let V = ((r = i.flip) == null ? void 0 : r.overflows) || []; + if (c && D.push(M[$]), f) { + const S = Rp(o, s, v); + D.push(M[S[0]], M[S[1]]); + } + if (V = [...V, { + placement: o, + overflows: D + }], !D.every((S) => S <= 0)) { + var A, O; + const S = (((A = i.flip) == null ? void 0 : A.index) || 0) + 1, T = E[S]; + if (T) + return { + data: { + index: S, + overflows: V + }, + reset: { + placement: T + } + }; + let k = (O = V.filter((P) => P.overflows[0] <= 0).sort((P, H) => P.overflows[1] - H.overflows[1])[0]) == null ? void 0 : O.placement; + if (!k) + switch (g) { + case "bestFit": { + var R; + const P = (R = V.filter((H) => { + if (N) { + const I = Ir(H.placement); + return I === m || // Create a bias to the `y` side axis due to horizontal + // reading directions favoring greater width. + I === "y"; + } + return !0; + }).map((H) => [H.placement, H.overflows.filter((I) => I > 0).reduce((I, B) => I + B, 0)]).sort((H, I) => H[1] - I[1])[0]) == null ? void 0 : R[0]; + P && (k = P); + break; + } + case "initialPlacement": + k = a; + break; + } + if (o !== k) + return { + reset: { + placement: k + } + }; + } + return {}; + } + }; +}; +async function qp(e, t) { + const { + placement: n, + platform: r, + elements: o + } = e, i = await (r.isRTL == null ? void 0 : r.isRTL(o.floating)), s = fr(n), a = Do(n), l = Ir(n) === "y", u = ["left", "top"].includes(s) ? -1 : 1, c = i && l ? -1 : 1, f = Vo(t, e); + let { + mainAxis: d, + crossAxis: g, + alignmentAxis: p + } = typeof f == "number" ? { + mainAxis: f, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: f.mainAxis || 0, + crossAxis: f.crossAxis || 0, + alignmentAxis: f.alignmentAxis + }; + return a && typeof p == "number" && (g = a === "end" ? p * -1 : p), l ? { + x: g * c, + y: d * u + } : { + x: d * u, + y: g * c + }; +} +const Gp = function(e) { + return e === void 0 && (e = 0), { + name: "offset", + options: e, + async fn(t) { + var n, r; + const { + x: o, + y: i, + placement: s, + middlewareData: a + } = t, l = await qp(t, e); + return s === ((n = a.offset) == null ? void 0 : n.placement) && (r = a.arrow) != null && r.alignmentOffset ? {} : { + x: o + l.x, + y: i + l.y, + data: { + ...l, + placement: s + } + }; + } + }; +}, Up = function(e) { + return e === void 0 && (e = {}), { + name: "shift", + options: e, + async fn(t) { + const { + x: n, + y: r, + placement: o + } = t, { + mainAxis: i = !0, + crossAxis: s = !1, + limiter: a = { + fn: (C) => { + let { + x: $, + y: m + } = C; + return { + x: $, + y: m + }; + } + }, + ...l + } = Vo(e, t), u = { + x: n, + y: r + }, c = await cd(t, l), f = Ir(fr(o)), d = ld(f); + let g = u[d], p = u[f]; + if (i) { + const C = d === "y" ? "top" : "left", $ = d === "y" ? "bottom" : "right", m = g + c[C], _ = g - c[$]; + g = Ds(m, g, _); + } + if (s) { + const C = f === "y" ? "top" : "left", $ = f === "y" ? "bottom" : "right", m = p + c[C], _ = p - c[$]; + p = Ds(m, p, _); + } + const x = a.fn({ + ...t, + [d]: g, + [f]: p + }); + return { + ...x, + data: { + x: x.x - n, + y: x.y - r, + enabled: { + [d]: i, + [f]: s + } + } + }; + } + }; +}; +function Ki() { + return typeof window < "u"; +} +function Wr(e) { + return dd(e) ? (e.nodeName || "").toLowerCase() : "#document"; +} +function Bt(e) { + var t; + return (e == null || (t = e.ownerDocument) == null ? void 0 : t.defaultView) || window; +} +function zn(e) { + var t; + return (t = (dd(e) ? e.ownerDocument : e.document) || window.document) == null ? void 0 : t.documentElement; +} +function dd(e) { + return Ki() ? e instanceof Node || e instanceof Bt(e).Node : !1; +} +function an(e) { + return Ki() ? e instanceof Element || e instanceof Bt(e).Element : !1; +} +function _n(e) { + return Ki() ? e instanceof HTMLElement || e instanceof Bt(e).HTMLElement : !1; +} +function Hl(e) { + return !Ki() || typeof ShadowRoot > "u" ? !1 : e instanceof ShadowRoot || e instanceof Bt(e).ShadowRoot; +} +function Ao(e) { + const { + overflow: t, + overflowX: n, + overflowY: r, + display: o + } = ln(e); + return /auto|scroll|overlay|hidden|clip/.test(t + r + n) && !["inline", "contents"].includes(o); +} +function jp(e) { + return ["table", "td", "th"].includes(Wr(e)); +} +function qi(e) { + return [":popover-open", ":modal"].some((t) => { + try { + return e.matches(t); + } catch { + return !1; + } + }); +} +function ma(e) { + const t = ya(), n = an(e) ? ln(e) : e; + return ["transform", "translate", "scale", "rotate", "perspective"].some((r) => n[r] ? n[r] !== "none" : !1) || (n.containerType ? n.containerType !== "normal" : !1) || !t && (n.backdropFilter ? n.backdropFilter !== "none" : !1) || !t && (n.filter ? n.filter !== "none" : !1) || ["transform", "translate", "scale", "rotate", "perspective", "filter"].some((r) => (n.willChange || "").includes(r)) || ["paint", "layout", "strict", "content"].some((r) => (n.contain || "").includes(r)); +} +function Jp(e) { + let t = er(e); + for (; _n(t) && !zr(t); ) { + if (ma(t)) + return t; + if (qi(t)) + return null; + t = er(t); + } + return null; +} +function ya() { + return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none"); +} +function zr(e) { + return ["html", "body", "#document"].includes(Wr(e)); +} +function ln(e) { + return Bt(e).getComputedStyle(e); +} +function Gi(e) { + return an(e) ? { + scrollLeft: e.scrollLeft, + scrollTop: e.scrollTop + } : { + scrollLeft: e.scrollX, + scrollTop: e.scrollY + }; +} +function er(e) { + if (Wr(e) === "html") + return e; + const t = ( + // Step into the shadow DOM of the parent of a slotted node. + e.assignedSlot || // DOM Element detected. + e.parentNode || // ShadowRoot detected. + Hl(e) && e.host || // Fallback. + zn(e) + ); + return Hl(t) ? t.host : t; +} +function fd(e) { + const t = er(e); + return zr(t) ? e.ownerDocument ? e.ownerDocument.body : e.body : _n(t) && Ao(t) ? t : fd(t); +} +function gd(e, t, n) { + var r; + t === void 0 && (t = []); + const o = fd(e), i = o === ((r = e.ownerDocument) == null ? void 0 : r.body), s = Bt(o); + return i ? (Ls(s), t.concat(s, s.visualViewport || [], Ao(o) ? o : [], [])) : t.concat(o, gd(o, [])); +} +function Ls(e) { + return e.parent && Object.getPrototypeOf(e.parent) ? e.frameElement : null; +} +function hd(e) { + const t = ln(e); + let n = parseFloat(t.width) || 0, r = parseFloat(t.height) || 0; + const o = _n(e), i = o ? e.offsetWidth : n, s = o ? e.offsetHeight : r, a = bi(n) !== i || bi(r) !== s; + return a && (n = i, r = s), { + width: n, + height: r, + $: a + }; +} +function vd(e) { + return an(e) ? e : e.contextElement; +} +function Sr(e) { + const t = vd(e); + if (!_n(t)) + return mn(1); + const n = t.getBoundingClientRect(), { + width: r, + height: o, + $: i + } = hd(t); + let s = (i ? bi(n.width) : n.width) / r, a = (i ? bi(n.height) : n.height) / o; + return (!s || !Number.isFinite(s)) && (s = 1), (!a || !Number.isFinite(a)) && (a = 1), { + x: s, + y: a + }; +} +const Qp = /* @__PURE__ */ mn(0); +function pd(e) { + const t = Bt(e); + return !ya() || !t.visualViewport ? Qp : { + x: t.visualViewport.offsetLeft, + y: t.visualViewport.offsetTop + }; +} +function em(e, t, n) { + return t === void 0 && (t = !1), !n || t && n !== Bt(e) ? !1 : t; +} +function xo(e, t, n, r) { + t === void 0 && (t = !1), n === void 0 && (n = !1); + const o = e.getBoundingClientRect(), i = vd(e); + let s = mn(1); + t && (r ? an(r) && (s = Sr(r)) : s = Sr(e)); + const a = em(i, n, r) ? pd(i) : mn(0); + let l = (o.left + a.x) / s.x, u = (o.top + a.y) / s.y, c = o.width / s.x, f = o.height / s.y; + if (i) { + const d = Bt(i), g = r && an(r) ? Bt(r) : r; + let p = d, x = Ls(p); + for (; x && r && g !== p; ) { + const C = Sr(x), $ = x.getBoundingClientRect(), m = ln(x), _ = $.left + (x.clientLeft + parseFloat(m.paddingLeft)) * C.x, v = $.top + (x.clientTop + parseFloat(m.paddingTop)) * C.y; + l *= C.x, u *= C.y, c *= C.x, f *= C.y, l += _, u += v, p = Bt(x), x = Ls(p); + } + } + return ki({ + width: c, + height: f, + x: l, + y: u + }); +} +function wa(e, t) { + const n = Gi(e).scrollLeft; + return t ? t.left + n : xo(zn(e)).left + n; +} +function md(e, t, n) { + n === void 0 && (n = !1); + const r = e.getBoundingClientRect(), o = r.left + t.scrollLeft - (n ? 0 : ( + // RTL scrollbar. + wa(e, r) + )), i = r.top + t.scrollTop; + return { + x: o, + y: i + }; +} +function tm(e) { + let { + elements: t, + rect: n, + offsetParent: r, + strategy: o + } = e; + const i = o === "fixed", s = zn(r), a = t ? qi(t.floating) : !1; + if (r === s || a && i) + return n; + let l = { + scrollLeft: 0, + scrollTop: 0 + }, u = mn(1); + const c = mn(0), f = _n(r); + if ((f || !f && !i) && ((Wr(r) !== "body" || Ao(s)) && (l = Gi(r)), _n(r))) { + const g = xo(r); + u = Sr(r), c.x = g.x + r.clientLeft, c.y = g.y + r.clientTop; + } + const d = s && !f && !i ? md(s, l, !0) : mn(0); + return { + width: n.width * u.x, + height: n.height * u.y, + x: n.x * u.x - l.scrollLeft * u.x + c.x + d.x, + y: n.y * u.y - l.scrollTop * u.y + c.y + d.y + }; +} +function nm(e) { + return Array.from(e.getClientRects()); +} +function rm(e) { + const t = zn(e), n = Gi(e), r = e.ownerDocument.body, o = Er(t.scrollWidth, t.clientWidth, r.scrollWidth, r.clientWidth), i = Er(t.scrollHeight, t.clientHeight, r.scrollHeight, r.clientHeight); + let s = -n.scrollLeft + wa(e); + const a = -n.scrollTop; + return ln(r).direction === "rtl" && (s += Er(t.clientWidth, r.clientWidth) - o), { + width: o, + height: i, + x: s, + y: a + }; +} +function om(e, t) { + const n = Bt(e), r = zn(e), o = n.visualViewport; + let i = r.clientWidth, s = r.clientHeight, a = 0, l = 0; + if (o) { + i = o.width, s = o.height; + const u = ya(); + (!u || u && t === "fixed") && (a = o.offsetLeft, l = o.offsetTop); + } + return { + width: i, + height: s, + x: a, + y: l + }; +} +function im(e, t) { + const n = xo(e, !0, t === "fixed"), r = n.top + e.clientTop, o = n.left + e.clientLeft, i = _n(e) ? Sr(e) : mn(1), s = e.clientWidth * i.x, a = e.clientHeight * i.y, l = o * i.x, u = r * i.y; + return { + width: s, + height: a, + x: l, + y: u + }; +} +function Vl(e, t, n) { + let r; + if (t === "viewport") + r = om(e, n); + else if (t === "document") + r = rm(zn(e)); + else if (an(t)) + r = im(t, n); + else { + const o = pd(e); + r = { + x: t.x - o.x, + y: t.y - o.y, + width: t.width, + height: t.height + }; + } + return ki(r); +} +function yd(e, t) { + const n = er(e); + return n === t || !an(n) || zr(n) ? !1 : ln(n).position === "fixed" || yd(n, t); +} +function sm(e, t) { + const n = t.get(e); + if (n) + return n; + let r = gd(e, []).filter((a) => an(a) && Wr(a) !== "body"), o = null; + const i = ln(e).position === "fixed"; + let s = i ? er(e) : e; + for (; an(s) && !zr(s); ) { + const a = ln(s), l = ma(s); + !l && a.position === "fixed" && (o = null), (i ? !l && !o : !l && a.position === "static" && !!o && ["absolute", "fixed"].includes(o.position) || Ao(s) && !l && yd(e, s)) ? r = r.filter((c) => c !== s) : o = a, s = er(s); + } + return t.set(e, r), r; +} +function am(e) { + let { + element: t, + boundary: n, + rootBoundary: r, + strategy: o + } = e; + const s = [...n === "clippingAncestors" ? qi(t) ? [] : sm(t, this._c) : [].concat(n), r], a = s[0], l = s.reduce((u, c) => { + const f = Vl(t, c, o); + return u.top = Er(f.top, u.top), u.right = _o(f.right, u.right), u.bottom = _o(f.bottom, u.bottom), u.left = Er(f.left, u.left), u; + }, Vl(t, a, o)); + return { + width: l.right - l.left, + height: l.bottom - l.top, + x: l.left, + y: l.top + }; +} +function lm(e) { + const { + width: t, + height: n + } = hd(e); + return { + width: t, + height: n + }; +} +function um(e, t, n) { + const r = _n(t), o = zn(t), i = n === "fixed", s = xo(e, !0, i, t); + let a = { + scrollLeft: 0, + scrollTop: 0 + }; + const l = mn(0); + if (r || !r && !i) + if ((Wr(t) !== "body" || Ao(o)) && (a = Gi(t)), r) { + const d = xo(t, !0, i, t); + l.x = d.x + t.clientLeft, l.y = d.y + t.clientTop; + } else o && (l.x = wa(o)); + const u = o && !r && !i ? md(o, a) : mn(0), c = s.left + a.scrollLeft - l.x - u.x, f = s.top + a.scrollTop - l.y - u.y; + return { + x: c, + y: f, + width: s.width, + height: s.height + }; +} +function fs(e) { + return ln(e).position === "static"; +} +function Dl(e, t) { + if (!_n(e) || ln(e).position === "fixed") + return null; + if (t) + return t(e); + let n = e.offsetParent; + return zn(e) === n && (n = n.ownerDocument.body), n; +} +function wd(e, t) { + const n = Bt(e); + if (qi(e)) + return n; + if (!_n(e)) { + let o = er(e); + for (; o && !zr(o); ) { + if (an(o) && !fs(o)) + return o; + o = er(o); + } + return n; + } + let r = Dl(e, t); + for (; r && jp(r) && fs(r); ) + r = Dl(r, t); + return r && zr(r) && fs(r) && !ma(r) ? n : r || Jp(e) || n; +} +const cm = async function(e) { + const t = this.getOffsetParent || wd, n = this.getDimensions, r = await n(e.floating); + return { + reference: um(e.reference, await t(e.floating), e.strategy), + floating: { + x: 0, + y: 0, + width: r.width, + height: r.height + } + }; +}; +function dm(e) { + return ln(e).direction === "rtl"; +} +const fm = { + convertOffsetParentRelativeRectToViewportRelativeRect: tm, + getDocumentElement: zn, + getClippingRect: am, + getOffsetParent: wd, + getElementRects: cm, + getClientRects: nm, + getDimensions: lm, + getScale: Sr, + isElement: an, + isRTL: dm +}, gm = Gp, hm = Up, vm = Kp, pm = Wp, mm = (e, t, n) => { + const r = /* @__PURE__ */ new Map(), o = { + platform: fm, + ...n + }, i = { + ...o.platform, + _c: r + }; + return Fp(e, t, { + ...o, + platform: i + }); +}, ym = ({ + trigger: e, + triggerEvent: t, + floatContent: n, + placement: r = "bottom", + offsetOptions: o, + flipOptions: i, + shiftOptions: s, + interactive: a, + showArrow: l +}) => { + if (typeof e == "string") { + const $ = document.querySelector(e); + if ($) + e = $; + else + throw new Error("element not found by document.querySelector('" + e + "')"); + } + let u; + if (typeof n == "string") { + const $ = document.querySelector(n); + if ($) + u = $; + else + throw new Error("element not found by document.querySelector('" + n + "')"); + } else + u = n; + let c; + l && (c = document.createElement("div"), c.style.position = "absolute", c.style.backgroundColor = "#222", c.style.width = "8px", c.style.height = "8px", c.style.transform = "rotate(45deg)", c.style.display = "none", u.firstElementChild.before(c)); + function f() { + mm(e, u, { + placement: r, + middleware: [ + gm(o), + // 手动偏移配置 + vm(i), + //自动翻转 + hm(s), + //自动偏移(使得浮动元素能够进入视野) + ...l ? [pm({ element: c })] : [] + ] + }).then(({ x: $, y: m, placement: _, middlewareData: v }) => { + if (Object.assign(u.style, { + left: `${$}px`, + top: `${m}px` + }), l) { + const { x: b, y: N } = v.arrow, E = { + top: "bottom", + right: "left", + bottom: "top", + left: "right" + }[_.split("-")[0]]; + Object.assign(c.style, { + zIndex: -1, + left: b != null ? `${b}px` : "", + top: N != null ? `${N}px` : "", + right: "", + bottom: "", + [E]: "2px" + }); + } + }); + } + let d = !1; + function g() { + u.style.display = "block", u.style.visibility = "block", u.style.position = "absolute", l && (c.style.display = "block"), d = !0, f(); + } + function p() { + u.style.display = "none", l && (c.style.display = "none"), d = !1; + } + function x($) { + $.stopPropagation(), d ? p() : g(); + } + function C($) { + u.contains($.target) || p(); + } + return (!t || t.length == 0) && (t = ["click"]), t.forEach(($) => { + e.addEventListener($, x); + }), document.addEventListener("click", C), { + destroy() { + t.forEach(($) => { + e.removeEventListener($, x); + }), document.removeEventListener("click", C); + }, + hide() { + p(); + }, + isVisible() { + return d; + } + }; +}; +var wm = /* @__PURE__ */ ne('
    '); +function Lo(e, t) { + de(t, !0); + const n = w(t, "children", 7), r = w(t, "floating", 7), o = w(t, "placement", 7, "bottom"); + let i, s, a; + un(() => (a = ym({ + trigger: i, + floatContent: s, + interactive: !0, + placement: o() + }), () => { + a.destroy(); + })); + function l() { + a.hide(); + } + var u = wm(), c = X(u), f = X(c); + lr(f, n), Z(c), An(c, (p) => i = p, () => i); + var d = z(c, 2), g = X(d); + return lr(g, r), Z(d), An(d, (p) => s = p, () => s), Z(u), L(e, u), fe({ + hide: l, + get children() { + return n(); + }, + set children(p) { + n(p), y(); + }, + get floating() { + return r(); + }, + set floating(p) { + r(p), y(); + }, + get placement() { + return o(); + }, + set placement(p = "bottom") { + o(p), y(); + } + }); +} +ae(Lo, { children: {}, floating: {}, placement: {} }, [], ["hide"], !0); +function Ge(e, t) { + de(t, !0); + const n = w(t, "children", 7), r = w(t, "level", 7, 1), o = w(t, "mt", 7), i = w(t, "mb", 7); + var s = et(), a = be(s); + return m1(a, () => `h${r()}`, !1, (l, u) => { + let c; + Ee(() => c = on( + l, + c, + { + class: "tf-heading", + style: `margin-top:${o() || "0"};margin-bottom:${i() || "0"}` + }, + void 0, + l.namespaceURI === Rl, + l.nodeName.includes("-") + )); + var f = et(), d = be(f); + lr(d, () => n() ?? dt), L(u, f); + }), L(e, s), fe({ + get children() { + return n(); + }, + set children(l) { + n(l), y(); + }, + get level() { + return r(); + }, + set level(l = 1) { + r(l), y(); + }, + get mt() { + return o(); + }, + set mt(l) { + o(l), y(); + }, + get mb() { + return i(); + }, + set mb(l) { + i(l), y(); + } + }); +} +ae(Ge, { children: {}, level: {}, mt: {}, mb: {} }, [], [], !0); +var _m = /* @__PURE__ */ _e(''); +const xm = { + hash: "svelte-1rvn4a8", + code: ".input-btn-more {border:1px solid transparent;padding:3px;&:hover {background:#eee;border:1px solid transparent;}}" +}; +function Ui(e, t) { + de(t, !0), Je(e, xm); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + Ke(e, ut(() => n, { + get class() { + return `input-btn-more ${t.class ?? ""}`; + }, + children: (r, o) => { + var i = _m(); + L(r, i); + }, + $$slots: { default: !0 } + })), fe(); +} +ae(Ui, {}, [], [], !0); +const bm = () => { + const e = Ue(); + return { + deleteNode: (n) => { + e.nodes.update((r) => r.filter((o) => o.id !== n)), e.edges.update( + (r) => r.filter((o) => o.source !== n && o.target !== n) + ); + } + }; +}, Rr = (e = 16) => { + const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = new Uint8Array(e); + return crypto.getRandomValues(n), Array.from(n, (r) => t[r % t.length]).join(""); +}, Cm = () => { + const { nodes: e, nodeLookup: t } = Ue(); + return { + copyNode: (r) => { + var s; + const i = (s = q(t).get(r)) == null ? void 0 : s.internals.userNode; + if (i) { + const a = Rr(), l = { + ...i, + id: a, + position: { + x: i.position.x + 50, + y: i.position.y + 50 + } + }; + e.update((u) => [...u, l]), e.update( + (u) => u.map( + (c) => c.id === a ? { ...c, selected: !0 } : { ...c, selected: !1 } + ) + ); + } + } + }; +}; +var km = /* @__PURE__ */ _e(''), $m = /* @__PURE__ */ _e(''), Em = /* @__PURE__ */ _e(''), Sm = /* @__PURE__ */ ne('
    '), Pm = /* @__PURE__ */ ne('
    TinyFlow.ai
    ', 1); +const Nm = { + hash: "svelte-44dmwv", + code: ".tf-node-toolbar.svelte-44dmwv {display:flex;gap:5px;padding:5px;border-radius:5px;background:#fff;border:1px solid #eee;box-shadow:0 0 5px rgba(0, 0, 0, 0.1);}.tf-node-toolbar-item {border:1px solid transparent;}" +}; +function dn(e, t) { + de(t, !0), Je(e, Nm); + const n = w(t, "data", 7), r = w(t, "id", 7, ""), o = w(t, "icon", 7), i = w(t, "handle", 7), s = w(t, "children", 7), a = w(t, "allowExecute", 7, !0), l = w(t, "allowCopy", 7, !0), u = w(t, "allowDelete", 7, !0), c = w(t, "showSourceHandle", 7, !0), f = w(t, "showTargetHandle", 7, !0); + let d = n().expand ? ["key"] : []; + const { updateNodeData: g } = Dt(), p = [ + { + key: "key", + icon: o(), + title: n().title, + description: n().description, + content: s() + } + ], { deleteNode: x } = bm(), { copyNode: C } = Cm(); + var $ = Pm(), m = be($); + { + var _ = (O) => { + od(O, { + get position() { + return $e.Top; + }, + align: "end", + children: (R, S) => { + var T = Sm(), k = X(T); + { + var P = (K) => { + Ke(K, { + class: "tf-node-toolbar-item", + children: (ie, ee) => { + var W = km(); + L(ie, W); + }, + $$slots: { default: !0 } + }); + }; + ke(k, (K) => { + a() && K(P); + }); + } + var H = z(k, 2); + { + var I = (K) => { + Ke(K, { + class: "tf-node-toolbar-item", + onclick: () => { + C(r()); + }, + children: (ie, ee) => { + var W = $m(); + L(ie, W); + }, + $$slots: { default: !0 } + }); + }; + ke(H, (K) => { + l() && K(I); + }); + } + var B = z(H, 2); + { + var F = (K) => { + Ke(K, { + class: "tf-node-toolbar-item", + onclick: () => { + x(r()); + }, + children: (ie, ee) => { + var W = Em(); + L(ie, W); + }, + $$slots: { default: !0 } + }); + }; + ke(B, (K) => { + u() && K(F); + }); + } + Z(T), L(R, T); + }, + $$slots: { default: !0 } + }); + }; + ke(m, (O) => { + (a() || l() || u()) && O(_); + }); + } + var v = z(m, 2), b = z(X(v), 2), N = X(b); + ad(N, { + items: p, + activeKeys: d, + onChange: (O, R) => { + g(r(), { expand: R == null ? void 0 : R.includes("key") }); + } + }), Z(b), Z(v); + var E = z(v, 2); + { + var M = (O) => { + Qn(O, { + type: "target", + get position() { + return $e.Left; + }, + style: " left: -12px;top: 20px" + }); + }; + ke(E, (O) => { + f() && O(M); + }); + } + var D = z(E, 2); + { + var V = (O) => { + Qn(O, { + type: "source", + get position() { + return $e.Right; + }, + style: "right: -12px;top: 20px" + }); + }; + ke(D, (O) => { + c() && O(V); + }); + } + var A = z(D, 2); + return lr(A, () => i() ?? dt), L(e, $), fe({ + get data() { + return n(); + }, + set data(O) { + n(O), y(); + }, + get id() { + return r(); + }, + set id(O = "") { + r(O), y(); + }, + get icon() { + return o(); + }, + set icon(O) { + o(O), y(); + }, + get handle() { + return i(); + }, + set handle(O) { + i(O), y(); + }, + get children() { + return s(); + }, + set children(O) { + s(O), y(); + }, + get allowExecute() { + return a(); + }, + set allowExecute(O = !0) { + a(O), y(); + }, + get allowCopy() { + return l(); + }, + set allowCopy(O = !0) { + l(O), y(); + }, + get allowDelete() { + return u(); + }, + set allowDelete(O = !0) { + u(O), y(); + }, + get showSourceHandle() { + return c(); + }, + set showSourceHandle(O = !0) { + c(O), y(); + }, + get showTargetHandle() { + return f(); + }, + set showTargetHandle(O = !0) { + f(O), y(); + } + }); +} +ae( + dn, + { + data: {}, + id: {}, + icon: {}, + handle: {}, + children: {}, + allowExecute: {}, + allowCopy: {}, + allowDelete: {}, + showSourceHandle: {}, + showTargetHandle: {} + }, + [], + [], + !0 +); +function ht() { + return ar("svelteflow__node_id"); +} +const _d = [ + { + value: "String", + label: "String" + }, + { + value: "Number", + label: "Number" + }, + { + value: "Boolean", + label: "Boolean" + }, + { + value: "File", + label: "File" + }, + { + value: "Object", + label: "Object" + }, + { + value: "Array", + label: "Array" + } +], Mm = [ + { + value: "ref", + label: "引用" + }, + { + value: "input", + label: "固定值" + } +]; +var Tm = /* @__PURE__ */ ne('
    参数类型:
    默认值:
    参数描述:
    '), Hm = /* @__PURE__ */ _e(''), Vm = /* @__PURE__ */ ne('
    ', 1); +const Dm = { + hash: "svelte-laou7w", + code: ".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}" +}; +function xd(e, t) { + de(t, !0), Je(e, Dm); + const [n, r] = tt(), o = () => Q(h(l), "$node", n), i = w(t, "parameter", 7), s = w(t, "index", 7); + let a = ht(), l = /* @__PURE__ */ Me(() => pr(a)), u = /* @__PURE__ */ Me(() => { + var M, D; + return { + ...i(), + ...(D = (M = o()) == null ? void 0 : M.data) == null ? void 0 : D.parameters[s()] + }; + }); + const { updateNodeData: c } = Dt(), f = (M) => { + const D = M.target.value; + c(a, (V) => { + let A = V.data.parameters; + return A[s()].name = D, { parameters: A }; + }); + }, d = (M) => { + const D = M.target.checked; + c(a, (V) => { + let A = V.data.parameters; + return A[s()].required = D, { parameters: A }; + }); + }, g = (M) => { + const D = M.value; + D && c(a, (V) => { + let A = V.data.parameters; + return A[s()].dataType = D, { parameters: A }; + }); + }; + let p; + const x = () => { + c(a, (M) => { + let D = M.data.parameters; + return D.splice(s(), 1), { parameters: [...D] }; + }), p == null || p.hide(); + }; + var C = Vm(), $ = be(C), m = X($); + xt(m, { + style: "width: 100%;", + get value() { + return h(u).name; + }, + placeholder: "请输入参数名称", + oninput: f + }), Z($); + var _ = z($, 2), v = X(_); + id(v, { + get checked() { + return h(u).required; + }, + onchange: d + }), Z(_); + var b = z(_, 2), N = X(b); + An( + Lo(N, { + placement: "bottom", + floating: (D) => { + var V = Tm(), A = X(V), O = z(X(A)); + const R = /* @__PURE__ */ Me(() => h(u).dataType ? [h(u).dataType] : ["String"]); + sn(O, { + items: _d, + style: "width: 100%", + onSelect: g, + get value() { + return h(R); + } + }), Z(A); + var S = z(A, 2), T = z(X(S)); + $t(T, { rows: 1, style: "width: 100%;" }), Z(S); + var k = z(S, 2), P = z(X(k)); + $t(P, { rows: 3, style: "width: 100%;" }), Z(k); + var H = z(k, 2), I = X(H); + Ke(I, { + onclick: x, + children: (B, F) => { + Se(); + var K = Ie("删除"); + L(B, K); + }, + $$slots: { default: !0 } + }), Z(H), Z(V), L(D, V); + }, + children: (D, V) => { + Ke(D, { + class: "input-btn-more", + children: (A, O) => { + var R = Hm(); + L(A, R); + }, + $$slots: { default: !0 } + }); + }, + $$slots: { floating: !0, default: !0 } + }), + (D) => p = D, + () => p + ), Z(b), L(e, C); + var E = fe({ + get parameter() { + return i(); + }, + set parameter(M) { + i(M), y(); + }, + get index() { + return s(); + }, + set index(M) { + s(M), y(); + } + }); + return r(), E; +} +ae(xd, { parameter: {}, index: {} }, [], [], !0); +var Am = /* @__PURE__ */ ne('
    参数名称
    必填
    ', 1), Lm = /* @__PURE__ */ ne('
    无输入参数
    '), Om = /* @__PURE__ */ ne('
    '); +const Im = { + hash: "svelte-3n0wca", + code: `.input-container.svelte-3n0wca {display:grid;grid-template-columns:80% 10% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-3n0wca .none-params:where(.svelte-3n0wca) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-3n0wca .input-header:where(.svelte-3n0wca) {font-size:12px;color:#666;}` +}; +function bd(e, t) { + de(t, !0), Je(e, Im); + const [n, r] = tt(), o = () => Q(h(s), "$node", n); + let i = ht(), s = /* @__PURE__ */ Me(() => pr(i)), a = /* @__PURE__ */ Me(() => { + var d, g; + return [...((g = (d = o()) == null ? void 0 : d.data) == null ? void 0 : g.parameters) || []]; + }); + var l = Om(), u = X(l); + { + var c = (d) => { + var g = Am(); + Se(4), L(d, g); + }; + ke(u, (d) => { + h(a).length !== 0 && d(c); + }); + } + var f = z(u, 2); + Yt( + f, + 19, + () => h(a), + (d) => d.id, + (d, g, p) => { + xd(d, { + get parameter() { + return h(g); + }, + get index() { + return h(p); + } + }); + }, + (d) => { + var g = Lm(); + L(d, g); + } + ), Z(l), L(e, l), fe(), r(); +} +ae(bd, {}, [], [], !0); +const Cd = (e) => { + !e || e.length == 0 || e.forEach((t) => { + t.id || (t.id = Rr()), Cd(t.children); + }); +}, kn = () => { + const { updateNodeData: e } = Dt(); + return { + addParameter: (t, n = "parameters", r) => { + Cd(r == null ? void 0 : r.children); + const o = { + ...r, + id: Rr() + }; + e(t, (i) => { + let s = i.data[n]; + return s ? s.push(o) : s = [o], { + [n]: [...s] + }; + }); + } + }; +}; +var zm = /* @__PURE__ */ _e(''), Rm = /* @__PURE__ */ _e(''), Bm = /* @__PURE__ */ ne('
    ', 1); +const Ym = { + hash: "svelte-r5g35l", + code: ".heading.svelte-r5g35l {display:flex;margin-bottom:10px;}.input-btn-more {border:1px solid transparent;padding:3px;}.input-btn-more:hover {background:#eee;border:1px solid transparent;}" +}; +function kd(e, t) { + de(t, !0), Je(e, Ym); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(); + return dn(e, ut(() => r, { + get data() { + return n(); + }, + allowExecute: !1, + showTargetHandle: !1, + icon: (a) => { + var l = zm(); + L(a, l); + }, + children: (a, l) => { + var u = Bm(), c = be(u), f = X(c); + Ge(f, { + level: 3, + children: (p, x) => { + Se(); + var C = Ie("输入参数"); + L(p, C); + }, + $$slots: { default: !0 } + }); + var d = z(f, 2); + Ke(d, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (p, x) => { + var C = Rm(); + L(p, C); + }, + $$slots: { default: !0 } + }), Z(c); + var g = z(c, 2); + bd(g, {}), L(a, u); + }, + $$slots: { icon: !0, default: !0 } + })), fe({ + get data() { + return n(); + }, + set data(s) { + n(s), y(); + } + }); +} +ae(kd, { data: {} }, [], [], !0); +const $d = (e, t, n) => { + for (let r of n) + r.target === t && r.source && (e.push(r.source), $d(e, r.source, n)); +}, Al = (e, t) => { + if (e.type === "startNode") { + const n = e.data.parameters, r = []; + if (n) + for (const o of n) + r.push({ + label: o.name + (t ? ` (Array<${o.dataType || "String"}>)` : ` (${o.dataType || "String"})`), + value: e.id + "." + o.name + }); + return { + label: e.data.title, + value: e.id, + children: r + }; + } else { + if (e.type === "loopNode" && t) + return { + label: e.data.title, + value: e.id, + children: [ + { + label: "loopItem", + value: e.id + ".loop" + }, + { + label: "index (Number)", + value: e.id + ".index" + } + ] + }; + { + const n = e.data.outputDefs; + if (n) { + const r = (o, i) => !o || o.length === 0 ? [] : o.map((s) => ({ + label: s.name + (t ? ` (Array<${s.dataType || "String"}>)` : ` (${s.dataType || "String"})`), + // label: param.name , + value: i + "." + s.name, + children: r(s.children, i + "." + s.name) + })); + return { + label: e.data.title, + value: e.id, + children: r(n, e.id) + }; + } + } + } +}, Zm = (e = !1) => { + const t = ht(), n = pr(t), { nodes: r, edges: o } = Ue(); + return Kn([n, r, o], ([i, s, a]) => { + const l = []; + if (e) { + for (let u of s) + if (u.parentId === i.id) { + const c = Al(u, u.parentId === i.id); + c && l.push(c); + } + } else { + const u = []; + $d(u, t, a); + for (let c of s) + if (u.includes(c.id)) { + const f = Al(c, c.parentId === i.id); + f && l.push(f); + } + } + return l; + }); +}; +var Xm = /* @__PURE__ */ ne('
    数据来源:
    默认值:
    参数描述:
    '), Fm = /* @__PURE__ */ ne('
    ', 1); +const Wm = { + hash: "svelte-laou7w", + code: ".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}" +}; +function Ed(e, t) { + de(t, !0), Je(e, Wm); + const [n, r] = tt(), o = () => Q(h(c), "$node", n), i = () => Q(v, "$selectItems", n), s = w(t, "parameter", 7), a = w(t, "index", 7), l = w(t, "dataKeyName", 7); + let u = ht(), c = /* @__PURE__ */ Me(() => pr(u)), f = /* @__PURE__ */ Me(() => { + var T; + return { + ...s(), + ...(T = o()) == null ? void 0 : T.data[l()][a()] + }; + }); + const { updateNodeData: d } = Dt(), g = (T, k) => { + d(u, (P) => { + let H = P.data[l()]; + return H[a()] = { ...H[a()], [T]: k }, { [l()]: H }; + }); + }, p = (T) => { + const k = T.target.value; + g("name", k); + }, x = (T) => { + const k = T.target.value; + g("value", k); + }, C = (T) => { + const k = T.value; + g("ref", k); + }, $ = (T) => { + const k = T.value; + g("refType", k); + }; + let m; + const _ = () => { + d(u, (T) => { + let k = T.data[l()]; + return k.splice(a(), 1), { [l()]: [...k] }; + }), m == null || m.hide(); + }, v = Zm(); + var b = Fm(), N = be(b), E = X(N); + xt(E, { + style: "width: 100%;", + get value() { + return h(f).name; + }, + placeholder: "请输入参数名称", + oninput: p + }), Z(N); + var M = z(N, 2), D = X(M); + { + var V = (T) => { + xt(T, { + get value() { + return h(f).value; + }, + placeholder: "请输入参数值", + oninput: x + }); + }, A = (T) => { + const k = /* @__PURE__ */ Me(() => [h(f).ref]); + sn(T, { + get items() { + return i(); + }, + style: "width: 100%", + defaultValue: ["ref"], + get value() { + return h(k); + }, + expandAll: !0, + onSelect: C + }); + }; + ke(D, (T) => { + h(f).refType === "input" ? T(V) : T(A, !1); + }); + } + Z(M); + var O = z(M, 2), R = X(O); + An( + Lo(R, { + placement: "bottom", + floating: (k) => { + var P = Xm(), H = X(P), I = z(X(H)); + const B = /* @__PURE__ */ Me(() => h(f).refType ? [h(f).refType] : []); + sn(I, { + items: Mm, + style: "width: 100%", + defaultValue: ["ref"], + get value() { + return h(B); + }, + onSelect: $ + }), Z(H); + var F = z(H, 2), K = z(X(F)); + $t(K, { + rows: 1, + style: "width: 100%;", + onchange: (me) => { + const Ce = me.target.value; + g("defaultValue", Ce); + } + }), Z(F); + var ie = z(F, 2), ee = z(X(ie)); + $t(ee, { + rows: 3, + style: "width: 100%;", + onchange: (me) => { + const Ce = me.target.value; + g("description", Ce); + } + }), Z(ie); + var W = z(ie, 2), ue = X(W); + Ke(ue, { + onclick: _, + children: (me, Ce) => { + Se(); + var ge = Ie("删除"); + L(me, ge); + }, + $$slots: { default: !0 } + }), Z(W), Z(P), L(k, P); + }, + children: (k, P) => { + Ui(k, {}); + }, + $$slots: { floating: !0, default: !0 } + }), + (k) => m = k, + () => m + ), Z(O), L(e, b); + var S = fe({ + get parameter() { + return s(); + }, + set parameter(T) { + s(T), y(); + }, + get index() { + return a(); + }, + set index(T) { + a(T), y(); + }, + get dataKeyName() { + return l(); + }, + set dataKeyName(T) { + l(T), y(); + } + }); + return r(), S; +} +ae(Ed, { parameter: {}, index: {}, dataKeyName: {} }, [], [], !0); +var Km = /* @__PURE__ */ ne('
    参数名称
    参数值
    ', 1), qm = /* @__PURE__ */ ne('
    '), Gm = /* @__PURE__ */ ne('
    '); +const Um = { + hash: "svelte-1sm1mgi", + code: `.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}` +}; +function zt(e, t) { + de(t, !0), Je(e, Um); + const [n, r] = tt(), o = () => Q(h(l), "$node", n), i = w(t, "noneParameterText", 7, "无输入参数"), s = w(t, "dataKeyName", 7, "parameters"); + let a = ht(), l = /* @__PURE__ */ Me(() => pr(a)), u = /* @__PURE__ */ Me(() => { + var x; + return [...((x = o()) == null ? void 0 : x.data[s()]) || []]; + }); + var c = Gm(), f = X(c); + { + var d = (x) => { + var C = Km(); + Se(4), L(x, C); + }; + ke(f, (x) => { + h(u).length !== 0 && x(d); + }); + } + var g = z(f, 2); + Yt( + g, + 19, + () => h(u), + (x) => x.id, + (x, C, $) => { + Ed(x, { + get parameter() { + return h(C); + }, + get index() { + return h($); + }, + get dataKeyName() { + return s(); + } + }); + }, + (x) => { + var C = qm(), $ = X(C, !0); + Z(C), Ee(() => Rt($, i())), L(x, C); + } + ), Z(c), L(e, c); + var p = fe({ + get noneParameterText() { + return i(); + }, + set noneParameterText(x = "无输入参数") { + i(x), y(); + }, + get dataKeyName() { + return s(); + }, + set dataKeyName(x = "parameters") { + s(x), y(); + } + }); + return r(), p; +} +ae(zt, { noneParameterText: {}, dataKeyName: {} }, [], [], !0); +var jm = /* @__PURE__ */ _e(''), Jm = /* @__PURE__ */ _e(''), Qm = /* @__PURE__ */ ne('
    ', 1); +const ey = { + hash: "svelte-11h445j", + code: ".heading.svelte-11h445j {display:flex;margin-bottom:10px;}" +}; +function Sd(e, t) { + de(t, !0), Je(e, ey); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(); + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + allowExecute: !1, + showSourceHandle: !1, + icon: (a) => { + var l = jm(); + L(a, l); + }, + children: (a, l) => { + var u = Qm(), c = be(u), f = X(c); + Ge(f, { + level: 3, + children: (p, x) => { + Se(); + var C = Ie("输出参数"); + L(p, C); + }, + $$slots: { default: !0 } + }); + var d = z(f, 2); + Ke(d, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (p, x) => { + var C = Jm(); + L(p, C); + }, + $$slots: { default: !0 } + }), Z(c); + var g = z(c, 2); + zt(g, { + noneParameterText: "无输出参数", + dataKeyName: "outputDefs" + }), L(a, u); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(s) { + n(s), y(); + } + }); +} +ae(Sd, { data: {} }, [], [], !0); +const Oo = () => ar("tinyflow_options"); +var ty = /* @__PURE__ */ _e(''), ny = /* @__PURE__ */ ne('
    '), ry = /* @__PURE__ */ ne('
    默认值:
    参数描述:
    '), oy = /* @__PURE__ */ ne('
    ', 1); +const iy = { + hash: "svelte-1cfeest", + code: ".input-item.svelte-1cfeest {display:flex;align-items:center;gap:2px;}.input-more-setting.svelte-1cfeest {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-1cfeest .input-more-item:where(.svelte-1cfeest) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}" +}; +function Pd(e, t) { + de(t, !0), Je(e, iy); + const [n, r] = tt(), o = () => Q(h(u), "$node", n), i = w(t, "parameter", 7), s = w(t, "position", 7), a = w(t, "dataKeyName", 7); + let l = ht(), u = /* @__PURE__ */ Me(() => pr(l)), c = /* @__PURE__ */ Me(() => { + var I; + let P = (I = o()) == null ? void 0 : I.data[a()], H; + if (P && s().length > 0) { + let B = P; + for (let F = 0; F < s().length; F++) { + const K = s()[F]; + F == s().length - 1 ? H = B[K] : B = B[K].children; + } + } + return { ...i(), ...H }; + }); + const { updateNodeData: f } = Dt(), d = (P, H) => { + f(l, (I) => { + const B = I.data[a()]; + if (B && s().length > 0) { + let F = B; + for (let K = 0; K < s().length; K++) { + const ie = s()[K]; + K == s().length - 1 ? F[ie] = { ...F[ie], [P]: H } : F = B[ie].children; + } + } + return { [a()]: B }; + }); + }, g = (P) => { + const H = P.target.value; + d("name", H); + }, p = (P) => { + const H = P.value; + d("dataType", H); + }; + let x; + const C = () => { + f(l, (P) => { + let H = P.data[a()]; + if (H && s().length > 0) { + let I = H; + for (let B = 0; B < s().length; B++) { + const F = s()[B]; + B == s().length - 1 ? I.splice(F, 1) : I = I[F].children; + } + } + return { [a()]: [...H] }; + }), x == null || x.hide(); + }, $ = () => { + f(l, (P) => { + let H = P.data[a()]; + if (H && s().length > 0) { + let I = H; + for (let B = 0; B < s().length; B++) { + const F = s()[B]; + B == s().length - 1 ? I[F].children ? I[F].children.push({ + id: Rr(), + name: "newParam", + dataType: "String" + }) : I[F].children = [ + { + id: Rr(), + name: "newParam", + dataType: "String" + } + ] : I = I[F].children; + } + } + return { [a()]: [...H] }; + }); + }; + var m = oy(), _ = be(m), v = X(_); + { + var b = (P) => { + var H = et(), I = be(H); + Yt(I, 17, s, Li, (B, F) => { + Se(); + var K = Ie(" "); + L(B, K); + }), L(P, H); + }; + ke(v, (P) => { + s().length > 1 && P(b); + }); + } + var N = z(v, 2); + const E = /* @__PURE__ */ Me(() => h(c).nameDisabled === !0); + xt(N, { + style: "width: 100%;", + get value() { + return h(c).name; + }, + placeholder: "请输入参数名称", + oninput: g, + get disabled() { + return h(E); + } + }), Z(_); + var M = z(_, 2), D = X(M); + const V = /* @__PURE__ */ Me(() => h(c).dataType ? [h(c).dataType] : []), A = /* @__PURE__ */ Me(() => h(c).dataTypeDisabled === !0); + sn(D, { + items: _d, + style: "width: 100%", + defaultValue: ["String"], + get value() { + return h(V); + }, + get disabled() { + return h(A); + }, + onSelect: p + }); + var O = z(D, 2); + { + var R = (P) => { + Ke(P, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: $, + children: (H, I) => { + var B = ty(); + L(H, B); + }, + $$slots: { default: !0 } + }); + }; + ke(O, (P) => { + (h(c).dataType === "Object" || h(c).dataType === "Array") && h(c).addChildDisabled !== !0 && P(R); + }); + } + Z(M); + var S = z(M, 2), T = X(S); + An( + Lo(T, { + placement: "bottom", + floating: (H) => { + var I = ry(), B = X(I), F = z(X(B)); + $t(F, { + rows: 1, + style: "width: 100%;", + onchange: (ue) => { + const me = ue.target.value; + d("defaultValue", me); + } + }), Z(B); + var K = z(B, 2), ie = z(X(K)); + $t(ie, { + rows: 3, + style: "width: 100%;", + onchange: (ue) => { + const me = ue.target.value; + d("description", me); + } + }), Z(K); + var ee = z(K, 2); + { + var W = (ue) => { + var me = ny(), Ce = X(me); + Ke(Ce, { + onclick: C, + children: (ge, ze) => { + Se(); + var G = Ie("删除"); + L(ge, G); + }, + $$slots: { default: !0 } + }), Z(me), L(ue, me); + }; + ke(ee, (ue) => { + h(c).deleteDisabled !== !0 && ue(W); + }); + } + Z(I), L(H, I); + }, + children: (H, I) => { + Ui(H, {}); + }, + $$slots: { floating: !0, default: !0 } + }), + (H) => x = H, + () => x + ), Z(S), L(e, m); + var k = fe({ + get parameter() { + return i(); + }, + set parameter(P) { + i(P), y(); + }, + get position() { + return s(); + }, + set position(P) { + s(P), y(); + }, + get dataKeyName() { + return a(); + }, + set dataKeyName(P) { + a(P), y(); + } + }); + return r(), k; +} +ae(Pd, { parameter: {}, position: {}, dataKeyName: {} }, [], [], !0); +var sy = /* @__PURE__ */ ne(" ", 1), ay = /* @__PURE__ */ ne('
    '), ly = /* @__PURE__ */ ne('
    参数名称
    参数类型
    ', 1), uy = /* @__PURE__ */ ne('
    '); +const cy = { + hash: "svelte-1sm1mgi", + code: `.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}` +}; +function Rn(e, t) { + de(t, !0), Je(e, cy); + const [n, r] = tt(), o = () => Q(h(u), "$node", n), i = (C, $ = dt, m = dt) => { + var _ = et(), v = be(_); + Yt( + v, + 19, + $, + (b) => `${b.id}_${b.children ? b.children.length : 0}`, + (b, N, E) => { + var M = sy(), D = be(M); + const V = /* @__PURE__ */ Me(() => [...m(), h(E)]); + Pd(D, { + get parameter() { + return h(N); + }, + get position() { + return h(V); + }, + get dataKeyName() { + return a(); + } + }); + var A = z(D, 2); + { + var O = (R) => { + var S = /* @__PURE__ */ pe(() => [...m(), h(E)]); + i(R, () => h(N).children, () => h(S)); + }; + ke(A, (R) => { + h(N).children && R(O); + }); + } + L(b, M); + }, + (b) => { + var N = et(), E = be(N); + { + var M = (D) => { + var V = ay(), A = X(V, !0); + Z(V), Ee(() => Rt(A, s())), L(D, V); + }; + ke(E, (D) => { + m().length === 0 && D(M); + }); + } + L(b, N); + } + ), L(C, _); + }, s = w(t, "noneParameterText", 7, "无输出参数"), a = w(t, "dataKeyName", 7, "outputDefs"); + let l = ht(), u = /* @__PURE__ */ Me(() => pr(l)), c = /* @__PURE__ */ Me(() => { + var C; + return [...((C = o()) == null ? void 0 : C.data[a()]) || []]; + }); + var f = uy(), d = X(f); + { + var g = (C) => { + var $ = ly(); + Se(4), L(C, $); + }; + ke(d, (C) => { + h(c).length !== 0 && C(g); + }); + } + var p = z(d, 2); + i(p, () => h(c) || [], () => []), Z(f), L(e, f); + var x = fe({ + get noneParameterText() { + return s(); + }, + set noneParameterText(C = "无输出参数") { + s(C), y(); + }, + get dataKeyName() { + return a(); + }, + set dataKeyName(C = "outputDefs") { + a(C), y(); + } + }); + return r(), x; +} +ae(Rn, { noneParameterText: {}, dataKeyName: {} }, [], [], !0); +var dy = /* @__PURE__ */ _e(''), fy = /* @__PURE__ */ _e(''), gy = /* @__PURE__ */ _e(''), hy = /* @__PURE__ */ ne('
    模型
    采样参数
    系统提示词
    用户提示词
    ', 1); +const vy = { + hash: "svelte-wn2kra", + code: `.heading.svelte-wn2kra {display:flex;margin-bottom:10px;}.setting-title.svelte-wn2kra {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-wn2kra {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}\r + /* 新增样式 */.slider-container.svelte-wn2kra {width:100%;display:flex;flex-direction:column;gap:4px;}.slider-container.svelte-wn2kra label:where(.svelte-wn2kra) {font-size:12px;color:#666;display:flex;justify-content:space-between;align-items:center;}input[type="range"].svelte-wn2kra {width:100%;height:4px;background:#ddd;border-radius:2px;outline:none;-webkit-appearance:none;}input[type="range"].svelte-wn2kra::-webkit-slider-thumb {-webkit-appearance:none;width:14px;height:14px;background:#007bff;border-radius:50%;cursor:pointer;}` +}; +function Nd(e, t) { + de(t, !0), Je(e, vy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + un(async () => { + var c, f; + const u = await ((f = (c = s.provider) == null ? void 0 : c.llm) == null ? void 0 : f.call(c)); + h(a).push(...u || []); + }); + const { updateNodeData: l } = Dt(); + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = dy(); + L(c, f); + }, + children: (c, f) => { + var d = hy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (G, se) => { + Se(); + var Te = Ie("输入参数"); + L(G, Te); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (G, se) => { + var Te = fy(); + L(G, Te); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (G, se) => { + Se(); + var Te = Ie("模型设置"); + L(G, Te); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().llmId ? [n().llmId] : []); + sn(_, { + get items() { + return h(a); + }, + style: "width: 100%", + placeholder: "请选择模型", + onSelect: (G) => { + const se = G.value; + l(o, () => ({ llmId: se })); + }, + get value() { + return h(v); + } + }); + var b = z(_, 2); + Ui(b, {}), Z(m); + var N = z(m, 4), E = X(N), M = X(E), D = X(M); + Z(M); + var V = z(M, 2); + io(V), Z(E), Z(N); + var A = z(N, 2), O = X(A), R = X(O), S = X(R); + Z(R); + var T = z(R, 2); + io(T), Z(O), Z(A); + var k = z(A, 2), P = X(k), H = X(P), I = X(H); + Z(H); + var B = z(H, 2); + io(B), Z(P), Z(k); + var F = z(k, 4), K = X(F); + const ie = /* @__PURE__ */ Me(() => n().systemPrompt || ""); + $t(K, { + rows: 5, + placeholder: "请输入系统提示词", + style: "width: 100%", + get value() { + return h(ie); + }, + oninput: (G) => { + l(o, { systemPrompt: G.target.value }); + } + }), Z(F); + var ee = z(F, 4), W = X(ee); + const ue = /* @__PURE__ */ Me(() => n().userPrompt || ""); + $t(W, { + rows: 5, + placeholder: "请输入用户提示词", + style: "width: 100%", + get value() { + return h(ue); + }, + oninput: (G) => { + l(o, { userPrompt: G.target.value }); + } + }), Z(ee); + var me = z(ee, 2), Ce = X(me); + Ge(Ce, { + level: 3, + mt: "10px", + children: (G, se) => { + Se(); + var Te = Ie("输出参数"); + L(G, Te); + }, + $$slots: { default: !0 } + }); + var ge = z(Ce, 2); + Ke(ge, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (G, se) => { + var Te = gy(); + L(G, Te); + }, + $$slots: { default: !0 } + }), Z(me); + var ze = z(me, 2); + Rn(ze, {}), Ee(() => { + Rt(D, `Temperature: ${n().temperature ?? 0.5}`), Qi(V, n().temperature ?? 0.5), Rt(S, `Top P: ${n().topP ?? 0.9}`), Qi(T, n().topP ?? 0.9), Rt(I, `Top K: ${n().topK ?? 50}`), Qi(B, n().topK ?? 50); + }), Ye("mousedown", V, es(function(G) { + Ve.call(this, t, G); + })), Ye("input", V, (G) => l(o, { temperature: parseFloat(G.target.value) })), Ye("mousedown", T, es(function(G) { + Ve.call(this, t, G); + })), Ye("input", T, (G) => l(o, { topP: parseFloat(G.target.value) })), Ye("mousedown", B, es(function(G) { + Ve.call(this, t, G); + })), Ye("input", B, (G) => l(o, { topK: parseInt(G.target.value) })), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Nd, { data: {} }, [], [], !0); +var py = /* @__PURE__ */ _e(''), my = /* @__PURE__ */ _e(''), yy = /* @__PURE__ */ _e(''), wy = /* @__PURE__ */ ne('
    执行引擎
    执行代码
    ', 1); +const _y = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Md(e, t) { + de(t, !0), Je(e, _y); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), { updateNodeData: s } = Dt(), a = [ + { label: "QLExpress", value: "qlexpress" }, + { label: "Groovy", value: "groovy" }, + { label: "JavaScript", value: "js" } + ]; + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (u) => { + var c = py(); + L(u, c); + }, + children: (u, c) => { + var f = wy(), d = be(f), g = X(d); + Ge(g, { + level: 3, + children: (A, O) => { + Se(); + var R = Ie("输入参数"); + L(A, R); + }, + $$slots: { default: !0 } + }); + var p = z(g, 2); + Ke(p, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (A, O) => { + var R = my(); + L(A, R); + }, + $$slots: { default: !0 } + }), Z(d); + var x = z(d, 2); + zt(x, {}); + var C = z(x, 2); + Ge(C, { + level: 3, + mt: "10px", + children: (A, O) => { + Se(); + var R = Ie("代码"); + L(A, R); + }, + $$slots: { default: !0 } + }); + var $ = z(C, 4), m = X($); + const _ = /* @__PURE__ */ Me(() => n().engine ? [n().engine] : ["qlexpress"]); + sn(m, { + items: a, + style: "width: 100%", + placeholder: "请选择执行引擎", + onSelect: (A) => { + const O = A.value; + s(o, () => ({ engine: O })); + }, + get value() { + return h(_); + } + }), Z($); + var v = z($, 4), b = X(v); + const N = /* @__PURE__ */ Me(() => n().code || ""); + $t(b, { + rows: 10, + placeholder: "请输入执行代码,注:输出内容需添加到_result中,如:_result.put(key, value)", + style: "width: 100%", + onchange: (A) => { + s(o, () => ({ code: A.target.value })); + }, + get value() { + return h(N); + } + }), Z(v); + var E = z(v, 2), M = X(E); + Ge(M, { + level: 3, + mt: "10px", + children: (A, O) => { + Se(); + var R = Ie("输出参数"); + L(A, R); + }, + $$slots: { default: !0 } + }); + var D = z(M, 2); + Ke(D, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (A, O) => { + var R = yy(); + L(A, R); + }, + $$slots: { default: !0 } + }), Z(E); + var V = z(E, 2); + Rn(V, {}), L(u, f); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(l) { + n(l), y(); + } + }); +} +ae(Md, { data: {} }, [], [], !0); +var xy = /* @__PURE__ */ _e(''), by = /* @__PURE__ */ _e(''), Cy = /* @__PURE__ */ ne('
    执行代码
    ', 1); +const ky = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Td(e, t) { + de(t, !0), Je(e, ky); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), { updateNodeData: s } = Dt(); + return Nr(() => { + (!n().outputDefs || n().outputDefs.length === 0) && i(o, "outputDefs", { + name: "output", + dataType: "String", + dataTypeDisabled: !0, + deleteDisabled: !0 + }); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (l) => { + var u = xy(); + L(l, u); + }, + children: (l, u) => { + var c = Cy(), f = be(c), d = X(f); + Ge(d, { + level: 3, + children: (N, E) => { + Se(); + var M = Ie("输入参数"); + L(N, M); + }, + $$slots: { default: !0 } + }); + var g = z(d, 2); + Ke(g, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (N, E) => { + var M = by(); + L(N, M); + }, + $$slots: { default: !0 } + }), Z(f); + var p = z(f, 2); + zt(p, {}); + var x = z(p, 2); + Ge(x, { + level: 3, + mt: "10px", + children: (N, E) => { + Se(); + var M = Ie("代码"); + L(N, M); + }, + $$slots: { default: !0 } + }); + var C = z(x, 4), $ = X(C); + const m = /* @__PURE__ */ Me(() => n().template || ""); + $t($, { + rows: 10, + placeholder: "请输入执行代码", + style: "width: 100%", + onchange: (N) => { + s(o, () => ({ template: N.target.value })); + }, + get value() { + return h(m); + } + }), Z(C); + var _ = z(C, 2), v = X(_); + Ge(v, { + level: 3, + mt: "10px", + children: (N, E) => { + Se(); + var M = Ie("输出参数"); + L(N, M); + }, + $$slots: { default: !0 } + }), Z(_); + var b = z(_, 2); + Rn(b, {}), L(l, c); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(a) { + n(a), y(); + } + }); +} +ae(Td, { data: {} }, [], [], !0); +var $y = /* @__PURE__ */ _e(''), Ey = /* @__PURE__ */ _e(''), Sy = /* @__PURE__ */ _e(''), Py = /* @__PURE__ */ _e(''), Ny = /* @__PURE__ */ ne('
    ', 1), My = /* @__PURE__ */ _e(''), Ty = /* @__PURE__ */ ne('
    ', 1), Hy = /* @__PURE__ */ ne('
    '), Vy = /* @__PURE__ */ ne('
    '), Dy = /* @__PURE__ */ _e(''), Ay = /* @__PURE__ */ ne('
    ', 1); +const Ly = { + hash: "svelte-1vtcqdz", + code: ".heading.svelte-1vtcqdz {display:flex;margin-bottom:10px;}.radio-group.svelte-1vtcqdz {display:flex;margin:10px 0;}.radio-group.svelte-1vtcqdz label:where(.svelte-1vtcqdz) {display:flex;font-size:14px;}" +}; +function Hd(e, t) { + de(t, !0), Je(e, Ly); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = [ + { value: "get", label: "GET" }, + { value: "post", label: "POST" }, + { value: "put", label: "PUT" }, + { value: "delete", label: "DELETE" }, + { value: "head", label: "HEAD" }, + { value: "patch", label: "PATCH" } + ], i = ht(), { addParameter: s } = kn(), { updateNodeData: a } = Dt(); + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (u) => { + var c = $y(); + L(u, c); + }, + children: (u, c) => { + var f = Ay(), d = be(f), g = X(d), p = X(g); + const x = /* @__PURE__ */ Me(() => n().method ? [n().method] : ["get"]); + sn(p, { + items: o, + style: "width: 100%", + placeholder: "请选择请求方式", + onSelect: (oe) => { + const ve = oe.value; + a(i, () => ({ method: ve })); + }, + get value() { + return h(x); + } + }), Z(g); + var C = z(g, 2), $ = X(C); + const m = /* @__PURE__ */ Me(() => n().url || ""); + xt($, { + placeholder: "请输入url", + style: "width: 100%", + onchange: (oe) => { + a(i, () => ({ url: oe.target.value })); + }, + get value() { + return h(m); + } + }), Z(C), Z(d); + var _ = z(d, 2), v = X(_); + Ge(v, { + level: 3, + children: (oe, ve) => { + Se(); + var xe = Ie("Http 头信息"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var b = z(v, 2); + Ke(b, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "headers"); + }, + children: (oe, ve) => { + var xe = Ey(); + L(oe, xe); + }, + $$slots: { default: !0 } + }), Z(_); + var N = z(_, 2); + zt(N, { dataKeyName: "headers" }); + var E = z(N, 2), M = X(E); + Ge(M, { + level: 3, + children: (oe, ve) => { + Se(); + var xe = Ie("参数"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var D = z(M, 2); + Ke(D, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "urlParameters"); + }, + children: (oe, ve) => { + var xe = Sy(); + L(oe, xe); + }, + $$slots: { default: !0 } + }), Z(E); + var V = z(E, 2); + zt(V, { dataKeyName: "urlParameters" }); + var A = z(V, 2); + Ge(A, { + level: 3, + mt: "10px", + children: (oe, ve) => { + Se(); + var xe = Ie("Body"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var O = z(A, 2), R = X(O), S = X(R); + const T = /* @__PURE__ */ Me(() => !n().bodyType); + xt(S, { + type: "radio", + name: "bodyType", + value: "", + get checked() { + return h(T); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "" }); + } + }), Se(), Z(R); + var k = z(R, 2), P = X(k); + const H = /* @__PURE__ */ Me(() => n().bodyType === "form-data"); + xt(P, { + type: "radio", + name: "bodyType", + value: "form-data", + get checked() { + return h(H); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "form-data" }); + } + }), Se(), Z(k); + var I = z(k, 2), B = X(I); + const F = /* @__PURE__ */ Me(() => n().bodyType === "x-www-form-urlencoded"); + xt(B, { + type: "radio", + name: "bodyType", + value: "x-www-form-urlencoded", + get checked() { + return h(F); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "x-www-form-urlencoded" }); + } + }), Se(), Z(I); + var K = z(I, 2), ie = X(K); + const ee = /* @__PURE__ */ Me(() => n().bodyType === "json"); + xt(ie, { + type: "radio", + name: "bodyType", + value: "json", + get checked() { + return h(ee); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "json" }); + } + }), Se(), Z(K); + var W = z(K, 2), ue = X(W); + const me = /* @__PURE__ */ Me(() => n().bodyType === "raw"); + xt(ue, { + type: "radio", + name: "bodyType", + value: "raw", + get checked() { + return h(me); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "raw" }); + } + }), Se(), Z(W), Z(O); + var Ce = z(O, 2); + { + var ge = (oe) => { + var ve = Ny(), xe = be(ve), Oe = X(xe); + Ge(Oe, { + level: 3, + children: (J, Re) => { + Se(); + var le = Ie("参数"); + L(J, le); + }, + $$slots: { default: !0 } + }); + var ct = z(Oe, 2); + Ke(ct, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "fromData"); + }, + children: (J, Re) => { + var le = Py(); + L(J, le); + }, + $$slots: { default: !0 } + }), Z(xe); + var lt = z(xe, 2); + zt(lt, { dataKeyName: "fromData" }), L(oe, ve); + }; + ke(Ce, (oe) => { + n().bodyType === "form-data" && oe(ge); + }); + } + var ze = z(Ce, 2); + { + var G = (oe) => { + var ve = Ty(), xe = be(ve), Oe = X(xe); + Ge(Oe, { + level: 3, + children: (J, Re) => { + Se(); + var le = Ie("参数"); + L(J, le); + }, + $$slots: { default: !0 } + }); + var ct = z(Oe, 2); + Ke(ct, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "fromUrlencoded"); + }, + children: (J, Re) => { + var le = My(); + L(J, le); + }, + $$slots: { default: !0 } + }), Z(xe); + var lt = z(xe, 2); + zt(lt, { dataKeyName: "fromUrlencoded" }), L(oe, ve); + }; + ke(ze, (oe) => { + n().bodyType === "x-www-form-urlencoded" && oe(G); + }); + } + var se = z(ze, 2); + { + var Te = (oe) => { + var ve = Hy(), xe = X(ve); + $t(xe, { + rows: "5", + style: "width: 100%", + placeholder: "请输入 json 信息", + get value() { + return n().bodyJson; + }, + oninput: (Oe) => { + a(i, { bodyJson: Oe.target.value }); + } + }), Z(ve), L(oe, ve); + }; + ke(se, (oe) => { + n().bodyType === "json" && oe(Te); + }); + } + var Ae = z(se, 2); + { + var Xe = (oe) => { + var ve = Vy(), xe = X(ve); + $t(xe, { + rows: "5", + style: "width: 100%", + placeholder: "请输入请求信息", + get value() { + return n().bodyRaw; + }, + oninput: (Oe) => { + a(i, { bodyRaw: Oe.target.value }); + } + }), Z(ve), L(oe, ve); + }; + ke(Ae, (oe) => { + n().bodyType === "raw" && oe(Xe); + }); + } + var te = z(Ae, 2), Fe = X(te); + Ge(Fe, { + level: 3, + mt: "10px", + children: (oe, ve) => { + Se(); + var xe = Ie("输出参数"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var Le = z(Fe, 2); + Ke(Le, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "outputDefs"); + }, + children: (oe, ve) => { + var xe = Dy(); + L(oe, xe); + }, + $$slots: { default: !0 } + }), Z(te); + var Qe = z(te, 2); + Rn(Qe, {}), L(u, f); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(l) { + n(l), y(); + } + }); +} +ae(Hd, { data: {} }, [], [], !0); +var Oy = /* @__PURE__ */ _e(''), Iy = /* @__PURE__ */ _e(''), zy = /* @__PURE__ */ ne('
    知识库
    获取数据量
    ', 1); +const Ry = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Vd(e, t) { + de(t, !0), Je(e, Ry); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + un(async () => { + var c, f; + const u = await ((f = (c = s.provider) == null ? void 0 : c.knowledge) == null ? void 0 : f.call(c)); + h(a).push(...u || []); + }); + const { updateNodeData: l } = Dt(); + return Nr(() => { + (!n().outputDefs || n().outputDefs.length === 0) && i(o, "outputDefs", { + name: "documents", + dataType: "Array", + nameDisabled: !0, + dataTypeDisabled: !0, + addChildDisabled: !0, + children: [ + { + name: "title", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "content", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "documentId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "knowledgeId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + } + ] + }); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = Oy(); + L(c, f); + }, + children: (c, f) => { + var d = zy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (V, A) => { + Se(); + var O = Ie("输入参数"); + L(V, O); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (V, A) => { + var O = Iy(); + L(V, O); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (V, A) => { + Se(); + var O = Ie("知识库设置"); + L(V, O); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().knowledgeId ? [n().knowledgeId] : []); + sn(_, { + get items() { + return h(a); + }, + style: "width: 100%", + placeholder: "请选择知识库", + onSelect: (V) => { + const A = V.value; + l(o, () => ({ knowledgeId: A })); + }, + get value() { + return h(v); + } + }), Z(m); + var b = z(m, 4), N = X(b); + xt(N, { placeholder: "搜索的数据条数", style: "width: 100%" }), Z(b); + var E = z(b, 2), M = X(E); + Ge(M, { + level: 3, + mt: "10px", + children: (V, A) => { + Se(); + var O = Ie("输出参数"); + L(V, O); + }, + $$slots: { default: !0 } + }), Z(E); + var D = z(E, 2); + Rn(D, {}), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Vd, { data: {} }, [], [], !0); +var By = /* @__PURE__ */ _e(''), Yy = /* @__PURE__ */ _e(''), Zy = /* @__PURE__ */ ne('
    API 服务商
    API Key
    关键字
    数据量
    其他参数
    ', 1); +const Xy = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Dd(e, t) { + de(t, !0), Je(e, Xy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + un(async () => { + var c; + const u = await ((c = s.provider) == null ? void 0 : c.knowledge()); + h(a).push(...u || []); + }); + const { updateNodeData: l } = Dt(); + return Nr(() => { + (!n().outputDefs || n().outputDefs.length === 0) && i(o, "outputDefs", { + name: "documents", + dataType: "Array", + nameDisabled: !0, + dataTypeDisabled: !0, + addChildDisabled: !0, + children: [ + { + name: "title", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "content", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "documentId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "knowledgeId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + } + ] + }); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = By(); + L(c, f); + }, + children: (c, f) => { + var d = Zy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (k, P) => { + Se(); + var H = Ie("输入参数"); + L(k, H); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (k, P) => { + var H = Yy(); + L(k, H); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (k, P) => { + Se(); + var H = Ie("搜索引擎设置"); + L(k, H); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().knowledgeId ? [n().knowledgeId] : []); + sn(_, { + get items() { + return h(a); + }, + style: "width: 100%", + placeholder: "请选择 API 服务商", + onSelect: (k) => { + const P = k.value; + l(o, () => ({ knowledgeId: P })); + }, + get value() { + return h(v); + } + }), Z(m); + var b = z(m, 4), N = X(b); + xt(N, { + placeholder: "请输入 API Key", + style: "width: 100%" + }), Z(b); + var E = z(b, 4), M = X(E); + xt(M, { placeholder: "请输入关键字", style: "width: 100%" }), Z(E); + var D = z(E, 4), V = X(D); + xt(V, { placeholder: "搜索的数据条数", style: "width: 100%" }), Z(D); + var A = z(D, 4), O = X(A); + $t(O, { + rows: 3, + placeholder: "请输入其他参数(Property 格式)", + style: "width: 100%" + }), Z(A); + var R = z(A, 2), S = X(R); + Ge(S, { + level: 3, + mt: "10px", + children: (k, P) => { + Se(); + var H = Ie("输出参数"); + L(k, H); + }, + $$slots: { default: !0 } + }), Z(R); + var T = z(R, 2); + Rn(T, {}), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Dd, { data: {} }, [], [], !0); +var Fy = /* @__PURE__ */ _e(''), Wy = /* @__PURE__ */ _e(''), Ky = /* @__PURE__ */ ne('
    ', 1); +const qy = { + hash: "svelte-md8tgj", + code: ".heading.svelte-md8tgj {display:flex;margin-bottom:10px;}.loop_handle_wrapper ::after {content:'循环体';width:100px;height:20px;background:#000;color:#fff;display:flex;justify-content:center;align-items:center;}" +}; +function Ad(e, t) { + de(t, !0), Je(e, qy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + return un(async () => { + var u; + const l = await ((u = s.provider) == null ? void 0 : u.knowledge()); + h(a).push(...l || []); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = Fy(); + L(c, f); + }, + handle: (c) => { + Qn(c, { + type: "source", + get position() { + return $e.Bottom; + }, + id: "loop_handle", + style: "bottom: -12px;width: 100px", + class: "loop_handle_wrapper" + }); + }, + children: (c, f) => { + var d = Ky(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (v, b) => { + Se(); + var N = Ie("循环变量"); + L(v, N); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (v, b) => { + var N = Wy(); + L(v, N); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2), m = X($); + Ge(m, { + level: 3, + mt: "10px", + children: (v, b) => { + Se(); + var N = Ie("输出参数"); + L(v, N); + }, + $$slots: { default: !0 } + }), Z($); + var _ = z($, 2); + Rn(_, {}), L(c, d); + }, + $$slots: { icon: !0, handle: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(l) { + n(l), y(); + } + }); +} +ae(Ad, { data: {} }, [], [], !0); +var Gy = /* @__PURE__ */ _e(''), Uy = /* @__PURE__ */ _e(''), jy = /* @__PURE__ */ _e(''), Jy = /* @__PURE__ */ ne('
    选择内部接口
    ', 1); +const Qy = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Ld(e, t) { + de(t, !0), Je(e, Qy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), { updateNodeData: s } = Dt(), a = Oo(); + let l = Un(Tt([])); + return un(async () => { + var c, f; + const u = await ((f = (c = a.provider) == null ? void 0 : c.internal) == null ? void 0 : f.call(c)); + h(l).push(...u || []); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = Gy(); + L(c, f); + }, + children: (c, f) => { + var d = Jy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (D, V) => { + Se(); + var A = Ie("输入参数"); + L(D, A); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (D, V) => { + var A = Uy(); + L(D, A); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (D, V) => { + Se(); + var A = Ie("接口"); + L(D, A); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().method ? [n().method] : [""]); + sn(_, { + get items() { + return h(l); + }, + style: "width: 100%", + placeholder: "请选择内部接口", + onSelect: (D) => { + const V = D.value; + s(o, () => ({ method: V })); + }, + get value() { + return h(v); + } + }), Z(m); + var b = z(m, 2), N = X(b); + Ge(N, { + level: 3, + mt: "10px", + children: (D, V) => { + Se(); + var A = Ie("输出参数"); + L(D, A); + }, + $$slots: { default: !0 } + }); + var E = z(N, 2); + Ke(E, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (D, V) => { + var A = jy(); + L(D, A); + }, + $$slots: { default: !0 } + }), Z(b); + var M = z(b, 2); + Rn(M, {}), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Ld, { data: {} }, [], [], !0); +const ew = { + startNode: kd, + codeNode: Md, + llmNode: Nd, + templateNode: Td, + httpNode: Hd, + knowledgeNode: Vd, + searchEngineNode: Dd, + loopNode: Ad, + internalNode: Ld, + endNode: Sd +}; +var tw = /* @__PURE__ */ ne(" ", 1); +function Od(e, t) { + de(t, !0); + const n = w(t, "icon", 7), r = w(t, "title", 7), o = w(t, "type", 7), i = w(t, "description", 7), s = w(t, "extra", 7); + return Ke(e, { + draggable: !0, + ondragstart: (l) => { + if (!l.dataTransfer) + return null; + const u = { + type: o(), + data: { + title: r(), + description: i(), + systemPrompt: "", + userPrompt: "", + ...s() + } + }; + l.dataTransfer.setData("application/tinyflow", JSON.stringify(u)), l.dataTransfer.effectAllowed = "move"; + }, + children: (l, u) => { + var c = tw(), f = be(c); + mu(f, n); + var d = z(f); + Ee(() => Rt(d, ` ${r() ?? ""}`)), L(l, c); + }, + $$slots: { default: !0 } + }), fe({ + get icon() { + return n(); + }, + set icon(l) { + n(l), y(); + }, + get title() { + return r(); + }, + set title(l) { + r(l), y(); + }, + get type() { + return o(); + }, + set type(l) { + o(l), y(); + }, + get description() { + return i(); + }, + set description(l) { + i(l), y(); + }, + get extra() { + return s(); + }, + set extra(l) { + s(l), y(); + } + }); +} +ae( + Od, + { + icon: {}, + title: {}, + type: {}, + description: {}, + extra: {} + }, + [], + [], + !0 +); +var nw = /* @__PURE__ */ _e(''), rw = /* @__PURE__ */ _e(''), ow = /* @__PURE__ */ ne('
    '); +function Id(e) { + let t = Un("base"), n = Un("show"); + const r = [ + { + icon: '', + title: "开始节点", + type: "startNode", + description: "开始定义输入参数" + }, + { + icon: '', + title: "循环", + type: "loopNode", + description: "用于循环执行任务" + }, + { + icon: '', + title: "大模型", + type: "llmNode", + description: "使用大模型处理问题" + }, + { + // icon:'', + icon: '', + title: "知识库", + type: "knowledgeNode", + description: "通过知识库获取内容" + }, + { + icon: '', + title: "搜索引擎", + type: "searchEngineNode", + description: "通过搜索引擎搜索内容" + }, + { + icon: '', + title: "Http 请求", + type: "httpNode", + description: "通过 HTTP 请求获取数据" + }, + { + icon: '', + title: "动态代码", + type: "codeNode", + description: "动态执行代码" + }, + { + icon: '', + title: "内容模板", + type: "templateNode", + description: "通过模板引擎生成内容" + }, + { + icon: '', + title: "内部接口", + type: "internalNode", + description: "执行内部提供接口" + }, + { + icon: '', + title: "结束节点", + type: "endNode", + description: "结束定义输出参数" + } + ], o = [ + { + label: "基础节点", + value: "base" + }, + { + label: "业务工具", + value: "tools" + } + ]; + var i = ow(), s = X(i), a = X(s), l = X(a); + sd(l, { + style: "width: 100%", + items: o, + onChange: (p) => { + U(t, Tt(p.value.toString())); + } + }), Z(a); + var u = z(a, 2), c = X(u); + Yt(c, 21, () => r, Li, (p, x) => { + Od(p, ut(() => h(x))); + }), Z(c); + var f = z(c, 2), d = X(f); + Ke(d, { + children: (p, x) => { + Se(); + var C = Ie("测试业务按钮"); + L(p, C); + }, + $$slots: { default: !0 } + }), Z(f), Z(u), Z(s); + var g = z(s, 2); + Ke(g, { + onclick: () => { + U(n, Tt(h(n) ? "" : "show")); + }, + children: (p, x) => { + var C = et(), $ = be(C); + { + var m = (v) => { + var b = nw(); + L(v, b); + }, _ = (v) => { + var b = rw(); + L(v, b); + }; + ke($, (v) => { + h(n) === "show" ? v(m) : v(_, !1); + }); + } + L(p, C); + }, + $$slots: { default: !0 } + }), Z(i), Ee(() => { + kt(i, 1, `tf-toolbar ${h(n) ?? ""}`), ce(c, "style", `display: ${(h(t) === "base" ? "flex" : "none") ?? ""}`), ce(f, "style", `display: ${(h(t) !== "base" ? "flex" : "none") ?? ""}`); + }), L(e, i); +} +ae(Id, {}, [], [], !0); +const iw = () => { + const { nodeLookup: e } = Ue(); + return { + getNode: (n) => { + var o; + return (o = q(e).get(n)) == null ? void 0 : o.internals.userNode; + } + }; +}, sw = () => { + const { nodes: e } = Ue(); + return { + ensureParentInNodesBefore: (n, r) => { + e.update((o) => { + let i = -1; + for (let l = 0; l < o.length; l++) + if (o[l].id === n) { + i = l; + break; + } + if (i <= 0) + return o; + let s = -1; + for (let l = 0; l < i; l++) + if (o[l].parentId === n || o[l].id === r) { + s = l; + break; + } + if (s == -1) + return o; + const a = o[i]; + for (let l = i; l > s; l--) + o[l] = o[l - 1]; + return o[s] = a, o; + }); + } + }; +}, aw = () => { + const { edges: e } = Ue(); + return { + getEdgesByTarget: (n) => q(e).filter((o) => o.target === n) + }; +}; +var lw = /* @__PURE__ */ ne('
    边属性设置
    边条件设置
    '), uw = /* @__PURE__ */ ne(" ", 1), cw = /* @__PURE__ */ ne('
    '); +const dw = { + hash: "svelte-1oe15vw", + code: ".panel-content.svelte-1oe15vw {padding:10px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);width:200px;border:1px solid #efefef;}.setting-title.svelte-1oe15vw {margin:10px 0;font-size:12px;color:#999;}" +}; +function zd(e, t) { + de(t, !0), Je(e, dw); + const n = w(t, "onInit", 7), r = Dt(); + n()(r); + let o = Un(!1); + const i = (_) => { + _.preventDefault(), _.dataTransfer && (_.dataTransfer.dropEffect = "move"); + }, s = (_) => { + var M; + _.preventDefault(); + const v = r.screenToFlowPosition({ + x: _.clientX - 250, + y: _.clientY - 100 + }), b = (M = _.dataTransfer) == null ? void 0 : M.getData("application/tinyflow"), N = b ? JSON.parse(b) : {}, E = { + id: `node_${Rr()}`, + position: v, + data: {}, + ...N + }; + ei.addNode(E), ei.selectNodeOnly(E.id); + }, { getNode: a } = iw(), l = (_) => { + const v = a(_.source), b = a(_.target); + if (_.sourceHandle === "loop_handle" || v.parentId) { + const N = r.getEdges(); + for (let E of N) + if (E.target === _.target) { + const M = a(E.source); + if (_.sourceHandle === "loop_handle" && M.parentId !== v.id || v.parentId && M.parentId !== v.parentId) + return !1; + } + } + return !(!v.parentId && b.parentId && b.parentId !== v.id); + }, { ensureParentInNodesBefore: u } = sw(), c = (_, v) => { + if (!v.isValid) + return; + const b = v.toNode; + if (b.parentId) + return; + const N = v.fromNode, E = v.fromHandle, M = { position: { ...b.position } }; + if (E.id === "loop_handle" ? M.parentId = N.id : N.parentId && (M.parentId = N.parentId), M.parentId) { + const D = a(M.parentId); + M.position = { + x: b.position.x - D.position.x, + y: b.position.y - D.position.y + }, u(M.parentId, b.id), r.updateNode(b.id, M); + } + }, { getEdgesByTarget: f } = aw(), d = (_) => { + _.edges.forEach((b) => { + const N = a(b.target); + if (N.parentId) { + const E = f(b.target), M = a(N.parentId); + if (E.length === 0) + r.updateNode(N.id, { + parentId: void 0, + position: { + x: N.position.x + M.position.x, + y: N.position.y + M.position.y + } + }); + else { + let D = !1; + for (let V = 0; V < E.length; V++) { + const A = E[V], O = a(A.source); + if (O.parentId || O.type === "loopNode") { + D = !0; + break; + } + } + D || r.updateNode(N.id, { + parentId: void 0, + position: { + x: N.position.x + M.position.x, + y: N.position.y + M.position.y + } + }); + } + } + }); + }, g = (_, v) => { + console.log("onconnectstart: ", _, v); + }, p = (_) => { + console.log("onconnect: ", _); + }; + var x = cw(), C = X(x); + Id(C); + var $ = z(C, 2); + const m = /* @__PURE__ */ Me(() => ({ + // animated: true, + // label: 'edge label', + markerEnd: { + type: mo.ArrowClosed, + // color: 'red', + width: 20, + height: 20 + } + })); + return Fc($, ut({ nodeTypes: ew }, ei, { + class: "tinyflow-logo", + isValidConnection: l, + onconnectend: c, + onconnectstart: g, + onconnect: p, + connectionRadius: 50, + ondelete: d, + onclick: (_) => { + const v = _.target; + v.classList.contains("svelte-flow__edge-interaction") || v.classList.contains("panel-content") || v.closest(".panel-content") || U(o, !1); + }, + get defaultEdgeOptions() { + return h(m); + }, + $$events: { + drop: s, + dragover: i, + edgeclick: () => { + U(o, !0); + } + }, + children: (_, v) => { + var b = uw(), N = be(b); + td(N, {}); + var E = z(N, 2); + Jc(E, {}); + var M = z(E, 2); + rd(M, {}); + var D = z(M, 2); + { + var V = (A) => { + Ho(A, { + children: (O, R) => { + var S = lw(), T = z(X(S), 4), k = X(T); + $t(k, { + rows: 3, + placeholder: "请输入边条件", + style: "width: 100%", + oninput: (P) => { + } + }), Z(T), Z(S), L(O, S); + }, + $$slots: { default: !0 } + }); + }; + ke(D, (A) => { + h(o) && A(V); + }); + } + L(_, b); + }, + $$slots: { default: !0 } + })), Z(x), L(e, x), fe({ + get onInit() { + return n(); + }, + set onInit(_) { + n(_), y(); + } + }); +} +ae(zd, { onInit: {} }, [], [], !0); +function fw(e, t) { + de(t, !0); + const n = w(t, "options", 7), r = w(t, "onInit", 7), { data: o } = n(); + return ei.init((o == null ? void 0 : o.nodes) || [], (o == null ? void 0 : o.edges) || []), Tr("tinyflow_options", n()), Wc(e, { + fitView: !0, + children: (i, s) => { + zd(i, { + get onInit() { + return r(); + } + }); + }, + $$slots: { default: !0 } + }), fe({ + get options() { + return n(); + }, + set options(i) { + n(i), y(); + }, + get onInit() { + return r(); + }, + set onInit(i) { + r(i), y(); + } + }); +} +customElements.define("tinyflow-component", ae(fw, { options: {}, onInit: {} }, [], [], !1)); +export { + yw as Tinyflow +}; +//# sourceMappingURL=index.js.map diff --git a/web/src/components/Tinyflow/ui/index.umd.js b/web/src/components/Tinyflow/ui/index.umd.js new file mode 100644 index 0000000..baf0ad5 --- /dev/null +++ b/web/src/components/Tinyflow/ui/index.umd.js @@ -0,0 +1,9 @@ +(function(We,Je){typeof exports=="object"&&typeof module<"u"?Je(exports):typeof define=="function"&&define.amd?define(["exports"],Je):(We=typeof globalThis<"u"?globalThis:We||self,Je(We.Tinyflow={}))})(this,function(We){"use strict";var fw=Object.defineProperty;var Rd=We=>{throw TypeError(We)};var gw=(We,Je,ot)=>Je in We?fw(We,Je,{enumerable:!0,configurable:!0,writable:!0,value:ot}):We[Je]=ot;var Nt=(We,Je,ot)=>gw(We,typeof Je!="symbol"?Je+"":Je,ot),ba=(We,Je,ot)=>Je.has(We)||Rd("Cannot "+ot);var ut=(We,Je,ot)=>(ba(We,Je,"read from private field"),ot?ot.call(We):Je.get(We)),wr=(We,Je,ot)=>Je.has(We)?Rd("Cannot add the same private member more than once"):Je instanceof WeakSet?Je.add(We):Je.set(We,ot),zo=(We,Je,ot,Ro)=>(ba(We,Je,"write to private field"),Ro?Ro.call(We,ot):Je.set(We,ot),ot),Bd=(We,Je,ot)=>(ba(We,Je,"access private method"),ot);var Md,or,qr,Lo,Gi,Yd,Zn,jt;const Je="5";typeof window<"u"&&((Md=window.__svelte??(window.__svelte={})).v??(Md.v=new Set)).add(Je);let ot=!1,Ro=!1;function Zd(){ot=!0}Zd();const es=1,ts=2,Ca=4,Xd=8,Fd=16,Wd=1,Kd=2,ka=4,qd=8,Gd=16,$a=1,Ud=2,ns="[",rs="[!",os="]",_r={},Tt=Symbol(),Ea="http://www.w3.org/2000/svg",Sa=!1,Qt=2,Pa=4,Bo=8,is=16,Pn=32,xr=64,Yo=128,Kt=256,Zo=512,yt=1024,Nn=2048,ir=4096,Tn=8192,Xo=16384,jd=32768,br=65536,Jd=1<<17,Qd=1<<19,Na=1<<20,Xn=Symbol("$state"),ss=Symbol("legacy props"),ef=Symbol("");var Gr=Array.isArray,tf=Array.prototype.indexOf,as=Array.from,Fo=Object.keys,Ur=Object.defineProperty,Mn=Object.getOwnPropertyDescriptor,Ta=Object.getOwnPropertyDescriptors,nf=Object.prototype,rf=Array.prototype,ls=Object.getPrototypeOf;function jr(e){return typeof e=="function"}const gt=()=>{};function of(e){return e()}function Jr(e){for(var t=0;t"u"?e=>setTimeout(e,1):requestIdleCallback;let Qr=[],eo=[];function Ma(){var e=Qr;Qr=[],Jr(e)}function Ha(){var e=eo;eo=[],Jr(e)}function to(e){Qr.length===0&&queueMicrotask(Ma),Qr.push(e)}function af(e){eo.length===0&&sf(Ha),eo.push(e)}function Va(){Qr.length>0&&Ma(),eo.length>0&&Ha()}function Da(e){return e===this.v}function us(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function cs(e){return!us(e,this.v)}function lf(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function uf(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function cf(e){throw new Error("https://svelte.dev/e/effect_orphan")}function df(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function ff(){throw new Error("https://svelte.dev/e/hydration_failed")}function gf(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function hf(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function vf(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function pf(){throw new Error("https://svelte.dev/e/state_unsafe_local_read")}function mf(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Mt(e,t){var n={f:0,v:e,reactions:null,equals:Da,rv:0,wv:0};return n}function Fn(e){return Aa(Mt(e))}function no(e,t=!1){var r;const n=Mt(e);return t||(n.equals=cs),ot&&Ye!==null&&Ye.l!==null&&((r=Ye.l).s??(r.s=[])).push(n),n}function re(e,t=!1){return Aa(no(e,t))}function Aa(e){return Qe!==null&&!en&&Qe.f&Qt&&(mn===null?_f([e]):mn.push(e)),e}function U(e,t){return Qe!==null&&!en&&ni()&&Qe.f&(Qt|is)&&(mn===null||!mn.includes(e))&&mf(),ds(e,t)}function ds(e,t){return e.equals(t)||(e.v,e.v=t,e.wv=Wa(),Oa(e,Nn),ni()&&Ke!==null&&Ke.f&yt&&!(Ke.f&(Pn|xr))&&(Vn===null?xf([e]):Vn.push(e))),t}function La(e,t=1){var n=h(e),r=t===1?n++:n--;return U(e,n),r}function Oa(e,t){var n=e.reactions;if(n!==null)for(var r=ni(),o=n.length,i=0;i=$.v&&U($,m+1)}Ra(s)}return!0},ownKeys(l){h(s);var u=Reflect.ownKeys(l).filter(d=>{var g=o.get(d);return g===void 0||g.v!==Tt});for(var[c,f]of o)f.v!==Tt&&!(c in l)&&u.push(c);return u},setPrototypeOf(){vf()}})}function Ra(e,t=1){U(e,e.v+t)}var Vt,Ba,Ya,Za;function gs(){if(Vt===void 0){Vt=window,Ba=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype;Ya=Mn(t,"firstChild").get,Za=Mn(t,"nextSibling").get,e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__styles=null,e.__e=void 0,Text.prototype.__t=void 0}}function Hn(e=""){return document.createTextNode(e)}function Ct(e){return Ya.call(e)}function pn(e){return Za.call(e)}function X(e,t){if(!Se)return Ct(e);var n=Ct(Ve);if(n===null)n=Ve.appendChild(Hn());else if(t&&n.nodeType!==3){var r=Hn();return n==null||n.before(r),bt(r),r}return bt(n),n}function xe(e,t){if(!Se){var n=Ct(e);return n instanceof Comment&&n.data===""?pn(n):n}return Ve}function z(e,t=1,n=!1){let r=Se?Ve:e;for(var o;t--;)o=r,r=pn(r);if(!Se)return r;var i=r==null?void 0:r.nodeType;if(n&&i!==3){var s=Hn();return r===null?o==null||o.after(s):r.before(s),bt(s),s}return bt(r),r}function hs(e){e.textContent=""}let Ko=!1,qo=!1,Go=null,sr=!1,vs=!1;function Xa(e){vs=e}let ro=[],hw=[],Qe=null,en=!1;function Wn(e){Qe=e}let Ke=null;function Kn(e){Ke=e}let mn=null;function _f(e){mn=e}let kt=null,zt=0,Vn=null;function xf(e){Vn=e}let Fa=1,Uo=0,qn=!1;function Wa(){return++Fa}function Cr(e){var f;var t=e.f;if(t&Nn)return!0;if(t&ir){var n=e.deps,r=(t&Kt)!==0;if(n!==null){var o,i,s=(t&Zo)!==0,a=r&&Ke!==null&&!qn,l=n.length;if(s||a){var u=e,c=u.parent;for(o=0;oe.wv)return!0}(!r||Ke!==null&&!qn)&&tn(e,yt)}return!1}function bf(e,t){for(var n=t;n!==null;){if(n.f&Yo)try{n.fn(e);return}catch{n.f^=Yo}n=n.parent}throw Ko=!1,e}function Cf(e){return(e.f&Xo)===0&&(e.parent===null||(e.parent.f&Yo)===0)}function jo(e,t,n,r){if(Ko){if(n===null&&(Ko=!1),Cf(t))throw e;return}n!==null&&(Ko=!0);{bf(e,t);return}}function Ka(e,t,n=!0){var r=e.reactions;if(r!==null)for(var o=0;o0)for(f.length=zt+kt.length,d=0;d0;){t++>1e3&&$f();var n=ro,r=n.length;ro=[];for(var o=0;o0;)qo=!0,Ga(),Va();return t}function h(e){var t=e.f,n=(t&Qt)!==0;if(Qe!==null&&!en){mn!==null&&mn.includes(e)&&pf();var r=Qe.deps;e.rv{qt(t)}}function Hf(e){const t=ar(xr,e,!0);return(n={})=>new Promise(r=>{n.outro?Er(t,()=>{qt(t),r(void 0)}):(qt(t),r(void 0))})}function Rt(e){return ar(Pa,e,!1)}function ge(e,t){var n=Ye,r={effect:null,ran:!1};n.l.r1.push(r),r.effect=$r(()=>{e(),!r.ran&&(r.ran=!0,U(n.l.r2,!0),yn(t))})}function vt(){var e=Ye;$r(()=>{if(h(e.l.r2)){for(var t of e.l.r1){var n=t.effect;n.f&yt&&tn(n,ir),Cr(n)&&Qo(n),t.ran=!1}e.l.r2.v=!1}})}function $r(e){return ar(Bo,e,!0)}function Ee(e,t=[],n=Ne){const r=t.map(n);return lr(()=>e(...r.map(h)))}function lr(e,t=0){return ar(Bo|is|t,e,!0)}function Dn(e,t=!0){return ar(Bo|Pn,e,!0,t)}function Ja(e){var t=e.teardown;if(t!==null){const n=vs,r=Qe;Xa(!0),Wn(null);try{t.call(null)}finally{Xa(n),Wn(r)}}}function Qa(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){var r=n.next;qt(n,t),n=r}}function Vf(e){for(var t=e.first;t!==null;){var n=t.next;t.f&Pn||qt(t),t=n}}function qt(e,t=!0){var n=!1;if((t||e.f&Qd)&&e.nodes_start!==null){for(var r=e.nodes_start,o=e.nodes_end;r!==null;){var i=r===o?null:pn(r);r.remove(),r=i}n=!0}Qa(e,t&&!n),Jo(e,0),tn(e,Xo);var s=e.transitions;if(s!==null)for(const l of s)l.stop();Ja(e);var a=e.parent;a!==null&&a.first!==null&&el(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=null}function el(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Er(e,t){var n=[];ms(e,n,!0),tl(n,()=>{qt(e),t&&t()})}function tl(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var o of e)o.out(r)}else t()}function ms(e,t,n){if(!(e.f&Tn)){if(e.f^=Tn,e.transitions!==null)for(const s of e.transitions)(s.is_global||n)&&t.push(s);for(var r=e.first;r!==null;){var o=r.next,i=(r.f&br)!==0||(r.f&Pn)!==0;ms(r,t,i?n:!1),r=o}}}function oo(e){nl(e,!0)}function nl(e,t){if(e.f&Tn){e.f^=Tn,e.f&yt||(e.f^=yt),Cr(e)&&(tn(e,Nn),ei(e));for(var n=e.first;n!==null;){var r=n.next,o=(n.f&br)!==0||(n.f&Pn)!==0;nl(n,o?t:!1),n=r}if(e.transitions!==null)for(const i of e.transitions)(i.is_global||t)&&i.in()}}function ti(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}let Ye=null;function rl(e){Ye=e}function ur(e){return ys().get(e)}function Sr(e,t){return ys().set(e,t),t}function Df(e){return ys().has(e)}function ue(e,t=!1,n){Ye={p:Ye,c:null,e:null,m:!1,s:e,x:null,l:null},ot&&!t&&(Ye.l={s:null,u:null,r1:[],r2:Mt(!1)})}function ce(e){const t=Ye;if(t!==null){e!==void 0&&(t.x=e);const s=t.e;if(s!==null){var n=Ke,r=Qe;t.e=null;try{for(var o=0;o{document.activeElement===n&&e.focus()})}}function Wf(e){Se&&Ct(e)!==null&&hs(e)}let ol=!1;function Kf(){ol||(ol=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const n of e.target.elements)(t=n.__on_r)==null||t.call(n)})},{capture:!0}))}function qf(e){var t=Qe,n=Ke;Wn(null),Kn(null);try{return e()}finally{Wn(t),Kn(n)}}const il=new Set,ws=new Set;function sl(e,t,n,r={}){function o(i){if(r.capture||io.call(t,i),!i.cancelBubble)return qf(()=>n==null?void 0:n.call(this,i))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?to(()=>{t.addEventListener(e,o,r)}):t.addEventListener(e,o,r),o}function Ze(e,t,n,r,o){var i={capture:r,passive:o},s=sl(e,t,n,i);(t===document.body||t===window||t===document)&&ja(()=>{t.removeEventListener(e,s,i)})}function ri(e){for(var t=0;t{throw _});throw d}}finally{e.__root=t,delete e.currentTarget,Wn(c),Kn(f)}}}function _s(e){var t=document.createElement("template");return t.innerHTML=e,t.content}function Dt(e,t){var n=Ke;n.nodes_start===null&&(n.nodes_start=e,n.nodes_end=t)}function ne(e,t){var n=(t&$a)!==0,r=(t&Ud)!==0,o,i=!e.startsWith("");return()=>{if(Se)return Dt(Ve,null),Ve;o===void 0&&(o=_s(i?e:""+e),n||(o=Ct(o)));var s=r||Ba?document.importNode(o,!0):o.cloneNode(!0);if(n){var a=Ct(s),l=s.lastChild;Dt(a,l)}else Dt(s,s);return s}}function _e(e,t,n="svg"){var r=!e.startsWith(""),o=(t&$a)!==0,i=`<${n}>${r?e:""+e}`,s;return()=>{if(Se)return Dt(Ve,null),Ve;if(!s){var a=_s(i),l=Ct(a);if(o)for(s=document.createDocumentFragment();Ct(l);)s.appendChild(Ct(l));else s=Ct(l)}var u=s.cloneNode(!0);if(o){var c=Ct(u),f=u.lastChild;Dt(c,f)}else Dt(u,u);return u}}function Ae(e=""){if(!Se){var t=Hn(e+"");return Dt(t,t),t}var n=Ve;return n.nodeType!==3&&(n.before(n=Hn()),bt(n)),Dt(n,n),n}function tt(){if(Se)return Dt(Ve,null),Ve;var e=document.createDocumentFragment(),t=document.createComment(""),n=Hn();return e.append(t,n),Dt(t,n),e}function L(e,t){if(Se){Ke.nodes_end=Ve,vn();return}e!==null&&e.before(t)}function Bt(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=n+"")}function al(e,t){return ll(e,t)}function Gf(e,t){gs(),t.intro=t.intro??!1;const n=t.target,r=Se,o=Ve;try{for(var i=Ct(n);i&&(i.nodeType!==8||i.data!==ns);)i=pn(i);if(!i)throw _r;It(!0),bt(i),vn();const s=ll(e,{...t,anchor:i});if(Ve===null||Ve.nodeType!==8||Ve.data!==os)throw Wo(),_r;return It(!1),s}catch(s){if(s===_r)return t.recover===!1&&ff(),gs(),hs(n),It(!1),al(e,t);throw s}finally{It(r),bt(o)}}const Pr=new Map;function ll(e,{target:t,anchor:n,props:r={},events:o,context:i,intro:s=!0}){gs();var a=new Set,l=f=>{for(var d=0;d{var f=n??t.appendChild(Hn());return Dn(()=>{if(i){ue({});var d=Ye;d.c=i}o&&(r.$$events=o),Se&&Dt(f,null),u=e(f,r)||{},Se&&(Ke.nodes_end=Ve),i&&ce()}),()=>{var p;for(var d of a){t.removeEventListener(d,io);var g=Pr.get(d);--g===0?(document.removeEventListener(d,io),Pr.delete(d)):Pr.set(d,g)}ws.delete(l),f!==n&&((p=f.parentNode)==null||p.removeChild(f))}});return xs.set(u,c),u}let xs=new WeakMap;function Uf(e,t){const n=xs.get(e);return n?(xs.delete(e),n(t)):Promise.resolve()}function ke(e,t,[n,r]=[0,0]){Se&&n===0&&vn();var o=e,i=null,s=null,a=Tt,l=n>0?br:0,u=!1;const c=(d,g=!0)=>{u=!0,f(g,d)},f=(d,g)=>{if(a===(a=d))return;let p=!1;if(Se&&r!==-1){if(n===0){const C=o.data;C===ns?r=0:C===rs?r=1/0:(r=parseInt(C.substring(1)),r!==r&&(r=a?1/0:-1))}const x=r>n;!!a===x&&(o=fs(),bt(o),It(!1),p=!0,r=-1)}a?(i?oo(i):g&&(i=Dn(()=>g(o))),s&&Er(s,()=>{s=null})):(s?oo(s):g&&(s=Dn(()=>g(o,[n+1,r]))),i&&Er(i,()=>{i=null})),p&&It(!0)};lr(()=>{u=!1,t(c),u||f(null,null)},l),Se&&(o=Ve)}function oi(e,t){return t}function jf(e,t,n,r){for(var o=[],i=t.length,s=0;s0&&o.length===0&&n!==null;if(a){var l=n.parentNode;hs(l),l.append(n),r.clear(),Gn(e,t[0].prev,t[i-1].next)}tl(o,()=>{for(var u=0;u{var g=n();return Gr(g)?g:g==null?[]:as(g)});lr(()=>{var g=h(d),p=g.length;if(f&&p===0)return;f=p===0;let x=!1;if(Se){var C=s.data===rs;C!==(p===0)&&(s=fs(),bt(s),It(!1),x=!0)}if(Se){for(var $=null,m,_=0;_0&&bt(fs())}Se||Jf(g,a,s,o,t,r,n),i!==null&&(p===0?c?oo(c):c=Dn(()=>i(s)):c!==null&&Er(c,()=>{c=null})),x&&It(!0),h(d)}),Se&&(s=Ve)}function Jf(e,t,n,r,o,i,s){var S,M,k,P;var a=(o&Xd)!==0,l=(o&(es|ts))!==0,u=e.length,c=t.items,f=t.first,d=f,g,p=null,x,C=[],$=[],m,_,v,b;if(a)for(b=0;b0){var R=o&Ca&&u===0?n:null;if(a){for(b=0;b{var H;if(x!==void 0)for(v of x)(H=v.a)==null||H.apply()}),Ke.first=t.first&&t.first.e,Ke.last=p&&p.e}function Qf(e,t,n,r){r&es&&ds(e.v,t),r&ts?ds(e.i,n):e.i=n}function ul(e,t,n,r,o,i,s,a,l,u){var c=(l&es)!==0,f=(l&Fd)===0,d=c?f?no(o):Mt(o):o,g=l&ts?Mt(s):s,p={i:g,v:d,k:i,a:null,e:null,prev:n,next:r};try{return p.e=Dn(()=>a(e,d,g,u),Se),p.e.prev=n&&n.e,p.e.next=r&&r.e,n===null?t.first=p:(n.next=p,n.e.next=p.e),r!==null&&(r.prev=p,r.e.prev=p.e),p}finally{}}function cl(e,t,n){for(var r=e.next?e.next.e.nodes_start:n,o=t?t.e.nodes_start:n,i=e.e.nodes_start;i!==r;){var s=pn(i);o.before(i),i=s}}function Gn(e,t,n){t===null?e.first=n:(t.next=n,t.e.next=n&&n.e),n!==null&&(n.prev=t,n.e.prev=t&&t.e)}function dl(e,t,n,r,o){var i=e,s="",a;lr(()=>{if(s===(s=t()??"")){Se&&vn();return}a!==void 0&&(qt(a),a=void 0),s!==""&&(a=Dn(()=>{if(Se){Ve.data;for(var l=vn(),u=l;l!==null&&(l.nodeType!==8||l.data!=="");)u=l,l=pn(l);if(l===null)throw Wo(),_r;Dt(Ve,u),i=bt(l);return}var c=s+"",f=_s(c);Dt(Ct(f),f.lastChild),i.before(f)}))})}function wt(e,t,n,r,o){var a;Se&&vn();var i=(a=t.$$slots)==null?void 0:a[n],s=!1;i===!0&&(i=t[n==="default"?"children":n],s=!0),i===void 0||i(e,s?()=>r:r)}function e1(e){const t={};e.children&&(t.default=!0);for(const n in e.$$slots)t[n]=!0;return t}function cr(e,t,...n){var r=e,o=gt,i;lr(()=>{o!==(o=t())&&(i&&(qt(i),i=null),i=Dn(()=>o(r,...n)))},br),Se&&(r=Ve)}function fl(e,t,n){Se&&vn();var r=e,o,i;lr(()=>{o!==(o=t())&&(i&&(Er(i),i=null),o&&(i=Dn(()=>n(r,o))))},br),Se&&(r=Ve)}function t1(e,t,n,r,o,i){let s=Se;Se&&vn();var a,l,u=null;Se&&Ve.nodeType===1&&(u=Ve,vn());var c=Se?Ve:e,f;lr(()=>{const d=t()||null;var g=d==="svg"?Ea:null;d!==a&&(f&&(d===null?Er(f,()=>{f=null,l=null}):d===l?oo(f):qt(f)),d&&d!==l&&(f=Dn(()=>{if(u=Se?u:g?document.createElementNS(g,d):document.createElement(d),Dt(u,u),r){Se&&Xf(d)&&u.append(document.createComment(""));var p=Se?Ct(u):u.appendChild(Hn());Se&&(p===null?It(!1):bt(p)),r(u,p)}Ke.nodes_end=u,c.before(u)})),a=d,a&&(l=a))},br),s&&(It(!0),bt(c))}function et(e,t){to(()=>{var n=e.getRootNode(),r=n.host?n:n.head??n.ownerDocument.head;if(!r.querySelector("#"+t.hash)){const o=document.createElement("style");o.id=t.hash,o.textContent=t.code,r.appendChild(o)}})}function _t(e,t,n){Rt(()=>{var r=yn(()=>t(e,n==null?void 0:n())||{});if(n&&(r!=null&&r.update)){var o=!1,i={};$r(()=>{var s=n();j(s),o&&us(i,s)&&(i=s,r.update(s))}),o=!0}if(r!=null&&r.destroy)return()=>r.destroy()})}function gl(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t=0;){var a=s+i;(s===0||hl.includes(r[s-1]))&&(a===r.length||hl.includes(r[a]))?r=(s===0?"":r.substring(0,s))+r.substring(a+1):s=a}}return r===""?null:r}function $t(e,t,n,r,o,i){var s=e.__className;if(Se||s!==n){var a=r1(n,r,i);(!Se||a!==e.getAttribute("class"))&&(a==null?e.removeAttribute("class"):t?e.className=a:e.setAttribute("class",a)),e.__className=n}else if(i)for(var l in i){var u=!!i[l];(o==null||u!==!!o[l])&&e.classList.toggle(l,u)}return i}const so=Symbol("class");function ao(e){if(Se){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var r=e.value;de(e,"value",null),e.value=r}if(e.hasAttribute("checked")){var o=e.checked;de(e,"checked",null),e.checked=o}}};e.__on_r=n,af(n),Kf()}}function bs(e,t){var n=e.__attributes??(e.__attributes={});n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!=="PROGRESS")||(e.value=t??"")}function o1(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function de(e,t,n,r){var o=e.__attributes??(e.__attributes={});Se&&(o[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||o[t]!==(o[t]=n)&&(t==="style"&&"__styles"in e&&(e.__styles={}),t==="loading"&&(e[ef]=n),n==null?e.removeAttribute(t):typeof n!="string"&&pl(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function nn(e,t,n,r,o=!1,i=!1,s=!1){let a=Se&&i;a&&It(!1);var l=t||{},u=e.tagName==="OPTION";for(var c in t)c in n||(n[c]=null);n.class?n.class=wn(n.class):(r||n[so])&&(n.class=null);var f=pl(e),d=e.__attributes??(e.__attributes={});for(const _ in n){let v=n[_];if(u&&_==="value"&&v==null){e.value=e.__value="",l[_]=v;continue}if(_==="class"){var g=e.namespaceURI==="http://www.w3.org/1999/xhtml";$t(e,g,v,r,t==null?void 0:t[so],n[so]),l[_]=v,l[so]=n[so];continue}var p=l[_];if(v!==p){l[_]=v;var x=_[0]+_[1];if(x!=="$$"){if(x==="on"){const b={},N="$$"+_;let E=_.slice(2);var C=If(E);if(Lf(E)&&(E=E.slice(0,-7),b.capture=!0),!C&&p){if(v!=null)continue;e.removeEventListener(E,l[N],b),l[N]=null}if(v!=null)if(C)e[`__${E}`]=v,ri([E]);else{let T=function(D){l[_].call(this,D)};l[N]=sl(E,e,T,b)}else C&&(e[`__${E}`]=void 0)}else if(_==="style"&&v!=null)e.style.cssText=v+"";else if(_==="autofocus")Ff(e,!!v);else if(!i&&(_==="__value"||_==="value"&&v!=null))e.value=e.__value=v;else if(_==="selected"&&u)o1(e,v);else{var $=_;o||($=Rf($));var m=$==="defaultValue"||$==="defaultChecked";if(v==null&&!i&&!m)if(d[_]=null,$==="value"||$==="checked"){let b=e;const N=t===void 0;if($==="value"){let E=b.defaultValue;b.removeAttribute($),b.defaultValue=E,b.value=b.__value=N?E:null}else{let E=b.defaultChecked;b.removeAttribute($),b.defaultChecked=E,b.checked=N?E:!1}}else e.removeAttribute(_);else m||f.includes($)&&(i||typeof v!="string")?e[$]=v:typeof v!="function"&&de(e,$,v)}_==="style"&&"__styles"in e&&(e.__styles={})}}}return a&&It(!0),l}var vl=new Map;function pl(e){var t=vl.get(e.nodeName);if(t)return t;vl.set(e.nodeName,t=[]);for(var n,r=e,o=Element.prototype;o!==r;){n=Ta(r);for(var i in n)n[i].set&&t.push(i);r=ls(r)}return t}function at(e,t,n,r){var o=e.__styles??(e.__styles={});o[t]!==n&&(o[t]=n,n==null?e.style.removeProperty(t):e.style.setProperty(t,n,""))}const Ui=class Ui{constructor(t){wr(this,Gi);wr(this,or,new WeakMap);wr(this,qr);wr(this,Lo);zo(this,Lo,t)}observe(t,n){var r=ut(this,or).get(t)||new Set;return r.add(n),ut(this,or).set(t,r),Bd(this,Gi,Yd).call(this).observe(t,ut(this,Lo)),()=>{var o=ut(this,or).get(t);o.delete(n),o.size===0&&(ut(this,or).delete(t),ut(this,qr).unobserve(t))}}};or=new WeakMap,qr=new WeakMap,Lo=new WeakMap,Gi=new WeakSet,Yd=function(){return ut(this,qr)??zo(this,qr,new ResizeObserver(t=>{for(var n of t){Ui.entries.set(n.target,n);for(var r of ut(this,or).get(n.target)||[])r(n)}}))},Nt(Ui,"entries",new WeakMap);let Cs=Ui;var i1=new Cs({box:"border-box"});function ml(e,t,n){var r=i1.observe(e,()=>n(e[t]));Rt(()=>(yn(()=>n(e[t])),r))}function yl(e,t){return e===t||(e==null?void 0:e[Xn])===t}function An(e={},t,n,r){return Rt(()=>{var o,i;return $r(()=>{o=i,i=[],yn(()=>{e!==n(...i)&&(t(e,...i),o&&yl(n(...o),e)&&t(null,...o))})}),()=>{to(()=>{i&&yl(n(...i),e)&&t(null,...i)})}}),e}function ks(e){return function(...t){var n=t[0];return n.stopPropagation(),e==null?void 0:e.apply(this,t)}}function He(e=!1){const t=Ye,n=t.l.u;if(!n)return;let r=()=>j(t.s);if(e){let o=0,i={};const s=Ne(()=>{let a=!1;const l=t.s;for(const u in l)l[u]!==i[u]&&(i[u]=l[u],a=!0);return a&&o++,o});r=()=>h(s)}n.b.length&&Tf(()=>{wl(t,r),Jr(n.b)}),kr(()=>{const o=yn(()=>n.m.map(of));return()=>{for(const i of o)typeof i=="function"&&i()}}),n.a.length&&kr(()=>{wl(t,r),Jr(n.a)})}function wl(e,t){if(e.l.s)for(const n of e.l.s)h(n);t()}function De(e,t){var i;var n=(i=e.$$events)==null?void 0:i[t.type],r=Gr(n)?n.slice():n==null?[]:[n];for(var o of r)o.call(this,t)}function rn(e){Ye===null&&ti(),ot&&Ye.l!==null?a1(Ye).m.push(e):kr(()=>{const t=yn(e);if(typeof t=="function")return t})}function $s(e){Ye===null&&ti(),rn(()=>()=>yn(e))}function s1(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function ii(){const e=Ye;return e===null&&ti(),(t,n,r)=>{var i;const o=(i=e.s.$$events)==null?void 0:i[t];if(o){const s=Gr(o)?o.slice():[o],a=s1(t,n,r);for(const l of s)l.call(e.x,a);return!a.defaultPrevented}return!0}}function a1(e){var t=e.l;return t.u??(t.u={a:[],b:[],m:[]})}function Es(e,t,n){if(e==null)return t(void 0),n&&n(void 0),gt;const r=yn(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const Nr=[];function Gt(e,t){return{subscribe:we(e,t).subscribe}}function we(e,t=gt){let n=null;const r=new Set;function o(a){if(us(e,a)&&(e=a,n)){const l=!Nr.length;for(const u of r)u[1](),Nr.push(u,e);if(l){for(let u=0;u{r.delete(u),r.size===0&&n&&(n(),n=null)}}return{set:o,update:i,subscribe:s}}function Un(e,t,n){const r=!Array.isArray(e),o=r?[e]:e;if(!o.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return Gt(n,(s,a)=>{let l=!1;const u=[];let c=0,f=gt;const d=()=>{if(c)return;f();const p=t(r?u[0]:u,s,a);i?s(p):f=typeof p=="function"?p:gt},g=o.map((p,x)=>Es(p,C=>{u[x]=C,c&=~(1<{c|=1<t=n)(),t}let si=!1,Ss=Symbol();function Q(e,t,n){const r=n[t]??(n[t]={store:null,source:no(void 0),unsubscribe:gt});if(r.store!==e&&!(Ss in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=gt;else{var o=!0;r.unsubscribe=Es(e,i=>{o?r.source.v=i:U(r.source,i)}),o=!1}return e&&Ss in n?q(e):h(r.source)}function l1(e,t,n){let r=n[t];return r&&r.store!==e&&(r.unsubscribe(),r.unsubscribe=gt),e}function ai(e,t){return e.set(t),t}function nt(){const e={};function t(){ja(()=>{for(var n in e)e[n].unsubscribe();Ur(e,Ss,{enumerable:!1,value:!0})})}return[e,t]}function u1(e){var t=si;try{return si=!1,[e(),si]}finally{si=t}}const c1={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function xt(e,t,n){return new Proxy({props:e,exclude:t},c1)}const d1={get(e,t){if(!e.exclude.includes(t))return h(e.version),t in e.special?e.special[t]():e.props[t]},set(e,t,n){return t in e.special||(e.special[t]=w({get[t](){return e.props[t]}},t,ka)),e.special[t](n),La(e.version),!0},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},deleteProperty(e,t){return e.exclude.includes(t)||(e.exclude.push(t),La(e.version)),!0},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function it(e,t){return new Proxy({props:e,exclude:t,special:{},version:Mt(0)},d1)}const f1={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(jr(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let o=e.props[r];jr(o)&&(o=o());const i=Mn(o,t);if(i&&i.set)return i.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(jr(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r){const o=Mn(r,t);return o&&!o.configurable&&(o.configurable=!0),o}}},has(e,t){if(t===Xn||t===ss)return!1;for(let n of e.props)if(jr(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){const t=[];for(let n of e.props){jr(n)&&(n=n());for(const r in n)t.includes(r)||t.push(r)}return t}};function ft(...e){return new Proxy({props:e},f1)}function w(e,t,n,r){var N;var o=(n&Wd)!==0,i=!ot||(n&Kd)!==0,s=(n&qd)!==0,a=(n&Gd)!==0,l=!1,u;s?[u,l]=u1(()=>e[t]):u=e[t];var c=Xn in e||ss in e,f=s&&(((N=Mn(e,t))==null?void 0:N.set)??(c&&t in e&&(E=>e[t]=E)))||void 0,d=r,g=!0,p=!1,x=()=>(p=!0,g&&(g=!1,a?d=yn(r):d=r),d);u===void 0&&r!==void 0&&(f&&i&&gf(),u=x(),f&&f(u));var C;if(i)C=()=>{var E=e[t];return E===void 0?x():(g=!0,p=!1,E)};else{var $=(o?Ne:ve)(()=>e[t]);$.f|=Jd,C=()=>{var E=h($);return E!==void 0&&(d=void 0),E===void 0?d:E}}if(!(n&ka))return C;if(f){var m=e.$$legacy;return function(E,T){return arguments.length>0?((!i||!T||m||l)&&f(T?C():E),E):C()}}var _=!1,v=no(u),b=Ne(()=>{var E=C(),T=h(v);return _?(_=!1,T):v.v=E});return o||(b.equals=cs),function(E,T){if(arguments.length>0){const D=T?h(b):i&&s?Ht(E):E;return b.equals(D)||(_=!0,U(v,D),p&&d!==void 0&&(d=D),yn(()=>h(b))),E}return h(b)}}function g1(e){return new h1(e)}class h1{constructor(t){wr(this,Zn);wr(this,jt);var i;var n=new Map,r=(s,a)=>{var l=no(a);return n.set(s,l),l};const o=new Proxy({...t.props||{},$$events:{}},{get(s,a){return h(n.get(a)??r(a,Reflect.get(s,a)))},has(s,a){return a===ss?!0:(h(n.get(a)??r(a,Reflect.get(s,a))),Reflect.has(s,a))},set(s,a,l){return U(n.get(a)??r(a,l),l),Reflect.set(s,a,l)}});zo(this,jt,(t.hydrate?Gf:al)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&y(),zo(this,Zn,o.$$events);for(const s of Object.keys(ut(this,jt)))s==="$set"||s==="$destroy"||s==="$on"||Ur(this,s,{get(){return ut(this,jt)[s]},set(a){ut(this,jt)[s]=a},enumerable:!0});ut(this,jt).$set=s=>{Object.assign(o,s)},ut(this,jt).$destroy=()=>{Uf(ut(this,jt))}}$set(t){ut(this,jt).$set(t)}$on(t,n){ut(this,Zn)[t]=ut(this,Zn)[t]||[];const r=(...o)=>n.call(this,...o);return ut(this,Zn)[t].push(r),()=>{ut(this,Zn)[t]=ut(this,Zn)[t].filter(o=>o!==r)}}$destroy(){ut(this,jt).$destroy()}}Zn=new WeakMap,jt=new WeakMap;let _l;typeof HTMLElement=="function"&&(_l=class extends HTMLElement{constructor(t,n,r){super();Nt(this,"$$ctor");Nt(this,"$$s");Nt(this,"$$c");Nt(this,"$$cn",!1);Nt(this,"$$d",{});Nt(this,"$$r",!1);Nt(this,"$$p_d",{});Nt(this,"$$l",{});Nt(this,"$$l_u",new Map);Nt(this,"$$me");this.$$ctor=t,this.$$s=n,r&&this.attachShadow({mode:"open"})}addEventListener(t,n,r){if(this.$$l[t]=this.$$l[t]||[],this.$$l[t].push(n),this.$$c){const o=this.$$c.$on(t,n);this.$$l_u.set(n,o)}super.addEventListener(t,n,r)}removeEventListener(t,n,r){if(super.removeEventListener(t,n,r),this.$$c){const o=this.$$l_u.get(n);o&&(o(),this.$$l_u.delete(n))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(o){return i=>{const s=document.createElement("slot");o!=="default"&&(s.name=o),L(i,s)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const n={},r=v1(this);for(const o of this.$$s)o in r&&(o==="default"&&!this.$$d.children?(this.$$d.children=t(o),n.default=!0):n[o]=t(o));for(const o of this.attributes){const i=this.$$g_p(o.name);i in this.$$d||(this.$$d[i]=li(i,o.value,this.$$p_d,"toProp"))}for(const o in this.$$p_d)!(o in this.$$d)&&this[o]!==void 0&&(this.$$d[o]=this[o],delete this[o]);this.$$c=g1({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:n,$$host:this}}),this.$$me=Mf(()=>{$r(()=>{var o;this.$$r=!0;for(const i of Fo(this.$$c)){if(!((o=this.$$p_d[i])!=null&&o.reflect))continue;this.$$d[i]=this.$$c[i];const s=li(i,this.$$d[i],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[i].attribute||i):this.setAttribute(this.$$p_d[i].attribute||i,s)}this.$$r=!1})});for(const o in this.$$l)for(const i of this.$$l[o]){const s=this.$$c.$on(o,i);this.$$l_u.set(i,s)}this.$$l={}}}attributeChangedCallback(t,n,r){var o;this.$$r||(t=this.$$g_p(t),this.$$d[t]=li(t,r,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[t]:this.$$d[t]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(t){return Fo(this.$$p_d).find(n=>this.$$p_d[n].attribute===t||!this.$$p_d[n].attribute&&n.toLowerCase()===t)||t}});function li(e,t,n,r){var i;const o=(i=n[e])==null?void 0:i.type;if(t=o==="Boolean"&&typeof t!="boolean"?t!=null:t,!r||!n[e])return t;if(r==="toAttribute")switch(o){case"Object":case"Array":return t==null?null:JSON.stringify(t);case"Boolean":return t?"":null;case"Number":return t??null;default:return t}else switch(o){case"Object":case"Array":return t&&JSON.parse(t);case"Boolean":return t;case"Number":return t!=null?+t:t;default:return t}}function v1(e){const t={};return e.childNodes.forEach(n=>{t[n.slot||"default"]=!0}),t}function ie(e,t,n,r,o,i){let s=class extends _l{constructor(){super(e,n,o),this.$$p_d=t}static get observedAttributes(){return Fo(t).map(a=>(t[a].attribute||a).toLowerCase())}};return Fo(t).forEach(a=>{Ur(s.prototype,a,{get(){return this.$$c&&a in this.$$c?this.$$c[a]:this.$$d[a]},set(l){var f;l=li(a,l,t),this.$$d[a]=l;var u=this.$$c;if(u){var c=(f=Mn(u,a))==null?void 0:f.get;c?u[a]=l:u.$set({[a]:l})}}})}),r.forEach(a=>{Ur(s.prototype,a,{get(){var l;return(l=this.$$c)==null?void 0:l[a]}})}),e.element=s,s}function Et(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n{}};function ui(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}ci.prototype=ui.prototype={constructor:ci,on:function(e,t){var n=this._,r=m1(e+"",n),o,i=-1,s=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(o),r=0,o,i;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),bl.hasOwnProperty(t)?{space:bl[t],local:e}:e}function w1(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ps&&t.documentElement.namespaceURI===Ps?t.createElement(e):t.createElementNS(n,e)}}function _1(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Cl(e){var t=di(e);return(t.local?_1:w1)(t)}function x1(){}function Ns(e){return e==null?x1:function(){return this.querySelector(e)}}function b1(e){typeof e!="function"&&(e=Ns(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=_&&(_=m+1);!(b=C[_])&&++_=0;)(s=r[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function K1(e){e||(e=q1);function t(f,d){return f&&d?e(f.__data__,d.__data__):!f-!d}for(var n=this._groups,r=n.length,o=new Array(r),i=0;it?1:e>=t?0:NaN}function G1(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function U1(){return Array.from(this)}function j1(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?lg:typeof t=="function"?cg:ug)(e,t,n??"")):Tr(this.node(),e)}function Tr(e,t){return e.style.getPropertyValue(t)||Pl(e).getComputedStyle(e,null).getPropertyValue(t)}function fg(e){return function(){delete this[e]}}function gg(e,t){return function(){this[e]=t}}function hg(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function vg(e,t){return arguments.length>1?this.each((t==null?fg:typeof t=="function"?hg:gg)(e,t)):this.node()[e]}function Nl(e){return e.trim().split(/^|\s+/)}function Ts(e){return e.classList||new Tl(e)}function Tl(e){this._node=e,this._names=Nl(e.getAttribute("class")||"")}Tl.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function Ml(e,t){for(var n=Ts(e),r=-1,o=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Zg(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,i;n()=>e;function Hs(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:i,x:s,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}Hs.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Qg(e){return!e.ctrlKey&&!e.button}function eh(){return this.parentNode}function th(e,t){return t??{x:e.x,y:e.y}}function nh(){return navigator.maxTouchPoints||"ontouchstart"in this}function rh(){var e=Qg,t=eh,n=th,r=nh,o={},i=ui("start","drag","end"),s=0,a,l,u,c,f=0;function d(v){v.on("mousedown.drag",g).filter(r).on("touchstart.drag",C).on("touchmove.drag",$,Jg).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(v,b){if(!(c||!e.call(this,v,b))){var N=_(this,t.call(this,v,b),v,b,"mouse");N&&(Ut(v.view).on("mousemove.drag",p,uo).on("mouseup.drag",x,uo),Al(v.view),Ms(v),u=!1,a=v.clientX,l=v.clientY,N("start",v))}}function p(v){if(Mr(v),!u){var b=v.clientX-a,N=v.clientY-l;u=b*b+N*N>f}o.mouse("drag",v)}function x(v){Ut(v.view).on("mousemove.drag mouseup.drag",null),Ll(v.view,u),Mr(v),o.mouse("end",v)}function C(v,b){if(e.call(this,v,b)){var N=v.changedTouches,E=t.call(this,v,b),T=N.length,D,V;for(D=0;D>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?vi(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?vi(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=ih.exec(e))?new At(t[1],t[2],t[3],1):(t=sh.exec(e))?new At(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ah.exec(e))?vi(t[1],t[2],t[3],t[4]):(t=lh.exec(e))?vi(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=uh.exec(e))?Xl(t[1],t[2]/100,t[3]/100,1):(t=ch.exec(e))?Xl(t[1],t[2]/100,t[3]/100,t[4]):Il.hasOwnProperty(e)?Bl(Il[e]):e==="transparent"?new At(NaN,NaN,NaN,0):null}function Bl(e){return new At(e>>16&255,e>>8&255,e&255,1)}function vi(e,t,n,r){return r<=0&&(e=t=n=NaN),new At(e,t,n,r)}function gh(e){return e instanceof co||(e=ho(e)),e?(e=e.rgb(),new At(e.r,e.g,e.b,e.opacity)):new At}function Ds(e,t,n,r){return arguments.length===1?gh(e):new At(e,t,n,r??1)}function At(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Vs(At,Ds,Ol(co,{brighter(e){return e=e==null?hi:Math.pow(hi,e),new At(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?fo:Math.pow(fo,e),new At(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new At(dr(this.r),dr(this.g),dr(this.b),pi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yl,formatHex:Yl,formatHex8:hh,formatRgb:Zl,toString:Zl}));function Yl(){return`#${fr(this.r)}${fr(this.g)}${fr(this.b)}`}function hh(){return`#${fr(this.r)}${fr(this.g)}${fr(this.b)}${fr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Zl(){const e=pi(this.opacity);return`${e===1?"rgb(":"rgba("}${dr(this.r)}, ${dr(this.g)}, ${dr(this.b)}${e===1?")":`, ${e})`}`}function pi(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function dr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function fr(e){return e=dr(e),(e<16?"0":"")+e.toString(16)}function Xl(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new sn(e,t,n,r)}function Fl(e){if(e instanceof sn)return new sn(e.h,e.s,e.l,e.opacity);if(e instanceof co||(e=ho(e)),!e)return new sn;if(e instanceof sn)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(n-r)/a+(n0&&l<1?0:s,new sn(s,a,l,e.opacity)}function vh(e,t,n,r){return arguments.length===1?Fl(e):new sn(e,t,n,r??1)}function sn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Vs(sn,vh,Ol(co,{brighter(e){return e=e==null?hi:Math.pow(hi,e),new sn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fo:Math.pow(fo,e),new sn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new At(As(e>=240?e-240:e+120,o,r),As(e,o,r),As(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new sn(Wl(this.h),mi(this.s),mi(this.l),pi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=pi(this.opacity);return`${e===1?"hsl(":"hsla("}${Wl(this.h)}, ${mi(this.s)*100}%, ${mi(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Wl(e){return e=(e||0)%360,e<0?e+360:e}function mi(e){return Math.max(0,Math.min(1,e||0))}function As(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Kl=e=>()=>e;function ph(e,t){return function(n){return e+n*t}}function mh(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function yh(e){return(e=+e)==1?ql:function(t,n){return n-t?mh(t,n,e):Kl(isNaN(t)?n:t)}}function ql(e,t){var n=t-e;return n?ph(e,n):Kl(isNaN(e)?t:e)}const Gl=function e(t){var n=yh(t);function r(o,i){var s=n((o=Ds(o)).r,(i=Ds(i)).r),a=n(o.g,i.g),l=n(o.b,i.b),u=ql(o.opacity,i.opacity);return function(c){return o.r=s(c),o.g=a(c),o.b=l(c),o.opacity=u(c),o+""}}return r.gamma=e,r}(1);function jn(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var Ls=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Os=new RegExp(Ls.source,"g");function wh(e){return function(){return e}}function _h(e){return function(t){return e(t)+""}}function xh(e,t){var n=Ls.lastIndex=Os.lastIndex=0,r,o,i,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=Ls.exec(e))&&(o=Os.exec(t));)(i=o.index)>n&&(i=t.slice(n,i),a[s]?a[s]+=i:a[++s]=i),(r=r[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:jn(r,o)})),n=Os.lastIndex;return n180?c+=360:c-u>180&&(u+=360),d.push({i:f.push(o(f)+"rotate(",null,r)-2,x:jn(u,c)})):c&&f.push(o(f)+"rotate("+c+r)}function a(u,c,f,d){u!==c?d.push({i:f.push(o(f)+"skewX(",null,r)-2,x:jn(u,c)}):c&&f.push(o(f)+"skewX("+c+r)}function l(u,c,f,d,g,p){if(u!==f||c!==d){var x=g.push(o(g)+"scale(",null,",",null,")");p.push({i:x-4,x:jn(u,f)},{i:x-2,x:jn(c,d)})}else(f!==1||d!==1)&&g.push(o(g)+"scale("+f+","+d+")")}return function(u,c){var f=[],d=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,f,d),s(u.rotate,c.rotate,f,d),a(u.skewX,c.skewX,f,d),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,d),u=c=null,function(g){for(var p=-1,x=d.length,C;++p=0&&e._call.call(void 0,t),e=e._next;--Vr}function ru(){gr=(_i=yo.now())+xi,Vr=vo=0;try{Mh()}finally{Vr=0,Vh(),gr=0}}function Hh(){var e=yo.now(),t=e-_i;t>eu&&(xi-=t,_i=e)}function Vh(){for(var e,t=wi,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:wi=n);mo=e,Rs(r)}function Rs(e){if(!Vr){vo&&(vo=clearTimeout(vo));var t=e-gr;t>24?(e<1/0&&(vo=setTimeout(ru,e-yo.now()-xi)),po&&(po=clearInterval(po))):(po||(_i=yo.now(),po=setInterval(Hh,eu)),Vr=1,tu(ru))}}function ou(e,t,n){var r=new bi;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var Dh=ui("start","end","cancel","interrupt"),Ah=[],iu=0,su=1,Bs=2,Ci=3,au=4,Ys=5,ki=6;function $i(e,t,n,r,o,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Lh(e,n,{name:t,index:r,group:o,on:Dh,tween:Ah,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:iu})}function Zs(e,t){var n=an(e,t);if(n.state>iu)throw new Error("too late; already scheduled");return n}function xn(e,t){var n=an(e,t);if(n.state>Ci)throw new Error("too late; already running");return n}function an(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Lh(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=nu(i,0,n.time);function i(u){n.state=su,n.timer.restart(s,n.delay,n.time),n.delay<=u&&s(u-n.delay)}function s(u){var c,f,d,g;if(n.state!==su)return l();for(c in r)if(g=r[c],g.name===n.name){if(g.state===Ci)return ou(s);g.state===au?(g.state=ki,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete r[c]):+cBs&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function fv(e,t,n){var r,o,i=dv(t)?Zs:xn;return function(){var s=i(this,e),a=s.on;a!==r&&(o=(r=a).copy()).on(t,n),s.on=o}}function gv(e,t){var n=this._id;return arguments.length<2?an(this.node(),n).on.on(e):this.each(fv(n,e,t))}function hv(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function vv(){return this.on("end.remove",hv(this._id))}function pv(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Ns(e));for(var r=this._groups,o=r.length,i=new Array(o),s=0;s()=>e;function Bv(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function In(e,t,n){this.k=e,this.x=t,this.y=n}In.prototype={constructor:In,scale:function(e){return e===1?this:new In(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new In(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Pi=new In(1,0,0);du.prototype=In.prototype;function du(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Pi;return e.__zoom}function Fs(e){e.stopImmediatePropagation()}function wo(e){e.preventDefault(),e.stopImmediatePropagation()}function Yv(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Zv(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function fu(){return this.__zoom||Pi}function Xv(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Fv(){return navigator.maxTouchPoints||"ontouchstart"in this}function Wv(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),s>i?(i+s)/2:Math.min(0,i)||Math.max(0,s))}function gu(){var e=Yv,t=Zv,n=Wv,r=Xv,o=Fv,i=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Nh,u=ui("start","zoom","end"),c,f,d,g=500,p=150,x=0,C=10;function $(S){S.property("__zoom",fu).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",V).filter(o).on("touchstart.zoom",A).on("touchmove.zoom",O).on("touchend.zoom touchcancel.zoom",R).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}$.transform=function(S,M,k,P){var H=S.selection?S.selection():S;H.property("__zoom",fu),S!==H?b(S,M,k,P):H.interrupt().each(function(){N(this,arguments).event(P).start().zoom(null,typeof M=="function"?M.apply(this,arguments):M).end()})},$.scaleBy=function(S,M,k,P){$.scaleTo(S,function(){var H=this.__zoom.k,I=typeof M=="function"?M.apply(this,arguments):M;return H*I},k,P)},$.scaleTo=function(S,M,k,P){$.transform(S,function(){var H=t.apply(this,arguments),I=this.__zoom,B=k==null?v(H):typeof k=="function"?k.apply(this,arguments):k,F=I.invert(B),K=typeof M=="function"?M.apply(this,arguments):M;return n(_(m(I,K),B,F),H,s)},k,P)},$.translateBy=function(S,M,k,P){$.transform(S,function(){return n(this.__zoom.translate(typeof M=="function"?M.apply(this,arguments):M,typeof k=="function"?k.apply(this,arguments):k),t.apply(this,arguments),s)},null,P)},$.translateTo=function(S,M,k,P,H){$.transform(S,function(){var I=t.apply(this,arguments),B=this.__zoom,F=P==null?v(I):typeof P=="function"?P.apply(this,arguments):P;return n(Pi.translate(F[0],F[1]).scale(B.k).translate(typeof M=="function"?-M.apply(this,arguments):-M,typeof k=="function"?-k.apply(this,arguments):-k),I,s)},P,H)};function m(S,M){return M=Math.max(i[0],Math.min(i[1],M)),M===S.k?S:new In(M,S.x,S.y)}function _(S,M,k){var P=M[0]-k[0]*S.k,H=M[1]-k[1]*S.k;return P===S.x&&H===S.y?S:new In(S.k,P,H)}function v(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function b(S,M,k,P){S.on("start.zoom",function(){N(this,arguments).event(P).start()}).on("interrupt.zoom end.zoom",function(){N(this,arguments).event(P).end()}).tween("zoom",function(){var H=this,I=arguments,B=N(H,I).event(P),F=t.apply(H,I),K=k==null?v(F):typeof k=="function"?k.apply(H,I):k,se=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),ee=H.__zoom,W=typeof M=="function"?M.apply(H,I):M,fe=l(ee.invert(K).concat(se/ee.k),W.invert(K).concat(se/W.k));return function(me){if(me===1)me=W;else{var Ce=fe(me),he=se/Ce[2];me=new In(he,K[0]-Ce[0]*he,K[1]-Ce[1]*he)}B.zoom(null,me)}})}function N(S,M,k){return!k&&S.__zooming||new E(S,M)}function E(S,M){this.that=S,this.args=M,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,M),this.taps=0}E.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,M){return this.mouse&&S!=="mouse"&&(this.mouse[1]=M.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=M.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=M.invert(this.touch1[0])),this.that.__zoom=M,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var M=Ut(this.that).datum();u.call(S,this.that,new Bv(S,{sourceEvent:this.sourceEvent,target:$,transform:this.that.__zoom,dispatch:u}),M)}};function T(S,...M){if(!e.apply(this,arguments))return;var k=N(this,M).event(S),P=this.__zoom,H=Math.max(i[0],Math.min(i[1],P.k*Math.pow(2,r.apply(this,arguments)))),I=on(S);if(k.wheel)(k.mouse[0][0]!==I[0]||k.mouse[0][1]!==I[1])&&(k.mouse[1]=P.invert(k.mouse[0]=I)),clearTimeout(k.wheel);else{if(P.k===H)return;k.mouse=[I,P.invert(I)],Ei(this),k.start()}wo(S),k.wheel=setTimeout(B,p),k.zoom("mouse",n(_(m(P,H),k.mouse[0],k.mouse[1]),k.extent,s));function B(){k.wheel=null,k.end()}}function D(S,...M){if(d||!e.apply(this,arguments))return;var k=S.currentTarget,P=N(this,M,!0).event(S),H=Ut(S.view).on("mousemove.zoom",K,!0).on("mouseup.zoom",se,!0),I=on(S,k),B=S.clientX,F=S.clientY;Al(S.view),Fs(S),P.mouse=[I,this.__zoom.invert(I)],Ei(this),P.start();function K(ee){if(wo(ee),!P.moved){var W=ee.clientX-B,fe=ee.clientY-F;P.moved=W*W+fe*fe>x}P.event(ee).zoom("mouse",n(_(P.that.__zoom,P.mouse[0]=on(ee,k),P.mouse[1]),P.extent,s))}function se(ee){H.on("mousemove.zoom mouseup.zoom",null),Ll(ee.view,P.moved),wo(ee),P.event(ee).end()}}function V(S,...M){if(e.apply(this,arguments)){var k=this.__zoom,P=on(S.changedTouches?S.changedTouches[0]:S,this),H=k.invert(P),I=k.k*(S.shiftKey?.5:2),B=n(_(m(k,I),P,H),t.apply(this,M),s);wo(S),a>0?Ut(this).transition().duration(a).call(b,B,P,S):Ut(this).call($.transform,B,P,S)}}function A(S,...M){if(e.apply(this,arguments)){var k=S.touches,P=k.length,H=N(this,M,S.changedTouches.length===P).event(S),I,B,F,K;for(Fs(S),B=0;B"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:r}", edge id: ${t}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Ni=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]];var hr;(function(e){e.Strict="strict",e.Loose="loose"})(hr||(hr={}));var Jn;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(Jn||(Jn={}));var Ti;(function(e){e.Partial="partial",e.Full="full"})(Ti||(Ti={}));const Ws={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null};var Ar;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Ar||(Ar={}));var _o;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(_o||(_o={}));var $e;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})($e||($e={}));const hu={[$e.Left]:$e.Right,[$e.Right]:$e.Left,[$e.Top]:$e.Bottom,[$e.Bottom]:$e.Top};function Kv(e,t){if(!e&&!t)return!0;if(!e||!t||e.size!==t.size)return!1;if(!e.size&&!t.size)return!0;for(const n of e.keys())if(!t.has(n))return!1;return!0}function vu(e,t,n){if(!n)return;const r=[];e.forEach((o,i)=>{t!=null&&t.has(i)||r.push(o)}),r.length&&n(r)}function qv(e){return e===null?null:e?"valid":"invalid"}const Gv=e=>"id"in e&&"source"in e&&"target"in e,Uv=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),Ks=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),xo=(e,t=[0,0])=>{const{width:n,height:r}=Qn(e),o=e.origin??t,i=n*o[0],s=r*o[1];return{x:e.position.x-i,y:e.position.y-s}},jv=(e,t={nodeOrigin:[0,0],nodeLookup:void 0})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,o)=>{const i=typeof o=="string";let s=!t.nodeLookup&&!i?o:void 0;t.nodeLookup&&(s=i?t.nodeLookup.get(o):Ks(o)?o:t.nodeLookup.get(o.id));const a=s?Vi(s,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return Mi(r,a)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Hi(n)},bo=(e,t={})=>{if(e.size===0)return{x:0,y:0,width:0,height:0};let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0};return e.forEach(r=>{if(t.filter===void 0||t.filter(r)){const o=Vi(r);n=Mi(n,o)}}),Hi(n)},pu=(e,t,[n,r,o]=[0,0,1],i=!1,s=!1)=>{const a={...ko(t,[n,r,o]),width:t.width/o,height:t.height/o},l=[];for(const u of e.values()){const{measured:c,selectable:f=!0,hidden:d=!1}=u;if(s&&!f||d)continue;const g=c.width??u.width??u.initialWidth??null,p=c.height??u.height??u.initialHeight??null,x=Co(a,Or(u)),C=(g??0)*(p??0),$=i&&x>0;(!u.internals.handleBounds||$||x>=C||u.dragging)&&l.push(u)}return l},qs=(e,t)=>{const n=new Set;return e.forEach(r=>{n.add(r.id)}),t.filter(r=>n.has(r.source)||n.has(r.target))};function mu(e,t){const n=new Map,r=t!=null&&t.nodes?new Set(t.nodes.map(o=>o.id)):null;return e.forEach(o=>{o.measured.width&&o.measured.height&&((t==null?void 0:t.includeHiddenNodes)||!o.hidden)&&(!r||r.has(o.id))&&n.set(o.id,o)}),n}async function yu({nodes:e,width:t,height:n,panZoom:r,minZoom:o,maxZoom:i},s){if(e.size===0)return Promise.resolve(!1);const a=bo(e),l=js(a,t,n,(s==null?void 0:s.minZoom)??o,(s==null?void 0:s.maxZoom)??i,(s==null?void 0:s.padding)??.1);return await r.setViewport(l,{duration:s==null?void 0:s.duration}),Promise.resolve(!0)}function Jv({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:o,onError:i}){const s=n.get(e),a=s.parentId?n.get(s.parentId):void 0,{x:l,y:u}=a?a.internals.positionAbsolute:{x:0,y:0},c=s.origin??r;let f=o;if(s.extent==="parent"&&!s.expandParent)if(!a)i==null||i("005",Dr.error005());else{const g=a.measured.width,p=a.measured.height;g&&p&&(f=[[l,u],[l+g,u+p]])}else a&&Ir(s.extent)&&(f=[[s.extent[0][0]+l,s.extent[0][1]+u],[s.extent[1][0]+l,s.extent[1][1]+u]]);const d=Ir(f)?vr(t,f,s.measured):t;return(s.measured.width===void 0||s.measured.height===void 0)&&(i==null||i("015",Dr.error015())),{position:{x:d.x-l+(s.measured.width??0)*c[0],y:d.y-u+(s.measured.height??0)*c[1]},positionAbsolute:d}}async function wu({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:o}){const i=new Set(e.map(d=>d.id)),s=[];for(const d of n){if(d.deletable===!1)continue;const g=i.has(d.id),p=!g&&d.parentId&&s.find(x=>x.id===d.parentId);(g||p)&&s.push(d)}const a=new Set(t.map(d=>d.id)),l=r.filter(d=>d.deletable!==!1),c=qs(s,l);for(const d of l)a.has(d.id)&&!c.find(p=>p.id===d.id)&&c.push(d);if(!o)return{edges:c,nodes:s};const f=await o({nodes:s,edges:c});return typeof f=="boolean"?f?{edges:c,nodes:s}:{edges:[],nodes:[]}:f}const Lr=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),vr=(e={x:0,y:0},t,n)=>({x:Lr(e.x,t[0][0],t[1][0]-((n==null?void 0:n.width)??0)),y:Lr(e.y,t[0][1],t[1][1]-((n==null?void 0:n.height)??0))});function _u(e,t,n){const{width:r,height:o}=Qn(n),{x:i,y:s}=n.internals.positionAbsolute;return vr(e,[[i,s],[i+r,s+o]],t)}const xu=(e,t,n)=>en?-Lr(Math.abs(e-n),1,t)/t:0,bu=(e,t,n=15,r=40)=>{const o=xu(e.x,r,t.width-r)*n,i=xu(e.y,r,t.height-r)*n;return[o,i]},Mi=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Gs=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Hi=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Or=(e,t=[0,0])=>{var o,i;const{x:n,y:r}=Ks(e)?e.internals.positionAbsolute:xo(e,t);return{x:n,y:r,width:((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0,height:((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0}},Vi=(e,t=[0,0])=>{var o,i;const{x:n,y:r}=Ks(e)?e.internals.positionAbsolute:xo(e,t);return{x:n,y:r,x2:n+(((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0),y2:r+(((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0)}},Cu=(e,t)=>Hi(Mi(Gs(e),Gs(t))),Co=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},ku=e=>zn(e.width)&&zn(e.height)&&zn(e.x)&&zn(e.y),zn=e=>!isNaN(e)&&isFinite(e),Qv=(e,t)=>{},Us=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),ko=({x:e,y:t},[n,r,o],i=!1,s=[1,1])=>{const a={x:(e-n)/o,y:(t-r)/o};return i?Us(a,s):a},$u=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r}),js=(e,t,n,r,o,i)=>{const s=t/(e.width*(1+i)),a=n/(e.height*(1+i)),l=Math.min(s,a),u=Lr(l,r,o),c=e.x+e.width/2,f=e.y+e.height/2,d=t/2-c*u,g=n/2-f*u;return{x:d,y:g,zoom:u}},Di=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function Ir(e){return e!==void 0&&e!=="parent"}function Qn(e){var t,n;return{width:((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth??0,height:((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight??0}}function Eu(e){var t,n;return(((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth)!==void 0&&(((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight)!==void 0}function e0(e,t={width:0,height:0},n,r,o){const i={...e},s=r.get(n);if(s){const a=s.origin||o;i.x+=s.internals.positionAbsolute.x-(t.width??0)*a[0],i.y+=s.internals.positionAbsolute.y-(t.height??0)*a[1]}return i}function Js(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:o}){const{x:i,y:s}=Rn(e),a=ko({x:i-((o==null?void 0:o.left)??0),y:s-((o==null?void 0:o.top)??0)},r),{x:l,y:u}=n?Us(a,t):a;return{xSnapped:l,ySnapped:u,...a}}const Qs=e=>({width:e.offsetWidth,height:e.offsetHeight}),t0=e=>{var t;return((t=e==null?void 0:e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},n0=["INPUT","SELECT","TEXTAREA"];function r0(e){var r,o;const t=((o=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:o[0])||e.target;return(t==null?void 0:t.nodeType)!==1?!1:n0.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const Su=e=>"clientX"in e,Rn=(e,t)=>{var i,s;const n=Su(e),r=n?e.clientX:(i=e.touches)==null?void 0:i[0].clientX,o=n?e.clientY:(s=e.touches)==null?void 0:s[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:o-((t==null?void 0:t.top)??0)}},Pu=(e,t,n,r,o)=>{const i=t.querySelectorAll(`.${e}`);return!i||!i.length?null:Array.from(i).map(s=>{const a=s.getBoundingClientRect();return{id:s.getAttribute("data-handleid"),type:e,nodeId:o,position:s.getAttribute("data-handlepos"),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...Qs(s)}})};function o0({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:o,sourceControlY:i,targetControlX:s,targetControlY:a}){const l=e*.125+o*.375+s*.375+n*.125,u=t*.125+i*.375+a*.375+r*.125,c=Math.abs(l-e),f=Math.abs(u-t);return[l,u,c,f]}function Ai(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Nu({pos:e,x1:t,y1:n,x2:r,y2:o,c:i}){switch(e){case $e.Left:return[t-Ai(t-r,i),n];case $e.Right:return[t+Ai(r-t,i),n];case $e.Top:return[t,n-Ai(n-o,i)];case $e.Bottom:return[t,n+Ai(o-n,i)]}}function Tu({sourceX:e,sourceY:t,sourcePosition:n=$e.Bottom,targetX:r,targetY:o,targetPosition:i=$e.Top,curvature:s=.25}){const[a,l]=Nu({pos:n,x1:e,y1:t,x2:r,y2:o,c:s}),[u,c]=Nu({pos:i,x1:r,y1:o,x2:e,y2:t,c:s}),[f,d,g,p]=o0({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:c});return[`M${e},${t} C${a},${l} ${u},${c} ${r},${o}`,f,d,g,p]}function Mu({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,i=n0}const a0=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,l0=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),u0=(e,t)=>{if(!e.source||!e.target)return t;let n;return Gv(e)?n={...e}:n={...e,id:a0(e)},l0(n,t)?t:(n.sourceHandle===null&&delete n.sourceHandle,n.targetHandle===null&&delete n.targetHandle,t.concat(n))};function ea({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,i,s,a]=Mu({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,i,s,a]}const Hu={[$e.Left]:{x:-1,y:0},[$e.Right]:{x:1,y:0},[$e.Top]:{x:0,y:-1},[$e.Bottom]:{x:0,y:1}},c0=({source:e,sourcePosition:t=$e.Bottom,target:n})=>t===$e.Left||t===$e.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function d0({source:e,sourcePosition:t=$e.Bottom,target:n,targetPosition:r=$e.Top,center:o,offset:i}){const s=Hu[t],a=Hu[r],l={x:e.x+s.x*i,y:e.y+s.y*i},u={x:n.x+a.x*i,y:n.y+a.y*i},c=c0({source:l,sourcePosition:t,target:u}),f=c.x!==0?"x":"y",d=c[f];let g=[],p,x;const C={x:0,y:0},$={x:0,y:0},[m,_,v,b]=Mu({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*a[f]===-1){p=o.x??m,x=o.y??_;const E=[{x:p,y:l.y},{x:p,y:u.y}],T=[{x:l.x,y:x},{x:u.x,y:x}];s[f]===d?g=f==="x"?E:T:g=f==="x"?T:E}else{const E=[{x:l.x,y:u.y}],T=[{x:u.x,y:l.y}];if(f==="x"?g=s.x===d?T:E:g=s.y===d?E:T,t===r){const R=Math.abs(e[f]-n[f]);if(R<=i){const S=Math.min(i-1,i-R);s[f]===d?C[f]=(l[f]>e[f]?-1:1)*S:$[f]=(u[f]>n[f]?-1:1)*S}}if(t!==r){const R=f==="x"?"y":"x",S=s[f]===a[R],M=l[R]>u[R],k=l[R]=O?(p=(D.x+V.x)/2,x=g[0].y):(p=g[0].x,x=(D.y+V.y)/2)}return[[e,{x:l.x+C.x,y:l.y+C.y},...g,{x:u.x+$.x,y:u.y+$.y},n],p,x,v,b]}function f0(e,t,n,r){const o=Math.min(Vu(e,t)/2,Vu(t,n)/2,r),{x:i,y:s}=t;if(e.x===i&&i===n.x||e.y===s&&s===n.y)return`L${i} ${s}`;if(e.y===s){const u=e.x{let _="";return m>0&&mn.id===t):e[0])||null}function ta(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function h0(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:o}){const i=new Set;return e.reduce((s,a)=>([a.markerStart||r,a.markerEnd||o].forEach(l=>{if(l&&typeof l=="object"){const u=ta(l,t);i.has(u)||(s.push({id:u,color:l.color||n,...l}),i.add(u))}}),s),[]).sort((s,a)=>s.id.localeCompare(a.id))}function v0(e,t,n,r,o){let i=.5;o==="start"?i=0:o==="end"&&(i=1);let s=[(e.x+e.width*i)*t.zoom+t.x,e.y*t.zoom+t.y-r],a=[-100*i,-100];switch(n){case $e.Right:s=[(e.x+e.width)*t.zoom+t.x+r,(e.y+e.height*i)*t.zoom+t.y],a=[0,-100*i];break;case $e.Bottom:s[1]=(e.y+e.height)*t.zoom+t.y+r,a[1]=0;break;case $e.Left:s=[e.x*t.zoom+t.x-r,(e.y+e.height*i)*t.zoom+t.y],a=[-100,-100*i];break}return`translate(${s[0]}px, ${s[1]}px) translate(${a[0]}%, ${a[1]}%)`}const na={nodeOrigin:[0,0],nodeExtent:Ni,elevateNodesOnSelect:!0,defaults:{}},p0={...na,checkEquality:!0};function ra(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function m0(e,t,n){const r=ra(na,n);for(const o of e.values())if(o.parentId)oa(o,e,t,r);else{const i=xo(o,r.nodeOrigin),s=Ir(o.extent)?o.extent:r.nodeExtent,a=vr(i,s,Qn(o));o.internals.positionAbsolute=a}}function Ou(e,t,n,r){var a,l;const o=ra(p0,r),i=new Map(t),s=o!=null&&o.elevateNodesOnSelect?1e3:0;t.clear(),n.clear();for(const u of e){let c=i.get(u.id);if(o.checkEquality&&u===(c==null?void 0:c.internals.userNode))t.set(u.id,c);else{const f=xo(u,o.nodeOrigin),d=Ir(u.extent)?u.extent:o.nodeExtent,g=vr(f,d,Qn(u));c={...o.defaults,...u,measured:{width:(a=u.measured)==null?void 0:a.width,height:(l=u.measured)==null?void 0:l.height},internals:{positionAbsolute:g,handleBounds:u.measured?c==null?void 0:c.internals.handleBounds:void 0,z:Iu(u,s),userNode:u}},t.set(u.id,c)}u.parentId&&oa(c,t,n,r)}}function y0(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function oa(e,t,n,r){const{elevateNodesOnSelect:o,nodeOrigin:i,nodeExtent:s}=ra(na,r),a=e.parentId,l=t.get(a);if(!l){console.warn(`Parent node ${a} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}y0(e,n);const u=o?1e3:0,{x:c,y:f,z:d}=w0(e,l,i,s,u),{positionAbsolute:g}=e.internals,p=c!==g.x||f!==g.y;(p||d!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:p?{x:c,y:f}:g,z:d}})}function Iu(e,t){return(zn(e.zIndex)?e.zIndex:0)+(e.selected?t:0)}function w0(e,t,n,r,o){const{x:i,y:s}=t.internals.positionAbsolute,a=Qn(e),l=xo(e,n),u=Ir(e.extent)?vr(l,e.extent,a):l;let c=vr({x:i+u.x,y:s+u.y},r,a);e.extent==="parent"&&(c=_u(c,a,t));const f=Iu(e,o),d=t.internals.z??0;return{x:c.x,y:c.y,z:d>f?d:f}}function _0(e,t,n,r=[0,0]){var s;const o=[],i=new Map;for(const a of e){const l=t.get(a.parentId);if(!l)continue;const u=((s=i.get(a.parentId))==null?void 0:s.expandedRect)??Or(l),c=Cu(u,a.rect);i.set(a.parentId,{expandedRect:c,parent:l})}return i.size>0&&i.forEach(({expandedRect:a,parent:l},u)=>{var _;const c=l.internals.positionAbsolute,f=Qn(l),d=l.origin??r,g=a.x0||p>0||$||m)&&(o.push({id:u,type:"position",position:{x:l.position.x-g+$,y:l.position.y-p+m}}),(_=n.get(u))==null||_.forEach(v=>{e.some(b=>b.id===v.id)||o.push({id:v.id,type:"position",position:{x:v.position.x+g,y:v.position.y+p}})})),(f.width0){const d=_0(f,t,n,o);l.push(...d)}return{changes:l,updatedInternals:a}}async function b0({delta:e,panZoom:t,transform:n,translateExtent:r,width:o,height:i}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const s=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[o,i]],r),a=!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2]);return Promise.resolve(a)}function zu(e,t,n,r,o,i){let s=o;const a=r.get(s)||new Map;r.set(s,a.set(n,t)),s=`${o}-${e}`;const l=r.get(s)||new Map;if(r.set(s,l.set(n,t)),i){s=`${o}-${e}-${i}`;const u=r.get(s)||new Map;r.set(s,u.set(n,t))}}function Ru(e,t,n){e.clear(),t.clear();for(const r of n){const{source:o,target:i,sourceHandle:s=null,targetHandle:a=null}=r,l={edgeId:r.id,source:o,target:i,sourceHandle:s,targetHandle:a},u=`${o}-${s}--${i}-${a}`,c=`${i}-${a}--${o}-${s}`;zu("source",l,c,e,o,s),zu("target",l,u,e,i,a),t.set(r.id,r)}}function C0(e,t){if(e===null||t===null)return!1;const n=Array.isArray(e)?e:[e],r=Array.isArray(t)?t:[t];if(n.length!==r.length)return!1;for(let o=0;o"u")){const a=e.get(i);a&&o.set(i,{id:i,position:a.position||{x:0,y:0},distance:{x:n.x-a.internals.positionAbsolute.x,y:n.y-a.internals.positionAbsolute.y},extent:a.extent,parentId:a.parentId,origin:a.origin,expandParent:a.expandParent,internals:{positionAbsolute:a.internals.positionAbsolute||{x:0,y:0}},measured:{width:a.measured.width??0,height:a.measured.height??0}})}return o}function ia({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){var s,a,l;const o=[];for(const[u,c]of t){const f=(s=n.get(u))==null?void 0:s.internals.userNode;f&&o.push({...f,position:c.position,dragging:r})}if(!e)return[o[0],o];const i=(a=n.get(e))==null?void 0:a.internals.userNode;return[i?{...i,position:((l=t.get(e))==null?void 0:l.position)||i.position,dragging:r}:o[0],o]}function $0({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:o}){let i={x:null,y:null},s=0,a=new Map,l=!1,u={x:0,y:0},c=null,f=!1,d=null,g=!1;function p({noDragClassName:C,handleSelector:$,domNode:m,isSelectable:_,nodeId:v,nodeClickDistance:b=0}){d=Ut(m);function N({x:V,y:A},O){const{nodeLookup:R,nodeExtent:S,snapGrid:M,snapToGrid:k,nodeOrigin:P,onNodeDrag:H,onSelectionDrag:I,onError:B,updateNodePositions:F}=t();i={x:V,y:A};let K=!1,se={x:0,y:0,x2:0,y2:0};if(a.size>1&&S){const ee=bo(a);se=Gs(ee)}for(const[ee,W]of a){if(!R.has(ee))continue;let fe={x:V-W.distance.x,y:A-W.distance.y};k&&(fe=Us(fe,M));let me=[[S[0][0],S[0][1]],[S[1][0],S[1][1]]];if(a.size>1&&S&&!W.extent){const{positionAbsolute:ze}=W.internals,G=ze.x-se.x+S[0][0],ae=ze.x+W.measured.width-se.x2+S[1][0],Me=ze.y-se.y+S[0][1],Le=ze.y+W.measured.height-se.y2+S[1][1];me=[[G,Me],[ae,Le]]}const{position:Ce,positionAbsolute:he}=Jv({nodeId:ee,nextPosition:fe,nodeLookup:R,nodeExtent:me,nodeOrigin:P,onError:B});K=K||W.position.x!==Ce.x||W.position.y!==Ce.y,W.position=Ce,W.internals.positionAbsolute=he}if(K&&(F(a,!0),O&&(r||H||!v&&I))){const[ee,W]=ia({nodeId:v,dragItems:a,nodeLookup:R});r==null||r(O,a,ee,W),H==null||H(O,ee,W),v||I==null||I(O,W)}}async function E(){if(!c)return;const{transform:V,panBy:A,autoPanSpeed:O,autoPanOnNodeDrag:R}=t();if(!R){l=!1,cancelAnimationFrame(s);return}const[S,M]=bu(u,c,O);(S!==0||M!==0)&&(i.x=(i.x??0)-S/V[2],i.y=(i.y??0)-M/V[2],await A({x:S,y:M})&&N(i,null)),s=requestAnimationFrame(E)}function T(V){var K;const{nodeLookup:A,multiSelectionActive:O,nodesDraggable:R,transform:S,snapGrid:M,snapToGrid:k,selectNodesOnDrag:P,onNodeDragStart:H,onSelectionDragStart:I,unselectNodesAndEdges:B}=t();f=!0,(!P||!_)&&!O&&v&&((K=A.get(v))!=null&&K.selected||B()),_&&P&&v&&(e==null||e(v));const F=Js(V.sourceEvent,{transform:S,snapGrid:M,snapToGrid:k,containerBounds:c});if(i=F,a=k0(A,R,F,v),a.size>0&&(n||H||!v&&I)){const[se,ee]=ia({nodeId:v,dragItems:a,nodeLookup:A});n==null||n(V.sourceEvent,a,se,ee),H==null||H(V.sourceEvent,se,ee),v||I==null||I(V.sourceEvent,ee)}}const D=rh().clickDistance(b).on("start",V=>{const{domNode:A,nodeDragThreshold:O,transform:R,snapGrid:S,snapToGrid:M}=t();c=(A==null?void 0:A.getBoundingClientRect())||null,g=!1,O===0&&T(V),i=Js(V.sourceEvent,{transform:R,snapGrid:S,snapToGrid:M,containerBounds:c}),u=Rn(V.sourceEvent,c)}).on("drag",V=>{const{autoPanOnNodeDrag:A,transform:O,snapGrid:R,snapToGrid:S,nodeDragThreshold:M,nodeLookup:k}=t(),P=Js(V.sourceEvent,{transform:O,snapGrid:R,snapToGrid:S,containerBounds:c});if((V.sourceEvent.type==="touchmove"&&V.sourceEvent.touches.length>1||v&&!k.has(v))&&(g=!0),!g){if(!l&&A&&f&&(l=!0,E()),!f){const H=P.xSnapped-(i.x??0),I=P.ySnapped-(i.y??0);Math.sqrt(H*H+I*I)>M&&T(V)}(i.x!==P.xSnapped||i.y!==P.ySnapped)&&a&&f&&(u=Rn(V.sourceEvent,c),N(P,V.sourceEvent))}}).on("end",V=>{if(!(!f||g)&&(l=!1,f=!1,cancelAnimationFrame(s),a.size>0)){const{nodeLookup:A,updateNodePositions:O,onNodeDragStop:R,onSelectionDragStop:S}=t();if(O(a,!1),o||R||!v&&S){const[M,k]=ia({nodeId:v,dragItems:a,nodeLookup:A,dragging:!1});o==null||o(V.sourceEvent,a,M,k),R==null||R(V.sourceEvent,M,k),v||S==null||S(V.sourceEvent,k)}}}).filter(V=>{const A=V.target;return!V.button&&(!C||!Yu(A,`.${C}`,m))&&(!$||Yu(A,$,m))});d.call(D)}function x(){d==null||d.on(".drag",null)}return{update:p,destroy:x}}function E0(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const i of t.values())Co(o,Or(i))>0&&r.push(i);return r}const S0=250;function P0(e,t,n,r){var a,l;let o=[],i=1/0;const s=E0(e,n,t+S0);for(const u of s){const c=[...((a=u.internals.handleBounds)==null?void 0:a.source)??[],...((l=u.internals.handleBounds)==null?void 0:l.target)??[]];for(const f of c){if(r.nodeId===f.nodeId&&r.type===f.type&&r.id===f.id)continue;const{x:d,y:g}=$o(u,f,f.position,!0),p=Math.sqrt(Math.pow(d-e.x,2)+Math.pow(g-e.y,2));p>t||(p1){const u=r.type==="source"?"target":"source";return o.find(c=>c.type===u)??o[0]}return o[0]}function Zu(e,t,n,r,o,i=!1){var u,c,f;const s=r.get(e);if(!s)return null;const a=o==="strict"?(u=s.internals.handleBounds)==null?void 0:u[t]:[...((c=s.internals.handleBounds)==null?void 0:c.source)??[],...((f=s.internals.handleBounds)==null?void 0:f.target)??[]],l=(n?a==null?void 0:a.find(d=>d.id===n):a==null?void 0:a[0])??null;return l&&i?{...l,...$o(s,l,l.position,!0)}:l}function Xu(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function N0(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const Fu=()=>!0;function T0(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:o,edgeUpdaterType:i,isTarget:s,domNode:a,nodeLookup:l,lib:u,autoPanOnConnect:c,flowId:f,panBy:d,cancelConnection:g,onConnectStart:p,onConnect:x,onConnectEnd:C,isValidConnection:$=Fu,onReconnectEnd:m,updateConnection:_,getTransform:v,getFromHandle:b,autoPanSpeed:N}){const E=t0(e.target);let T=0,D;const{x:V,y:A}=Rn(e),O=E==null?void 0:E.elementFromPoint(V,A),R=Xu(i,O),S=a==null?void 0:a.getBoundingClientRect();if(!S||!R)return;const M=Zu(o,R,r,l,t);if(!M)return;let k=Rn(e,S),P=!1,H=null,I=!1,B=null;function F(){if(!c||!S)return;const[he,ze]=bu(k,S,N);d({x:he,y:ze}),T=requestAnimationFrame(F)}const K={...M,nodeId:o,type:R,position:M.position},se=l.get(o),W={inProgress:!0,isValid:null,from:$o(se,K,$e.Left,!0),fromHandle:K,fromPosition:K.position,fromNode:se,to:k,toHandle:null,toPosition:hu[K.position],toNode:null};_(W);let fe=W;p==null||p(e,{nodeId:o,handleId:r,handleType:R});function me(he){if(!b()||!K){Ce(he);return}const ze=v();k=Rn(he,S),D=P0(ko(k,ze,!1,[1,1]),n,l,K),P||(F(),P=!0);const G=Wu(he,{handle:D,connectionMode:t,fromNodeId:o,fromHandleId:r,fromType:s?"target":"source",isValidConnection:$,doc:E,lib:u,flowId:f,nodeLookup:l});B=G.handleDomNode,H=G.connection,I=N0(!!D,G.isValid);const ae={...fe,isValid:I,to:D&&I?$u({x:D.x,y:D.y},ze):k,toHandle:G.toHandle,toPosition:I&&G.toHandle?G.toHandle.position:hu[K.position],toNode:G.toHandle?l.get(G.toHandle.nodeId):null};I&&D&&fe.toHandle&&ae.toHandle&&fe.toHandle.type===ae.toHandle.type&&fe.toHandle.nodeId===ae.toHandle.nodeId&&fe.toHandle.id===ae.toHandle.id&&fe.to.x===ae.to.x&&fe.to.y===ae.to.y||(_(ae),fe=ae)}function Ce(he){(D||B)&&H&&I&&(x==null||x(H));const{inProgress:ze,...G}=fe,ae={...G,toPosition:fe.toHandle?fe.toPosition:null};C==null||C(he,ae),i&&(m==null||m(he,ae)),g(),cancelAnimationFrame(T),P=!1,I=!1,H=null,B=null,E.removeEventListener("mousemove",me),E.removeEventListener("mouseup",Ce),E.removeEventListener("touchmove",me),E.removeEventListener("touchend",Ce)}E.addEventListener("mousemove",me),E.addEventListener("mouseup",Ce),E.addEventListener("touchmove",me),E.addEventListener("touchend",Ce)}function Wu(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:i,doc:s,lib:a,flowId:l,isValidConnection:u=Fu,nodeLookup:c}){const f=i==="target",d=t?s.querySelector(`.${a}-flow__handle[data-id="${l}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:g,y:p}=Rn(e),x=s.elementFromPoint(g,p),C=x!=null&&x.classList.contains(`${a}-flow__handle`)?x:d,$={handleDomNode:C,isValid:!1,connection:null,toHandle:null};if(C){const m=Xu(void 0,C),_=C.getAttribute("data-nodeid"),v=C.getAttribute("data-handleid"),b=C.classList.contains("connectable"),N=C.classList.contains("connectableend");if(!_||!m)return $;const E={source:f?_:r,sourceHandle:f?v:o,target:f?r:_,targetHandle:f?o:v};$.connection=E;const D=b&&N&&(n===hr.Strict?f&&m==="source"||!f&&m==="target":_!==r||v!==o);$.isValid=D&&u(E),$.toHandle=Zu(_,m,v,c,n,!1)}return $}const M0={onPointerDown:T0,isValid:Wu};function H0({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){const o=Ut(e);function i({translateExtent:a,width:l,height:u,zoomStep:c=10,pannable:f=!0,zoomable:d=!0,inversePan:g=!1}){const p=_=>{const v=n();if(_.sourceEvent.type!=="wheel"||!t)return;const b=-_.sourceEvent.deltaY*(_.sourceEvent.deltaMode===1?.05:_.sourceEvent.deltaMode?1:.002)*c,N=v[2]*Math.pow(2,b);t.scaleTo(N)};let x=[0,0];const C=_=>{(_.sourceEvent.type==="mousedown"||_.sourceEvent.type==="touchstart")&&(x=[_.sourceEvent.clientX??_.sourceEvent.touches[0].clientX,_.sourceEvent.clientY??_.sourceEvent.touches[0].clientY])},$=_=>{const v=n();if(_.sourceEvent.type!=="mousemove"&&_.sourceEvent.type!=="touchmove"||!t)return;const b=[_.sourceEvent.clientX??_.sourceEvent.touches[0].clientX,_.sourceEvent.clientY??_.sourceEvent.touches[0].clientY],N=[b[0]-x[0],b[1]-x[1]];x=b;const E=r()*Math.max(v[2],Math.log(v[2]))*(g?-1:1),T={x:v[0]-N[0]*E,y:v[1]-N[1]*E},D=[[0,0],[l,u]];t.setViewportConstrained({x:T.x,y:T.y,zoom:v[2]},D,a)},m=gu().on("start",C).on("zoom",f?$:null).on("zoom.wheel",d?p:null);o.call(m,{})}function s(){o.on("zoom",null)}return{update:i,destroy:s,pointer:on}}const V0=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,Oi=e=>({x:e.x,y:e.y,zoom:e.k}),sa=({x:e,y:t,zoom:n})=>Pi.translate(e,t).scale(n),zr=(e,t)=>e.target.closest(`.${t}`),Ku=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),aa=(e,t=0,n=()=>{})=>{const r=typeof t=="number"&&t>0;return r||n(),r?e.transition().duration(t).on("end",n):e},qu=e=>{const t=e.ctrlKey&&Di()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function D0({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:o,panOnScrollSpeed:i,zoomOnPinch:s,onPanZoomStart:a,onPanZoom:l,onPanZoomEnd:u}){return c=>{if(zr(c,t))return!1;c.preventDefault(),c.stopImmediatePropagation();const f=n.property("__zoom").k||1;if(c.ctrlKey&&s){const C=on(c),$=qu(c),m=f*Math.pow(2,$);r.scaleTo(n,m,C,c);return}const d=c.deltaMode===1?20:1;let g=o===Jn.Vertical?0:c.deltaX*d,p=o===Jn.Horizontal?0:c.deltaY*d;!Di()&&c.shiftKey&&o!==Jn.Vertical&&(g=c.deltaY*d,p=0),r.translateBy(n,-(g/f)*i,-(p/f)*i,{internal:!0});const x=Oi(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling||(e.isPanScrolling=!0,a==null||a(c,x)),e.isPanScrolling&&(l==null||l(c,x),e.panScrollTimeout=setTimeout(()=>{u==null||u(c,x),e.isPanScrolling=!1},150))}}function A0({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,o){if(!t&&r.type==="wheel"&&!r.ctrlKey||zr(r,e))return null;r.preventDefault(),n.call(this,r,o)}}function L0({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{var i,s,a;if((i=r.sourceEvent)!=null&&i.internal)return;const o=Oi(r.transform);e.mouseButton=((s=r.sourceEvent)==null?void 0:s.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=o,((a=r.sourceEvent)==null?void 0:a.type)==="mousedown"&&t(!0),n&&(n==null||n(r.sourceEvent,o))}}function O0({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:o}){return i=>{var s,a;e.usedRightMouseButton=!!(n&&Ku(t,e.mouseButton??0)),(s=i.sourceEvent)!=null&&s.sync||r([i.transform.x,i.transform.y,i.transform.k]),o&&!((a=i.sourceEvent)!=null&&a.internal)&&(o==null||o(i.sourceEvent,Oi(i.transform)))}}function I0({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:o,onPaneContextMenu:i}){return s=>{var a;if(!((a=s.sourceEvent)!=null&&a.internal)&&(e.isZoomingOrPanning=!1,i&&Ku(t,e.mouseButton??0)&&!e.usedRightMouseButton&&s.sourceEvent&&i(s.sourceEvent),e.usedRightMouseButton=!1,r(!1),o&&V0(e.prevViewport,s.transform))){const l=Oi(s.transform);e.prevViewport=l,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{o==null||o(s.sourceEvent,l)},n?150:0)}}}function z0({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:o,zoomOnDoubleClick:i,userSelectionActive:s,noWheelClassName:a,noPanClassName:l,lib:u}){return c=>{var p;const f=e||t,d=n&&c.ctrlKey;if(c.button===1&&c.type==="mousedown"&&(zr(c,`${u}-flow__node`)||zr(c,`${u}-flow__edge`)))return!0;if(!r&&!f&&!o&&!i&&!n||s||zr(c,a)&&c.type==="wheel"||zr(c,l)&&(c.type!=="wheel"||o&&c.type==="wheel"&&!e)||!n&&c.ctrlKey&&c.type==="wheel")return!1;if(!n&&c.type==="touchstart"&&((p=c.touches)==null?void 0:p.length)>1)return c.preventDefault(),!1;if(!f&&!o&&!d&&c.type==="wheel"||!r&&(c.type==="mousedown"||c.type==="touchstart")||Array.isArray(r)&&!r.includes(c.button)&&c.type==="mousedown")return!1;const g=Array.isArray(r)&&r.includes(c.button)||!c.button||c.button<=1;return(!c.ctrlKey||c.type==="wheel")&&g}}function R0({domNode:e,minZoom:t,maxZoom:n,paneClickDistance:r,translateExtent:o,viewport:i,onPanZoom:s,onPanZoomStart:a,onPanZoomEnd:l,onDraggingChange:u}){const c={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{x:0,y:0,zoom:0},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},f=e.getBoundingClientRect(),d=gu().clickDistance(!zn(r)||r<0?0:r).scaleExtent([t,n]).translateExtent(o),g=Ut(e).call(d);_({x:i.x,y:i.y,zoom:Lr(i.zoom,t,n)},[[0,0],[f.width,f.height]],o);const p=g.on("wheel.zoom"),x=g.on("dblclick.zoom");d.wheelDelta(qu);function C(O,R){return g?new Promise(S=>{d==null||d.transform(aa(g,R==null?void 0:R.duration,()=>S(!0)),O)}):Promise.resolve(!1)}function $({noWheelClassName:O,noPanClassName:R,onPaneContextMenu:S,userSelectionActive:M,panOnScroll:k,panOnDrag:P,panOnScrollMode:H,panOnScrollSpeed:I,preventScrolling:B,zoomOnPinch:F,zoomOnScroll:K,zoomOnDoubleClick:se,zoomActivationKeyPressed:ee,lib:W,onTransformChange:fe}){M&&!c.isZoomingOrPanning&&m();const Ce=k&&!ee&&!M?D0({zoomPanValues:c,noWheelClassName:O,d3Selection:g,d3Zoom:d,panOnScrollMode:H,panOnScrollSpeed:I,zoomOnPinch:F,onPanZoomStart:a,onPanZoom:s,onPanZoomEnd:l}):A0({noWheelClassName:O,preventScrolling:B,d3ZoomHandler:p});if(g.on("wheel.zoom",Ce,{passive:!1}),!M){const ze=L0({zoomPanValues:c,onDraggingChange:u,onPanZoomStart:a});d.on("start",ze);const G=O0({zoomPanValues:c,panOnDrag:P,onPaneContextMenu:!!S,onPanZoom:s,onTransformChange:fe});d.on("zoom",G);const ae=I0({zoomPanValues:c,panOnDrag:P,panOnScroll:k,onPaneContextMenu:S,onPanZoomEnd:l,onDraggingChange:u});d.on("end",ae)}const he=z0({zoomActivationKeyPressed:ee,panOnDrag:P,zoomOnScroll:K,panOnScroll:k,zoomOnDoubleClick:se,zoomOnPinch:F,userSelectionActive:M,noPanClassName:R,noWheelClassName:O,lib:W});d.filter(he),se?g.on("dblclick.zoom",x):g.on("dblclick.zoom",null)}function m(){d.on("zoom",null)}async function _(O,R,S){const M=sa(O),k=d==null?void 0:d.constrain()(M,R,S);return k&&await C(k),new Promise(P=>P(k))}async function v(O,R){const S=sa(O);return await C(S,R),new Promise(M=>M(S))}function b(O){if(g){const R=sa(O),S=g.property("__zoom");(S.k!==O.zoom||S.x!==O.x||S.y!==O.y)&&(d==null||d.transform(g,R,null,{sync:!0}))}}function N(){const O=g?du(g.node()):{x:0,y:0,k:1};return{x:O.x,y:O.y,zoom:O.k}}function E(O,R){return g?new Promise(S=>{d==null||d.scaleTo(aa(g,R==null?void 0:R.duration,()=>S(!0)),O)}):Promise.resolve(!1)}function T(O,R){return g?new Promise(S=>{d==null||d.scaleBy(aa(g,R==null?void 0:R.duration,()=>S(!0)),O)}):Promise.resolve(!1)}function D(O){d==null||d.scaleExtent(O)}function V(O){d==null||d.translateExtent(O)}function A(O){const R=!zn(O)||O<0?0:O;d==null||d.clickDistance(R)}return{update:$,destroy:m,setViewport:v,setViewportConstrained:_,getViewport:N,scaleTo:E,scaleBy:T,setScaleExtent:D,setTranslateExtent:V,syncViewport:b,setClickDistance:A}}var Gu;(function(e){e.Line="line",e.Handle="handle"})(Gu||(Gu={}));var B0=ne('
    ');function er(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(se,"$connectable",n),i=()=>Q(Ce,"$connectionRadius",n),s=()=>Q(fe,"$domNode",n),a=()=>Q(me,"$nodeLookup",n),l=()=>Q(W,"$connectionMode",n),u=()=>Q(G,"$lib",n),c=()=>Q(Fe,"$autoPanOnConnect",n),f=()=>Q(Ie,"$flowId",n),d=()=>Q(ze,"$isValidConnectionStore",n),g=()=>Q(Me,"$onedgecreate",n),p=()=>Q(oe,"$onConnectAction",n),x=()=>Q(pe,"$onConnectStartAction",n),C=()=>Q(be,"$onConnectEndAction",n),$=()=>Q(he,"$viewport",n),m=()=>Q(ht,"$connection",n),_=()=>Q(Oe,"$edges",n),v=()=>Q(rt,"$connectionLookup",n),b=re(),N=re(),E=re(),T=re(),D=re(),V=re(),A=re(),O=re();let R=w(t,"id",12,void 0),S=w(t,"type",12,"source"),M=w(t,"position",28,()=>$e.Top),k=w(t,"style",12,void 0),P=w(t,"isValidConnection",12,void 0),H=w(t,"onconnect",12,void 0),I=w(t,"ondisconnect",12,void 0),B=w(t,"isConnectable",12,void 0),F=w(t,"class",12,void 0);const K=ur("svelteflow__node_id"),se=ur("svelteflow__node_connectable"),ee=Ue(),{connectionMode:W,domNode:fe,nodeLookup:me,connectionRadius:Ce,viewport:he,isValidConnection:ze,lib:G,addEdge:ae,onedgecreate:Me,panBy:Le,cancelConnection:Xe,updateConnection:te,autoPanOnConnect:Fe,edges:Oe,connectionLookup:rt,onconnect:oe,onconnectstart:pe,onconnectend:be,flowId:Ie,connection:ht}=ee;function dt(Te){const st=Su(Te);(st&&Te.button===0||!st)&&M0.onPointerDown(Te,{handleId:h(E),nodeId:K,isTarget:h(b),connectionRadius:i(),domNode:s(),nodeLookup:a(),connectionMode:l(),lib:u(),autoPanOnConnect:c(),flowId:f(),isValidConnection:P()??d(),updateConnection:te,cancelConnection:Xe,panBy:Le,onConnect:ye=>{var ct;const lt=g()?g()(ye):ye;lt&&(ae(lt),(ct=p())==null||ct(ye))},onConnectStart:(ye,lt)=>{var ct;(ct=x())==null||ct(ye,{nodeId:lt.nodeId,handleId:lt.handleId,handleType:lt.handleType})},onConnectEnd:(ye,lt)=>{var ct;(ct=C())==null||ct(ye,lt)},getTransform:()=>[$().x,$().y,$().zoom],getFromHandle:()=>m().fromHandle})}let J=re(null),Re=re();ge(()=>j(S()),()=>{U(b,S()==="target")}),ge(()=>(j(B()),o()),()=>{U(N,B()!==void 0?B():o())}),ge(()=>j(R()),()=>{U(E,R()||null)}),ge(()=>(j(H()),j(I()),_(),v(),j(S()),j(R())),()=>{(H()||I())&&(_(),U(Re,v().get(`${K}-${S()}${R()?`-${R()}`:""}`)))}),ge(()=>(h(J),h(Re),j(I()),j(H())),()=>{if(h(J)&&!Kv(h(Re),h(J))){const Te=h(Re)??new Map;vu(h(J),Te,I()),vu(Te,h(J),H())}U(J,h(Re)??new Map)}),ge(()=>m(),()=>{U(T,!!m().fromHandle)}),ge(()=>(m(),j(S()),h(E)),()=>{var Te,st,ye;U(D,((Te=m().fromHandle)==null?void 0:Te.nodeId)===K&&((st=m().fromHandle)==null?void 0:st.type)===S()&&((ye=m().fromHandle)==null?void 0:ye.id)===h(E))}),ge(()=>(m(),j(S()),h(E)),()=>{var Te,st,ye;U(V,((Te=m().toHandle)==null?void 0:Te.nodeId)===K&&((st=m().toHandle)==null?void 0:st.type)===S()&&((ye=m().toHandle)==null?void 0:ye.id)===h(E))}),ge(()=>(l(),m(),j(S()),h(E)),()=>{var Te,st,ye;U(A,l()===hr.Strict?((Te=m().fromHandle)==null?void 0:Te.type)!==S():K!==((st=m().fromHandle)==null?void 0:st.nodeId)||h(E)!==((ye=m().fromHandle)==null?void 0:ye.id))}),ge(()=>(h(V),m()),()=>{U(O,h(V)&&m().isValid)}),vt(),He();var le=B0();de(le,"data-nodeid",K);let $n;var fn=X(le);wt(fn,t,"default",{}),Z(le),Ee(Te=>{de(le,"data-handleid",h(E)),de(le,"data-handlepos",M()),de(le,"data-id",`${f()??""}-${K??""}-${R()||""}-${S()??""}`),$n=$t(le,1,wn(Te),null,$n,{valid:h(O),connectingto:h(V),connectingfrom:h(D),source:!h(b),target:h(b),connectablestart:h(N),connectableend:h(N),connectable:h(N),connectionindicator:h(N)&&(!h(T)||h(A))}),de(le,"style",k())},[()=>Et(["svelte-flow__handle",`svelte-flow__handle-${M()}`,"nodrag","nopan",M(),F()])],ve),Ze("mousedown",le,dt),Ze("touchstart",le,dt),L(e,le);var En=ce({get id(){return R()},set id(Te){R(Te),y()},get type(){return S()},set type(Te){S(Te),y()},get position(){return M()},set position(Te){M(Te),y()},get style(){return k()},set style(Te){k(Te),y()},get isValidConnection(){return P()},set isValidConnection(Te){P(Te),y()},get onconnect(){return H()},set onconnect(Te){H(Te),y()},get ondisconnect(){return I()},set ondisconnect(Te){I(Te),y()},get isConnectable(){return B()},set isConnectable(Te){B(Te),y()},get class(){return F()},set class(Te){F(Te),y()}});return r(),En}ie(er,{id:{},type:{},position:{},style:{},isValidConnection:{},onconnect:{},ondisconnect:{},isConnectable:{},class:{}},["default"],[],!0);var Y0=ne(" ",1);function Ii(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["data","targetPosition","sourcePosition"]),ue(t,!1);let r=w(t,"data",28,()=>({label:"Node"})),o=w(t,"targetPosition",12,void 0),i=w(t,"sourcePosition",12,void 0);He();var s=Y0(),a=xe(s);const l=ve(()=>o()??$e.Top);er(a,{type:"target",get position(){return h(l)}});var u=z(a),c=z(u);const f=ve(()=>i()??$e.Bottom);return er(c,{type:"source",get position(){return h(f)}}),Ee(()=>{var d;return Bt(u,` ${((d=r())==null?void 0:d.label)??""} `)}),L(e,s),ce({get data(){return r()},set data(d){r(d),y()},get targetPosition(){return o()},set targetPosition(d){o(d),y()},get sourcePosition(){return i()},set sourcePosition(d){i(d),y()}})}ie(Ii,{data:{},targetPosition:{},sourcePosition:{}},[],[],!0);var Z0=ne(" ",1);function Uu(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["data","sourcePosition"]),ue(t,!1);let r=w(t,"data",28,()=>({label:"Node"})),o=w(t,"sourcePosition",12,void 0);He(),Pe();var i=Z0(),s=xe(i),a=z(s);const l=ve(()=>o()??$e.Bottom);return er(a,{type:"source",get position(){return h(l)}}),Ee(()=>{var u;return Bt(s,`${((u=r())==null?void 0:u.label)??""} `)}),L(e,i),ce({get data(){return r()},set data(u){r(u),y()},get sourcePosition(){return o()},set sourcePosition(u){o(u),y()}})}ie(Uu,{data:{},sourcePosition:{}},[],[],!0);var X0=ne(" ",1);function ju(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["data","targetPosition"]),ue(t,!1);let r=w(t,"data",28,()=>({label:"Node"})),o=w(t,"targetPosition",12,void 0);He(),Pe();var i=X0(),s=xe(i),a=z(s);const l=ve(()=>o()??$e.Top);return er(a,{type:"target",get position(){return h(l)}}),Ee(()=>{var u;return Bt(s,`${((u=r())==null?void 0:u.label)??""} `)}),L(e,i),ce({get data(){return r()},set data(u){r(u),y()},get targetPosition(){return o()},set targetPosition(u){o(u),y()}})}ie(ju,{data:{},targetPosition:{}},[],[],!0);function Ju(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,[])}ie(Ju,{},[],[],!0);function Qu(e,t,n){if(!t)return;const r=n?t.querySelector(n):t;r&&r.appendChild(e)}function Rr(e,{target:t,domNode:n}){return Qu(e,n,t),{async update({target:r,domNode:o}){Qu(e,o,r)},destroy(){e.parentNode&&e.parentNode.removeChild(e)}}}var F0=ne("
    ");function ec(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(i,"$domNode",n),{domNode:i}=Ue();He();var s=F0(),a=X(s);wt(a,t,"default",{}),Z(s),_t(s,(l,u)=>Rr==null?void 0:Rr(l,u),()=>({target:".svelte-flow__edgelabel-renderer",domNode:o()})),L(e,s),ce(),r()}ie(ec,{},["default"],[],!0);function tc(){const{edgeLookup:e,selectionRect:t,selectionRectMode:n,multiselectionKeyPressed:r,addSelectedEdges:o,unselectNodesAndEdges:i,elementsSelectable:s}=Ue();return a=>{const l=q(e).get(a);if(!l){console.warn("012",Dr.error012(a));return}(l.selectable||q(s)&&typeof l.selectable>"u")&&(t.set(null),n.set(null),l.selected?l.selected&&q(r)&&i({nodes:[],edges:[l]}):o([a]))}}var W0=ne('
    ');function nc(e,t){ue(t,!1);let n=w(t,"style",12,void 0),r=w(t,"x",12,void 0),o=w(t,"y",12,void 0);const i=tc(),s=ur("svelteflow__edge_id");return He(),ec(e,{children:(a,l)=>{var u=W0(),c=X(u);wt(c,t,"default",{}),Z(u),Ee(()=>{de(u,"style","pointer-events: all;"+n()),at(u,"transform",`translate(-50%, -50%) translate(${r()??""}px,${o()??""}px)`)}),Ze("keyup",u,()=>{}),Ze("click",u,()=>{s&&i(s)}),L(a,u)},$$slots:{default:!0}}),ce({get style(){return n()},set style(a){n(a),y()},get x(){return r()},set x(a){r(a),y()},get y(){return o()},set y(a){o(a),y()}})}ie(nc,{style:{},x:{},y:{}},["default"],[],!0);var K0=_e(''),q0=_e('',1);function Eo(e,t){ue(t,!1);let n=w(t,"id",12,void 0),r=w(t,"path",12),o=w(t,"label",12,void 0),i=w(t,"labelX",12,void 0),s=w(t,"labelY",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"markerStart",12,void 0),u=w(t,"markerEnd",12,void 0),c=w(t,"style",12,void 0),f=w(t,"interactionWidth",12,20),d=w(t,"class",12,void 0),g=f()===void 0?20:f();He();var p=q0(),x=xe(p),C=z(x);{var $=v=>{var b=K0();de(b,"stroke-opacity",0),de(b,"stroke-width",g),Ee(()=>de(b,"d",r())),L(v,b)};ke(C,v=>{g&&v($)})}var m=z(C);{var _=v=>{nc(v,{get x(){return i()},get y(){return s()},get style(){return a()},children:(b,N)=>{Pe();var E=Ae();Ee(()=>Bt(E,o())),L(b,E)},$$slots:{default:!0}})};ke(m,v=>{o()&&v(_)})}return Ee(v=>{de(x,"id",n()),de(x,"d",r()),$t(x,0,wn(v)),de(x,"marker-start",l()),de(x,"marker-end",u()),de(x,"style",c())},[()=>Et(["svelte-flow__edge-path",d()])],ve),L(e,p),ce({get id(){return n()},set id(v){n(v),y()},get path(){return r()},set path(v){r(v),y()},get label(){return o()},set label(v){o(v),y()},get labelX(){return i()},set labelX(v){i(v),y()},get labelY(){return s()},set labelY(v){s(v),y()},get labelStyle(){return a()},set labelStyle(v){a(v),y()},get markerStart(){return l()},set markerStart(v){l(v),y()},get markerEnd(){return u()},set markerEnd(v){u(v),y()},get style(){return c()},set style(v){c(v),y()},get interactionWidth(){return f()},set interactionWidth(v){f(v),y()},get class(){return d()},set class(v){d(v),y()}})}ie(Eo,{id:{},path:{},label:{},labelX:{},labelY:{},labelStyle:{},markerStart:{},markerEnd:{},style:{},interactionWidth:{},class:{}},[],[],!0);function zi(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","sourcePosition","targetX","targetY","targetPosition"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"sourcePosition",12),x=w(t,"targetX",12),C=w(t,"targetY",12),$=w(t,"targetPosition",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(x()),j(C()),j(p()),j($())),()=>{(m=>(U(r,m[0]),U(o,m[1]),U(i,m[2])))(Tu({sourceX:d(),sourceY:g(),targetX:x(),targetY:C(),sourcePosition:p(),targetPosition:$()}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(m){s(m),y()},get labelStyle(){return a()},set labelStyle(m){a(m),y()},get style(){return l()},set style(m){l(m),y()},get markerStart(){return u()},set markerStart(m){u(m),y()},get markerEnd(){return c()},set markerEnd(m){c(m),y()},get interactionWidth(){return f()},set interactionWidth(m){f(m),y()},get sourceX(){return d()},set sourceX(m){d(m),y()},get sourceY(){return g()},set sourceY(m){g(m),y()},get sourcePosition(){return p()},set sourcePosition(m){p(m),y()},get targetX(){return x()},set targetX(m){x(m),y()},get targetY(){return C()},set targetY(m){C(m),y()},get targetPosition(){return $()},set targetPosition(m){$(m),y()}})}ie(zi,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},sourcePosition:{},targetX:{},targetY:{},targetPosition:{}},[],[],!0);function rc(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","sourcePosition","targetX","targetY","targetPosition"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"sourcePosition",12),x=w(t,"targetX",12),C=w(t,"targetY",12),$=w(t,"targetPosition",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(x()),j(C()),j(p()),j($())),()=>{(m=>(U(r,m[0]),U(o,m[1]),U(i,m[2])))(Li({sourceX:d(),sourceY:g(),targetX:x(),targetY:C(),sourcePosition:p(),targetPosition:$()}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(m){s(m),y()},get labelStyle(){return a()},set labelStyle(m){a(m),y()},get style(){return l()},set style(m){l(m),y()},get markerStart(){return u()},set markerStart(m){u(m),y()},get markerEnd(){return c()},set markerEnd(m){c(m),y()},get interactionWidth(){return f()},set interactionWidth(m){f(m),y()},get sourceX(){return d()},set sourceX(m){d(m),y()},get sourceY(){return g()},set sourceY(m){g(m),y()},get sourcePosition(){return p()},set sourcePosition(m){p(m),y()},get targetX(){return x()},set targetX(m){x(m),y()},get targetY(){return C()},set targetY(m){C(m),y()},get targetPosition(){return $()},set targetPosition(m){$(m),y()}})}ie(rc,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},sourcePosition:{},targetX:{},targetY:{},targetPosition:{}},[],[],!0);function oc(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","targetX","targetY"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"targetX",12),x=w(t,"targetY",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(p()),j(x())),()=>{(C=>(U(r,C[0]),U(o,C[1]),U(i,C[2])))(ea({sourceX:d(),sourceY:g(),targetX:p(),targetY:x()}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(C){s(C),y()},get labelStyle(){return a()},set labelStyle(C){a(C),y()},get style(){return l()},set style(C){l(C),y()},get markerStart(){return u()},set markerStart(C){u(C),y()},get markerEnd(){return c()},set markerEnd(C){c(C),y()},get interactionWidth(){return f()},set interactionWidth(C){f(C),y()},get sourceX(){return d()},set sourceX(C){d(C),y()},get sourceY(){return g()},set sourceY(C){g(C),y()},get targetX(){return p()},set targetX(C){p(C),y()},get targetY(){return x()},set targetY(C){x(C),y()}})}ie(oc,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},targetX:{},targetY:{}},[],[],!0);function ic(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","sourcePosition","targetX","targetY","targetPosition"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"sourcePosition",12),x=w(t,"targetX",12),C=w(t,"targetY",12),$=w(t,"targetPosition",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(x()),j(C()),j(p()),j($())),()=>{(m=>(U(r,m[0]),U(o,m[1]),U(i,m[2])))(Li({sourceX:d(),sourceY:g(),targetX:x(),targetY:C(),sourcePosition:p(),targetPosition:$(),borderRadius:0}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(m){s(m),y()},get labelStyle(){return a()},set labelStyle(m){a(m),y()},get style(){return l()},set style(m){l(m),y()},get markerStart(){return u()},set markerStart(m){u(m),y()},get markerEnd(){return c()},set markerEnd(m){c(m),y()},get interactionWidth(){return f()},set interactionWidth(m){f(m),y()},get sourceX(){return d()},set sourceX(m){d(m),y()},get sourceY(){return g()},set sourceY(m){g(m),y()},get sourcePosition(){return p()},set sourcePosition(m){p(m),y()},get targetX(){return x()},set targetX(m){x(m),y()},get targetY(){return C()},set targetY(m){C(m),y()},get targetPosition(){return $()},set targetPosition(m){$(m),y()}})}ie(ic,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},sourcePosition:{},targetX:{},targetY:{},targetPosition:{}},[],[],!0);function G0(e,t){const n=e.set,r=t.set,o=q(e),i=q(t);let a=o.length===0&&i.length>0?i:o;e.set(a);const l=u=>{const c=n(u);return a=c,r(a),c};e.set=t.set=l,e.update=t.update=u=>l(u(a))}function U0(e,t){const n=e.set,r=t.set;let o=q(t);e.set(o);const i=s=>{n(s),r(s),o=s};e.set=t.set=i,e.update=t.update=s=>i(s(o))}const j0=(e,t,n)=>{if(!n)return;const r=q(e),o=t.set,i=n.set;let s=n?q(n):{x:0,y:0,zoom:1};t.set(s),t.set=a=>(o(a),i(a),s=a,a),n.set=a=>(r==null||r.syncViewport(a),o(a),i(a),s=a,a),t.update=a=>{t.set(a(s))},n.update=a=>{n.set(a(s))}},J0=(e,t,n,r=[0,0],o=Ni)=>{const{subscribe:i,set:s,update:a}=we([]);let l=e,u={},c=!0;const f=x=>(Ou(x,t,n,{elevateNodesOnSelect:c,nodeOrigin:r,nodeExtent:o,defaults:u,checkEquality:!1}),l=x,s(l),l),d=x=>f(x(l)),g=x=>{u=x},p=x=>{c=x.elevateNodesOnSelect??c};return f(l),{subscribe:i,set:f,update:d,setDefaultOptions:g,setOptions:p}},Q0=(e,t,n,r)=>{const{subscribe:o,set:i,update:s}=we([]);let a=e,l={};const u=d=>{const g=l?d.map(p=>({...l,...p})):d;Ru(t,n,g),a=g,i(a)},c=d=>u(d(a)),f=d=>{l=d};return u(a),{subscribe:o,set:u,update:c,setDefaultOptions:f}},sc={input:Uu,output:ju,default:Ii,group:Ju},ac={straight:oc,smoothstep:rc,default:zi,step:ic},e2=({nodes:e=[],edges:t=[],width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s})=>{const a=new Map,l=new Map,u=new Map,c=new Map,f=i??[0,0],d=s??Ni;Ou(e,a,l,{nodeExtent:d,nodeOrigin:f,elevateNodesOnSelect:!1,checkEquality:!1}),Ru(u,c,t);let g={x:0,y:0,zoom:1};if(o&&n&&r){const p=bo(a,{filter:x=>!!((x.width||x.initialWidth)&&(x.height||x.initialHeight))});g=js(p,n,r,.5,2,.1)}return{flowId:we(null),nodes:J0(e,a,l,f,d),nodeLookup:Gt(a),parentLookup:Gt(l),edgeLookup:Gt(c),visibleNodes:Gt([]),edges:Q0(t,u,c),visibleEdges:Gt([]),connectionLookup:Gt(u),height:we(500),width:we(500),minZoom:we(.5),maxZoom:we(2),nodeOrigin:we(f),nodeDragThreshold:we(1),nodeExtent:we(d),translateExtent:we(Ni),autoPanOnNodeDrag:we(!0),autoPanOnConnect:we(!0),fitViewOnInit:we(!1),fitViewOnInitDone:we(!1),fitViewOptions:we(void 0),panZoom:we(null),snapGrid:we(null),dragging:we(!1),selectionRect:we(null),selectionKeyPressed:we(!1),multiselectionKeyPressed:we(!1),deleteKeyPressed:we(!1),panActivationKeyPressed:we(!1),zoomActivationKeyPressed:we(!1),selectionRectMode:we(null),selectionMode:we(Ti.Partial),nodeTypes:we(sc),edgeTypes:we(ac),viewport:we(g),connectionMode:we(hr.Strict),domNode:we(null),connection:Gt(Ws),connectionLineType:we(Ar.Bezier),connectionRadius:we(20),isValidConnection:we(()=>!0),nodesDraggable:we(!0),nodesConnectable:we(!0),elementsSelectable:we(!0),selectNodesOnDrag:we(!0),markers:Gt([]),defaultMarkerColor:we("#b1b1b7"),lib:Gt("svelte"),onlyRenderVisibleElements:we(!1),onerror:we(Qv),ondelete:we(void 0),onedgecreate:we(void 0),onconnect:we(void 0),onconnectstart:we(void 0),onconnectend:we(void 0),onbeforedelete:we(void 0),nodesInitialized:we(!1),edgesInitialized:we(!1),viewportInitialized:we(!1),initialized:Gt(!1)}};function t2(e){const t=Un([e.edges,e.nodes,e.nodeLookup,e.onlyRenderVisibleElements,e.viewport,e.width,e.height],([n,,r,o,i,s,a])=>o&&s&&a?n.filter(u=>{const c=r.get(u.source),f=r.get(u.target);return c&&f&&s0({sourceNode:c,targetNode:f,width:s,height:a,transform:[i.x,i.y,i.zoom]})}):n);return Un([t,e.nodes,e.nodeLookup,e.connectionMode,e.onerror],([n,,r,o,i])=>n.reduce((a,l)=>{const u=r.get(l.source),c=r.get(l.target);if(!u||!c)return a;const f=g0({id:l.id,sourceNode:u,targetNode:c,sourceHandle:l.sourceHandle||null,targetHandle:l.targetHandle||null,connectionMode:o,onError:i});return f&&a.push({...l,zIndex:i0({selected:l.selected,zIndex:l.zIndex,sourceNode:u,targetNode:c,elevateOnSelect:!1}),...f}),a},[]))}function n2(e){return Un([e.nodeLookup,e.onlyRenderVisibleElements,e.width,e.height,e.viewport,e.nodes],([t,n,r,o,i])=>{const s=[i.x,i.y,i.zoom];return n?pu(t,{x:0,y:0,width:r,height:o},s,!0):Array.from(t.values())})}const Ri=Symbol();function lc({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s}){const a=e2({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s});function l(k){a.nodeTypes.set({...sc,...k})}function u(k){a.edgeTypes.set({...ac,...k})}function c(k){const P=q(a.edges);a.edges.set(u0(k,P))}const f=(k,P=!1)=>{var I;const H=q(a.nodeLookup);for(const[B,F]of k){const K=(I=H.get(B))==null?void 0:I.internals.userNode;K&&(K.position=F.position,K.dragging=P)}a.nodes.update(B=>B)};function d(k){var F,K,se;const P=q(a.nodeLookup),H=q(a.parentLookup),{changes:I,updatedInternals:B}=x0(k,P,q(a.parentLookup),q(a.domNode),q(a.nodeOrigin));if(B){if(m0(P,H,{nodeOrigin:i,nodeExtent:s}),!q(a.fitViewOnInitDone)&&q(a.fitViewOnInit)){const ee=q(a.fitViewOptions),W=p({...ee,nodes:ee==null?void 0:ee.nodes});a.fitViewOnInitDone.set(W)}for(const ee of I){const W=(F=P.get(ee.id))==null?void 0:F.internals.userNode;if(W)switch(ee.type){case"dimensions":{const fe={...W.measured,...ee.dimensions};ee.setAttributes&&(W.width=((K=ee.dimensions)==null?void 0:K.width)??W.width,W.height=((se=ee.dimensions)==null?void 0:se.height)??W.height),W.measured=fe;break}case"position":W.position=ee.position??W.position;break}}a.nodes.update(ee=>ee),q(a.nodesInitialized)||a.nodesInitialized.set(!0)}}function g(k){const P=q(a.panZoom),H=q(a.domNode);if(!P||!H)return Promise.resolve(!1);const{width:I,height:B}=Qs(H),F=mu(q(a.nodeLookup),k);return yu({nodes:F,width:I,height:B,minZoom:q(a.minZoom),maxZoom:q(a.maxZoom),panZoom:P},k)}function p(k){const P=q(a.panZoom);if(!P)return!1;const H=mu(q(a.nodeLookup),k);return yu({nodes:H,width:q(a.width),height:q(a.height),minZoom:q(a.minZoom),maxZoom:q(a.maxZoom),panZoom:P},k),H.size>0}function x(k,P){const H=q(a.panZoom);return H?H.scaleBy(k,P):Promise.resolve(!1)}function C(k){return x(1.2,k)}function $(k){return x(1/1.2,k)}function m(k){const P=q(a.panZoom);P&&(P.setScaleExtent([k,q(a.maxZoom)]),a.minZoom.set(k))}function _(k){const P=q(a.panZoom);P&&(P.setScaleExtent([q(a.minZoom),k]),a.maxZoom.set(k))}function v(k){const P=q(a.panZoom);P&&(P.setTranslateExtent(k),a.translateExtent.set(k))}function b(k){let P=!1;return k.forEach(H=>{H.selected&&(H.selected=!1,P=!0)}),P}function N(k){var P;(P=q(a.panZoom))==null||P.setClickDistance(k)}function E(k){b((k==null?void 0:k.nodes)||q(a.nodes))&&a.nodes.set(q(a.nodes)),b((k==null?void 0:k.edges)||q(a.edges))&&a.edges.set(q(a.edges))}a.deleteKeyPressed.subscribe(async k=>{var P;if(k){const H=q(a.nodes),I=q(a.edges),B=H.filter(ee=>ee.selected),F=I.filter(ee=>ee.selected),{nodes:K,edges:se}=await wu({nodesToRemove:B,edgesToRemove:F,nodes:H,edges:I,onBeforeDelete:q(a.onbeforedelete)});(K.length||se.length)&&(a.nodes.update(ee=>ee.filter(W=>!K.some(fe=>fe.id===W.id))),a.edges.update(ee=>ee.filter(W=>!se.some(fe=>fe.id===W.id))),(P=q(a.ondelete))==null||P({nodes:K,edges:se}))}});function T(k){const P=q(a.multiselectionKeyPressed);a.nodes.update(H=>H.map(I=>{const B=k.includes(I.id),F=P&&I.selected||B;return I.selected=F,I})),P||a.edges.update(H=>H.map(I=>(I.selected=!1,I)))}function D(k){const P=q(a.multiselectionKeyPressed);a.edges.update(H=>H.map(I=>{const B=k.includes(I.id),F=P&&I.selected||B;return I.selected=F,I})),P||a.nodes.update(H=>H.map(I=>(I.selected=!1,I)))}function V(k){var H;const P=(H=q(a.nodes))==null?void 0:H.find(I=>I.id===k);if(!P){console.warn("012",Dr.error012(k));return}a.selectionRect.set(null),a.selectionRectMode.set(null),P.selected?P.selected&&q(a.multiselectionKeyPressed)&&E({nodes:[P],edges:[]}):T([k])}function A(k){const P=q(a.viewport);return b0({delta:k,panZoom:q(a.panZoom),transform:[P.x,P.y,P.zoom],translateExtent:q(a.translateExtent),width:q(a.width),height:q(a.height)})}const O=we(Ws),R=k=>{O.set({...k})};function S(){O.set(Ws)}function M(){a.fitViewOnInitDone.set(!1),a.selectionRect.set(null),a.selectionRectMode.set(null),a.snapGrid.set(null),a.isValidConnection.set(()=>!0),E(),S()}return{...a,visibleEdges:t2(a),visibleNodes:n2(a),connection:Un([O,a.viewport],([k,P])=>k.inProgress?{...k,to:ko(k.to,[P.x,P.y,P.zoom])}:{...k}),markers:Un([a.edges,a.defaultMarkerColor,a.flowId],([k,P,H])=>h0(k,{defaultColor:P,id:H})),initialized:(()=>{let k=!1;const P=q(a.nodes).length,H=q(a.edges).length;return Un([a.nodesInitialized,a.edgesInitialized,a.viewportInitialized],([I,B,F])=>k||(P===0?k=F:H===0?k=F&&I:k=F&&I&&B,k))})(),syncNodeStores:k=>G0(a.nodes,k),syncEdgeStores:k=>U0(a.edges,k),syncViewport:k=>j0(a.panZoom,a.viewport,k),setNodeTypes:l,setEdgeTypes:u,addEdge:c,updateNodePositions:f,updateNodeInternals:d,zoomIn:C,zoomOut:$,fitView:k=>g(k),setMinZoom:m,setMaxZoom:_,setTranslateExtent:v,setPaneClickDistance:N,unselectNodesAndEdges:E,addSelectedNodes:T,addSelectedEdges:D,handleNodeSelection:V,panBy:A,updateConnection:R,cancelConnection:S,reset:M}}function Ue(){const e=ur(Ri);if(!e)throw new Error("In order to use useStore you need to wrap your component in a ");return e.getStore()}function r2({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s}){const a=lc({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s});return Sr(Ri,{getStore:()=>a}),a}function la(e,t){const{panZoom:n,minZoom:r,maxZoom:o,initialViewport:i,viewport:s,dragging:a,translateExtent:l,paneClickDistance:u}=t,c=R0({domNode:e,minZoom:r,maxZoom:o,translateExtent:l,viewport:i,paneClickDistance:u,onDraggingChange:a.set}),f=c.getViewport();return s.set(f),n.set(c),c.update(t),{update(d){c.update(d)}}}var o2=ne('
    ');const i2={hash:"svelte-4xkw84",code:".svelte-flow__zoom.svelte-4xkw84 {width:100%;height:100%;position:absolute;top:0;left:0;z-index:4;}"};function uc(e,t){ue(t,!1),et(e,i2);const[n,r]=nt(),o=()=>Q(H,"$panActivationKeyPressed",n),i=()=>Q(R,"$minZoom",n),s=()=>Q(S,"$maxZoom",n),a=()=>Q(I,"$zoomActivationKeyPressed",n),l=()=>Q(O,"$selectionRect",n),u=()=>Q(k,"$translateExtent",n),c=()=>Q(P,"$lib",n),f=re(),d=re(),g=re();let p=w(t,"initialViewport",12,void 0),x=w(t,"onMoveStart",12,void 0),C=w(t,"onMove",12,void 0),$=w(t,"onMoveEnd",12,void 0),m=w(t,"panOnScrollMode",12),_=w(t,"preventScrolling",12),v=w(t,"zoomOnScroll",12),b=w(t,"zoomOnDoubleClick",12),N=w(t,"zoomOnPinch",12),E=w(t,"panOnDrag",12),T=w(t,"panOnScroll",12),D=w(t,"paneClickDistance",12);const{viewport:V,panZoom:A,selectionRect:O,minZoom:R,maxZoom:S,dragging:M,translateExtent:k,lib:P,panActivationKeyPressed:H,zoomActivationKeyPressed:I,viewportInitialized:B}=Ue(),F=W=>V.set({x:W[0],y:W[1],zoom:W[2]});rn(()=>{ai(B,!0)}),ge(()=>j(p()),()=>{U(f,p()||{x:0,y:0,zoom:1})}),ge(()=>(o(),j(E())),()=>{U(d,o()||E())}),ge(()=>(o(),j(T())),()=>{U(g,o()||T())}),vt(),He();var K=o2(),se=X(K);wt(se,t,"default",{}),Z(K),_t(K,(W,fe)=>la==null?void 0:la(W,fe),()=>({viewport:V,minZoom:i(),maxZoom:s(),initialViewport:h(f),dragging:M,panZoom:A,onPanZoomStart:x(),onPanZoom:C(),onPanZoomEnd:$(),zoomOnScroll:v(),zoomOnDoubleClick:b(),zoomOnPinch:N(),panOnScroll:h(g),panOnDrag:h(d),panOnScrollSpeed:.5,panOnScrollMode:m()||Jn.Free,zoomActivationKeyPressed:a(),preventScrolling:typeof _()=="boolean"?_():!0,noPanClassName:"nopan",noWheelClassName:"nowheel",userSelectionActive:!!l(),translateExtent:u(),lib:c(),paneClickDistance:D(),onTransformChange:F})),L(e,K);var ee=ce({get initialViewport(){return p()},set initialViewport(W){p(W),y()},get onMoveStart(){return x()},set onMoveStart(W){x(W),y()},get onMove(){return C()},set onMove(W){C(W),y()},get onMoveEnd(){return $()},set onMoveEnd(W){$(W),y()},get panOnScrollMode(){return m()},set panOnScrollMode(W){m(W),y()},get preventScrolling(){return _()},set preventScrolling(W){_(W),y()},get zoomOnScroll(){return v()},set zoomOnScroll(W){v(W),y()},get zoomOnDoubleClick(){return b()},set zoomOnDoubleClick(W){b(W),y()},get zoomOnPinch(){return N()},set zoomOnPinch(W){N(W),y()},get panOnDrag(){return E()},set panOnDrag(W){E(W),y()},get panOnScroll(){return T()},set panOnScroll(W){T(W),y()},get paneClickDistance(){return D()},set paneClickDistance(W){D(W),y()}});return r(),ee}ie(uc,{initialViewport:{},onMoveStart:{},onMove:{},onMoveEnd:{},panOnScrollMode:{},preventScrolling:{},zoomOnScroll:{},zoomOnDoubleClick:{},zoomOnPinch:{},panOnDrag:{},panOnScroll:{},paneClickDistance:{}},["default"],[],!0);function cc(e,t){return n=>{n.target===t&&(e==null||e(n))}}function dc(e){return t=>{const n=e.includes(t.id);return t.selected!==n&&(t.selected=n),t}}var s2=ne("
    ");const a2={hash:"svelte-1esy7hx",code:".svelte-flow__pane.svelte-1esy7hx {position:absolute;top:0;left:0;width:100%;height:100%;}"};function fc(e,t){ue(t,!1),et(e,a2);const[n,r]=nt(),o=()=>Q(S,"$panActivationKeyPressed",n),i=()=>Q(O,"$selectionKeyPressed",n),s=()=>Q(V,"$selectionRect",n),a=()=>Q(D,"$elementsSelectable",n),l=()=>Q(A,"$selectionRectMode",n),u=()=>Q(N,"$edges",n),c=()=>Q(b,"$nodeLookup",n),f=()=>Q(E,"$viewport",n),d=()=>Q(R,"$selectionMode",n),g=()=>Q(T,"$dragging",n),p=re(),x=re(),C=re();let $=w(t,"panOnDrag",12,void 0),m=w(t,"selectionOnDrag",12,void 0);const _=ii(),{nodes:v,nodeLookup:b,edges:N,viewport:E,dragging:T,elementsSelectable:D,selectionRect:V,selectionRectMode:A,selectionKeyPressed:O,selectionMode:R,panActivationKeyPressed:S,unselectNodesAndEdges:M}=Ue();let k=re(),P=null,H=[],I=!1;function B(G){if(I){I=!1;return}_("paneclick",{event:G}),M(),A.set(null)}function F(G){var Le,Xe;if(P=h(k).getBoundingClientRect(),!D||!h(x)||G.button!==0||G.target!==h(k)||!P)return;(Xe=(Le=G.target)==null?void 0:Le.setPointerCapture)==null||Xe.call(Le,G.pointerId);const{x:ae,y:Me}=Rn(G,P);M(),V.set({width:0,height:0,startX:ae,startY:Me,x:ae,y:Me})}function K(G){if(!h(x)||!P||!s())return;I=!0;const ae=Rn(G,P),Me=s().startX??0,Le=s().startY??0,Xe={...s(),x:ae.xoe.id),Fe=qs(H,u()).map(oe=>oe.id);H=pu(c(),Xe,[f().x,f().y,f().zoom],d()===Ti.Partial,!0);const Oe=qs(H,u()).map(oe=>oe.id),rt=H.map(oe=>oe.id);(te.length!==rt.length||rt.some(oe=>!te.includes(oe)))&&v.update(oe=>oe.map(dc(rt))),(Fe.length!==Oe.length||Oe.some(oe=>!Fe.includes(oe)))&&N.update(oe=>oe.map(dc(Oe))),A.set("user"),V.set(Xe)}function se(G){var ae,Me;G.button===0&&((Me=(ae=G.target)==null?void 0:ae.releasePointerCapture)==null||Me.call(ae,G.pointerId),!h(x)&&l()==="user"&&G.target===h(k)&&(B==null||B(G)),V.set(null),H.length>0&&ai(A,"nodes"),i()&&(I=!1))}const ee=G=>{var ae;if(Array.isArray(h(p))&&((ae=h(p))!=null&&ae.includes(2))){G.preventDefault();return}_("panecontextmenu",{event:G})};ge(()=>(o(),j($())),()=>{U(p,o()||$())}),ge(()=>(i(),s(),j(m()),h(p)),()=>{U(x,i()||s()||m()&&h(p)!==!0)}),ge(()=>(a(),h(x),l()),()=>{U(C,a()&&(h(x)||l()==="user"))}),vt(),He();var W=s2(),fe=Ne(()=>h(C)?void 0:cc(B,h(k))),me=Ne(()=>cc(ee,h(k)));let Ce;var he=X(W);wt(he,t,"default",{}),Z(W),An(W,G=>U(k,G),()=>h(k)),Ee(G=>Ce=$t(W,1,"svelte-flow__pane svelte-1esy7hx",null,Ce,{draggable:G,dragging:g(),selection:h(x)}),[()=>$()===!0||Array.isArray($())&&$().includes(0)],ve),Ze("click",W,function(...G){var ae;(ae=h(fe))==null||ae.apply(this,G)}),Ze("pointerdown",W,function(...G){var ae;(ae=h(C)?F:void 0)==null||ae.apply(this,G)}),Ze("pointermove",W,function(...G){var ae;(ae=h(C)?K:void 0)==null||ae.apply(this,G)}),Ze("pointerup",W,function(...G){var ae;(ae=h(C)?se:void 0)==null||ae.apply(this,G)}),Ze("contextmenu",W,function(...G){var ae;(ae=h(me))==null||ae.apply(this,G)}),L(e,W);var ze=ce({get panOnDrag(){return $()},set panOnDrag(G){$(G),y()},get selectionOnDrag(){return m()},set selectionOnDrag(G){m(G),y()}});return r(),ze}ie(fc,{panOnDrag:{},selectionOnDrag:{}},["default"],[],!0);var l2=ne('
    ');const u2={hash:"svelte-1floaup",code:".svelte-flow__viewport.svelte-1floaup {width:100%;height:100%;position:absolute;top:0;left:0;}"};function gc(e,t){ue(t,!1),et(e,u2);const[n,r]=nt(),o=()=>Q(i,"$viewport",n),{viewport:i}=Ue();He();var s=l2(),a=X(s);wt(a,t,"default",{}),Z(s),Ee(()=>de(s,"style",`transform: translate(${o().x??""}px, ${o().y??""}px) scale(${o().zoom??""})`)),L(e,s),ce(),r()}ie(gc,{},["default"],[],!0);function Br(e,t){const{store:n,onDrag:r,onDragStart:o,onDragStop:i,onNodeMouseDown:s}=t,a=$0({onDrag:r,onDragStart:o,onDragStop:i,onNodeMouseDown:s,getStoreItems:()=>{const u=q(n.snapGrid),c=q(n.viewport);return{nodes:q(n.nodes),nodeLookup:q(n.nodeLookup),edges:q(n.edges),nodeExtent:q(n.nodeExtent),snapGrid:u||[0,0],snapToGrid:!!u,nodeOrigin:q(n.nodeOrigin),multiSelectionActive:q(n.multiselectionKeyPressed),domNode:q(n.domNode),transform:[c.x,c.y,c.zoom],autoPanOnNodeDrag:q(n.autoPanOnNodeDrag),nodesDraggable:q(n.nodesDraggable),selectNodesOnDrag:q(n.selectNodesOnDrag),nodeDragThreshold:q(n.nodeDragThreshold),unselectNodesAndEdges:n.unselectNodesAndEdges,updateNodePositions:n.updateNodePositions,panBy:n.panBy}}});function l(u,c){if(c.disabled){a.destroy();return}a.update({domNode:u,noDragClassName:c.noDragClass,handleSelector:c.handleSelector,nodeId:c.nodeId,isSelectable:c.isSelectable,nodeClickDistance:c.nodeClickDistance})}return l(e,t),{update(u){l(e,u)},destroy(){a.destroy()}}}function c2({width:e,height:t,initialWidth:n,initialHeight:r,measuredWidth:o,measuredHeight:i}){if(o===void 0&&i===void 0){const s=e??n,a=t??r;return{width:s?`width:${s}px;`:"",height:a?`height:${a}px;`:""}}return{width:e?`width:${e}px;`:"",height:t?`height:${t}px;`:""}}var d2=ne("
    ");function hc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(me,"$nodeTypes",n),i=()=>Q(ae,"$elementsSelectable",n),s=()=>Q(Me,"$nodesDraggable",n),a=()=>Q(Fe,"$connectableStore",n),l=re(void 0,!0),u=re(void 0,!0),c=re(void 0,!0),f=re(void 0,!0);let d=w(t,"node",13),g=w(t,"id",13),p=w(t,"data",29,()=>({})),x=w(t,"selected",13,!1),C=w(t,"draggable",13,void 0),$=w(t,"selectable",13,void 0),m=w(t,"connectable",13,!0),_=w(t,"deletable",13,!0),v=w(t,"hidden",13,!1),b=w(t,"dragging",13,!1),N=w(t,"resizeObserver",13,null),E=w(t,"style",13,void 0),T=w(t,"type",13,"default"),D=w(t,"isParent",13,!1),V=w(t,"positionX",13),A=w(t,"positionY",13),O=w(t,"sourcePosition",13,void 0),R=w(t,"targetPosition",13,void 0),S=w(t,"zIndex",13),M=w(t,"measuredWidth",13,void 0),k=w(t,"measuredHeight",13,void 0),P=w(t,"initialWidth",13,void 0),H=w(t,"initialHeight",13,void 0),I=w(t,"width",13,void 0),B=w(t,"height",13,void 0),F=w(t,"dragHandle",13,void 0),K=w(t,"initialized",13,!1),se=w(t,"parentId",13,void 0),ee=w(t,"nodeClickDistance",13,void 0),W=w(t,"class",13,"");const fe=Ue(),{nodeTypes:me,nodeDragThreshold:Ce,selectNodesOnDrag:he,handleNodeSelection:ze,updateNodeInternals:G,elementsSelectable:ae,nodesDraggable:Me}=fe;let Le=re(void 0,!0),Xe=re(null,!0);const te=ii(),Fe=we(m());let Oe=re(void 0,!0),rt=re(void 0,!0),oe=re(void 0,!0);Sr("svelteflow__node_id",g()),Sr("svelteflow__node_connectable",Fe),$s(()=>{var J;h(Xe)&&((J=N())==null||J.unobserve(h(Xe)))});function pe(J){$()&&(!q(he)||!C()||q(Ce)>0)&&ze(g()),te("nodeclick",{node:d().internals.userNode,event:J})}ge(()=>j(T()),()=>{U(l,T()||"default")}),ge(()=>(o(),h(l)),()=>{U(u,!!o()[h(l)])}),ge(()=>(o(),h(l),Ii),()=>{U(c,o()[h(l)]||Ii)}),ge(()=>(h(u),j(T())),()=>{h(u)||console.warn("003",Dr.error003(T()))}),ge(()=>(j(I()),j(B()),j(P()),j(H()),j(M()),j(k())),()=>{U(f,c2({width:I(),height:B(),initialWidth:P(),initialHeight:H(),measuredWidth:M(),measuredHeight:k()}))}),ge(()=>j(m()),()=>{Fe.set(!!m())}),ge(()=>(h(Oe),h(l),h(rt),j(O()),h(oe),j(R()),j(g()),h(Le)),()=>{(h(Oe)&&h(l)!==h(Oe)||h(rt)&&O()!==h(rt)||h(oe)&&R()!==h(oe))&&requestAnimationFrame(()=>G(new Map([[g(),{id:g(),nodeElement:h(Le),force:!0}]]))),U(Oe,h(l)),U(rt,O()),U(oe,R())}),ge(()=>(j(N()),h(Le),h(Xe),j(K())),()=>{N()&&(h(Le)!==h(Xe)||!K())&&(h(Xe)&&N().unobserve(h(Xe)),h(Le)&&N().observe(h(Le)),U(Xe,h(Le)))}),vt(),He(!0);var be=tt(),Ie=xe(be);{var ht=J=>{var Re=d2();let le;var $n=X(Re);const fn=ve(()=>x()??!1),En=ve(()=>$()??i()??!0),Te=ve(()=>_()??!0),st=ve(()=>C()??s()??!0);fl($n,()=>h(c),(ye,lt)=>{lt(ye,{get data(){return p()},get id(){return g()},get selected(){return h(fn)},get selectable(){return h(En)},get deletable(){return h(Te)},get sourcePosition(){return O()},get targetPosition(){return R()},get zIndex(){return S()},get dragging(){return b()},get draggable(){return h(st)},get dragHandle(){return F()},get parentId(){return se()},get type(){return h(l)},get isConnectable(){return a()},get positionAbsoluteX(){return V()},get positionAbsoluteY(){return A()},get width(){return I()},get height(){return B()}})}),Z(Re),_t(Re,(ye,lt)=>Br==null?void 0:Br(ye,lt),()=>({nodeId:g(),isSelectable:$(),disabled:!1,handleSelector:F(),noDragClass:"nodrag",nodeClickDistance:ee(),onNodeMouseDown:ze,onDrag:(ye,lt,ct,Jt)=>{te("nodedrag",{event:ye,targetNode:ct,nodes:Jt})},onDragStart:(ye,lt,ct,Jt)=>{te("nodedragstart",{event:ye,targetNode:ct,nodes:Jt})},onDragStop:(ye,lt,ct,Jt)=>{te("nodedragstop",{event:ye,targetNode:ct,nodes:Jt})},store:fe})),An(Re,ye=>U(Le,ye),()=>h(Le)),Rt(()=>Ze("click",Re,pe)),Rt(()=>Ze("mouseenter",Re,ye=>te("nodemouseenter",{node:d(),event:ye}))),Rt(()=>Ze("mouseleave",Re,ye=>te("nodemouseleave",{node:d(),event:ye}))),Rt(()=>Ze("mousemove",Re,ye=>te("nodemousemove",{node:d(),event:ye}))),Rt(()=>Ze("contextmenu",Re,ye=>te("nodecontextmenu",{node:d(),event:ye}))),Ee(ye=>{de(Re,"data-id",g()),le=$t(Re,1,wn(ye),null,le,{dragging:b(),selected:x(),draggable:C(),connectable:m(),selectable:$(),nopan:C(),parent:D()}),de(Re,"style",`${E()??""};${h(f).width??""}${h(f).height??""}`),at(Re,"z-index",S()),at(Re,"transform",`translate(${V()??""}px, ${A()??""}px)`),at(Re,"visibility",K()?"visible":"hidden")},[()=>Et(["svelte-flow__node",`svelte-flow__node-${h(l)}`,W()])],ve),L(J,Re)};ke(Ie,J=>{v()||J(ht)})}L(e,be);var dt=ce({get node(){return d()},set node(J){d(J),y()},get id(){return g()},set id(J){g(J),y()},get data(){return p()},set data(J){p(J),y()},get selected(){return x()},set selected(J){x(J),y()},get draggable(){return C()},set draggable(J){C(J),y()},get selectable(){return $()},set selectable(J){$(J),y()},get connectable(){return m()},set connectable(J){m(J),y()},get deletable(){return _()},set deletable(J){_(J),y()},get hidden(){return v()},set hidden(J){v(J),y()},get dragging(){return b()},set dragging(J){b(J),y()},get resizeObserver(){return N()},set resizeObserver(J){N(J),y()},get style(){return E()},set style(J){E(J),y()},get type(){return T()},set type(J){T(J),y()},get isParent(){return D()},set isParent(J){D(J),y()},get positionX(){return V()},set positionX(J){V(J),y()},get positionY(){return A()},set positionY(J){A(J),y()},get sourcePosition(){return O()},set sourcePosition(J){O(J),y()},get targetPosition(){return R()},set targetPosition(J){R(J),y()},get zIndex(){return S()},set zIndex(J){S(J),y()},get measuredWidth(){return M()},set measuredWidth(J){M(J),y()},get measuredHeight(){return k()},set measuredHeight(J){k(J),y()},get initialWidth(){return P()},set initialWidth(J){P(J),y()},get initialHeight(){return H()},set initialHeight(J){H(J),y()},get width(){return I()},set width(J){I(J),y()},get height(){return B()},set height(J){B(J),y()},get dragHandle(){return F()},set dragHandle(J){F(J),y()},get initialized(){return K()},set initialized(J){K(J),y()},get parentId(){return se()},set parentId(J){se(J),y()},get nodeClickDistance(){return ee()},set nodeClickDistance(J){ee(J),y()},get class(){return W()},set class(J){W(J),y()}});return r(),dt}ie(hc,{node:{},id:{},data:{},selected:{},draggable:{},selectable:{},connectable:{},deletable:{},hidden:{},dragging:{},resizeObserver:{},style:{},type:{},isParent:{},positionX:{},positionY:{},sourcePosition:{},targetPosition:{},zIndex:{},measuredWidth:{},measuredHeight:{},initialWidth:{},initialHeight:{},width:{},height:{},dragHandle:{},initialized:{},parentId:{},nodeClickDistance:{},class:{}},[],[],!0);var f2=ne('
    ');const g2={hash:"svelte-tf4uy4",code:".svelte-flow__nodes.svelte-tf4uy4 {width:100%;height:100%;position:absolute;left:0;top:0;}"};function vc(e,t){ue(t,!1),et(e,g2);const[n,r]=nt(),o=()=>Q(c,"$visibleNodes",n),i=()=>Q(f,"$nodesDraggable",n),s=()=>Q(g,"$elementsSelectable",n),a=()=>Q(d,"$nodesConnectable",n),l=()=>Q(x,"$parentLookup",n);let u=w(t,"nodeClickDistance",12,0);const{visibleNodes:c,nodesDraggable:f,nodesConnectable:d,elementsSelectable:g,updateNodeInternals:p,parentLookup:x}=Ue(),C=typeof ResizeObserver>"u"?null:new ResizeObserver(_=>{const v=new Map;_.forEach(b=>{const N=b.target.getAttribute("data-id");v.set(N,{id:N,nodeElement:b.target,force:!0})}),p(v)});$s(()=>{C==null||C.disconnect()}),He();var $=f2();Yt($,5,o,_=>_.id,(_,v)=>{const b=ve(()=>!!h(v).selected),N=ve(()=>!!h(v).hidden),E=ve(()=>!!(h(v).draggable||i()&&typeof h(v).draggable>"u")),T=ve(()=>!!(h(v).selectable||s()&&typeof h(v).selectable>"u")),D=ve(()=>!!(h(v).connectable||a()&&typeof h(v).connectable>"u")),V=ve(()=>h(v).deletable??!0),A=ve(()=>l().has(h(v).id)),O=ve(()=>h(v).type??"default"),R=ve(()=>h(v).internals.z??0),S=ve(()=>Eu(h(v)));hc(_,{get node(){return h(v)},get id(){return h(v).id},get data(){return h(v).data},get selected(){return h(b)},get hidden(){return h(N)},get draggable(){return h(E)},get selectable(){return h(T)},get connectable(){return h(D)},get deletable(){return h(V)},get positionX(){return h(v).internals.positionAbsolute.x},get positionY(){return h(v).internals.positionAbsolute.y},get isParent(){return h(A)},get style(){return h(v).style},get class(){return h(v).class},get type(){return h(O)},get sourcePosition(){return h(v).sourcePosition},get targetPosition(){return h(v).targetPosition},get dragging(){return h(v).dragging},get zIndex(){return h(R)},get dragHandle(){return h(v).dragHandle},get initialized(){return h(S)},get width(){return h(v).width},get height(){return h(v).height},get initialWidth(){return h(v).initialWidth},get initialHeight(){return h(v).initialHeight},get measuredWidth(){return h(v).measured.width},get measuredHeight(){return h(v).measured.height},get parentId(){return h(v).parentId},resizeObserver:C,get nodeClickDistance(){return u()},$$events:{nodeclick(M){De.call(this,t,M)},nodemouseenter(M){De.call(this,t,M)},nodemousemove(M){De.call(this,t,M)},nodemouseleave(M){De.call(this,t,M)},nodedrag(M){De.call(this,t,M)},nodedragstart(M){De.call(this,t,M)},nodedragstop(M){De.call(this,t,M)},nodecontextmenu(M){De.call(this,t,M)}}})}),Z($),L(e,$);var m=ce({get nodeClickDistance(){return u()},set nodeClickDistance(_){u(_),y()}});return r(),m}ie(vc,{nodeClickDistance:{}},[],[],!0);var h2=_e('');function pc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(W,"$edgeTypes",n),i=()=>Q(fe,"$flowId",n),s=()=>Q(me,"$elementsSelectable",n),a=()=>Q(ee,"$edgeLookup",n),l=re(void 0,!0),u=re(void 0,!0),c=re(void 0,!0),f=re(void 0,!0),d=re(void 0,!0);let g=w(t,"id",13),p=w(t,"type",13,"default"),x=w(t,"source",13,""),C=w(t,"target",13,""),$=w(t,"data",29,()=>({})),m=w(t,"style",13,void 0),_=w(t,"zIndex",13,void 0),v=w(t,"animated",13,!1),b=w(t,"selected",13,!1),N=w(t,"selectable",13,void 0),E=w(t,"deletable",13,void 0),T=w(t,"hidden",13,!1),D=w(t,"label",13,void 0),V=w(t,"labelStyle",13,void 0),A=w(t,"markerStart",13,void 0),O=w(t,"markerEnd",13,void 0),R=w(t,"sourceHandle",13,void 0),S=w(t,"targetHandle",13,void 0),M=w(t,"sourceX",13),k=w(t,"sourceY",13),P=w(t,"targetX",13),H=w(t,"targetY",13),I=w(t,"sourcePosition",13),B=w(t,"targetPosition",13),F=w(t,"ariaLabel",13,void 0),K=w(t,"interactionWidth",13,void 0),se=w(t,"class",13,"");Sr("svelteflow__edge_id",g());const{edgeLookup:ee,edgeTypes:W,flowId:fe,elementsSelectable:me}=Ue(),Ce=ii(),he=tc();function ze(te){const Fe=a().get(g());Fe&&(he(g()),Ce("edgeclick",{event:te,edge:Fe}))}function G(te,Fe){const Oe=a().get(g());Oe&&Ce(Fe,{event:te,edge:Oe})}ge(()=>j(p()),()=>{U(l,p()||"default")}),ge(()=>(o(),h(l),zi),()=>{U(u,o()[h(l)]||zi)}),ge(()=>(j(A()),i()),()=>{U(c,A()?`url('#${ta(A(),i())}')`:void 0)}),ge(()=>(j(O()),i()),()=>{U(f,O()?`url('#${ta(O(),i())}')`:void 0)}),ge(()=>(j(N()),s()),()=>{U(d,N()??s())}),vt(),He(!0);var ae=tt(),Me=xe(ae);{var Le=te=>{var Fe=h2(),Oe=X(Fe);let rt;var oe=X(Oe);const pe=ve(()=>E()??!0);fl(oe,()=>h(u),(be,Ie)=>{Ie(be,{get id(){return g()},get source(){return x()},get target(){return C()},get sourceX(){return M()},get sourceY(){return k()},get targetX(){return P()},get targetY(){return H()},get sourcePosition(){return I()},get targetPosition(){return B()},get animated(){return v()},get selected(){return b()},get label(){return D()},get labelStyle(){return V()},get data(){return $()},get style(){return m()},get interactionWidth(){return K()},get selectable(){return h(d)},get deletable(){return h(pe)},get type(){return h(l)},get sourceHandleId(){return R()},get targetHandleId(){return S()},get markerStart(){return h(c)},get markerEnd(){return h(f)}})}),Z(Oe),Z(Fe),Ee(be=>{at(Fe,"z-index",_()),rt=$t(Oe,0,wn(be),null,rt,{animated:v(),selected:b(),selectable:h(d)}),de(Oe,"data-id",g()),de(Oe,"aria-label",F()===null?void 0:F()?F():`Edge from ${x()} to ${C()}`)},[()=>Et(["svelte-flow__edge",se()])],ve),Ze("click",Oe,ze),Ze("contextmenu",Oe,be=>{G(be,"edgecontextmenu")}),Ze("mouseenter",Oe,be=>{G(be,"edgemouseenter")}),Ze("mouseleave",Oe,be=>{G(be,"edgemouseleave")}),L(te,Fe)};ke(Me,te=>{T()||te(Le)})}L(e,ae);var Xe=ce({get id(){return g()},set id(te){g(te),y()},get type(){return p()},set type(te){p(te),y()},get source(){return x()},set source(te){x(te),y()},get target(){return C()},set target(te){C(te),y()},get data(){return $()},set data(te){$(te),y()},get style(){return m()},set style(te){m(te),y()},get zIndex(){return _()},set zIndex(te){_(te),y()},get animated(){return v()},set animated(te){v(te),y()},get selected(){return b()},set selected(te){b(te),y()},get selectable(){return N()},set selectable(te){N(te),y()},get deletable(){return E()},set deletable(te){E(te),y()},get hidden(){return T()},set hidden(te){T(te),y()},get label(){return D()},set label(te){D(te),y()},get labelStyle(){return V()},set labelStyle(te){V(te),y()},get markerStart(){return A()},set markerStart(te){A(te),y()},get markerEnd(){return O()},set markerEnd(te){O(te),y()},get sourceHandle(){return R()},set sourceHandle(te){R(te),y()},get targetHandle(){return S()},set targetHandle(te){S(te),y()},get sourceX(){return M()},set sourceX(te){M(te),y()},get sourceY(){return k()},set sourceY(te){k(te),y()},get targetX(){return P()},set targetX(te){P(te),y()},get targetY(){return H()},set targetY(te){H(te),y()},get sourcePosition(){return I()},set sourcePosition(te){I(te),y()},get targetPosition(){return B()},set targetPosition(te){B(te),y()},get ariaLabel(){return F()},set ariaLabel(te){F(te),y()},get interactionWidth(){return K()},set interactionWidth(te){K(te),y()},get class(){return se()},set class(te){se(te),y()}});return r(),Xe}ie(pc,{id:{},type:{},source:{},target:{},data:{},style:{},zIndex:{},animated:{},selected:{},selectable:{},deletable:{},hidden:{},label:{},labelStyle:{},markerStart:{},markerEnd:{},sourceHandle:{},targetHandle:{},sourceX:{},sourceY:{},targetX:{},targetY:{},sourcePosition:{},targetPosition:{},ariaLabel:{},interactionWidth:{},class:{}},[],[],!0);function mc(e,t){ue(t,!1);let n=w(t,"onMount",12,void 0),r=w(t,"onDestroy",12,void 0);return rn(()=>{var o;return(o=n())==null||o(),r()}),He(),ce({get onMount(){return n()},set onMount(o){n(o),y()},get onDestroy(){return r()},set onDestroy(o){r(o),y()}})}ie(mc,{onMount:{},onDestroy:{}},[],[],!0);var v2=_e("");function yc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(i,"$markers",n),{markers:i}=Ue();He();var s=v2();Yt(s,5,o,a=>a.id,(a,l)=>{wc(a,ft(()=>h(l)))}),Z(s),L(e,s),ce(),r()}ie(yc,{},[],[],!0);var p2=_e(''),m2=_e(''),y2=_e('');function wc(e,t){ue(t,!1);let n=w(t,"id",12),r=w(t,"type",12),o=w(t,"width",12,12.5),i=w(t,"height",12,12.5),s=w(t,"markerUnits",12,"strokeWidth"),a=w(t,"orient",12,"auto-start-reverse"),l=w(t,"color",12,void 0),u=w(t,"strokeWidth",12,void 0);He();var c=y2(),f=X(c);{var d=p=>{var x=p2();Ee(()=>{de(x,"stroke",l()),de(x,"stroke-width",u())}),L(p,x)},g=(p,x)=>{{var C=$=>{var m=m2();Ee(()=>{de(m,"stroke",l()),de(m,"stroke-width",u()),de(m,"fill",l())}),L($,m)};ke(p,$=>{r()===_o.ArrowClosed&&$(C)},x)}};ke(f,p=>{r()===_o.Arrow?p(d):p(g,!1)})}return Z(c),Ee(()=>{de(c,"id",n()),de(c,"markerWidth",`${o()}`),de(c,"markerHeight",`${i()}`),de(c,"markerUnits",s()),de(c,"orient",a())}),L(e,c),ce({get id(){return n()},set id(p){n(p),y()},get type(){return r()},set type(p){r(p),y()},get width(){return o()},set width(p){o(p),y()},get height(){return i()},set height(p){i(p),y()},get markerUnits(){return s()},set markerUnits(p){s(p),y()},get orient(){return a()},set orient(p){a(p),y()},get color(){return l()},set color(p){l(p),y()},get strokeWidth(){return u()},set strokeWidth(p){u(p),y()}})}ie(wc,{id:{},type:{},width:{},height:{},markerUnits:{},orient:{},color:{},strokeWidth:{}},[],[],!0);var w2=ne('
    ');function _c(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(a,"$visibleEdges",n),i=()=>Q(c,"$elementsSelectable",n);let s=w(t,"defaultEdgeOptions",12);const{visibleEdges:a,edgesInitialized:l,edges:{setDefaultOptions:u},elementsSelectable:c}=Ue();rn(()=>{s()&&u(s())}),He();var f=w2(),d=X(f),g=X(d);yc(g,{}),Z(d);var p=z(d,2);Yt(p,1,o,m=>m.id,(m,_)=>{const v=ve(()=>h(_).selectable??i()),b=ve(()=>h(_).type||"default");pc(m,{get id(){return h(_).id},get source(){return h(_).source},get target(){return h(_).target},get data(){return h(_).data},get style(){return h(_).style},get animated(){return h(_).animated},get selected(){return h(_).selected},get selectable(){return h(v)},get deletable(){return h(_).deletable},get hidden(){return h(_).hidden},get label(){return h(_).label},get labelStyle(){return h(_).labelStyle},get markerStart(){return h(_).markerStart},get markerEnd(){return h(_).markerEnd},get sourceHandle(){return h(_).sourceHandle},get targetHandle(){return h(_).targetHandle},get sourceX(){return h(_).sourceX},get sourceY(){return h(_).sourceY},get targetX(){return h(_).targetX},get targetY(){return h(_).targetY},get sourcePosition(){return h(_).sourcePosition},get targetPosition(){return h(_).targetPosition},get ariaLabel(){return h(_).ariaLabel},get interactionWidth(){return h(_).interactionWidth},get class(){return h(_).class},get type(){return h(b)},get zIndex(){return h(_).zIndex},$$events:{edgeclick(N){De.call(this,t,N)},edgecontextmenu(N){De.call(this,t,N)},edgemouseenter(N){De.call(this,t,N)},edgemouseleave(N){De.call(this,t,N)}}})});var x=z(p,2);{var C=m=>{mc(m,{onMount:()=>{ai(l,!0)},onDestroy:()=>{ai(l,!1)}})};ke(x,m=>{o().length>0&&m(C)})}Z(f),L(e,f);var $=ce({get defaultEdgeOptions(){return s()},set defaultEdgeOptions(m){s(m),y()}});return r(),$}ie(_c,{defaultEdgeOptions:{}},[],[],!0);var _2=ne('
    ');const x2={hash:"svelte-1iugwpu",code:".svelte-flow__selection.svelte-1iugwpu {position:absolute;top:0;left:0;}"};function ua(e,t){ue(t,!1),et(e,x2);let n=w(t,"x",12,0),r=w(t,"y",12,0),o=w(t,"width",12,0),i=w(t,"height",12,0),s=w(t,"isVisible",12,!0);var a=tt(),l=xe(a);{var u=c=>{var f=_2();Ee(()=>{at(f,"width",typeof o()=="string"?o():`${o()}px`),at(f,"height",typeof i()=="string"?i():`${i()}px`),at(f,"transform",`translate(${n()}px, ${r()}px)`)}),L(c,f)};ke(l,c=>{s()&&c(u)})}return L(e,a),ce({get x(){return n()},set x(c){n(c),y()},get y(){return r()},set y(c){r(c),y()},get width(){return o()},set width(c){o(c),y()},get height(){return i()},set height(c){i(c),y()},get isVisible(){return s()},set isVisible(c){s(c),y()}})}ie(ua,{x:{},y:{},width:{},height:{},isVisible:{}},[],[],!0);function xc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(s,"$selectionRect",n),i=()=>Q(a,"$selectionRectMode",n),{selectionRect:s,selectionRectMode:a}=Ue();He();const l=ve(()=>!!(o()&&i()==="user")),u=ve(()=>{var g;return(g=o())==null?void 0:g.width}),c=ve(()=>{var g;return(g=o())==null?void 0:g.height}),f=ve(()=>{var g;return(g=o())==null?void 0:g.x}),d=ve(()=>{var g;return(g=o())==null?void 0:g.y});ua(e,{get isVisible(){return h(l)},get width(){return h(u)},get height(){return h(c)},get x(){return h(f)},get y(){return h(d)}}),ce(),r()}ie(xc,{},[],[],!0);var b2=ne('
    ');const C2={hash:"svelte-5pxri",code:".selection-wrapper.svelte-5pxri {position:absolute;top:0;left:0;z-index:7;pointer-events:all;}"};function bc(e,t){ue(t,!1),et(e,C2);const[n,r]=nt(),o=()=>Q(l,"$selectionRectMode",n),i=()=>Q(c,"$nodeLookup",n),s=()=>Q(u,"$nodes",n),a=Ue(),{selectionRectMode:l,nodes:u,nodeLookup:c}=a,f=ii();let d=re(null);function g(m){const _=s().filter(v=>v.selected);f("selectioncontextmenu",{nodes:_,event:m})}function p(m){const _=s().filter(v=>v.selected);f("selectionclick",{nodes:_,event:m})}ge(()=>(o(),i(),s()),()=>{o()==="nodes"&&(U(d,bo(i(),{filter:m=>!!m.selected})),s())}),vt(),He();var x=tt(),C=xe(x);{var $=m=>{var _=b2(),v=X(_);ua(v,{width:"100%",height:"100%",x:0,y:0}),Z(_),_t(_,(b,N)=>Br==null?void 0:Br(b,N),()=>({disabled:!1,store:a,onDrag:(b,N,E,T)=>{f("nodedrag",{event:b,targetNode:null,nodes:T})},onDragStart:(b,N,E,T)=>{f("nodedragstart",{event:b,targetNode:null,nodes:T})},onDragStop:(b,N,E,T)=>{f("nodedragstop",{event:b,targetNode:null,nodes:T})}})),Rt(()=>Ze("contextmenu",_,g)),Rt(()=>Ze("click",_,p)),Rt(()=>Ze("keyup",_,()=>{})),Ee(()=>de(_,"style",`width: ${h(d).width??""}px; height: ${h(d).height??""}px; transform: translate(${h(d).x??""}px, ${h(d).y??""}px)`)),L(m,_)};ke(C,m=>{o()==="nodes"&&h(d)&&zn(h(d).x)&&zn(h(d).y)&&m($)})}L(e,x),ce(),r()}ie(bc,{},[],[],!0);function qe(e,t){let{enabled:n=!0,trigger:r,type:o="keydown"}=t;function i(s){const a=Array.isArray(r)?r:[r],l={alt:s.altKey,ctrl:s.ctrlKey,shift:s.shiftKey,meta:s.metaKey};for(const u of a){const c={modifier:[],preventDefault:!1,enabled:!0,...u},{modifier:f,key:d,callback:g,preventDefault:p,enabled:x}=c;if(x){if(f.length&&!(Array.isArray(f)?f:[f]).map(m=>typeof m=="string"?[m]:m).some(m=>m.every(_=>l[_])))continue;if(s.key===d){p&&s.preventDefault();const C={node:e,trigger:c,originalEvent:s};e.dispatchEvent(new CustomEvent("shortcut",{detail:C})),g==null||g(C)}}}}return n&&e.addEventListener(o,i),{update:s=>{const{enabled:a=!0,type:l="keydown"}=s;n&&(!a||o!==l)?e.removeEventListener(o,i):!n&&a&&e.addEventListener(l,i),n=a,o=l,r=s.trigger},destroy:()=>{e.removeEventListener(o,i)}}}function Cc(e,t){ue(t,!1);let n=w(t,"selectionKey",12,"Shift"),r=w(t,"multiSelectionKey",28,()=>Di()?"Meta":"Control"),o=w(t,"deleteKey",12,"Backspace"),i=w(t,"panActivationKey",12," "),s=w(t,"zoomActivationKey",28,()=>Di()?"Meta":"Control");const{selectionKeyPressed:a,multiselectionKeyPressed:l,deleteKeyPressed:u,panActivationKeyPressed:c,zoomActivationKeyPressed:f,selectionRect:d}=Ue();function g(m){return m!==null&&typeof m=="object"}function p(m){return g(m)?m.modifier||[]:[]}function x(m){return m==null?"":g(m)?m.key:m}function C(m,_){return(Array.isArray(m)?m:[m]).map(b=>{const N=x(b);return{key:N,modifier:p(b),enabled:N!==null,callback:_}})}function $(){d.set(null),a.set(!1),l.set(!1),u.set(!1),c.set(!1),f.set(!1)}return He(),Ze("blur",Vt,$),Ze("contextmenu",Vt,$),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(n(),()=>a.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(n(),()=>a.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(r(),()=>l.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(r(),()=>l.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(o(),m=>{!(m.originalEvent.ctrlKey||m.originalEvent.metaKey||m.originalEvent.shiftKey)&&!r0(m.originalEvent)&&u.set(!0)}),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(o(),()=>u.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(i(),()=>c.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(i(),()=>c.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(s(),()=>f.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(s(),()=>f.set(!1)),type:"keyup"})),ce({get selectionKey(){return n()},set selectionKey(m){n(m),y()},get multiSelectionKey(){return r()},set multiSelectionKey(m){r(m),y()},get deleteKey(){return o()},set deleteKey(m){o(m),y()},get panActivationKey(){return i()},set panActivationKey(m){i(m),y()},get zoomActivationKey(){return s()},set zoomActivationKey(m){s(m),y()}})}ie(Cc,{selectionKey:{},multiSelectionKey:{},deleteKey:{},panActivationKey:{},zoomActivationKey:{}},[],[],!0);var k2=_e(''),$2=_e('');function kc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(g,"$connection",n),i=()=>Q(p,"$connectionLineType",n),s=()=>Q(f,"$width",n),a=()=>Q(d,"$height",n);let l=w(t,"containerStyle",12,""),u=w(t,"style",12,""),c=w(t,"isCustomComponent",12,!1);const{width:f,height:d,connection:g,connectionLineType:p}=Ue();let x=re(null);ge(()=>(o(),j(c()),i(),h(x),ea),()=>{if(o().inProgress&&!c()){const{from:v,to:b,fromPosition:N,toPosition:E}=o(),T={sourceX:v.x,sourceY:v.y,sourcePosition:N,targetX:b.x,targetY:b.y,targetPosition:E};switch(i()){case Ar.Bezier:(D=>U(x,D[0]))(Tu(T));break;case Ar.Step:(D=>U(x,D[0]))(Li({...T,borderRadius:0}));break;case Ar.SmoothStep:(D=>U(x,D[0]))(Li(T));break;default:(D=>U(x,D[0]))(ea(T))}}}),vt(),He();var C=tt(),$=xe(C);{var m=v=>{var b=$2(),N=X(b),E=X(N);wt(E,t,"connectionLine",{});var T=z(E);{var D=V=>{var A=k2();Ee(()=>{de(A,"d",h(x)),de(A,"style",u())}),L(V,A)};ke(T,V=>{c()||V(D)})}Z(N),Z(b),Ee(V=>{de(b,"width",s()),de(b,"height",a()),de(b,"style",l()),$t(N,0,wn(V))},[()=>Et(["svelte-flow__connection",qv(o().isValid)])],ve),L(v,b)};ke($,v=>{o().inProgress&&v(m)})}L(e,C);var _=ce({get containerStyle(){return l()},set containerStyle(v){l(v),y()},get style(){return u()},set style(v){u(v),y()},get isCustomComponent(){return c()},set isCustomComponent(v){c(v),y()}});return r(),_}ie(kc,{containerStyle:{},style:{},isCustomComponent:{}},["connectionLine"],[],!0);var E2=ne("
    ");function So(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]),r=it(n,["position","style","class"]);ue(t,!1);const[o,i]=nt(),s=()=>Q(f,"$selectionRectMode",o),a=re();let l=w(t,"position",12,"top-right"),u=w(t,"style",12,void 0),c=w(t,"class",12,void 0);const{selectionRectMode:f}=Ue();ge(()=>j(l()),()=>{U(a,`${l()}`.split("-"))}),vt(),He();var d=E2();let g;var p=X(d);wt(p,t,"default",{}),Z(d),Ee(C=>{g=nn(d,g,{class:C,style:u(),...r}),at(d,"pointer-events",s()?"none":"")},[()=>Et(["svelte-flow__panel",c(),...h(a)])],ve),L(e,d);var x=ce({get position(){return l()},set position(C){l(C),y()},get style(){return u()},set style(C){u(C),y()},get class(){return c()},set class(C){c(C),y()}});return i(),x}ie(So,{position:{},style:{},class:{}},["default"],[],!0);var S2=ne('Svelte Flow');function $c(e,t){ue(t,!1);let n=w(t,"proOptions",12,void 0),r=w(t,"position",12,"bottom-right");He();var o=tt(),i=xe(o);{var s=a=>{So(a,{get position(){return r()},class:"svelte-flow__attribution","data-message":"Feel free to remove the attribution or check out how you could support us: https://svelteflow.dev/support-us",children:(l,u)=>{var c=S2();L(l,c)},$$slots:{default:!0}})};ke(i,a=>{var l;(l=n())!=null&&l.hideAttribution||a(s)})}return L(e,o),ce({get proOptions(){return n()},set proOptions(a){n(a),y()},get position(){return r()},set position(a){r(a),y()}})}ie($c,{proOptions:{},position:{}},[],[],!0);function Ec(e,{nodeTypes:t,edgeTypes:n,minZoom:r,maxZoom:o,translateExtent:i,paneClickDistance:s}){t!==void 0&&e.setNodeTypes(t),n!==void 0&&e.setEdgeTypes(n),r!==void 0&&e.setMinZoom(r),o!==void 0&&e.setMaxZoom(o),i!==void 0&&e.setTranslateExtent(i),s!==void 0&&e.setPaneClickDistance(s)}const P2=e=>Object.keys(e);function Sc(e,t){P2(t).forEach(n=>{const r=t[n];r!==void 0&&e[n].set(r)})}function N2(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function T2(e="light"){return Gt("light",n=>{if(e!=="system"){n(e);return}const r=N2(),o=()=>n(r!=null&&r.matches?"dark":"light");return n(r!=null&&r.matches?"dark":"light"),r==null||r.addEventListener("change",o),()=>{r==null||r.removeEventListener("change",o)}})}var M2=ne('
    ',1),H2=ne(" ",1),V2=ne("
    ");const D2={hash:"svelte-12wlba6",code:".svelte-flow.svelte-12wlba6 {width:100%;height:100%;overflow:hidden;position:relative;z-index:0;background-color:var(--background-color, var(--background-color-default));}:root {--background-color-default: #fff;--background-pattern-color-default: #ddd;--minimap-mask-color-default: rgb(240, 240, 240, 0.6);--minimap-mask-stroke-color-default: none;--minimap-mask-stroke-width-default: 1;--controls-button-background-color-default: #fefefe;--controls-button-background-color-hover-default: #f4f4f4;--controls-button-color-default: inherit;--controls-button-color-hover-default: inherit;--controls-button-border-color-default: #eee;}"};function Pc(e,t){const n=e1(t),r=it(t,["children","$$slots","$$events","$$legacy","$$host"]),o=it(r,["id","nodes","edges","fitView","fitViewOptions","minZoom","maxZoom","initialViewport","viewport","nodeTypes","edgeTypes","selectionKey","selectionMode","panActivationKey","multiSelectionKey","zoomActivationKey","nodesDraggable","nodesConnectable","nodeDragThreshold","elementsSelectable","snapGrid","deleteKey","connectionRadius","connectionLineType","connectionMode","connectionLineStyle","connectionLineContainerStyle","onMoveStart","onMove","onMoveEnd","isValidConnection","translateExtent","nodeExtent","onlyRenderVisibleElements","panOnScrollMode","preventScrolling","zoomOnScroll","zoomOnDoubleClick","zoomOnPinch","panOnScroll","panOnDrag","selectionOnDrag","autoPanOnConnect","autoPanOnNodeDrag","onerror","ondelete","onedgecreate","attributionPosition","proOptions","defaultEdgeOptions","width","height","colorMode","onconnect","onconnectstart","onconnectend","onbeforedelete","oninit","nodeOrigin","paneClickDistance","nodeClickDistance","defaultMarkerColor","style","class"]);ue(t,!1),et(e,D2);const[i,s]=nt(),a=()=>Q(_(),"$viewport",i),l=()=>Q(xa,"$initialized",i),u=()=>Q(h(c),"$colorModeClass",i),c=re();let f=w(t,"id",12,"1"),d=w(t,"nodes",12),g=w(t,"edges",12),p=w(t,"fitView",12,void 0),x=w(t,"fitViewOptions",12,void 0),C=w(t,"minZoom",12,void 0),$=w(t,"maxZoom",12,void 0),m=w(t,"initialViewport",12,void 0),_=w(t,"viewport",12,void 0),v=w(t,"nodeTypes",12,void 0),b=w(t,"edgeTypes",12,void 0),N=w(t,"selectionKey",12,void 0),E=w(t,"selectionMode",12,void 0),T=w(t,"panActivationKey",12,void 0),D=w(t,"multiSelectionKey",12,void 0),V=w(t,"zoomActivationKey",12,void 0),A=w(t,"nodesDraggable",12,void 0),O=w(t,"nodesConnectable",12,void 0),R=w(t,"nodeDragThreshold",12,void 0),S=w(t,"elementsSelectable",12,void 0),M=w(t,"snapGrid",12,void 0),k=w(t,"deleteKey",12,void 0),P=w(t,"connectionRadius",12,void 0),H=w(t,"connectionLineType",12,void 0),I=w(t,"connectionMode",28,()=>hr.Strict),B=w(t,"connectionLineStyle",12,""),F=w(t,"connectionLineContainerStyle",12,""),K=w(t,"onMoveStart",12,void 0),se=w(t,"onMove",12,void 0),ee=w(t,"onMoveEnd",12,void 0),W=w(t,"isValidConnection",12,void 0),fe=w(t,"translateExtent",12,void 0),me=w(t,"nodeExtent",12,void 0),Ce=w(t,"onlyRenderVisibleElements",12,void 0),he=w(t,"panOnScrollMode",28,()=>Jn.Free),ze=w(t,"preventScrolling",12,!0),G=w(t,"zoomOnScroll",12,!0),ae=w(t,"zoomOnDoubleClick",12,!0),Me=w(t,"zoomOnPinch",12,!0),Le=w(t,"panOnScroll",12,!1),Xe=w(t,"panOnDrag",12,!0),te=w(t,"selectionOnDrag",12,void 0),Fe=w(t,"autoPanOnConnect",12,!0),Oe=w(t,"autoPanOnNodeDrag",12,!0),rt=w(t,"onerror",12,void 0),oe=w(t,"ondelete",12,void 0),pe=w(t,"onedgecreate",12,void 0),be=w(t,"attributionPosition",12,void 0),Ie=w(t,"proOptions",12,void 0),ht=w(t,"defaultEdgeOptions",12,void 0),dt=w(t,"width",12,void 0),J=w(t,"height",12,void 0),Re=w(t,"colorMode",12,"light"),le=w(t,"onconnect",12,void 0),$n=w(t,"onconnectstart",12,void 0),fn=w(t,"onconnectend",12,void 0),En=w(t,"onbeforedelete",12,void 0),Te=w(t,"oninit",12,void 0),st=w(t,"nodeOrigin",12,void 0),ye=w(t,"paneClickDistance",12,0),lt=w(t,"nodeClickDistance",12,0),ct=w(t,"defaultMarkerColor",12,"#b1b1b7"),Jt=w(t,"style",12,void 0),Oo=w(t,"class",12,void 0),Wt=re(),Ot=re(),Sn=re();const gn=a()||m(),mt=Df(Ri)?Ue():r2({nodes:q(d()),edges:q(g()),width:dt(),height:J(),fitView:p(),nodeOrigin:st(),nodeExtent:me()});rn(()=>(mt.width.set(h(Ot)),mt.height.set(h(Sn)),mt.domNode.set(h(Wt)),mt.syncNodeStores(d()),mt.syncEdgeStores(g()),mt.syncViewport(_()),p()!==void 0&&mt.fitViewOnInit.set(p()),x()&&mt.fitViewOptions.set(x()),Ec(mt,{nodeTypes:v(),edgeTypes:b(),minZoom:C(),maxZoom:$(),translateExtent:fe(),paneClickDistance:ye()}),()=>{mt.reset()}));const{initialized:xa}=mt;let yr=re(!1);ge(()=>(h(Ot),h(Sn)),()=>{h(Ot)!==void 0&&h(Sn)!==void 0&&(mt.width.set(h(Ot)),mt.height.set(h(Sn)))}),ge(()=>(h(yr),l(),j(Te())),()=>{var Y;!h(yr)&&l()&&((Y=Te())==null||Y(),U(yr,!0))}),ge(()=>(j(f()),j(H()),j(P()),j(E()),j(M()),j(ct()),j(A()),j(O()),j(S()),j(Ce()),j(W()),j(Fe()),j(Oe()),j(rt()),j(oe()),j(pe()),j(I()),j(R()),j(le()),j($n()),j(fn()),j(En()),j(st()),Sc),()=>{const Y={flowId:f(),connectionLineType:H(),connectionRadius:P(),selectionMode:E(),snapGrid:M(),defaultMarkerColor:ct(),nodesDraggable:A(),nodesConnectable:O(),elementsSelectable:S(),onlyRenderVisibleElements:Ce(),isValidConnection:W(),autoPanOnConnect:Fe(),autoPanOnNodeDrag:Oe(),onerror:rt(),ondelete:oe(),onedgecreate:pe(),connectionMode:I(),nodeDragThreshold:R(),onconnect:le(),onconnectstart:$n(),onconnectend:fn(),onbeforedelete:En(),nodeOrigin:st()};Sc(mt,Y)}),ge(()=>(j(v()),j(b()),j(C()),j($()),j(fe()),j(ye())),()=>{Ec(mt,{nodeTypes:v(),edgeTypes:b(),minZoom:C(),maxZoom:$(),translateExtent:fe(),paneClickDistance:ye()})}),ge(()=>j(Re()),()=>{l1(U(c,T2(Re())),"$colorModeClass",i)}),vt(),He();var hn=V2();let ji;var Ji=X(hn);Cc(Ji,{get selectionKey(){return N()},get deleteKey(){return k()},get panActivationKey(){return T()},get multiSelectionKey(){return D()},get zoomActivationKey(){return V()}});var Qi=z(Ji,2);const jy=ve(()=>he()===void 0?Jn.Free:he()),Jy=ve(()=>ze()===void 0?!0:ze()),Qy=ve(()=>G()===void 0?!0:G()),ew=ve(()=>ae()===void 0?!0:ae()),tw=ve(()=>Me()===void 0?!0:Me()),nw=ve(()=>Le()===void 0?!1:Le()),rw=ve(()=>Xe()===void 0?!0:Xe()),ow=ve(()=>ye()===void 0?0:ye());uc(Qi,{initialViewport:gn,get onMoveStart(){return K()},get onMove(){return se()},get onMoveEnd(){return ee()},get panOnScrollMode(){return h(jy)},get preventScrolling(){return h(Jy)},get zoomOnScroll(){return h(Qy)},get zoomOnDoubleClick(){return h(ew)},get zoomOnPinch(){return h(tw)},get panOnScroll(){return h(nw)},get panOnDrag(){return h(rw)},get paneClickDistance(){return h(ow)},children:(Y,pw)=>{const aw=ve(()=>Xe()===void 0?!0:Xe());fc(Y,{get panOnDrag(){return h(aw)},get selectionOnDrag(){return te()},$$events:{paneclick(Io){De.call(this,t,Io)},panecontextmenu(Io){De.call(this,t,Io)}},children:(Io,mw)=>{var Vd=H2(),Dd=xe(Vd);gc(Dd,{children:(uw,yw)=>{var Ad=M2(),Ld=xe(Ad);_c(Ld,{get defaultEdgeOptions(){return ht()},$$events:{edgeclick(Be){De.call(this,t,Be)},edgecontextmenu(Be){De.call(this,t,Be)},edgemouseenter(Be){De.call(this,t,Be)},edgemouseleave(Be){De.call(this,t,Be)}}});var Od=z(Ld,2);kc(Od,{get containerStyle(){return F()},get style(){return B()},isCustomComponent:n.connectionLine,$$slots:{connectionLine:(Be,ww)=>{var zd=tt(),dw=xe(zd);wt(dw,t,"connectionLine",{}),L(Be,zd)}}});var Id=z(Od,6);vc(Id,{get nodeClickDistance(){return lt()},$$events:{nodeclick(Be){De.call(this,t,Be)},nodemouseenter(Be){De.call(this,t,Be)},nodemousemove(Be){De.call(this,t,Be)},nodemouseleave(Be){De.call(this,t,Be)},nodedragstart(Be){De.call(this,t,Be)},nodedrag(Be){De.call(this,t,Be)},nodedragstop(Be){De.call(this,t,Be)},nodecontextmenu(Be){De.call(this,t,Be)}}});var cw=z(Id,2);bc(cw,{$$events:{selectionclick(Be){De.call(this,t,Be)},selectioncontextmenu(Be){De.call(this,t,Be)},nodedragstart(Be){De.call(this,t,Be)},nodedrag(Be){De.call(this,t,Be)},nodedragstop(Be){De.call(this,t,Be)}}}),L(uw,Ad)},$$slots:{default:!0}});var lw=z(Dd,2);xc(lw,{}),L(Io,Vd)},$$slots:{default:!0}})},$$slots:{default:!0}});var Hd=z(Qi,2);$c(Hd,{get proOptions(){return Ie()},get position(){return be()}});var iw=z(Hd,2);wt(iw,t,"default",{}),Z(hn),An(hn,Y=>U(Wt,Y),()=>h(Wt)),Ee(Y=>ji=nn(hn,ji,{style:Jt(),class:Y,"data-testid":"svelte-flow__wrapper",...o,role:"application"},"svelte-12wlba6"),[()=>Et(["svelte-flow",Oo(),u()])],ve),ml(hn,"clientWidth",Y=>U(Ot,Y)),ml(hn,"clientHeight",Y=>U(Sn,Y)),Ze("dragover",hn,function(Y){De.call(this,t,Y)}),Ze("drop",hn,function(Y){De.call(this,t,Y)}),L(e,hn);var sw=ce({get id(){return f()},set id(Y){f(Y),y()},get nodes(){return d()},set nodes(Y){d(Y),y()},get edges(){return g()},set edges(Y){g(Y),y()},get fitView(){return p()},set fitView(Y){p(Y),y()},get fitViewOptions(){return x()},set fitViewOptions(Y){x(Y),y()},get minZoom(){return C()},set minZoom(Y){C(Y),y()},get maxZoom(){return $()},set maxZoom(Y){$(Y),y()},get initialViewport(){return m()},set initialViewport(Y){m(Y),y()},get viewport(){return _()},set viewport(Y){_(Y),y()},get nodeTypes(){return v()},set nodeTypes(Y){v(Y),y()},get edgeTypes(){return b()},set edgeTypes(Y){b(Y),y()},get selectionKey(){return N()},set selectionKey(Y){N(Y),y()},get selectionMode(){return E()},set selectionMode(Y){E(Y),y()},get panActivationKey(){return T()},set panActivationKey(Y){T(Y),y()},get multiSelectionKey(){return D()},set multiSelectionKey(Y){D(Y),y()},get zoomActivationKey(){return V()},set zoomActivationKey(Y){V(Y),y()},get nodesDraggable(){return A()},set nodesDraggable(Y){A(Y),y()},get nodesConnectable(){return O()},set nodesConnectable(Y){O(Y),y()},get nodeDragThreshold(){return R()},set nodeDragThreshold(Y){R(Y),y()},get elementsSelectable(){return S()},set elementsSelectable(Y){S(Y),y()},get snapGrid(){return M()},set snapGrid(Y){M(Y),y()},get deleteKey(){return k()},set deleteKey(Y){k(Y),y()},get connectionRadius(){return P()},set connectionRadius(Y){P(Y),y()},get connectionLineType(){return H()},set connectionLineType(Y){H(Y),y()},get connectionMode(){return I()},set connectionMode(Y){I(Y),y()},get connectionLineStyle(){return B()},set connectionLineStyle(Y){B(Y),y()},get connectionLineContainerStyle(){return F()},set connectionLineContainerStyle(Y){F(Y),y()},get onMoveStart(){return K()},set onMoveStart(Y){K(Y),y()},get onMove(){return se()},set onMove(Y){se(Y),y()},get onMoveEnd(){return ee()},set onMoveEnd(Y){ee(Y),y()},get isValidConnection(){return W()},set isValidConnection(Y){W(Y),y()},get translateExtent(){return fe()},set translateExtent(Y){fe(Y),y()},get nodeExtent(){return me()},set nodeExtent(Y){me(Y),y()},get onlyRenderVisibleElements(){return Ce()},set onlyRenderVisibleElements(Y){Ce(Y),y()},get panOnScrollMode(){return he()},set panOnScrollMode(Y){he(Y),y()},get preventScrolling(){return ze()},set preventScrolling(Y){ze(Y),y()},get zoomOnScroll(){return G()},set zoomOnScroll(Y){G(Y),y()},get zoomOnDoubleClick(){return ae()},set zoomOnDoubleClick(Y){ae(Y),y()},get zoomOnPinch(){return Me()},set zoomOnPinch(Y){Me(Y),y()},get panOnScroll(){return Le()},set panOnScroll(Y){Le(Y),y()},get panOnDrag(){return Xe()},set panOnDrag(Y){Xe(Y),y()},get selectionOnDrag(){return te()},set selectionOnDrag(Y){te(Y),y()},get autoPanOnConnect(){return Fe()},set autoPanOnConnect(Y){Fe(Y),y()},get autoPanOnNodeDrag(){return Oe()},set autoPanOnNodeDrag(Y){Oe(Y),y()},get onerror(){return rt()},set onerror(Y){rt(Y),y()},get ondelete(){return oe()},set ondelete(Y){oe(Y),y()},get onedgecreate(){return pe()},set onedgecreate(Y){pe(Y),y()},get attributionPosition(){return be()},set attributionPosition(Y){be(Y),y()},get proOptions(){return Ie()},set proOptions(Y){Ie(Y),y()},get defaultEdgeOptions(){return ht()},set defaultEdgeOptions(Y){ht(Y),y()},get width(){return dt()},set width(Y){dt(Y),y()},get height(){return J()},set height(Y){J(Y),y()},get colorMode(){return Re()},set colorMode(Y){Re(Y),y()},get onconnect(){return le()},set onconnect(Y){le(Y),y()},get onconnectstart(){return $n()},set onconnectstart(Y){$n(Y),y()},get onconnectend(){return fn()},set onconnectend(Y){fn(Y),y()},get onbeforedelete(){return En()},set onbeforedelete(Y){En(Y),y()},get oninit(){return Te()},set oninit(Y){Te(Y),y()},get nodeOrigin(){return st()},set nodeOrigin(Y){st(Y),y()},get paneClickDistance(){return ye()},set paneClickDistance(Y){ye(Y),y()},get nodeClickDistance(){return lt()},set nodeClickDistance(Y){lt(Y),y()},get defaultMarkerColor(){return ct()},set defaultMarkerColor(Y){ct(Y),y()},get style(){return Jt()},set style(Y){Jt(Y),y()},get class(){return Oo()},set class(Y){Oo(Y),y()}});return s(),sw}ie(Pc,{id:{},nodes:{},edges:{},fitView:{},fitViewOptions:{},minZoom:{},maxZoom:{},initialViewport:{},viewport:{},nodeTypes:{},edgeTypes:{},selectionKey:{},selectionMode:{},panActivationKey:{},multiSelectionKey:{},zoomActivationKey:{},nodesDraggable:{},nodesConnectable:{},nodeDragThreshold:{},elementsSelectable:{},snapGrid:{},deleteKey:{},connectionRadius:{},connectionLineType:{},connectionMode:{},connectionLineStyle:{},connectionLineContainerStyle:{},onMoveStart:{},onMove:{},onMoveEnd:{},isValidConnection:{},translateExtent:{},nodeExtent:{},onlyRenderVisibleElements:{},panOnScrollMode:{},preventScrolling:{},zoomOnScroll:{},zoomOnDoubleClick:{},zoomOnPinch:{},panOnScroll:{},panOnDrag:{},selectionOnDrag:{},autoPanOnConnect:{},autoPanOnNodeDrag:{},onerror:{},ondelete:{},onedgecreate:{},attributionPosition:{},proOptions:{},defaultEdgeOptions:{},width:{},height:{},colorMode:{},onconnect:{},onconnectstart:{},onconnectend:{},onbeforedelete:{},oninit:{},nodeOrigin:{},paneClickDistance:{},nodeClickDistance:{},defaultMarkerColor:{},style:{},class:{}},["connectionLine","default"],[],!0);function Nc(e,t){ue(t,!1);let n=w(t,"initialNodes",12,void 0),r=w(t,"initialEdges",12,void 0),o=w(t,"initialWidth",12,void 0),i=w(t,"initialHeight",12,void 0),s=w(t,"fitView",12,void 0),a=w(t,"nodeOrigin",12,void 0);const l=lc({nodes:n(),edges:r(),width:o(),height:i(),nodeOrigin:a(),fitView:s()});Sr(Ri,{getStore:()=>l}),$s(()=>{l.reset()}),He();var u=tt(),c=xe(u);return wt(c,t,"default",{}),L(e,u),ce({get initialNodes(){return n()},set initialNodes(f){n(f),y()},get initialEdges(){return r()},set initialEdges(f){r(f),y()},get initialWidth(){return o()},set initialWidth(f){o(f),y()},get initialHeight(){return i()},set initialHeight(f){i(f),y()},get fitView(){return s()},set fitView(f){s(f),y()},get nodeOrigin(){return a()},set nodeOrigin(f){a(f),y()}})}ie(Nc,{initialNodes:{},initialEdges:{},initialWidth:{},initialHeight:{},fitView:{},nodeOrigin:{}},["default"],[],!0);var A2=ne("");function Po(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]),r=it(n,["class","bgColor","bgColorHover","color","colorHover","borderColor"]);ue(t,!1);let o=w(t,"class",12,void 0),i=w(t,"bgColor",12,void 0),s=w(t,"bgColorHover",12,void 0),a=w(t,"color",12,void 0),l=w(t,"colorHover",12,void 0),u=w(t,"borderColor",12,void 0);He();var c=A2();let f;var d=X(c);return wt(d,t,"default",{class:"button-svg"}),Z(c),Ee(g=>{f=nn(c,f,{type:"button",class:g,...r}),at(c,"--xy-controls-button-background-color-props",i()),at(c,"--xy-controls-button-background-color-hover-props",s()),at(c,"--xy-controls-button-color-props",a()),at(c,"--xy-controls-button-color-hover-props",l()),at(c,"--xy-controls-button-border-color-props",u())},[()=>Et(["svelte-flow__controls-button",o()])],ve),Ze("click",c,function(g){De.call(this,t,g)}),L(e,c),ce({get class(){return o()},set class(g){o(g),y()},get bgColor(){return i()},set bgColor(g){i(g),y()},get bgColorHover(){return s()},set bgColorHover(g){s(g),y()},get color(){return a()},set color(g){a(g),y()},get colorHover(){return l()},set colorHover(g){l(g),y()},get borderColor(){return u()},set borderColor(g){u(g),y()}})}ie(Po,{class:{},bgColor:{},bgColorHover:{},color:{},colorHover:{},borderColor:{}},["default"],[],!0);var L2=_e('');function Tc(e){var t=L2();L(e,t)}ie(Tc,{},[],[],!0);var O2=_e('');function Mc(e){var t=O2();L(e,t)}ie(Mc,{},[],[],!0);var I2=_e('');function Hc(e){var t=I2();L(e,t)}ie(Hc,{},[],[],!0);var z2=_e('');function Vc(e){var t=z2();L(e,t)}ie(Vc,{},[],[],!0);var R2=_e('');function Dc(e){var t=R2();L(e,t)}ie(Dc,{},[],[],!0);var B2=ne(" ",1),Y2=ne(" ",1);function Ac(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(H,"$nodesDraggable",n),i=()=>Q(I,"$nodesConnectable",n),s=()=>Q(B,"$elementsSelectable",n),a=()=>Q(M,"$viewport",n),l=()=>Q(k,"$minZoom",n),u=()=>Q(P,"$maxZoom",n),c=re(),f=re(),d=re(),g=re();let p=w(t,"position",12,"bottom-left"),x=w(t,"showZoom",12,!0),C=w(t,"showFitView",12,!0),$=w(t,"showLock",12,!0),m=w(t,"buttonBgColor",12,void 0),_=w(t,"buttonBgColorHover",12,void 0),v=w(t,"buttonColor",12,void 0),b=w(t,"buttonColorHover",12,void 0),N=w(t,"buttonBorderColor",12,void 0),E=w(t,"ariaLabel",12,void 0),T=w(t,"style",12,void 0),D=w(t,"orientation",12,"vertical"),V=w(t,"fitViewOptions",12,void 0),A=w(t,"class",12,"");const{zoomIn:O,zoomOut:R,fitView:S,viewport:M,minZoom:k,maxZoom:P,nodesDraggable:H,nodesConnectable:I,elementsSelectable:B}=Ue(),F={bgColor:m(),bgColorHover:_(),color:v(),colorHover:b(),borderColor:N()},K=()=>{O()},se=()=>{R()},ee=()=>{S(V())},W=()=>{U(c,!h(c)),H.set(h(c)),I.set(h(c)),B.set(h(c))};ge(()=>(o(),i(),s()),()=>{U(c,o()||i()||s())}),ge(()=>(a(),l()),()=>{U(f,a().zoom<=l())}),ge(()=>(a(),u()),()=>{U(d,a().zoom>=u())}),ge(()=>j(D()),()=>{U(g,D()==="horizontal"?"horizontal":"vertical")}),vt(),He();const fe=ve(()=>Et(["svelte-flow__controls",h(g),A()])),me=ve(()=>E()??"Svelte Flow controls");So(e,{get class(){return h(fe)},get position(){return p()},"data-testid":"svelte-flow__controls",get"aria-label"(){return h(me)},get style(){return T()},children:(he,ze)=>{var G=Y2(),ae=xe(G);wt(ae,t,"before",{});var Me=z(ae,2);{var Le=pe=>{var be=B2(),Ie=xe(be);Po(Ie,ft({class:"svelte-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",get disabled(){return h(d)}},F,{$$events:{click:K},children:(dt,J)=>{Tc(dt)},$$slots:{default:!0}}));var ht=z(Ie,2);Po(ht,ft({class:"svelte-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",get disabled(){return h(f)}},F,{$$events:{click:se},children:(dt,J)=>{Mc(dt)},$$slots:{default:!0}})),L(pe,be)};ke(Me,pe=>{x()&&pe(Le)})}var Xe=z(Me,2);{var te=pe=>{Po(pe,ft({class:"svelte-flow__controls-fitview",title:"fit view","aria-label":"fit view"},F,{$$events:{click:ee},children:(be,Ie)=>{Hc(be)},$$slots:{default:!0}}))};ke(Xe,pe=>{C()&&pe(te)})}var Fe=z(Xe,2);{var Oe=pe=>{Po(pe,ft({class:"svelte-flow__controls-interactive",title:"toggle interactivity","aria-label":"toggle interactivity"},F,{$$events:{click:W},children:(be,Ie)=>{var ht=tt(),dt=xe(ht);{var J=le=>{Dc(le)},Re=le=>{Vc(le)};ke(dt,le=>{h(c)?le(J):le(Re,!1)})}L(be,ht)},$$slots:{default:!0}}))};ke(Fe,pe=>{$()&&pe(Oe)})}var rt=z(Fe,2);wt(rt,t,"default",{});var oe=z(rt,2);wt(oe,t,"after",{}),L(he,G)},$$slots:{default:!0}});var Ce=ce({get position(){return p()},set position(he){p(he),y()},get showZoom(){return x()},set showZoom(he){x(he),y()},get showFitView(){return C()},set showFitView(he){C(he),y()},get showLock(){return $()},set showLock(he){$(he),y()},get buttonBgColor(){return m()},set buttonBgColor(he){m(he),y()},get buttonBgColorHover(){return _()},set buttonBgColorHover(he){_(he),y()},get buttonColor(){return v()},set buttonColor(he){v(he),y()},get buttonColorHover(){return b()},set buttonColorHover(he){b(he),y()},get buttonBorderColor(){return N()},set buttonBorderColor(he){N(he),y()},get ariaLabel(){return E()},set ariaLabel(he){E(he),y()},get style(){return T()},set style(he){T(he),y()},get orientation(){return D()},set orientation(he){D(he),y()},get fitViewOptions(){return V()},set fitViewOptions(he){V(he),y()},get class(){return A()},set class(he){A(he),y()}});return r(),Ce}ie(Ac,{position:{},showZoom:{},showFitView:{},showLock:{},buttonBgColor:{},buttonBgColorHover:{},buttonColor:{},buttonColorHover:{},buttonBorderColor:{},ariaLabel:{},style:{},orientation:{},fitViewOptions:{},class:{}},["before","default","after"],[],!0);var tr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(tr||(tr={}));var Z2=_e("");function Lc(e,t){ue(t,!1);let n=w(t,"radius",12,5),r=w(t,"class",12,"");He();var o=Z2();return Ee(i=>{de(o,"cx",n()),de(o,"cy",n()),de(o,"r",n()),$t(o,0,wn(i))},[()=>Et(["svelte-flow__background-pattern","dots",r()])],ve),L(e,o),ce({get radius(){return n()},set radius(i){n(i),y()},get class(){return r()},set class(i){r(i),y()}})}ie(Lc,{radius:{},class:{}},[],[],!0);var X2=_e("");function Oc(e,t){ue(t,!1);let n=w(t,"lineWidth",12,1),r=w(t,"dimensions",12),o=w(t,"variant",12,void 0),i=w(t,"class",12,"");He();var s=X2();return Ee(a=>{de(s,"stroke-width",n()),de(s,"d",`M${r()[0]/2} 0 V${r()[1]} M0 ${r()[1]/2} H${r()[0]}`),$t(s,0,wn(a))},[()=>Et(["svelte-flow__background-pattern",o(),i()])],ve),L(e,s),ce({get lineWidth(){return n()},set lineWidth(a){n(a),y()},get dimensions(){return r()},set dimensions(a){r(a),y()},get variant(){return o()},set variant(a){o(a),y()},get class(){return i()},set class(a){i(a),y()}})}ie(Oc,{lineWidth:{},dimensions:{},variant:{},class:{}},[],[],!0);const F2={[tr.Dots]:1,[tr.Lines]:1,[tr.Cross]:6};var W2=_e('');const K2={hash:"svelte-1r7pe8d",code:".svelte-flow__background.svelte-1r7pe8d {position:absolute;width:100%;height:100%;top:0;left:0;}"};function Ic(e,t){ue(t,!1),et(e,K2);const[n,r]=nt(),o=()=>Q(b,"$flowId",n),i=()=>Q(v,"$viewport",n),s=re(),a=re(),l=re(),u=re(),c=re();let f=w(t,"id",12,void 0),d=w(t,"variant",28,()=>tr.Dots),g=w(t,"gap",12,20),p=w(t,"size",12,1),x=w(t,"lineWidth",12,1),C=w(t,"bgColor",12,void 0),$=w(t,"patternColor",12,void 0),m=w(t,"patternClass",12,void 0),_=w(t,"class",12,"");const{viewport:v,flowId:b}=Ue(),N=p()||F2[d()],E=d()===tr.Dots,T=d()===tr.Cross,D=Array.isArray(g())?g():[g(),g()];ge(()=>(o(),j(f())),()=>{U(s,`background-pattern-${o()}-${f()?f():""}`)}),ge(()=>i(),()=>{U(a,[D[0]*i().zoom||1,D[1]*i().zoom||1])}),ge(()=>i(),()=>{U(l,N*i().zoom)}),ge(()=>(h(l),h(a)),()=>{U(u,T?[h(l),h(l)]:h(a))}),ge(()=>(h(l),h(u)),()=>{U(c,E?[h(l)/2,h(l)/2]:[h(u)[0]/2,h(u)[1]/2])}),vt(),He();var V=W2(),A=X(V),O=X(A);{var R=P=>{const H=ve(()=>h(l)/2);Lc(P,{get radius(){return h(H)},get class(){return m()}})},S=P=>{Oc(P,{get dimensions(){return h(u)},get variant(){return d()},get lineWidth(){return x()},get class(){return m()}})};ke(O,P=>{E?P(R):P(S,!1)})}Z(A);var M=z(A);Z(V),Ee(P=>{$t(V,0,wn(P),"svelte-1r7pe8d"),at(V,"--xy-background-color-props",C()),at(V,"--xy-background-pattern-color-props",$()),de(A,"id",h(s)),de(A,"x",i().x%h(a)[0]),de(A,"y",i().y%h(a)[1]),de(A,"width",h(a)[0]),de(A,"height",h(a)[1]),de(A,"patternTransform",`translate(-${h(c)[0]},-${h(c)[1]})`),de(M,"fill",`url(#${h(s)})`)},[()=>Et(["svelte-flow__background",_()])],ve),L(e,V);var k=ce({get id(){return f()},set id(P){f(P),y()},get variant(){return d()},set variant(P){d(P),y()},get gap(){return g()},set gap(P){g(P),y()},get size(){return p()},set size(P){p(P),y()},get lineWidth(){return x()},set lineWidth(P){x(P),y()},get bgColor(){return C()},set bgColor(P){C(P),y()},get patternColor(){return $()},set patternColor(P){$(P),y()},get patternClass(){return m()},set patternClass(P){m(P),y()},get class(){return _()},set class(P){_(P),y()}});return r(),k}ie(Ic,{id:{},variant:{},gap:{},size:{},lineWidth:{},bgColor:{},patternColor:{},patternClass:{},class:{}},[],[],!0);var q2=_e("");function zc(e,t){ue(t,!1);let n=w(t,"x",12),r=w(t,"y",12),o=w(t,"width",12,0),i=w(t,"height",12,0),s=w(t,"borderRadius",12,5),a=w(t,"color",12,void 0),l=w(t,"shapeRendering",12),u=w(t,"strokeColor",12,void 0),c=w(t,"strokeWidth",12,2),f=w(t,"selected",12,!1),d=w(t,"class",12,"");He();var g=q2();let p;return Ee(x=>{p=$t(g,0,wn(x),null,p,{selected:f()}),de(g,"x",n()),de(g,"y",r()),de(g,"rx",s()),de(g,"ry",s()),de(g,"width",o()),de(g,"height",i()),de(g,"style",`${a()?`fill: ${a()};`:""}${u()?`stroke: ${u()};`:""}${c()?`stroke-width: ${c()};`:""}`),de(g,"shape-rendering",l())},[()=>Et(["svelte-flow__minimap-node",d()])],ve),L(e,g),ce({get x(){return n()},set x(x){n(x),y()},get y(){return r()},set y(x){r(x),y()},get width(){return o()},set width(x){o(x),y()},get height(){return i()},set height(x){i(x),y()},get borderRadius(){return s()},set borderRadius(x){s(x),y()},get color(){return a()},set color(x){a(x),y()},get shapeRendering(){return l()},set shapeRendering(x){l(x),y()},get strokeColor(){return u()},set strokeColor(x){u(x),y()},get strokeWidth(){return c()},set strokeWidth(x){c(x),y()},get selected(){return f()},set selected(x){f(x),y()},get class(){return d()},set class(x){d(x),y()}})}ie(zc,{x:{},y:{},width:{},height:{},borderRadius:{},color:{},shapeRendering:{},strokeColor:{},strokeWidth:{},selected:{},class:{}},[],[],!0);function ca(e,t){const n=H0({domNode:e,panZoom:t.panZoom,getTransform:()=>{const o=q(t.viewport);return[o.x,o.y,o.zoom]},getViewScale:t.getViewScale});function r(o){n.update({translateExtent:o.translateExtent,width:o.width,height:o.height,inversePan:o.inversePan,zoomStep:o.zoomStep,pannable:o.pannable,zoomable:o.zoomable})}return{update:r,destroy(){n.destroy()}}}const da=e=>e instanceof Function?e:()=>e;var G2=_e(" "),U2=_e('');function Rc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(Xe,"$flowId",n),i=()=>Q(ae,"$viewport",n),s=()=>Q(Me,"$containerWidth",n),a=()=>Q(Le,"$containerHeight",n),l=()=>Q(G,"$nodeLookup",n),u=()=>Q(ze,"$nodes",n),c=()=>Q(te,"$panZoom",n),f=()=>Q(Fe,"$translateExtent",n),d=re(),g=re(),p=re(),x=re(),C=re(),$=re(),m=re(),_=re(),v=re(),b=re(),N=re(),E=re(),T=re();let D=w(t,"position",12,"bottom-right"),V=w(t,"ariaLabel",12,"Mini map"),A=w(t,"nodeStrokeColor",12,"transparent"),O=w(t,"nodeColor",12,void 0),R=w(t,"nodeClass",12,""),S=w(t,"nodeBorderRadius",12,5),M=w(t,"nodeStrokeWidth",12,2),k=w(t,"bgColor",12,void 0),P=w(t,"maskColor",12,void 0),H=w(t,"maskStrokeColor",12,void 0),I=w(t,"maskStrokeWidth",12,void 0),B=w(t,"width",12,void 0),F=w(t,"height",12,void 0),K=w(t,"pannable",12,!0),se=w(t,"zoomable",12,!0),ee=w(t,"inversePan",12,void 0),W=w(t,"zoomStep",12,void 0),fe=w(t,"style",12,""),me=w(t,"class",12,"");const Ce=200,he=150,{nodes:ze,nodeLookup:G,viewport:ae,width:Me,height:Le,flowId:Xe,panZoom:te,translateExtent:Fe}=Ue(),Oe=O()===void 0?void 0:da(O()),rt=da(A()),oe=da(R()),pe=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision",be=`svelte-flow__minimap-desc-${o()}`;let Ie=re(h(d));const ht=()=>h($);ge(()=>(i(),s(),a()),()=>{U(d,{x:-i().x/i().zoom,y:-i().y/i().zoom,width:s()/i().zoom,height:a()/i().zoom})}),ge(()=>(l(),h(d),u()),()=>{U(Ie,l().size>0?Cu(bo(l()),h(d)):h(d)),u()}),ge(()=>j(B()),()=>{U(g,B()??Ce)}),ge(()=>j(F()),()=>{U(p,F()??he)}),ge(()=>(h(Ie),h(g)),()=>{U(x,h(Ie).width/h(g))}),ge(()=>(h(Ie),h(p)),()=>{U(C,h(Ie).height/h(p))}),ge(()=>(h(x),h(C)),()=>{U($,Math.max(h(x),h(C)))}),ge(()=>(h($),h(g)),()=>{U(m,h($)*h(g))}),ge(()=>(h($),h(p)),()=>{U(_,h($)*h(p))}),ge(()=>h($),()=>{U(v,5*h($))}),ge(()=>(h(Ie),h(m),h(v)),()=>{U(b,h(Ie).x-(h(m)-h(Ie).width)/2-h(v))}),ge(()=>(h(Ie),h(_),h(v)),()=>{U(N,h(Ie).y-(h(_)-h(Ie).height)/2-h(v))}),ge(()=>(h(m),h(v)),()=>{U(E,h(m)+h(v)*2)}),ge(()=>(h(_),h(v)),()=>{U(T,h(_)+h(v)*2)}),vt(),He();const dt=ve(()=>fe()+(k()?`;--xy-minimap-background-color-props:${k()}`:"")),J=ve(()=>Et(["svelte-flow__minimap",me()]));So(e,{get position(){return D()},get style(){return h(dt)},get class(){return h(J)},"data-testid":"svelte-flow__minimap",children:(le,$n)=>{var fn=tt(),En=xe(fn);{var Te=st=>{var ye=U2();de(ye,"aria-labelledby",be);var lt=X(ye);{var ct=Wt=>{var Ot=G2();de(Ot,"id",be);var Sn=X(Ot,!0);Z(Ot),Ee(()=>Bt(Sn,V())),L(Wt,Ot)};ke(lt,Wt=>{V()&&Wt(ct)})}var Jt=z(lt);Yt(Jt,1,u,Wt=>Wt.id,(Wt,Ot)=>{var Sn=tt();const gn=ve(()=>l().get(h(Ot).id));var mt=xe(Sn);{var xa=yr=>{const hn=ve(()=>Qn(h(gn))),ji=ve(()=>Oe==null?void 0:Oe(h(gn))),Ji=ve(()=>rt(h(gn))),Qi=ve(()=>oe(h(gn)));zc(yr,ft({get x(){return h(gn).internals.positionAbsolute.x},get y(){return h(gn).internals.positionAbsolute.y}},()=>h(hn),{get selected(){return h(gn).selected},get color(){return h(ji)},get borderRadius(){return S()},get strokeColor(){return h(Ji)},get strokeWidth(){return M()},shapeRendering:pe,get class(){return h(Qi)}}))};ke(mt,yr=>{h(gn)&&Eu(h(gn))&&yr(xa)})}L(Wt,Sn)});var Oo=z(Jt);Z(ye),_t(ye,(Wt,Ot)=>ca==null?void 0:ca(Wt,Ot),()=>({panZoom:c(),viewport:ae,getViewScale:ht,translateExtent:f(),width:s(),height:a(),inversePan:ee(),zoomStep:W(),pannable:K(),zoomable:se()})),Ee(()=>{de(ye,"width",h(g)),de(ye,"height",h(p)),de(ye,"viewBox",`${h(b)??""} ${h(N)??""} ${h(E)??""} ${h(T)??""}`),at(ye,"--xy-minimap-mask-background-color-props",P()),at(ye,"--xy-minimap-mask-stroke-color-props",H()),at(ye,"--xy-minimap-mask-stroke-width-props",I()?I()*h($):void 0),de(Oo,"d",`M${h(b)-h(v)},${h(N)-h(v)}h${h(E)+h(v)*2}v${h(T)+h(v)*2}h${-h(E)-h(v)*2}z + M${h(d).x??""},${h(d).y??""}h${h(d).width??""}v${h(d).height??""}h${-h(d).width}z`)}),L(st,ye)};ke(En,st=>{c()&&st(Te)})}L(le,fn)},$$slots:{default:!0}});var Re=ce({get position(){return D()},set position(le){D(le),y()},get ariaLabel(){return V()},set ariaLabel(le){V(le),y()},get nodeStrokeColor(){return A()},set nodeStrokeColor(le){A(le),y()},get nodeColor(){return O()},set nodeColor(le){O(le),y()},get nodeClass(){return R()},set nodeClass(le){R(le),y()},get nodeBorderRadius(){return S()},set nodeBorderRadius(le){S(le),y()},get nodeStrokeWidth(){return M()},set nodeStrokeWidth(le){M(le),y()},get bgColor(){return k()},set bgColor(le){k(le),y()},get maskColor(){return P()},set maskColor(le){P(le),y()},get maskStrokeColor(){return H()},set maskStrokeColor(le){H(le),y()},get maskStrokeWidth(){return I()},set maskStrokeWidth(le){I(le),y()},get width(){return B()},set width(le){B(le),y()},get height(){return F()},set height(le){F(le),y()},get pannable(){return K()},set pannable(le){K(le),y()},get zoomable(){return se()},set zoomable(le){se(le),y()},get inversePan(){return ee()},set inversePan(le){ee(le),y()},get zoomStep(){return W()},set zoomStep(le){W(le),y()},get style(){return fe()},set style(le){fe(le),y()},get class(){return me()},set class(le){me(le),y()}});return r(),Re}ie(Rc,{position:{},ariaLabel:{},nodeStrokeColor:{},nodeColor:{},nodeClass:{},nodeBorderRadius:{},nodeStrokeWidth:{},bgColor:{},maskColor:{},maskStrokeColor:{},maskStrokeWidth:{},width:{},height:{},pannable:{},zoomable:{},inversePan:{},zoomStep:{},style:{},class:{}},[],[],!0);const Bc=e=>Uv(e);function Lt(){const{zoomIn:e,zoomOut:t,fitView:n,onbeforedelete:r,snapGrid:o,viewport:i,width:s,height:a,minZoom:l,maxZoom:u,panZoom:c,nodes:f,edges:d,domNode:g,nodeLookup:p,nodeOrigin:x,edgeLookup:C,connectionLookup:$}=Ue(),m=b=>{var V,A;const N=q(p),E=Bc(b)?b:N.get(b.id),T=E.parentId?e0(E.position,E.measured,E.parentId,N,q(x)):E.position,D={...E,position:T,width:((V=E.measured)==null?void 0:V.width)??E.width,height:((A=E.measured)==null?void 0:A.height)??E.height};return Or(D)},_=(b,N,E={replace:!1})=>{var V;const T=(V=q(p).get(b))==null?void 0:V.internals.userNode;if(!T)return;const D=typeof N=="function"?N(T):N;E.replace?f.update(A=>A.map(O=>O.id===b?Bc(D)?D:{...O,...D}:O)):(Object.assign(T,D),f.update(A=>A))},v=b=>q(p).get(b);return{zoomIn:e,zoomOut:t,getInternalNode:v,getNode:b=>{var N;return(N=v(b))==null?void 0:N.internals.userNode},getNodes:b=>b===void 0?q(f):Yc(q(p),b),getEdge:b=>q(C).get(b),getEdges:b=>b===void 0?q(d):Yc(q(C),b),setZoom:(b,N)=>{const E=q(c);return E?E.scaleTo(b,{duration:N==null?void 0:N.duration}):Promise.resolve(!1)},getZoom:()=>q(i).zoom,setViewport:async(b,N)=>{const E=q(i),T=q(c);return T?(await T.setViewport({x:b.x??E.x,y:b.y??E.y,zoom:b.zoom??E.zoom},{duration:N==null?void 0:N.duration}),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>q(i),setCenter:async(b,N,E)=>{const T=typeof(E==null?void 0:E.zoom)<"u"?E.zoom:q(u),D=q(c);return D?(await D.setViewport({x:q(s)/2-b*T,y:q(a)/2-N*T,zoom:T},{duration:E==null?void 0:E.duration}),Promise.resolve(!0)):Promise.resolve(!1)},fitView:n,fitBounds:async(b,N)=>{const E=q(c);if(!E)return Promise.resolve(!1);const T=js(b,q(s),q(a),q(l),q(u),(N==null?void 0:N.padding)??.1);return await E.setViewport(T,{duration:N==null?void 0:N.duration}),Promise.resolve(!0)},getIntersectingNodes:(b,N=!0,E)=>{const T=ku(b),D=T?b:m(b);return D?(E||q(f)).filter(V=>{const A=q(p).get(V.id);if(!A||!T&&V.id===b.id)return!1;const O=Or(A),R=Co(O,D);return N&&R>0||R>=D.width*D.height}):[]},isNodeIntersecting:(b,N,E=!0)=>{const D=ku(b)?b:m(b);if(!D)return!1;const V=Co(D,N);return E&&V>0||V>=D.width*D.height},deleteElements:async({nodes:b=[],edges:N=[]})=>{const{nodes:E,edges:T}=await wu({nodesToRemove:b,edgesToRemove:N,nodes:q(f),edges:q(d),onBeforeDelete:q(r)});return E&&f.update(D=>D.filter(V=>!E.some(({id:A})=>A===V.id))),T&&d.update(D=>D.filter(V=>!T.some(({id:A})=>A===V.id))),{deletedNodes:E,deletedEdges:T}},screenToFlowPosition:(b,N={snapToGrid:!0})=>{const E=q(g);if(!E)return b;const T=N.snapToGrid?q(o):!1,{x:D,y:V,zoom:A}=q(i),{x:O,y:R}=E.getBoundingClientRect(),S={x:b.x-O,y:b.y-R};return ko(S,[D,V,A],T!==null,T||[1,1])},flowToScreenPosition:b=>{const N=q(g);if(!N)return b;const{x:E,y:T,zoom:D}=q(i),{x:V,y:A}=N.getBoundingClientRect(),O=$u(b,[E,T,D]);return{x:O.x+V,y:O.y+A}},toObject:()=>({nodes:q(f).map(b=>({...b,position:{...b.position},data:{...b.data}})),edges:q(d).map(b=>({...b})),viewport:{...q(i)}}),updateNode:_,updateNodeData:(b,N,E)=>{var V;const T=(V=q(p).get(b))==null?void 0:V.internals.userNode;if(!T)return;const D=typeof N=="function"?N(T):N;T.data=E!=null&&E.replace?D:{...T.data,...D},f.update(A=>A)},getNodesBounds:b=>{const N=q(p),E=q(x);return jv(b,{nodeLookup:N,nodeOrigin:E})},getHandleConnections:({type:b,id:N,nodeId:E})=>{var T;return Array.from(((T=q($).get(`${E}-${b}-${N??null}`))==null?void 0:T.values())??[])},viewport:i}}function Yc(e,t){var r;const n=[];for(const o of t){const i=e.get(o);if(i){const s="internals"in i?(r=i.internals)==null?void 0:r.userNode:i;n.push(s)}}return n}var j2=ne('
    ');function Zc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(_,"$nodes",n),i=()=>Q(m,"$nodeLookup",n),s=()=>Q($,"$viewport",n),a=()=>Q(C,"$domNode",n),l=re(),u=re(),c=re();let f=w(t,"nodeId",12,void 0),d=w(t,"position",12,void 0),g=w(t,"align",12,void 0),p=w(t,"offset",12,void 0),x=w(t,"isVisible",12,void 0);const{domNode:C,viewport:$,nodeLookup:m,nodes:_}=Ue(),{getNodesBounds:v}=Lt(),b=ur("svelteflow__node_id");let N=re(),E=re([]),T=p()!==void 0?p():10,D=d()!==void 0?d():$e.Top,V=g()!==void 0?g():"center";ge(()=>(o(),j(f()),i()),()=>{o();const M=Array.isArray(f())?f():[f()||b];U(E,M.reduce((k,P)=>{const H=i().get(P);return H&&k.push(H),k},[]))}),ge(()=>(h(E),s()),()=>{const M=v(h(E));M&&U(N,v0(M,s(),D,T,V))}),ge(()=>h(E),()=>{U(l,h(E).length===0?1:Math.max(...h(E).map(M=>(M.internals.z||5)+1)))}),ge(()=>o(),()=>{U(u,o().filter(M=>M.selected).length)}),ge(()=>(j(x()),h(E),h(u)),()=>{U(c,typeof x()=="boolean"?x():h(E).length===1&&h(E)[0].selected&&h(u)===1)}),vt(),He();var A=tt(),O=xe(A);{var R=M=>{var k=j2(),P=X(k);wt(P,t,"default",{}),Z(k),_t(k,(H,I)=>Rr==null?void 0:Rr(H,I),()=>({domNode:a()})),Ee(H=>{de(k,"data-id",H),at(k,"position","absolute"),at(k,"transform",h(N)),at(k,"z-index",h(l))},[()=>h(E).reduce((H,I)=>`${H}${I.id} `,"").trim()],ve),L(M,k)};ke(O,M=>{a()&&h(c)&&h(E)&&M(R)})}L(e,A);var S=ce({get nodeId(){return f()},set nodeId(M){f(M),y()},get position(){return d()},set position(M){d(M),y()},get align(){return g()},set align(M){g(M),y()},get offset(){return p()},set offset(M){p(M),y()},get isVisible(){return x()},set isVisible(M){x(M),y()}});return r(),S}ie(Zc,{nodeId:{},position:{},align:{},offset:{},isVisible:{}},["default"],[],!0);function pr(e){const{nodes:t,nodeLookup:n}=Ue();let r=[],o=!0;return Un([t,n],([,i],s)=>{var c;const a=[],l=Array.isArray(e),u=l?e:[e];for(const f of u){const d=(c=i.get(f))==null?void 0:c.internals.userNode;d&&a.push({id:d.id,type:d.type,data:d.data})}(!C0(a,r)||o)&&(r=a,s(l?a:a[0]??null),o=!1)})}const Xc="tinyflow-component";class J2{constructor(t){Nt(this,"options");Nt(this,"rootEl");Nt(this,"svelteFlowInstance");if(typeof t.element!="string"&&!(t.element instanceof Element))throw new Error("element must be a string or Element");this._setOptions(t),this._init()}_init(){if(typeof this.options.element=="string"){if(this.rootEl=document.querySelector(this.options.element),!this.rootEl)throw new Error(`element not found by document.querySelector('${this.options.element}')`)}else if(this.options.element instanceof Element)this.rootEl=this.options.element;else throw new Error("element must be a string or Element");const t=document.createElement(Xc);t.style.display="block",t.style.width="100%",t.style.height="100%",t.classList.add("tf-theme-light"),t.options=this.options,t.onInit=n=>{this.svelteFlowInstance=n},this.rootEl.appendChild(t)}_setOptions(t){this.options={...t}}getOptions(){return this.options}getData(){return this.svelteFlowInstance.toObject()}setData(t){this.options.data=t;const n=document.createElement(Xc);n.style.display="block",n.style.width="100%",n.style.height="100%",n.classList.add("tf-theme-light"),n.options=this.options,n.onInit=r=>{this.svelteFlowInstance=r},this.destroy(),this.rootEl.appendChild(n)}destroy(){for(;this.rootEl.firstChild;)this.rootEl.removeChild(this.rootEl.firstChild)}}const Bi=(()=>{const e=we([]),t=we([]),n=we({x:250,y:100,zoom:1});return{nodes:e,edges:t,viewport:n,init:(r,o)=>{e.set(r),t.set(o)},addNode:r=>{e.update(o=>[...o,r])},removeNode:r=>{e.update(o=>o.filter(i=>i.id!==r))},updateNode:(r,o)=>{e.update(i=>i.map(s=>s.id===r?o:s))},updateNodeData:(r,o)=>{e.update(i=>i.map(s=>s.id===r?{...s,data:{...s.data,...o}}:s))},selectNodeOnly:r=>{e.update(o=>o.map(i=>i.id===r?{...i,selected:!0}:{...i,selected:!1}))},addEdge:r=>{t.update(o=>[...o,r])},removeEdge:r=>{t.update(o=>o.filter(i=>i.id!==r))},updateEdge:(r,o)=>{t.update(i=>i.map(s=>s.id===r?o:s))},updateEdgeData:(r,o)=>{t.update(i=>i.map(s=>s.id===r?{...s,data:o}:s))}}})();var Q2=ne("");function Ge(e,t){ue(t,!0);const n=w(t,"children",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","children"]);var o=Q2();let i;var s=X(o);return cr(s,()=>n()??gt),Z(o),Ee(()=>i=nn(o,i,{type:"button",...r,class:`tf-btn nopan nodrag ${t.class??""}`})),L(e,o),ce({get children(){return n()},set children(a){n(a),y()}})}ie(Ge,{children:{}},[],[],!0);var ep=ne("");function Fc(e,t){ue(t,!0);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);var r=ep();ao(r);let o;Ee(()=>o=nn(r,o,{type:"checkbox",...n,class:`tf-checkbox nopan nodrag ${t.class??""}`})),L(e,r),ce()}ie(Fc,{},[],[],!0);var tp=ne("");function St(e,t){ue(t,!0);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);var r=tp();ao(r);let o;Ee(()=>o=nn(r,o,{type:"text",...n,class:`tf-input nopan nodrag ${t.class??""}`})),L(e,r),ce()}ie(St,{},[],[],!0);var np=ne("");function Pt(e,t){ue(t,!0);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);var r=np();Wf(r);let o;Ee(()=>o=nn(r,o,{...n,class:`tf-textarea nodrag ${t.class??""}`})),L(e,r),ce()}ie(Pt,{},[],[],!0);var rp=ne('
    '),op=ne("
    ");function Wc(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]),r=it(n,["items","onChange","activeIndex"]);ue(t,!1);let o=w(t,"items",28,()=>[]),i=w(t,"onChange",12,()=>{}),s=w(t,"activeIndex",12,0);function a(c,f){var d;s(f),(d=i())==null||d(c,f)}He();var l=op();let u;return Yt(l,5,o,oi,(c,f,d)=>{var g=rp();de(g,"tabindex",d),g.__click=()=>a(h(f),d),g.__keydown=$=>{($.key==="Enter"||$.key===" ")&&($.preventDefault(),a(h(f),d))};var p=X(g);{var x=$=>{var m=Ae();Ee(()=>Bt(m,h(f).label)),L($,m)},C=$=>{var m=tt(),_=xe(m);cr(_,()=>h(f).label??gt),L($,m)};ke(p,$=>{typeof h(f).label=="string"?$(x):$(C,!1)})}Z(g),Ee(()=>$t(g,1,`tf-tabs-item ${(d===s()?"active":"")??""}`)),L(c,g)}),Z(l),Ee(()=>u=nn(l,u,{...r,class:`tf-tabs ${r.class??""}`})),L(e,l),ce({get items(){return o()},set items(c){o(c),y()},get onChange(){return i()},set onChange(c){i(c),y()},get activeIndex(){return s()},set activeIndex(c){s(c),y()}})}ri(["click","keydown"]),ie(Wc,{items:{},onChange:{},activeIndex:{}},[],[],!0);var ip=(e,t,n)=>t(h(n)),sp=(e,t,n)=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),t(h(n)))},ap=ne(''),lp=ne('
    '),up=ne('
    '),cp=ne('
    '),dp=ne("
    ");const fp={hash:"svelte-1jfktzw",code:`\r + /* 定义旋转的 CSS 类 */.rotate-90.svelte-1jfktzw {transform:rotate(90deg);transition:transform 0.3s ease;}`};function Kc(e,t){ue(t,!0),et(e,fp);let n=w(t,"items",7),r=w(t,"onChange",7),o=w(t,"activeKeys",31,()=>Ht([]));function i(a){var l;o().includes(a.key)?o(o().filter(u=>u!==a.key)):(o().push(a.key),o(o())),(l=r())==null||l(a,o())}var s=dp();return Yt(s,21,n,oi,(a,l,u)=>{var c=cp(),f=X(c);de(f,"tabindex",u),f.__click=[ip,i,l],f.__keydown=[sp,i,l];var d=X(f);{var g=v=>{var b=ap(),N=X(b);nr(N,{get target(){return h(l).icon}}),Z(b),L(v,b)};ke(d,v=>{h(l).icon&&v(g)})}var p=z(d,2);nr(p,{get target(){return h(l).title}});var x=z(p,2);Z(f);var C=z(f,2);{var $=v=>{var b=lp(),N=X(b);nr(N,{get target(){return h(l).description}}),Z(b),L(v,b)};ke(C,v=>{h(l).description&&v($)})}var m=z(C,2);{var _=v=>{var b=up(),N=X(b);nr(N,{get target(){return h(l).content}}),Z(b),L(v,b)};ke(m,v=>{o().includes(h(l).key)&&v(_)})}Z(c),Ee(v=>$t(x,1,`tf-collapse-item-title-arrow ${v??""}`,"svelte-1jfktzw"),[()=>o().includes(h(l).key)?"rotate-90":""]),L(a,c)}),Z(s),Ee(()=>{de(s,"style",t.style),$t(s,1,`tf-collapse ${t.class??""}`,"svelte-1jfktzw")}),L(e,s),ce({get items(){return n()},set items(a){n(a),y()},get onChange(){return r()},set onChange(a){r(a),y()},get activeKeys(){return o()},set activeKeys(a=[]){o(a),y()}})}ri(["click","keydown"]),ie(Kc,{items:{},onChange:{},activeKeys:{}},[],[],!0);function nr(e,t){ue(t,!0);let n=w(t,"target",7);typeof n()>"u"&&n("undefined");var r=tt(),o=xe(r);{var i=a=>{var l=tt(),u=xe(l);cr(u,()=>n()??gt),L(a,l)},s=a=>{var l=tt(),u=xe(l);dl(u,n),L(a,l)};ke(o,a=>{typeof n()=="function"?a(i):a(s,!1)})}return L(e,r),ce({get target(){return n()},set target(a){n(a),y()}})}ie(nr,{target:{}},[],[],!0);var gp=(e,t,n)=>t(h(n)),hp=_e(''),vp=ne('
    '),pp=ne(' ',1),mp=ne('
    '),yp=ne(" ",1),wp=ne('
    '),_p=ne(''),xp=ne("
    ");function ln(e,t){ue(t,!0);const n=(_,v=gt)=>{var b=tt(),N=xe(b);Yt(N,19,v,(E,T)=>`${T}_${E.value}`,(E,T)=>{var D=pp(),V=xe(D);V.__click=[gp,x,T];var A=X(V),O=X(A);{var R=P=>{var H=hp();L(P,H)};ke(O,P=>{h(T).children&&h(T).children.length>0&&P(R)})}Z(A);var S=z(A,2);nr(S,{get target(){return h(T).label}}),Z(V);var M=z(V,2);{var k=P=>{var H=vp(),I=X(H);n(I,()=>h(T).children),Z(H),L(P,H)};ke(M,P=>{h(T).children&&h(T).children.length>0&&(l()||c().includes(h(T).value))&&P(k)})}L(E,D)}),L(_,b)};let r=w(t,"items",7),o=w(t,"onExpand",7),i=w(t,"onSelect",7),s=w(t,"value",23,()=>[]),a=w(t,"defaultValue",23,()=>[]),l=w(t,"expandAll",7,!0),u=w(t,"multiple",7,!1),c=w(t,"expandValue",23,()=>[]),f=w(t,"placeholder",7),d=xt(t,["$$slots","$$events","$$legacy","$$host","items","onExpand","onSelect","value","defaultValue","expandAll","multiple","expandValue","placeholder"]),g=Ne(()=>{const _=[],v=b=>{for(let N of b)s().length>0?s().includes(N.value)&&_.push(N):a().includes(N.value)&&_.push(N),N.children&&N.children.length>0&&v(N.children)};return v(r()),_}),p;function x(_){var v,b;if(_.children&&_.children.length>0){(v=o())==null||v(_);return}else p==null||p.hide(),(b=i())==null||b(_)}var C=xp();let $;var m=X(C);return An(Do(m,{floating:v=>{var b=mp(),N=X(b);n(N,r),Z(b),L(v,b)},children:(v,b)=>{var N=_p();let E;var T=X(N);Yt(T,23,()=>h(g),(D,V)=>`${V}_${D.value}`,(D,V,A)=>{var O=tt(),R=xe(O);{var S=k=>{var P=tt(),H=xe(P);{var I=B=>{nr(B,{get target(){return h(V).label}})};ke(H,B=>{h(A)===0&&B(I)})}L(k,P)},M=k=>{var P=yp(),H=xe(P);nr(H,{get target(){return h(V).label}});var I=z(H,2);{var B=F=>{var K=Ae(",");L(F,K)};ke(I,F=>{h(A){u()?k(M,!1):k(S)})}L(D,O)},D=>{var V=wp(),A=X(V,!0);Z(V),Ee(()=>Bt(A,f())),L(D,V)}),Z(T),Pe(2),Z(N),Ee(()=>E=nn(N,E,{class:"tf-select-input nopan nodrag",...d})),L(v,N)},$$slots:{floating:!0,default:!0}}),v=>p=v,()=>p),Z(C),Ee(()=>$=nn(C,$,{...d,class:`tf-select ${d.class??""}`})),L(e,C),ce({get items(){return r()},set items(_){r(_),y()},get onExpand(){return o()},set onExpand(_){o(_),y()},get onSelect(){return i()},set onSelect(_){i(_),y()},get value(){return s()},set value(_=[]){s(_),y()},get defaultValue(){return a()},set defaultValue(_=[]){a(_),y()},get expandAll(){return l()},set expandAll(_=!0){l(_),y()},get multiple(){return u()},set multiple(_=!1){u(_),y()},get expandValue(){return c()},set expandValue(_=[]){c(_),y()},get placeholder(){return f()},set placeholder(_){f(_),y()}})}ri(["click"]),ie(ln,{items:{},onExpand:{},onSelect:{},value:{},defaultValue:{},expandAll:{},multiple:{},expandValue:{},placeholder:{}},[],[],!0);const No=Math.min,Yr=Math.max,Yi=Math.round,bn=e=>({x:e,y:e}),bp={left:"right",right:"left",bottom:"top",top:"bottom"},Cp={start:"end",end:"start"};function fa(e,t,n){return Yr(e,No(t,n))}function To(e,t){return typeof e=="function"?e(t):e}function mr(e){return e.split("-")[0]}function Mo(e){return e.split("-")[1]}function qc(e){return e==="x"?"y":"x"}function ga(e){return e==="y"?"height":"width"}function Zr(e){return["top","bottom"].includes(mr(e))?"y":"x"}function ha(e){return qc(Zr(e))}function kp(e,t,n){n===void 0&&(n=!1);const r=Mo(e),o=ha(e),i=ga(o);let s=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Zi(s)),[s,Zi(s)]}function $p(e){const t=Zi(e);return[va(e),t,va(t)]}function va(e){return e.replace(/start|end/g,t=>Cp[t])}function Ep(e,t,n){const r=["left","right"],o=["right","left"],i=["top","bottom"],s=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:s;default:return[]}}function Sp(e,t,n,r){const o=Mo(e);let i=Ep(mr(e),n==="start",r);return o&&(i=i.map(s=>s+"-"+o),t&&(i=i.concat(i.map(va)))),i}function Zi(e){return e.replace(/left|right|bottom|top/g,t=>bp[t])}function Pp(e){return{top:0,right:0,bottom:0,left:0,...e}}function Gc(e){return typeof e!="number"?Pp(e):{top:e,right:e,bottom:e,left:e}}function Xi(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function Uc(e,t,n){let{reference:r,floating:o}=e;const i=Zr(t),s=ha(t),a=ga(s),l=mr(t),u=i==="y",c=r.x+r.width/2-o.width/2,f=r.y+r.height/2-o.height/2,d=r[a]/2-o[a]/2;let g;switch(l){case"top":g={x:c,y:r.y-o.height};break;case"bottom":g={x:c,y:r.y+r.height};break;case"right":g={x:r.x+r.width,y:f};break;case"left":g={x:r.x-o.width,y:f};break;default:g={x:r.x,y:r.y}}switch(Mo(t)){case"start":g[s]-=d*(n&&u?-1:1);break;case"end":g[s]+=d*(n&&u?-1:1);break}return g}const Np=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=n,a=i.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(t));let u=await s.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:f}=Uc(u,r,l),d=r,g={},p=0;for(let x=0;x({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:s,elements:a,middlewareData:l}=t,{element:u,padding:c=0}=To(e,t)||{};if(u==null)return{};const f=Gc(c),d={x:n,y:r},g=ha(o),p=ga(g),x=await s.getDimensions(u),C=g==="y",$=C?"top":"left",m=C?"bottom":"right",_=C?"clientHeight":"clientWidth",v=i.reference[p]+i.reference[g]-d[g]-i.floating[p],b=d[g]-i.reference[g],N=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let E=N?N[_]:0;(!E||!await(s.isElement==null?void 0:s.isElement(N)))&&(E=a.floating[_]||i.floating[p]);const T=v/2-b/2,D=E/2-x[p]/2-1,V=No(f[$],D),A=No(f[m],D),O=V,R=E-x[p]-A,S=E/2-x[p]/2+T,M=fa(O,S,R),k=!l.arrow&&Mo(o)!=null&&S!==M&&i.reference[p]/2-(SS<=0)){var A,O;const S=(((A=i.flip)==null?void 0:A.index)||0)+1,M=E[S];if(M)return{data:{index:S,overflows:V},reset:{placement:M}};let k=(O=V.filter(P=>P.overflows[0]<=0).sort((P,H)=>P.overflows[1]-H.overflows[1])[0])==null?void 0:O.placement;if(!k)switch(g){case"bestFit":{var R;const P=(R=V.filter(H=>{if(N){const I=Zr(H.placement);return I===m||I==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(I=>I>0).reduce((I,B)=>I+B,0)]).sort((H,I)=>H[1]-I[1])[0])==null?void 0:R[0];P&&(k=P);break}case"initialPlacement":k=a;break}if(o!==k)return{reset:{placement:k}}}return{}}}};async function Hp(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),s=mr(n),a=Mo(n),l=Zr(n)==="y",u=["left","top"].includes(s)?-1:1,c=i&&l?-1:1,f=To(t,e);let{mainAxis:d,crossAxis:g,alignmentAxis:p}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof p=="number"&&(g=a==="end"?p*-1:p),l?{x:g*c,y:d*u}:{x:d*u,y:g*c}}const Vp=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:s,middlewareData:a}=t,l=await Hp(t,e);return s===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:i+l.y,data:{...l,placement:s}}}}},Dp=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:s=!1,limiter:a={fn:C=>{let{x:$,y:m}=C;return{x:$,y:m}}},...l}=To(e,t),u={x:n,y:r},c=await jc(t,l),f=Zr(mr(o)),d=qc(f);let g=u[d],p=u[f];if(i){const C=d==="y"?"top":"left",$=d==="y"?"bottom":"right",m=g+c[C],_=g-c[$];g=fa(m,g,_)}if(s){const C=f==="y"?"top":"left",$=f==="y"?"bottom":"right",m=p+c[C],_=p-c[$];p=fa(m,p,_)}const x=a.fn({...t,[d]:g,[f]:p});return{...x,data:{x:x.x-n,y:x.y-r,enabled:{[d]:i,[f]:s}}}}}};function Fi(){return typeof window<"u"}function Xr(e){return Jc(e)?(e.nodeName||"").toLowerCase():"#document"}function Xt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Bn(e){var t;return(t=(Jc(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Jc(e){return Fi()?e instanceof Node||e instanceof Xt(e).Node:!1}function un(e){return Fi()?e instanceof Element||e instanceof Xt(e).Element:!1}function Cn(e){return Fi()?e instanceof HTMLElement||e instanceof Xt(e).HTMLElement:!1}function Qc(e){return!Fi()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Xt(e).ShadowRoot}function Ho(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=cn(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Ap(e){return["table","td","th"].includes(Xr(e))}function Wi(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function pa(e){const t=ma(),n=un(e)?cn(e):e;return["transform","translate","scale","rotate","perspective"].some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function Lp(e){let t=rr(e);for(;Cn(t)&&!Fr(t);){if(pa(t))return t;if(Wi(t))return null;t=rr(t)}return null}function ma(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Fr(e){return["html","body","#document"].includes(Xr(e))}function cn(e){return Xt(e).getComputedStyle(e)}function Ki(e){return un(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function rr(e){if(Xr(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Qc(e)&&e.host||Bn(e);return Qc(t)?t.host:t}function ed(e){const t=rr(e);return Fr(t)?e.ownerDocument?e.ownerDocument.body:e.body:Cn(t)&&Ho(t)?t:ed(t)}function td(e,t,n){var r;t===void 0&&(t=[]);const o=ed(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),s=Xt(o);return i?(ya(s),t.concat(s,s.visualViewport||[],Ho(o)?o:[],[])):t.concat(o,td(o,[]))}function ya(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function nd(e){const t=cn(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Cn(e),i=o?e.offsetWidth:n,s=o?e.offsetHeight:r,a=Yi(n)!==i||Yi(r)!==s;return a&&(n=i,r=s),{width:n,height:r,$:a}}function rd(e){return un(e)?e:e.contextElement}function Wr(e){const t=rd(e);if(!Cn(t))return bn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=nd(t);let s=(i?Yi(n.width):n.width)/r,a=(i?Yi(n.height):n.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}const Op=bn(0);function od(e){const t=Xt(e);return!ma()||!t.visualViewport?Op:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ip(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Xt(e)?!1:t}function Vo(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=rd(e);let s=bn(1);t&&(r?un(r)&&(s=Wr(r)):s=Wr(e));const a=Ip(i,n,r)?od(i):bn(0);let l=(o.left+a.x)/s.x,u=(o.top+a.y)/s.y,c=o.width/s.x,f=o.height/s.y;if(i){const d=Xt(i),g=r&&un(r)?Xt(r):r;let p=d,x=ya(p);for(;x&&r&&g!==p;){const C=Wr(x),$=x.getBoundingClientRect(),m=cn(x),_=$.left+(x.clientLeft+parseFloat(m.paddingLeft))*C.x,v=$.top+(x.clientTop+parseFloat(m.paddingTop))*C.y;l*=C.x,u*=C.y,c*=C.x,f*=C.y,l+=_,u+=v,p=Xt(x),x=ya(p)}}return Xi({width:c,height:f,x:l,y:u})}function wa(e,t){const n=Ki(e).scrollLeft;return t?t.left+n:Vo(Bn(e)).left+n}function id(e,t,n){n===void 0&&(n=!1);const r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-(n?0:wa(e,r)),i=r.top+t.scrollTop;return{x:o,y:i}}function zp(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",s=Bn(r),a=t?Wi(t.floating):!1;if(r===s||a&&i)return n;let l={scrollLeft:0,scrollTop:0},u=bn(1);const c=bn(0),f=Cn(r);if((f||!f&&!i)&&((Xr(r)!=="body"||Ho(s))&&(l=Ki(r)),Cn(r))){const g=Vo(r);u=Wr(r),c.x=g.x+r.clientLeft,c.y=g.y+r.clientTop}const d=s&&!f&&!i?id(s,l,!0):bn(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+c.x+d.x,y:n.y*u.y-l.scrollTop*u.y+c.y+d.y}}function Rp(e){return Array.from(e.getClientRects())}function Bp(e){const t=Bn(e),n=Ki(e),r=e.ownerDocument.body,o=Yr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Yr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let s=-n.scrollLeft+wa(e);const a=-n.scrollTop;return cn(r).direction==="rtl"&&(s+=Yr(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:s,y:a}}function Yp(e,t){const n=Xt(e),r=Bn(e),o=n.visualViewport;let i=r.clientWidth,s=r.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;const u=ma();(!u||u&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a,y:l}}function Zp(e,t){const n=Vo(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=Cn(e)?Wr(e):bn(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,l=o*i.x,u=r*i.y;return{width:s,height:a,x:l,y:u}}function sd(e,t,n){let r;if(t==="viewport")r=Yp(e,n);else if(t==="document")r=Bp(Bn(e));else if(un(t))r=Zp(t,n);else{const o=od(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return Xi(r)}function ad(e,t){const n=rr(e);return n===t||!un(n)||Fr(n)?!1:cn(n).position==="fixed"||ad(n,t)}function Xp(e,t){const n=t.get(e);if(n)return n;let r=td(e,[]).filter(a=>un(a)&&Xr(a)!=="body"),o=null;const i=cn(e).position==="fixed";let s=i?rr(e):e;for(;un(s)&&!Fr(s);){const a=cn(s),l=pa(s);!l&&a.position==="fixed"&&(o=null),(i?!l&&!o:!l&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Ho(s)&&!l&&ad(e,s))?r=r.filter(c=>c!==s):o=a,s=rr(s)}return t.set(e,r),r}function Fp(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?Wi(t)?[]:Xp(t,this._c):[].concat(n),r],a=s[0],l=s.reduce((u,c)=>{const f=sd(t,c,o);return u.top=Yr(f.top,u.top),u.right=No(f.right,u.right),u.bottom=No(f.bottom,u.bottom),u.left=Yr(f.left,u.left),u},sd(t,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Wp(e){const{width:t,height:n}=nd(e);return{width:t,height:n}}function Kp(e,t,n){const r=Cn(t),o=Bn(t),i=n==="fixed",s=Vo(e,!0,i,t);let a={scrollLeft:0,scrollTop:0};const l=bn(0);if(r||!r&&!i)if((Xr(t)!=="body"||Ho(o))&&(a=Ki(t)),r){const d=Vo(t,!0,i,t);l.x=d.x+t.clientLeft,l.y=d.y+t.clientTop}else o&&(l.x=wa(o));const u=o&&!r&&!i?id(o,a):bn(0),c=s.left+a.scrollLeft-l.x-u.x,f=s.top+a.scrollTop-l.y-u.y;return{x:c,y:f,width:s.width,height:s.height}}function _a(e){return cn(e).position==="static"}function ld(e,t){if(!Cn(e)||cn(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Bn(e)===n&&(n=n.ownerDocument.body),n}function ud(e,t){const n=Xt(e);if(Wi(e))return n;if(!Cn(e)){let o=rr(e);for(;o&&!Fr(o);){if(un(o)&&!_a(o))return o;o=rr(o)}return n}let r=ld(e,t);for(;r&&Ap(r)&&_a(r);)r=ld(r,t);return r&&Fr(r)&&_a(r)&&!pa(r)?n:r||Lp(e)||n}const qp=async function(e){const t=this.getOffsetParent||ud,n=this.getDimensions,r=await n(e.floating);return{reference:Kp(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Gp(e){return cn(e).direction==="rtl"}const Up={convertOffsetParentRelativeRectToViewportRelativeRect:zp,getDocumentElement:Bn,getClippingRect:Fp,getOffsetParent:ud,getElementRects:qp,getClientRects:Rp,getDimensions:Wp,getScale:Wr,isElement:un,isRTL:Gp},jp=Vp,Jp=Dp,Qp=Mp,em=Tp,tm=(e,t,n)=>{const r=new Map,o={platform:Up,...n},i={...o.platform,_c:r};return Np(e,t,{...o,platform:i})},nm=({trigger:e,triggerEvent:t,floatContent:n,placement:r="bottom",offsetOptions:o,flipOptions:i,shiftOptions:s,interactive:a,showArrow:l})=>{if(typeof e=="string"){const $=document.querySelector(e);if($)e=$;else throw new Error("element not found by document.querySelector('"+e+"')")}let u;if(typeof n=="string"){const $=document.querySelector(n);if($)u=$;else throw new Error("element not found by document.querySelector('"+n+"')")}else u=n;let c;l&&(c=document.createElement("div"),c.style.position="absolute",c.style.backgroundColor="#222",c.style.width="8px",c.style.height="8px",c.style.transform="rotate(45deg)",c.style.display="none",u.firstElementChild.before(c));function f(){tm(e,u,{placement:r,middleware:[jp(o),Qp(i),Jp(s),...l?[em({element:c})]:[]]}).then(({x:$,y:m,placement:_,middlewareData:v})=>{if(Object.assign(u.style,{left:`${$}px`,top:`${m}px`}),l){const{x:b,y:N}=v.arrow,E={top:"bottom",right:"left",bottom:"top",left:"right"}[_.split("-")[0]];Object.assign(c.style,{zIndex:-1,left:b!=null?`${b}px`:"",top:N!=null?`${N}px`:"",right:"",bottom:"",[E]:"2px"})}})}let d=!1;function g(){u.style.display="block",u.style.visibility="block",u.style.position="absolute",l&&(c.style.display="block"),d=!0,f()}function p(){u.style.display="none",l&&(c.style.display="none"),d=!1}function x($){$.stopPropagation(),d?p():g()}function C($){u.contains($.target)||p()}return(!t||t.length==0)&&(t=["click"]),t.forEach($=>{e.addEventListener($,x)}),document.addEventListener("click",C),{destroy(){t.forEach($=>{e.removeEventListener($,x)}),document.removeEventListener("click",C)},hide(){p()},isVisible(){return d}}};var rm=ne('
    ');function Do(e,t){ue(t,!0);const n=w(t,"children",7),r=w(t,"floating",7),o=w(t,"placement",7,"bottom");let i,s,a;rn(()=>(a=nm({trigger:i,floatContent:s,interactive:!0,placement:o()}),()=>{a.destroy()}));function l(){a.hide()}var u=rm(),c=X(u),f=X(c);cr(f,n),Z(c),An(c,p=>i=p,()=>i);var d=z(c,2),g=X(d);return cr(g,r),Z(d),An(d,p=>s=p,()=>s),Z(u),L(e,u),ce({hide:l,get children(){return n()},set children(p){n(p),y()},get floating(){return r()},set floating(p){r(p),y()},get placement(){return o()},set placement(p="bottom"){o(p),y()}})}ie(Do,{children:{},floating:{},placement:{}},[],["hide"],!0);function je(e,t){ue(t,!0);const n=w(t,"children",7),r=w(t,"level",7,1),o=w(t,"mt",7),i=w(t,"mb",7);var s=tt(),a=xe(s);return t1(a,()=>`h${r()}`,!1,(l,u)=>{let c;Ee(()=>c=nn(l,c,{class:"tf-heading",style:`margin-top:${o()||"0"};margin-bottom:${i()||"0"}`},void 0,l.namespaceURI===Ea,l.nodeName.includes("-")));var f=tt(),d=xe(f);cr(d,()=>n()??gt),L(u,f)}),L(e,s),ce({get children(){return n()},set children(l){n(l),y()},get level(){return r()},set level(l=1){r(l),y()},get mt(){return o()},set mt(l){o(l),y()},get mb(){return i()},set mb(l){i(l),y()}})}ie(je,{children:{},level:{},mt:{},mb:{}},[],[],!0);var om=_e('');const im={hash:"svelte-1rvn4a8",code:".input-btn-more {border:1px solid transparent;padding:3px;&:hover {background:#eee;border:1px solid transparent;}}"};function qi(e,t){ue(t,!0),et(e,im);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);Ge(e,ft(()=>n,{get class(){return`input-btn-more ${t.class??""}`},children:(r,o)=>{var i=om();L(r,i)},$$slots:{default:!0}})),ce()}ie(qi,{},[],[],!0);const sm=()=>{const e=Ue();return{deleteNode:n=>{e.nodes.update(r=>r.filter(o=>o.id!==n)),e.edges.update(r=>r.filter(o=>o.source!==n&&o.target!==n))}}},Kr=(e=16)=>{const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=new Uint8Array(e);return crypto.getRandomValues(n),Array.from(n,r=>t[r%t.length]).join("")},am=()=>{const{nodes:e,nodeLookup:t}=Ue();return{copyNode:r=>{var s;const i=(s=q(t).get(r))==null?void 0:s.internals.userNode;if(i){const a=Kr(),l={...i,id:a,position:{x:i.position.x+50,y:i.position.y+50}};e.update(u=>[...u,l]),e.update(u=>u.map(c=>c.id===a?{...c,selected:!0}:{...c,selected:!1}))}}}};var lm=_e(''),um=_e(''),cm=_e(''),dm=ne('
    '),fm=ne('
    TinyFlow.ai
    ',1);const gm={hash:"svelte-44dmwv",code:".tf-node-toolbar.svelte-44dmwv {display:flex;gap:5px;padding:5px;border-radius:5px;background:#fff;border:1px solid #eee;box-shadow:0 0 5px rgba(0, 0, 0, 0.1);}.tf-node-toolbar-item {border:1px solid transparent;}"};function dn(e,t){ue(t,!0),et(e,gm);const n=w(t,"data",7),r=w(t,"id",7,""),o=w(t,"icon",7),i=w(t,"handle",7),s=w(t,"children",7),a=w(t,"allowExecute",7,!0),l=w(t,"allowCopy",7,!0),u=w(t,"allowDelete",7,!0),c=w(t,"showSourceHandle",7,!0),f=w(t,"showTargetHandle",7,!0);let d=n().expand?["key"]:[];const{updateNodeData:g}=Lt(),p=[{key:"key",icon:o(),title:n().title,description:n().description,content:s()}],{deleteNode:x}=sm(),{copyNode:C}=am();var $=fm(),m=xe($);{var _=O=>{Zc(O,{get position(){return $e.Top},align:"end",children:(R,S)=>{var M=dm(),k=X(M);{var P=K=>{Ge(K,{class:"tf-node-toolbar-item",children:(se,ee)=>{var W=lm();L(se,W)},$$slots:{default:!0}})};ke(k,K=>{a()&&K(P)})}var H=z(k,2);{var I=K=>{Ge(K,{class:"tf-node-toolbar-item",onclick:()=>{C(r())},children:(se,ee)=>{var W=um();L(se,W)},$$slots:{default:!0}})};ke(H,K=>{l()&&K(I)})}var B=z(H,2);{var F=K=>{Ge(K,{class:"tf-node-toolbar-item",onclick:()=>{x(r())},children:(se,ee)=>{var W=cm();L(se,W)},$$slots:{default:!0}})};ke(B,K=>{u()&&K(F)})}Z(M),L(R,M)},$$slots:{default:!0}})};ke(m,O=>{(a()||l()||u())&&O(_)})}var v=z(m,2),b=z(X(v),2),N=X(b);Kc(N,{items:p,activeKeys:d,onChange:(O,R)=>{g(r(),{expand:R==null?void 0:R.includes("key")})}}),Z(b),Z(v);var E=z(v,2);{var T=O=>{er(O,{type:"target",get position(){return $e.Left},style:" left: -12px;top: 20px"})};ke(E,O=>{f()&&O(T)})}var D=z(E,2);{var V=O=>{er(O,{type:"source",get position(){return $e.Right},style:"right: -12px;top: 20px"})};ke(D,O=>{c()&&O(V)})}var A=z(D,2);return cr(A,()=>i()??gt),L(e,$),ce({get data(){return n()},set data(O){n(O),y()},get id(){return r()},set id(O=""){r(O),y()},get icon(){return o()},set icon(O){o(O),y()},get handle(){return i()},set handle(O){i(O),y()},get children(){return s()},set children(O){s(O),y()},get allowExecute(){return a()},set allowExecute(O=!0){a(O),y()},get allowCopy(){return l()},set allowCopy(O=!0){l(O),y()},get allowDelete(){return u()},set allowDelete(O=!0){u(O),y()},get showSourceHandle(){return c()},set showSourceHandle(O=!0){c(O),y()},get showTargetHandle(){return f()},set showTargetHandle(O=!0){f(O),y()}})}ie(dn,{data:{},id:{},icon:{},handle:{},children:{},allowExecute:{},allowCopy:{},allowDelete:{},showSourceHandle:{},showTargetHandle:{}},[],[],!0);function pt(){return ur("svelteflow__node_id")}const cd=[{value:"String",label:"String"},{value:"Number",label:"Number"},{value:"Boolean",label:"Boolean"},{value:"File",label:"File"},{value:"Object",label:"Object"},{value:"Array",label:"Array"}],hm=[{value:"ref",label:"引用"},{value:"input",label:"固定值"}];var vm=ne('
    参数类型:
    默认值:
    参数描述:
    '),pm=_e(''),mm=ne('
    ',1);const ym={hash:"svelte-laou7w",code:".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}"};function dd(e,t){ue(t,!0),et(e,ym);const[n,r]=nt(),o=()=>Q(h(l),"$node",n),i=w(t,"parameter",7),s=w(t,"index",7);let a=pt(),l=Ne(()=>pr(a)),u=Ne(()=>{var T,D;return{...i(),...(D=(T=o())==null?void 0:T.data)==null?void 0:D.parameters[s()]}});const{updateNodeData:c}=Lt(),f=T=>{const D=T.target.value;c(a,V=>{let A=V.data.parameters;return A[s()].name=D,{parameters:A}})},d=T=>{const D=T.target.checked;c(a,V=>{let A=V.data.parameters;return A[s()].required=D,{parameters:A}})},g=T=>{const D=T.value;D&&c(a,V=>{let A=V.data.parameters;return A[s()].dataType=D,{parameters:A}})};let p;const x=()=>{c(a,T=>{let D=T.data.parameters;return D.splice(s(),1),{parameters:[...D]}}),p==null||p.hide()};var C=mm(),$=xe(C),m=X($);St(m,{style:"width: 100%;",get value(){return h(u).name},placeholder:"请输入参数名称",oninput:f}),Z($);var _=z($,2),v=X(_);Fc(v,{get checked(){return h(u).required},onchange:d}),Z(_);var b=z(_,2),N=X(b);An(Do(N,{placement:"bottom",floating:D=>{var V=vm(),A=X(V),O=z(X(A));const R=Ne(()=>h(u).dataType?[h(u).dataType]:["String"]);ln(O,{items:cd,style:"width: 100%",onSelect:g,get value(){return h(R)}}),Z(A);var S=z(A,2),M=z(X(S));Pt(M,{rows:1,style:"width: 100%;"}),Z(S);var k=z(S,2),P=z(X(k));Pt(P,{rows:3,style:"width: 100%;"}),Z(k);var H=z(k,2),I=X(H);Ge(I,{onclick:x,children:(B,F)=>{Pe();var K=Ae("删除");L(B,K)},$$slots:{default:!0}}),Z(H),Z(V),L(D,V)},children:(D,V)=>{Ge(D,{class:"input-btn-more",children:(A,O)=>{var R=pm();L(A,R)},$$slots:{default:!0}})},$$slots:{floating:!0,default:!0}}),D=>p=D,()=>p),Z(b),L(e,C);var E=ce({get parameter(){return i()},set parameter(T){i(T),y()},get index(){return s()},set index(T){s(T),y()}});return r(),E}ie(dd,{parameter:{},index:{}},[],[],!0);var wm=ne('
    参数名称
    必填
    ',1),_m=ne('
    无输入参数
    '),xm=ne('
    ');const bm={hash:"svelte-3n0wca",code:`.input-container.svelte-3n0wca {display:grid;grid-template-columns:80% 10% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-3n0wca .none-params:where(.svelte-3n0wca) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-3n0wca .input-header:where(.svelte-3n0wca) {font-size:12px;color:#666;}`};function fd(e,t){ue(t,!0),et(e,bm);const[n,r]=nt(),o=()=>Q(h(s),"$node",n);let i=pt(),s=Ne(()=>pr(i)),a=Ne(()=>{var d,g;return[...((g=(d=o())==null?void 0:d.data)==null?void 0:g.parameters)||[]]});var l=xm(),u=X(l);{var c=d=>{var g=wm();Pe(4),L(d,g)};ke(u,d=>{h(a).length!==0&&d(c)})}var f=z(u,2);Yt(f,19,()=>h(a),d=>d.id,(d,g,p)=>{dd(d,{get parameter(){return h(g)},get index(){return h(p)}})},d=>{var g=_m();L(d,g)}),Z(l),L(e,l),ce(),r()}ie(fd,{},[],[],!0);const gd=e=>{!e||e.length==0||e.forEach(t=>{t.id||(t.id=Kr()),gd(t.children)})},kn=()=>{const{updateNodeData:e}=Lt();return{addParameter:(t,n="parameters",r)=>{gd(r==null?void 0:r.children);const o={...r,id:Kr()};e(t,i=>{let s=i.data[n];return s?s.push(o):s=[o],{[n]:[...s]}})}}};var Cm=_e(''),km=_e(''),$m=ne('
    ',1);const Em={hash:"svelte-r5g35l",code:".heading.svelte-r5g35l {display:flex;margin-bottom:10px;}.input-btn-more {border:1px solid transparent;padding:3px;}.input-btn-more:hover {background:#eee;border:1px solid transparent;}"};function hd(e,t){ue(t,!0),et(e,Em);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn();return dn(e,ft(()=>r,{get data(){return n()},allowExecute:!1,showTargetHandle:!1,icon:a=>{var l=Cm();L(a,l)},children:(a,l)=>{var u=$m(),c=xe(u),f=X(c);je(f,{level:3,children:(p,x)=>{Pe();var C=Ae("输入参数");L(p,C)},$$slots:{default:!0}});var d=z(f,2);Ge(d,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(p,x)=>{var C=km();L(p,C)},$$slots:{default:!0}}),Z(c);var g=z(c,2);fd(g,{}),L(a,u)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(s){n(s),y()}})}ie(hd,{data:{}},[],[],!0);const vd=(e,t,n)=>{for(let r of n)r.target===t&&r.source&&(e.push(r.source),vd(e,r.source,n))},pd=(e,t)=>{if(e.type==="startNode"){const n=e.data.parameters,r=[];if(n)for(const o of n)r.push({label:o.name+(t?` (Array<${o.dataType||"String"}>)`:` (${o.dataType||"String"})`),value:e.id+"."+o.name});return{label:e.data.title,value:e.id,children:r}}else{if(e.type==="loopNode"&&t)return{label:e.data.title,value:e.id,children:[{label:"loopItem",value:e.id+".loop"},{label:"index (Number)",value:e.id+".index"}]};{const n=e.data.outputDefs;if(n){const r=(o,i)=>!o||o.length===0?[]:o.map(s=>({label:s.name+(t?` (Array<${s.dataType||"String"}>)`:` (${s.dataType||"String"})`),value:i+"."+s.name,children:r(s.children,i+"."+s.name)}));return{label:e.data.title,value:e.id,children:r(n,e.id)}}}}},Sm=(e=!1)=>{const t=pt(),n=pr(t),{nodes:r,edges:o}=Ue();return Un([n,r,o],([i,s,a])=>{const l=[];if(e){for(let u of s)if(u.parentId===i.id){const c=pd(u,u.parentId===i.id);c&&l.push(c)}}else{const u=[];vd(u,t,a);for(let c of s)if(u.includes(c.id)){const f=pd(c,c.parentId===i.id);f&&l.push(f)}}return l})};var Pm=ne('
    数据来源:
    默认值:
    参数描述:
    '),Nm=ne('
    ',1);const Tm={hash:"svelte-laou7w",code:".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}"};function md(e,t){ue(t,!0),et(e,Tm);const[n,r]=nt(),o=()=>Q(h(c),"$node",n),i=()=>Q(v,"$selectItems",n),s=w(t,"parameter",7),a=w(t,"index",7),l=w(t,"dataKeyName",7);let u=pt(),c=Ne(()=>pr(u)),f=Ne(()=>{var M;return{...s(),...(M=o())==null?void 0:M.data[l()][a()]}});const{updateNodeData:d}=Lt(),g=(M,k)=>{d(u,P=>{let H=P.data[l()];return H[a()]={...H[a()],[M]:k},{[l()]:H}})},p=M=>{const k=M.target.value;g("name",k)},x=M=>{const k=M.target.value;g("value",k)},C=M=>{const k=M.value;g("ref",k)},$=M=>{const k=M.value;g("refType",k)};let m;const _=()=>{d(u,M=>{let k=M.data[l()];return k.splice(a(),1),{[l()]:[...k]}}),m==null||m.hide()},v=Sm();var b=Nm(),N=xe(b),E=X(N);St(E,{style:"width: 100%;",get value(){return h(f).name},placeholder:"请输入参数名称",oninput:p}),Z(N);var T=z(N,2),D=X(T);{var V=M=>{St(M,{get value(){return h(f).value},placeholder:"请输入参数值",oninput:x})},A=M=>{const k=Ne(()=>[h(f).ref]);ln(M,{get items(){return i()},style:"width: 100%",defaultValue:["ref"],get value(){return h(k)},expandAll:!0,onSelect:C})};ke(D,M=>{h(f).refType==="input"?M(V):M(A,!1)})}Z(T);var O=z(T,2),R=X(O);An(Do(R,{placement:"bottom",floating:k=>{var P=Pm(),H=X(P),I=z(X(H));const B=Ne(()=>h(f).refType?[h(f).refType]:[]);ln(I,{items:hm,style:"width: 100%",defaultValue:["ref"],get value(){return h(B)},onSelect:$}),Z(H);var F=z(H,2),K=z(X(F));Pt(K,{rows:1,style:"width: 100%;",onchange:me=>{const Ce=me.target.value;g("defaultValue",Ce)}}),Z(F);var se=z(F,2),ee=z(X(se));Pt(ee,{rows:3,style:"width: 100%;",onchange:me=>{const Ce=me.target.value;g("description",Ce)}}),Z(se);var W=z(se,2),fe=X(W);Ge(fe,{onclick:_,children:(me,Ce)=>{Pe();var he=Ae("删除");L(me,he)},$$slots:{default:!0}}),Z(W),Z(P),L(k,P)},children:(k,P)=>{qi(k,{})},$$slots:{floating:!0,default:!0}}),k=>m=k,()=>m),Z(O),L(e,b);var S=ce({get parameter(){return s()},set parameter(M){s(M),y()},get index(){return a()},set index(M){a(M),y()},get dataKeyName(){return l()},set dataKeyName(M){l(M),y()}});return r(),S}ie(md,{parameter:{},index:{},dataKeyName:{}},[],[],!0);var Mm=ne('
    参数名称
    参数值
    ',1),Hm=ne('
    '),Vm=ne('
    ');const Dm={hash:"svelte-1sm1mgi",code:`.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}`};function Ft(e,t){ue(t,!0),et(e,Dm);const[n,r]=nt(),o=()=>Q(h(l),"$node",n),i=w(t,"noneParameterText",7,"无输入参数"),s=w(t,"dataKeyName",7,"parameters");let a=pt(),l=Ne(()=>pr(a)),u=Ne(()=>{var x;return[...((x=o())==null?void 0:x.data[s()])||[]]});var c=Vm(),f=X(c);{var d=x=>{var C=Mm();Pe(4),L(x,C)};ke(f,x=>{h(u).length!==0&&x(d)})}var g=z(f,2);Yt(g,19,()=>h(u),x=>x.id,(x,C,$)=>{md(x,{get parameter(){return h(C)},get index(){return h($)},get dataKeyName(){return s()}})},x=>{var C=Hm(),$=X(C,!0);Z(C),Ee(()=>Bt($,i())),L(x,C)}),Z(c),L(e,c);var p=ce({get noneParameterText(){return i()},set noneParameterText(x="无输入参数"){i(x),y()},get dataKeyName(){return s()},set dataKeyName(x="parameters"){s(x),y()}});return r(),p}ie(Ft,{noneParameterText:{},dataKeyName:{}},[],[],!0);var Am=_e(''),Lm=_e(''),Om=ne('
    ',1);const Im={hash:"svelte-11h445j",code:".heading.svelte-11h445j {display:flex;margin-bottom:10px;}"};function yd(e,t){ue(t,!0),et(e,Im);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn();return dn(e,ft({get data(){return n()}},()=>r,{allowExecute:!1,showSourceHandle:!1,icon:a=>{var l=Am();L(a,l)},children:(a,l)=>{var u=Om(),c=xe(u),f=X(c);je(f,{level:3,children:(p,x)=>{Pe();var C=Ae("输出参数");L(p,C)},$$slots:{default:!0}});var d=z(f,2);Ge(d,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(p,x)=>{var C=Lm();L(p,C)},$$slots:{default:!0}}),Z(c);var g=z(c,2);Ft(g,{noneParameterText:"无输出参数",dataKeyName:"outputDefs"}),L(a,u)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(s){n(s),y()}})}ie(yd,{data:{}},[],[],!0);const Ao=()=>ur("tinyflow_options");var zm=_e(''),Rm=ne('
    '),Bm=ne('
    默认值:
    参数描述:
    '),Ym=ne('
    ',1);const Zm={hash:"svelte-1cfeest",code:".input-item.svelte-1cfeest {display:flex;align-items:center;gap:2px;}.input-more-setting.svelte-1cfeest {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-1cfeest .input-more-item:where(.svelte-1cfeest) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}"};function wd(e,t){ue(t,!0),et(e,Zm);const[n,r]=nt(),o=()=>Q(h(u),"$node",n),i=w(t,"parameter",7),s=w(t,"position",7),a=w(t,"dataKeyName",7);let l=pt(),u=Ne(()=>pr(l)),c=Ne(()=>{var I;let P=(I=o())==null?void 0:I.data[a()],H;if(P&&s().length>0){let B=P;for(let F=0;F{f(l,I=>{const B=I.data[a()];if(B&&s().length>0){let F=B;for(let K=0;K{const H=P.target.value;d("name",H)},p=P=>{const H=P.value;d("dataType",H)};let x;const C=()=>{f(l,P=>{let H=P.data[a()];if(H&&s().length>0){let I=H;for(let B=0;B{f(l,P=>{let H=P.data[a()];if(H&&s().length>0){let I=H;for(let B=0;B{var H=tt(),I=xe(H);Yt(I,17,s,oi,(B,F)=>{Pe();var K=Ae(" ");L(B,K)}),L(P,H)};ke(v,P=>{s().length>1&&P(b)})}var N=z(v,2);const E=Ne(()=>h(c).nameDisabled===!0);St(N,{style:"width: 100%;",get value(){return h(c).name},placeholder:"请输入参数名称",oninput:g,get disabled(){return h(E)}}),Z(_);var T=z(_,2),D=X(T);const V=Ne(()=>h(c).dataType?[h(c).dataType]:[]),A=Ne(()=>h(c).dataTypeDisabled===!0);ln(D,{items:cd,style:"width: 100%",defaultValue:["String"],get value(){return h(V)},get disabled(){return h(A)},onSelect:p});var O=z(D,2);{var R=P=>{Ge(P,{class:"input-btn-more",style:"margin-left: auto",onclick:$,children:(H,I)=>{var B=zm();L(H,B)},$$slots:{default:!0}})};ke(O,P=>{(h(c).dataType==="Object"||h(c).dataType==="Array")&&h(c).addChildDisabled!==!0&&P(R)})}Z(T);var S=z(T,2),M=X(S);An(Do(M,{placement:"bottom",floating:H=>{var I=Bm(),B=X(I),F=z(X(B));Pt(F,{rows:1,style:"width: 100%;",onchange:fe=>{const me=fe.target.value;d("defaultValue",me)}}),Z(B);var K=z(B,2),se=z(X(K));Pt(se,{rows:3,style:"width: 100%;",onchange:fe=>{const me=fe.target.value;d("description",me)}}),Z(K);var ee=z(K,2);{var W=fe=>{var me=Rm(),Ce=X(me);Ge(Ce,{onclick:C,children:(he,ze)=>{Pe();var G=Ae("删除");L(he,G)},$$slots:{default:!0}}),Z(me),L(fe,me)};ke(ee,fe=>{h(c).deleteDisabled!==!0&&fe(W)})}Z(I),L(H,I)},children:(H,I)=>{qi(H,{})},$$slots:{floating:!0,default:!0}}),H=>x=H,()=>x),Z(S),L(e,m);var k=ce({get parameter(){return i()},set parameter(P){i(P),y()},get position(){return s()},set position(P){s(P),y()},get dataKeyName(){return a()},set dataKeyName(P){a(P),y()}});return r(),k}ie(wd,{parameter:{},position:{},dataKeyName:{}},[],[],!0);var Xm=ne(" ",1),Fm=ne('
    '),Wm=ne('
    参数名称
    参数类型
    ',1),Km=ne('
    ');const qm={hash:"svelte-1sm1mgi",code:`.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}`};function Yn(e,t){ue(t,!0),et(e,qm);const[n,r]=nt(),o=()=>Q(h(u),"$node",n),i=(C,$=gt,m=gt)=>{var _=tt(),v=xe(_);Yt(v,19,$,b=>`${b.id}_${b.children?b.children.length:0}`,(b,N,E)=>{var T=Xm(),D=xe(T);const V=Ne(()=>[...m(),h(E)]);wd(D,{get parameter(){return h(N)},get position(){return h(V)},get dataKeyName(){return a()}});var A=z(D,2);{var O=R=>{var S=ve(()=>[...m(),h(E)]);i(R,()=>h(N).children,()=>h(S))};ke(A,R=>{h(N).children&&R(O)})}L(b,T)},b=>{var N=tt(),E=xe(N);{var T=D=>{var V=Fm(),A=X(V,!0);Z(V),Ee(()=>Bt(A,s())),L(D,V)};ke(E,D=>{m().length===0&&D(T)})}L(b,N)}),L(C,_)},s=w(t,"noneParameterText",7,"无输出参数"),a=w(t,"dataKeyName",7,"outputDefs");let l=pt(),u=Ne(()=>pr(l)),c=Ne(()=>{var C;return[...((C=o())==null?void 0:C.data[a()])||[]]});var f=Km(),d=X(f);{var g=C=>{var $=Wm();Pe(4),L(C,$)};ke(d,C=>{h(c).length!==0&&C(g)})}var p=z(d,2);i(p,()=>h(c)||[],()=>[]),Z(f),L(e,f);var x=ce({get noneParameterText(){return s()},set noneParameterText(C="无输出参数"){s(C),y()},get dataKeyName(){return a()},set dataKeyName(C="outputDefs"){a(C),y()}});return r(),x}ie(Yn,{noneParameterText:{},dataKeyName:{}},[],[],!0);var Gm=_e(''),Um=_e(''),jm=_e(''),Jm=ne('
    模型
    采样参数
    系统提示词
    用户提示词
    ',1);const Qm={hash:"svelte-wn2kra",code:`.heading.svelte-wn2kra {display:flex;margin-bottom:10px;}.setting-title.svelte-wn2kra {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-wn2kra {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}\r + /* 新增样式 */.slider-container.svelte-wn2kra {width:100%;display:flex;flex-direction:column;gap:4px;}.slider-container.svelte-wn2kra label:where(.svelte-wn2kra) {font-size:12px;color:#666;display:flex;justify-content:space-between;align-items:center;}input[type="range"].svelte-wn2kra {width:100%;height:4px;background:#ddd;border-radius:2px;outline:none;-webkit-appearance:none;}input[type="range"].svelte-wn2kra::-webkit-slider-thumb {-webkit-appearance:none;width:14px;height:14px;background:#007bff;border-radius:50%;cursor:pointer;}`};function _d(e,t){ue(t,!0),et(e,Qm);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));rn(async()=>{var c,f;const u=await((f=(c=s.provider)==null?void 0:c.llm)==null?void 0:f.call(c));h(a).push(...u||[])});const{updateNodeData:l}=Lt();return dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=Gm();L(c,f)},children:(c,f)=>{var d=Jm(),g=xe(d),p=X(g);je(p,{level:3,children:(G,ae)=>{Pe();var Me=Ae("输入参数");L(G,Me)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(G,ae)=>{var Me=Um();L(G,Me)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(G,ae)=>{Pe();var Me=Ae("模型设置");L(G,Me)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().llmId?[n().llmId]:[]);ln(_,{get items(){return h(a)},style:"width: 100%",placeholder:"请选择模型",onSelect:G=>{const ae=G.value;l(o,()=>({llmId:ae}))},get value(){return h(v)}});var b=z(_,2);qi(b,{}),Z(m);var N=z(m,4),E=X(N),T=X(E),D=X(T);Z(T);var V=z(T,2);ao(V),Z(E),Z(N);var A=z(N,2),O=X(A),R=X(O),S=X(R);Z(R);var M=z(R,2);ao(M),Z(O),Z(A);var k=z(A,2),P=X(k),H=X(P),I=X(H);Z(H);var B=z(H,2);ao(B),Z(P),Z(k);var F=z(k,4),K=X(F);const se=Ne(()=>n().systemPrompt||"");Pt(K,{rows:5,placeholder:"请输入系统提示词",style:"width: 100%",get value(){return h(se)},oninput:G=>{l(o,{systemPrompt:G.target.value})}}),Z(F);var ee=z(F,4),W=X(ee);const fe=Ne(()=>n().userPrompt||"");Pt(W,{rows:5,placeholder:"请输入用户提示词",style:"width: 100%",get value(){return h(fe)},oninput:G=>{l(o,{userPrompt:G.target.value})}}),Z(ee);var me=z(ee,2),Ce=X(me);je(Ce,{level:3,mt:"10px",children:(G,ae)=>{Pe();var Me=Ae("输出参数");L(G,Me)},$$slots:{default:!0}});var he=z(Ce,2);Ge(he,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(G,ae)=>{var Me=jm();L(G,Me)},$$slots:{default:!0}}),Z(me);var ze=z(me,2);Yn(ze,{}),Ee(()=>{Bt(D,`Temperature: ${n().temperature??.5}`),bs(V,n().temperature??.5),Bt(S,`Top P: ${n().topP??.9}`),bs(M,n().topP??.9),Bt(I,`Top K: ${n().topK??50}`),bs(B,n().topK??50)}),Ze("mousedown",V,ks(function(G){De.call(this,t,G)})),Ze("input",V,G=>l(o,{temperature:parseFloat(G.target.value)})),Ze("mousedown",M,ks(function(G){De.call(this,t,G)})),Ze("input",M,G=>l(o,{topP:parseFloat(G.target.value)})),Ze("mousedown",B,ks(function(G){De.call(this,t,G)})),Ze("input",B,G=>l(o,{topK:parseInt(G.target.value)})),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie(_d,{data:{}},[],[],!0);var ey=_e(''),ty=_e(''),ny=_e(''),ry=ne('
    执行引擎
    执行代码
    ',1);const oy={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function xd(e,t){ue(t,!0),et(e,oy);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),{updateNodeData:s}=Lt(),a=[{label:"QLExpress",value:"qlexpress"},{label:"Groovy",value:"groovy"},{label:"JavaScript",value:"js"}];return dn(e,ft({get data(){return n()}},()=>r,{icon:u=>{var c=ey();L(u,c)},children:(u,c)=>{var f=ry(),d=xe(f),g=X(d);je(g,{level:3,children:(A,O)=>{Pe();var R=Ae("输入参数");L(A,R)},$$slots:{default:!0}});var p=z(g,2);Ge(p,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(A,O)=>{var R=ty();L(A,R)},$$slots:{default:!0}}),Z(d);var x=z(d,2);Ft(x,{});var C=z(x,2);je(C,{level:3,mt:"10px",children:(A,O)=>{Pe();var R=Ae("代码");L(A,R)},$$slots:{default:!0}});var $=z(C,4),m=X($);const _=Ne(()=>n().engine?[n().engine]:["qlexpress"]);ln(m,{items:a,style:"width: 100%",placeholder:"请选择执行引擎",onSelect:A=>{const O=A.value;s(o,()=>({engine:O}))},get value(){return h(_)}}),Z($);var v=z($,4),b=X(v);const N=Ne(()=>n().code||"");Pt(b,{rows:10,placeholder:"请输入执行代码,注:输出内容需添加到_result中,如:_result.put(key, value)",style:"width: 100%",onchange:A=>{s(o,()=>({code:A.target.value}))},get value(){return h(N)}}),Z(v);var E=z(v,2),T=X(E);je(T,{level:3,mt:"10px",children:(A,O)=>{Pe();var R=Ae("输出参数");L(A,R)},$$slots:{default:!0}});var D=z(T,2);Ge(D,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(A,O)=>{var R=ny();L(A,R)},$$slots:{default:!0}}),Z(E);var V=z(E,2);Yn(V,{}),L(u,f)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(l){n(l),y()}})}ie(xd,{data:{}},[],[],!0);var iy=_e(''),sy=_e(''),ay=ne('
    执行代码
    ',1);const ly={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function bd(e,t){ue(t,!0),et(e,ly);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),{updateNodeData:s}=Lt();return kr(()=>{(!n().outputDefs||n().outputDefs.length===0)&&i(o,"outputDefs",{name:"output",dataType:"String",dataTypeDisabled:!0,deleteDisabled:!0})}),dn(e,ft({get data(){return n()}},()=>r,{icon:l=>{var u=iy();L(l,u)},children:(l,u)=>{var c=ay(),f=xe(c),d=X(f);je(d,{level:3,children:(N,E)=>{Pe();var T=Ae("输入参数");L(N,T)},$$slots:{default:!0}});var g=z(d,2);Ge(g,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(N,E)=>{var T=sy();L(N,T)},$$slots:{default:!0}}),Z(f);var p=z(f,2);Ft(p,{});var x=z(p,2);je(x,{level:3,mt:"10px",children:(N,E)=>{Pe();var T=Ae("代码");L(N,T)},$$slots:{default:!0}});var C=z(x,4),$=X(C);const m=Ne(()=>n().template||"");Pt($,{rows:10,placeholder:"请输入执行代码",style:"width: 100%",onchange:N=>{s(o,()=>({template:N.target.value}))},get value(){return h(m)}}),Z(C);var _=z(C,2),v=X(_);je(v,{level:3,mt:"10px",children:(N,E)=>{Pe();var T=Ae("输出参数");L(N,T)},$$slots:{default:!0}}),Z(_);var b=z(_,2);Yn(b,{}),L(l,c)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(a){n(a),y()}})}ie(bd,{data:{}},[],[],!0);var uy=_e(''),cy=_e(''),dy=_e(''),fy=_e(''),gy=ne('
    ',1),hy=_e(''),vy=ne('
    ',1),py=ne('
    '),my=ne('
    '),yy=_e(''),wy=ne('
    ',1);const _y={hash:"svelte-1vtcqdz",code:".heading.svelte-1vtcqdz {display:flex;margin-bottom:10px;}.radio-group.svelte-1vtcqdz {display:flex;margin:10px 0;}.radio-group.svelte-1vtcqdz label:where(.svelte-1vtcqdz) {display:flex;font-size:14px;}"};function Cd(e,t){ue(t,!0),et(e,_y);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=[{value:"get",label:"GET"},{value:"post",label:"POST"},{value:"put",label:"PUT"},{value:"delete",label:"DELETE"},{value:"head",label:"HEAD"},{value:"patch",label:"PATCH"}],i=pt(),{addParameter:s}=kn(),{updateNodeData:a}=Lt();return dn(e,ft({get data(){return n()}},()=>r,{icon:u=>{var c=uy();L(u,c)},children:(u,c)=>{var f=wy(),d=xe(f),g=X(d),p=X(g);const x=Ne(()=>n().method?[n().method]:["get"]);ln(p,{items:o,style:"width: 100%",placeholder:"请选择请求方式",onSelect:oe=>{const pe=oe.value;a(i,()=>({method:pe}))},get value(){return h(x)}}),Z(g);var C=z(g,2),$=X(C);const m=Ne(()=>n().url||"");St($,{placeholder:"请输入url",style:"width: 100%",onchange:oe=>{a(i,()=>({url:oe.target.value}))},get value(){return h(m)}}),Z(C),Z(d);var _=z(d,2),v=X(_);je(v,{level:3,children:(oe,pe)=>{Pe();var be=Ae("Http 头信息");L(oe,be)},$$slots:{default:!0}});var b=z(v,2);Ge(b,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"headers")},children:(oe,pe)=>{var be=cy();L(oe,be)},$$slots:{default:!0}}),Z(_);var N=z(_,2);Ft(N,{dataKeyName:"headers"});var E=z(N,2),T=X(E);je(T,{level:3,children:(oe,pe)=>{Pe();var be=Ae("参数");L(oe,be)},$$slots:{default:!0}});var D=z(T,2);Ge(D,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"urlParameters")},children:(oe,pe)=>{var be=dy();L(oe,be)},$$slots:{default:!0}}),Z(E);var V=z(E,2);Ft(V,{dataKeyName:"urlParameters"});var A=z(V,2);je(A,{level:3,mt:"10px",children:(oe,pe)=>{Pe();var be=Ae("Body");L(oe,be)},$$slots:{default:!0}});var O=z(A,2),R=X(O),S=X(R);const M=Ne(()=>!n().bodyType);St(S,{type:"radio",name:"bodyType",value:"",get checked(){return h(M)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:""})}}),Pe(),Z(R);var k=z(R,2),P=X(k);const H=Ne(()=>n().bodyType==="form-data");St(P,{type:"radio",name:"bodyType",value:"form-data",get checked(){return h(H)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"form-data"})}}),Pe(),Z(k);var I=z(k,2),B=X(I);const F=Ne(()=>n().bodyType==="x-www-form-urlencoded");St(B,{type:"radio",name:"bodyType",value:"x-www-form-urlencoded",get checked(){return h(F)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"x-www-form-urlencoded"})}}),Pe(),Z(I);var K=z(I,2),se=X(K);const ee=Ne(()=>n().bodyType==="json");St(se,{type:"radio",name:"bodyType",value:"json",get checked(){return h(ee)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"json"})}}),Pe(),Z(K);var W=z(K,2),fe=X(W);const me=Ne(()=>n().bodyType==="raw");St(fe,{type:"radio",name:"bodyType",value:"raw",get checked(){return h(me)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"raw"})}}),Pe(),Z(W),Z(O);var Ce=z(O,2);{var he=oe=>{var pe=gy(),be=xe(pe),Ie=X(be);je(Ie,{level:3,children:(J,Re)=>{Pe();var le=Ae("参数");L(J,le)},$$slots:{default:!0}});var ht=z(Ie,2);Ge(ht,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"fromData")},children:(J,Re)=>{var le=fy();L(J,le)},$$slots:{default:!0}}),Z(be);var dt=z(be,2);Ft(dt,{dataKeyName:"fromData"}),L(oe,pe)};ke(Ce,oe=>{n().bodyType==="form-data"&&oe(he)})}var ze=z(Ce,2);{var G=oe=>{var pe=vy(),be=xe(pe),Ie=X(be);je(Ie,{level:3,children:(J,Re)=>{Pe();var le=Ae("参数");L(J,le)},$$slots:{default:!0}});var ht=z(Ie,2);Ge(ht,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"fromUrlencoded")},children:(J,Re)=>{var le=hy();L(J,le)},$$slots:{default:!0}}),Z(be);var dt=z(be,2);Ft(dt,{dataKeyName:"fromUrlencoded"}),L(oe,pe)};ke(ze,oe=>{n().bodyType==="x-www-form-urlencoded"&&oe(G)})}var ae=z(ze,2);{var Me=oe=>{var pe=py(),be=X(pe);Pt(be,{rows:"5",style:"width: 100%",placeholder:"请输入 json 信息",get value(){return n().bodyJson},oninput:Ie=>{a(i,{bodyJson:Ie.target.value})}}),Z(pe),L(oe,pe)};ke(ae,oe=>{n().bodyType==="json"&&oe(Me)})}var Le=z(ae,2);{var Xe=oe=>{var pe=my(),be=X(pe);Pt(be,{rows:"5",style:"width: 100%",placeholder:"请输入请求信息",get value(){return n().bodyRaw},oninput:Ie=>{a(i,{bodyRaw:Ie.target.value})}}),Z(pe),L(oe,pe)};ke(Le,oe=>{n().bodyType==="raw"&&oe(Xe)})}var te=z(Le,2),Fe=X(te);je(Fe,{level:3,mt:"10px",children:(oe,pe)=>{Pe();var be=Ae("输出参数");L(oe,be)},$$slots:{default:!0}});var Oe=z(Fe,2);Ge(Oe,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"outputDefs")},children:(oe,pe)=>{var be=yy();L(oe,be)},$$slots:{default:!0}}),Z(te);var rt=z(te,2);Yn(rt,{}),L(u,f)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(l){n(l),y()}})}ie(Cd,{data:{}},[],[],!0);var xy=_e(''),by=_e(''),Cy=ne('
    知识库
    获取数据量
    ',1);const ky={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function kd(e,t){ue(t,!0),et(e,ky);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));rn(async()=>{var c,f;const u=await((f=(c=s.provider)==null?void 0:c.knowledge)==null?void 0:f.call(c));h(a).push(...u||[])});const{updateNodeData:l}=Lt();return kr(()=>{(!n().outputDefs||n().outputDefs.length===0)&&i(o,"outputDefs",{name:"documents",dataType:"Array",nameDisabled:!0,dataTypeDisabled:!0,addChildDisabled:!0,children:[{name:"title",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"content",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"documentId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0},{name:"knowledgeId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0}]})}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=xy();L(c,f)},children:(c,f)=>{var d=Cy(),g=xe(d),p=X(g);je(p,{level:3,children:(V,A)=>{Pe();var O=Ae("输入参数");L(V,O)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(V,A)=>{var O=by();L(V,O)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(V,A)=>{Pe();var O=Ae("知识库设置");L(V,O)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().knowledgeId?[n().knowledgeId]:[]);ln(_,{get items(){return h(a)},style:"width: 100%",placeholder:"请选择知识库",onSelect:V=>{const A=V.value;l(o,()=>({knowledgeId:A}))},get value(){return h(v)}}),Z(m);var b=z(m,4),N=X(b);St(N,{placeholder:"搜索的数据条数",style:"width: 100%"}),Z(b);var E=z(b,2),T=X(E);je(T,{level:3,mt:"10px",children:(V,A)=>{Pe();var O=Ae("输出参数");L(V,O)},$$slots:{default:!0}}),Z(E);var D=z(E,2);Yn(D,{}),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie(kd,{data:{}},[],[],!0);var $y=_e(''),Ey=_e(''),Sy=ne('
    API 服务商
    API Key
    关键字
    数据量
    其他参数
    ',1);const Py={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function $d(e,t){ue(t,!0),et(e,Py);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));rn(async()=>{var c;const u=await((c=s.provider)==null?void 0:c.knowledge());h(a).push(...u||[])});const{updateNodeData:l}=Lt();return kr(()=>{(!n().outputDefs||n().outputDefs.length===0)&&i(o,"outputDefs",{name:"documents",dataType:"Array",nameDisabled:!0,dataTypeDisabled:!0,addChildDisabled:!0,children:[{name:"title",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"content",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"documentId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0},{name:"knowledgeId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0}]})}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=$y();L(c,f)},children:(c,f)=>{var d=Sy(),g=xe(d),p=X(g);je(p,{level:3,children:(k,P)=>{Pe();var H=Ae("输入参数");L(k,H)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(k,P)=>{var H=Ey();L(k,H)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(k,P)=>{Pe();var H=Ae("搜索引擎设置");L(k,H)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().knowledgeId?[n().knowledgeId]:[]);ln(_,{get items(){return h(a)},style:"width: 100%",placeholder:"请选择 API 服务商",onSelect:k=>{const P=k.value;l(o,()=>({knowledgeId:P}))},get value(){return h(v)}}),Z(m);var b=z(m,4),N=X(b);St(N,{placeholder:"请输入 API Key",style:"width: 100%"}),Z(b);var E=z(b,4),T=X(E);St(T,{placeholder:"请输入关键字",style:"width: 100%"}),Z(E);var D=z(E,4),V=X(D);St(V,{placeholder:"搜索的数据条数",style:"width: 100%"}),Z(D);var A=z(D,4),O=X(A);Pt(O,{rows:3,placeholder:"请输入其他参数(Property 格式)",style:"width: 100%"}),Z(A);var R=z(A,2),S=X(R);je(S,{level:3,mt:"10px",children:(k,P)=>{Pe();var H=Ae("输出参数");L(k,H)},$$slots:{default:!0}}),Z(R);var M=z(R,2);Yn(M,{}),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie($d,{data:{}},[],[],!0);var Ny=_e(''),Ty=_e(''),My=ne('
    ',1);const Hy={hash:"svelte-md8tgj",code:".heading.svelte-md8tgj {display:flex;margin-bottom:10px;}.loop_handle_wrapper ::after {content:'循环体';width:100px;height:20px;background:#000;color:#fff;display:flex;justify-content:center;align-items:center;}"};function Ed(e,t){ue(t,!0),et(e,Hy);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));return rn(async()=>{var u;const l=await((u=s.provider)==null?void 0:u.knowledge());h(a).push(...l||[])}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=Ny();L(c,f)},handle:c=>{er(c,{type:"source",get position(){return $e.Bottom},id:"loop_handle",style:"bottom: -12px;width: 100px",class:"loop_handle_wrapper"})},children:(c,f)=>{var d=My(),g=xe(d),p=X(g);je(p,{level:3,children:(v,b)=>{Pe();var N=Ae("循环变量");L(v,N)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(v,b)=>{var N=Ty();L(v,N)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2),m=X($);je(m,{level:3,mt:"10px",children:(v,b)=>{Pe();var N=Ae("输出参数");L(v,N)},$$slots:{default:!0}}),Z($);var _=z($,2);Yn(_,{}),L(c,d)},$$slots:{icon:!0,handle:!0,default:!0}})),ce({get data(){return n()},set data(l){n(l),y()}})}ie(Ed,{data:{}},[],[],!0);var Vy=_e(''),Dy=_e(''),Ay=_e(''),Ly=ne('
    选择内部接口
    ',1);const Oy={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function Sd(e,t){ue(t,!0),et(e,Oy);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),{updateNodeData:s}=Lt(),a=Ao();let l=Fn(Ht([]));return rn(async()=>{var c,f;const u=await((f=(c=a.provider)==null?void 0:c.internal)==null?void 0:f.call(c));h(l).push(...u||[])}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=Vy();L(c,f)},children:(c,f)=>{var d=Ly(),g=xe(d),p=X(g);je(p,{level:3,children:(D,V)=>{Pe();var A=Ae("输入参数");L(D,A)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(D,V)=>{var A=Dy();L(D,A)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(D,V)=>{Pe();var A=Ae("接口");L(D,A)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().method?[n().method]:[""]);ln(_,{get items(){return h(l)},style:"width: 100%",placeholder:"请选择内部接口",onSelect:D=>{const V=D.value;s(o,()=>({method:V}))},get value(){return h(v)}}),Z(m);var b=z(m,2),N=X(b);je(N,{level:3,mt:"10px",children:(D,V)=>{Pe();var A=Ae("输出参数");L(D,A)},$$slots:{default:!0}});var E=z(N,2);Ge(E,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(D,V)=>{var A=Ay();L(D,A)},$$slots:{default:!0}}),Z(b);var T=z(b,2);Yn(T,{}),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie(Sd,{data:{}},[],[],!0);const Iy={startNode:hd,codeNode:xd,llmNode:_d,templateNode:bd,httpNode:Cd,knowledgeNode:kd,searchEngineNode:$d,loopNode:Ed,internalNode:Sd,endNode:yd};var zy=ne(" ",1);function Pd(e,t){ue(t,!0);const n=w(t,"icon",7),r=w(t,"title",7),o=w(t,"type",7),i=w(t,"description",7),s=w(t,"extra",7);return Ge(e,{draggable:!0,ondragstart:l=>{if(!l.dataTransfer)return null;const u={type:o(),data:{title:r(),description:i(),systemPrompt:"",userPrompt:"",...s()}};l.dataTransfer.setData("application/tinyflow",JSON.stringify(u)),l.dataTransfer.effectAllowed="move"},children:(l,u)=>{var c=zy(),f=xe(c);dl(f,n);var d=z(f);Ee(()=>Bt(d,` ${r()??""}`)),L(l,c)},$$slots:{default:!0}}),ce({get icon(){return n()},set icon(l){n(l),y()},get title(){return r()},set title(l){r(l),y()},get type(){return o()},set type(l){o(l),y()},get description(){return i()},set description(l){i(l),y()},get extra(){return s()},set extra(l){s(l),y()}})}ie(Pd,{icon:{},title:{},type:{},description:{},extra:{}},[],[],!0);var Ry=_e(''),By=_e(''),Yy=ne('
    ');function Nd(e){let t=Fn("base"),n=Fn("show");const r=[{icon:'',title:"开始节点",type:"startNode",description:"开始定义输入参数"},{icon:'',title:"循环",type:"loopNode",description:"用于循环执行任务"},{icon:'',title:"大模型",type:"llmNode",description:"使用大模型处理问题"},{icon:'',title:"知识库",type:"knowledgeNode",description:"通过知识库获取内容"},{icon:'',title:"搜索引擎",type:"searchEngineNode",description:"通过搜索引擎搜索内容"},{icon:'',title:"Http 请求",type:"httpNode",description:"通过 HTTP 请求获取数据"},{icon:'',title:"动态代码",type:"codeNode",description:"动态执行代码"},{icon:'',title:"内容模板",type:"templateNode",description:"通过模板引擎生成内容"},{icon:'',title:"内部接口",type:"internalNode",description:"执行内部提供接口"},{icon:'',title:"结束节点",type:"endNode",description:"结束定义输出参数"}],o=[{label:"基础节点",value:"base"},{label:"业务工具",value:"tools"}];var i=Yy(),s=X(i),a=X(s),l=X(a);Wc(l,{style:"width: 100%",items:o,onChange:p=>{U(t,Ht(p.value.toString()))}}),Z(a);var u=z(a,2),c=X(u);Yt(c,21,()=>r,oi,(p,x)=>{Pd(p,ft(()=>h(x)))}),Z(c);var f=z(c,2),d=X(f);Ge(d,{children:(p,x)=>{Pe();var C=Ae("测试业务按钮");L(p,C)},$$slots:{default:!0}}),Z(f),Z(u),Z(s);var g=z(s,2);Ge(g,{onclick:()=>{U(n,Ht(h(n)?"":"show"))},children:(p,x)=>{var C=tt(),$=xe(C);{var m=v=>{var b=Ry();L(v,b)},_=v=>{var b=By();L(v,b)};ke($,v=>{h(n)==="show"?v(m):v(_,!1)})}L(p,C)},$$slots:{default:!0}}),Z(i),Ee(()=>{$t(i,1,`tf-toolbar ${h(n)??""}`),de(c,"style",`display: ${(h(t)==="base"?"flex":"none")??""}`),de(f,"style",`display: ${(h(t)!=="base"?"flex":"none")??""}`)}),L(e,i)}ie(Nd,{},[],[],!0);const Zy=()=>{const{nodeLookup:e}=Ue();return{getNode:n=>{var o;return(o=q(e).get(n))==null?void 0:o.internals.userNode}}},Xy=()=>{const{nodes:e}=Ue();return{ensureParentInNodesBefore:(n,r)=>{e.update(o=>{let i=-1;for(let l=0;ls;l--)o[l]=o[l-1];return o[s]=a,o})}}},Fy=()=>{const{edges:e}=Ue();return{getEdgesByTarget:n=>q(e).filter(o=>o.target===n)}};var Wy=ne('
    边属性设置
    边条件设置
    '),Ky=ne(" ",1),qy=ne('
    ');const Gy={hash:"svelte-1oe15vw",code:".panel-content.svelte-1oe15vw {padding:10px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);width:200px;border:1px solid #efefef;}.setting-title.svelte-1oe15vw {margin:10px 0;font-size:12px;color:#999;}"};function Td(e,t){ue(t,!0),et(e,Gy);const n=w(t,"onInit",7),r=Lt();n()(r);let o=Fn(!1);const i=_=>{_.preventDefault(),_.dataTransfer&&(_.dataTransfer.dropEffect="move")},s=_=>{var T;_.preventDefault();const v=r.screenToFlowPosition({x:_.clientX-250,y:_.clientY-100}),b=(T=_.dataTransfer)==null?void 0:T.getData("application/tinyflow"),N=b?JSON.parse(b):{},E={id:`node_${Kr()}`,position:v,data:{},...N};Bi.addNode(E),Bi.selectNodeOnly(E.id)},{getNode:a}=Zy(),l=_=>{const v=a(_.source),b=a(_.target);if(_.sourceHandle==="loop_handle"||v.parentId){const N=r.getEdges();for(let E of N)if(E.target===_.target){const T=a(E.source);if(_.sourceHandle==="loop_handle"&&T.parentId!==v.id||v.parentId&&T.parentId!==v.parentId)return!1}}return!(!v.parentId&&b.parentId&&b.parentId!==v.id)},{ensureParentInNodesBefore:u}=Xy(),c=(_,v)=>{if(!v.isValid)return;const b=v.toNode;if(b.parentId)return;const N=v.fromNode,E=v.fromHandle,T={position:{...b.position}};if(E.id==="loop_handle"?T.parentId=N.id:N.parentId&&(T.parentId=N.parentId),T.parentId){const D=a(T.parentId);T.position={x:b.position.x-D.position.x,y:b.position.y-D.position.y},u(T.parentId,b.id),r.updateNode(b.id,T)}},{getEdgesByTarget:f}=Fy(),d=_=>{_.edges.forEach(b=>{const N=a(b.target);if(N.parentId){const E=f(b.target),T=a(N.parentId);if(E.length===0)r.updateNode(N.id,{parentId:void 0,position:{x:N.position.x+T.position.x,y:N.position.y+T.position.y}});else{let D=!1;for(let V=0;V{console.log("onconnectstart: ",_,v)},p=_=>{console.log("onconnect: ",_)};var x=qy(),C=X(x);Nd(C);var $=z(C,2);const m=Ne(()=>({markerEnd:{type:_o.ArrowClosed,width:20,height:20}}));return Pc($,ft({nodeTypes:Iy},Bi,{class:"tinyflow-logo",isValidConnection:l,onconnectend:c,onconnectstart:g,onconnect:p,connectionRadius:50,ondelete:d,onclick:_=>{const v=_.target;v.classList.contains("svelte-flow__edge-interaction")||v.classList.contains("panel-content")||v.closest(".panel-content")||U(o,!1)},get defaultEdgeOptions(){return h(m)},$$events:{drop:s,dragover:i,edgeclick:()=>{U(o,!0)}},children:(_,v)=>{var b=Ky(),N=xe(b);Ic(N,{});var E=z(N,2);Ac(E,{});var T=z(E,2);Rc(T,{});var D=z(T,2);{var V=A=>{So(A,{children:(O,R)=>{var S=Wy(),M=z(X(S),4),k=X(M);Pt(k,{rows:3,placeholder:"请输入边条件",style:"width: 100%",oninput:P=>{}}),Z(M),Z(S),L(O,S)},$$slots:{default:!0}})};ke(D,A=>{h(o)&&A(V)})}L(_,b)},$$slots:{default:!0}})),Z(x),L(e,x),ce({get onInit(){return n()},set onInit(_){n(_),y()}})}ie(Td,{onInit:{}},[],[],!0);function Uy(e,t){ue(t,!0);const n=w(t,"options",7),r=w(t,"onInit",7),{data:o}=n();return Bi.init((o==null?void 0:o.nodes)||[],(o==null?void 0:o.edges)||[]),Sr("tinyflow_options",n()),Nc(e,{fitView:!0,children:(i,s)=>{Td(i,{get onInit(){return r()}})},$$slots:{default:!0}}),ce({get options(){return n()},set options(i){n(i),y()},get onInit(){return r()},set onInit(i){r(i),y()}})}customElements.define("tinyflow-component",ie(Uy,{options:{},onInit:{}},[],[],!1)),We.Tinyflow=J2,Object.defineProperty(We,Symbol.toStringTag,{value:"Module"})}); +//# sourceMappingURL=index.umd.js.map diff --git a/web/src/components/Tooltip/index.ts b/web/src/components/Tooltip/index.ts new file mode 100644 index 0000000..ab66ddf --- /dev/null +++ b/web/src/components/Tooltip/index.ts @@ -0,0 +1,3 @@ +import Tooltip from './src/Tooltip.vue' + +export { Tooltip } diff --git a/web/src/components/Tooltip/src/Tooltip.vue b/web/src/components/Tooltip/src/Tooltip.vue new file mode 100644 index 0000000..1a2e09c --- /dev/null +++ b/web/src/components/Tooltip/src/Tooltip.vue @@ -0,0 +1,17 @@ + + diff --git a/web/src/components/UploadFile/index.ts b/web/src/components/UploadFile/index.ts new file mode 100644 index 0000000..97c1d66 --- /dev/null +++ b/web/src/components/UploadFile/index.ts @@ -0,0 +1,5 @@ +import UploadImg from './src/UploadImg.vue' +import UploadImgs from './src/UploadImgs.vue' +import UploadFile from './src/UploadFile.vue' + +export { UploadImg, UploadImgs, UploadFile } diff --git a/web/src/components/UploadFile/src/UploadFile.vue b/web/src/components/UploadFile/src/UploadFile.vue new file mode 100644 index 0000000..1754086 --- /dev/null +++ b/web/src/components/UploadFile/src/UploadFile.vue @@ -0,0 +1,231 @@ + + + diff --git a/web/src/components/UploadFile/src/UploadImg.vue b/web/src/components/UploadFile/src/UploadImg.vue new file mode 100644 index 0000000..66e9d0c --- /dev/null +++ b/web/src/components/UploadFile/src/UploadImg.vue @@ -0,0 +1,272 @@ + + + + diff --git a/web/src/components/UploadFile/src/UploadImgs.vue b/web/src/components/UploadFile/src/UploadImgs.vue new file mode 100644 index 0000000..3f2fd11 --- /dev/null +++ b/web/src/components/UploadFile/src/UploadImgs.vue @@ -0,0 +1,319 @@ + + + + diff --git a/web/src/components/UploadFile/src/useUpload.ts b/web/src/components/UploadFile/src/useUpload.ts new file mode 100644 index 0000000..951b239 --- /dev/null +++ b/web/src/components/UploadFile/src/useUpload.ts @@ -0,0 +1,107 @@ +import * as FileApi from '@/api/infra/file' +// import CryptoJS from 'crypto-js' +import { UploadRawFile, UploadRequestOptions } from 'element-plus/es/components/upload/src/upload' +import axios from 'axios' + +/** + * 获得上传 URL + */ +export const getUploadUrl = (): string => { + return import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/infra/file/upload' +} + +export const useUpload = (directory?: string) => { + // 后端上传地址 + const uploadUrl = getUploadUrl() + // 是否使用前端直连上传 + const isClientUpload = UPLOAD_TYPE.CLIENT === import.meta.env.VITE_UPLOAD_TYPE + // 重写ElUpload上传方法 + const httpRequest = async (options: UploadRequestOptions) => { + // 模式一:前端上传 + if (isClientUpload) { + // 1.1 生成文件名称 + const fileName = await generateFileName(options.file) + // 1.2 获取文件预签名地址 + const presignedInfo = await FileApi.getFilePresignedUrl(fileName, directory) + // 1.3 上传文件(不能使用 ElUpload 的 ajaxUpload 方法的原因:其使用的是 FormData 上传,Minio 不支持) + return axios + .put(presignedInfo.uploadUrl, options.file, { + headers: { + 'Content-Type': options.file.type + } + }) + .then(() => { + // 1.4. 记录文件信息到后端(异步) + createFile(presignedInfo, options.file) + // 通知成功,数据格式保持与后端上传的返回结果一致 + return { data: presignedInfo.url } + }) + } else { + // 模式二:后端上传 + // 重写 el-upload httpRequest 文件上传成功会走成功的钩子,失败走失败的钩子 + return new Promise((resolve, reject) => { + FileApi.updateFile({ file: options.file, directory }) + .then((res) => { + if (res.code === 0) { + resolve(res) + } else { + reject(res) + } + }) + .catch((res) => { + reject(res) + }) + }) + } + } + + return { + uploadUrl, + httpRequest + } +} + +/** + * 创建文件信息 + * @param vo 文件预签名信息 + * @param name 文件名称 + * @param file 文件 + */ +function createFile(vo: FileApi.FilePresignedUrlRespVO, file: UploadRawFile) { + const fileVo = { + configId: vo.configId, + url: vo.url, + path: vo.path, + name: file.name, + type: file.type, + size: file.size + } + FileApi.createFile(fileVo) + return fileVo +} + +/** + * 生成文件名称(使用算法SHA256) + * @param file 要上传的文件 + */ +async function generateFileName(file: UploadRawFile) { + // // 读取文件内容 + // const data = await file.arrayBuffer() + // const wordArray = CryptoJS.lib.WordArray.create(data) + // // 计算SHA256 + // const sha256 = CryptoJS.SHA256(wordArray).toString() + // // 拼接后缀 + // const ext = file.name.substring(file.name.lastIndexOf('.')) + // return `${sha256}${ext}` + return file.name +} + +/** + * 上传类型 + */ +enum UPLOAD_TYPE { + // 客户端直接上传(只支持S3服务) + CLIENT = 'client', + // 客户端发送到后端上传 + SERVER = 'server' +} diff --git a/web/src/components/UserSelectForm/index.vue b/web/src/components/UserSelectForm/index.vue new file mode 100644 index 0000000..5ed99f8 --- /dev/null +++ b/web/src/components/UserSelectForm/index.vue @@ -0,0 +1,171 @@ + + + + diff --git a/web/src/components/Verifition/index.ts b/web/src/components/Verifition/index.ts new file mode 100644 index 0000000..bcfe6d9 --- /dev/null +++ b/web/src/components/Verifition/index.ts @@ -0,0 +1,3 @@ +import Verify from './src/Verify.vue' + +export { Verify } diff --git a/web/src/components/Verifition/src/Verify.vue b/web/src/components/Verifition/src/Verify.vue new file mode 100644 index 0000000..b7b5048 --- /dev/null +++ b/web/src/components/Verifition/src/Verify.vue @@ -0,0 +1,441 @@ + + + diff --git a/web/src/components/Verifition/src/Verify/VerifyPoints.vue b/web/src/components/Verifition/src/Verify/VerifyPoints.vue new file mode 100644 index 0000000..aab4429 --- /dev/null +++ b/web/src/components/Verifition/src/Verify/VerifyPoints.vue @@ -0,0 +1,250 @@ + + diff --git a/web/src/components/Verifition/src/Verify/VerifySlide.vue b/web/src/components/Verifition/src/Verify/VerifySlide.vue new file mode 100644 index 0000000..30f6409 --- /dev/null +++ b/web/src/components/Verifition/src/Verify/VerifySlide.vue @@ -0,0 +1,376 @@ + + diff --git a/web/src/components/Verifition/src/Verify/index.ts b/web/src/components/Verifition/src/Verify/index.ts new file mode 100644 index 0000000..0daa63a --- /dev/null +++ b/web/src/components/Verifition/src/Verify/index.ts @@ -0,0 +1,4 @@ +import VerifySlide from './VerifySlide.vue' +import VerifyPoints from './VerifyPoints.vue' + +export { VerifySlide, VerifyPoints } diff --git a/web/src/components/Verifition/src/utils/ase.ts b/web/src/components/Verifition/src/utils/ase.ts new file mode 100644 index 0000000..d2e6b98 --- /dev/null +++ b/web/src/components/Verifition/src/utils/ase.ts @@ -0,0 +1,14 @@ +import CryptoJS from 'crypto-js' +/** + * @word 要加密的内容 + * @keyWord String 服务器随机返回的关键字 + * */ +export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') { + const key = CryptoJS.enc.Utf8.parse(keyWord) + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() +} diff --git a/web/src/components/Verifition/src/utils/util.ts b/web/src/components/Verifition/src/utils/util.ts new file mode 100644 index 0000000..15c1627 --- /dev/null +++ b/web/src/components/Verifition/src/utils/util.ts @@ -0,0 +1,97 @@ +export function resetSize(vm) { + let img_width, img_height, bar_width, bar_height //图片的宽度、高度,移动条的宽度、高度 + const EmployeeWindow = window as any + const parentWidth = vm.$el.parentNode.offsetWidth || EmployeeWindow.offsetWidth + const parentHeight = vm.$el.parentNode.offsetHeight || EmployeeWindow.offsetHeight + if (vm.imgSize.width.indexOf('%') != -1) { + img_width = (parseInt(vm.imgSize.width) / 100) * parentWidth + 'px' + } else { + img_width = vm.imgSize.width + } + + if (vm.imgSize.height.indexOf('%') != -1) { + img_height = (parseInt(vm.imgSize.height) / 100) * parentHeight + 'px' + } else { + img_height = vm.imgSize.height + } + + if (vm.barSize.width.indexOf('%') != -1) { + bar_width = (parseInt(vm.barSize.width) / 100) * parentWidth + 'px' + } else { + bar_width = vm.barSize.width + } + + if (vm.barSize.height.indexOf('%') != -1) { + bar_height = (parseInt(vm.barSize.height) / 100) * parentHeight + 'px' + } else { + bar_height = vm.barSize.height + } + + return { imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height } +} + +export const _code_chars = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z' +] +export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0'] +export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC'] diff --git a/web/src/components/VerticalButtonGroup/index.vue b/web/src/components/VerticalButtonGroup/index.vue new file mode 100644 index 0000000..9c78ea2 --- /dev/null +++ b/web/src/components/VerticalButtonGroup/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/web/src/components/XButton/index.ts b/web/src/components/XButton/index.ts new file mode 100644 index 0000000..be0f0d4 --- /dev/null +++ b/web/src/components/XButton/index.ts @@ -0,0 +1,4 @@ +import XButton from './src/XButton.vue' +import XTextButton from './src/XTextButton.vue' + +export { XButton, XTextButton } diff --git a/web/src/components/XButton/src/XButton.vue b/web/src/components/XButton/src/XButton.vue new file mode 100644 index 0000000..40cba1a --- /dev/null +++ b/web/src/components/XButton/src/XButton.vue @@ -0,0 +1,50 @@ + + + + diff --git a/web/src/components/XButton/src/XTextButton.vue b/web/src/components/XButton/src/XTextButton.vue new file mode 100644 index 0000000..b1a922b --- /dev/null +++ b/web/src/components/XButton/src/XTextButton.vue @@ -0,0 +1,49 @@ + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue b/web/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue new file mode 100644 index 0000000..9236154 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue @@ -0,0 +1,655 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue b/web/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue new file mode 100644 index 0000000..34a54c8 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue @@ -0,0 +1,379 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/designer/index.ts b/web/src/components/bpmnProcessDesigner/package/designer/index.ts new file mode 100644 index 0000000..8522846 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/index.ts @@ -0,0 +1,8 @@ +import MyProcessDesigner from './ProcessDesigner.vue' + +MyProcessDesigner.install = function (Vue) { + Vue.component(MyProcessDesigner.name, MyProcessDesigner) +} + +// 流程图的设计器,可编辑 +export default MyProcessDesigner diff --git a/web/src/components/bpmnProcessDesigner/package/designer/index2.ts b/web/src/components/bpmnProcessDesigner/package/designer/index2.ts new file mode 100644 index 0000000..ebe8ca7 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/index2.ts @@ -0,0 +1,8 @@ +import MyProcessViewer from './ProcessViewer.vue' + +MyProcessViewer.install = function (Vue) { + Vue.component(MyProcessViewer.name, MyProcessViewer) +} + +// 流程图的查看器,不可编辑 +export default MyProcessViewer diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js new file mode 100644 index 0000000..8783493 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js @@ -0,0 +1,423 @@ +import { assign, forEach, isArray } from 'min-dash' + +import { is } from 'bpmn-js/lib/util/ModelUtil' + +import { isExpanded, isEventSubProcess } from 'bpmn-js/lib/util/DiUtil' + +import { isAny } from 'bpmn-js/lib/features/modeling/util/ModelingUtil' + +import { getChildLanes } from 'bpmn-js/lib/features/modeling/util/LaneUtil' + +import { hasPrimaryModifier } from 'diagram-js/lib/util/Mouse' + +/** + * A provider for BPMN 2.0 elements context pad + */ +export default function ContextPadProvider( + config, + injector, + eventBus, + contextPad, + modeling, + elementFactory, + connect, + create, + popupMenu, + canvas, + rules, + translate +) { + config = config || {} + + contextPad.registerProvider(this) + + this._contextPad = contextPad + + this._modeling = modeling + + this._elementFactory = elementFactory + this._connect = connect + this._create = create + this._popupMenu = popupMenu + this._canvas = canvas + this._rules = rules + this._translate = translate + + if (config.autoPlace !== false) { + this._autoPlace = injector.get('autoPlace', false) + } + + eventBus.on('create.end', 250, function (event) { + const context = event.context, + shape = context.shape + + if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) { + return + } + + const entries = contextPad.getEntries(shape) + + if (entries.replace) { + entries.replace.action.click(event, shape) + } + }) +} + +ContextPadProvider.$inject = [ + 'config.contextPad', + 'injector', + 'eventBus', + 'contextPad', + 'modeling', + 'elementFactory', + 'connect', + 'create', + 'popupMenu', + 'canvas', + 'rules', + 'translate', + 'elementRegistry' +] + +ContextPadProvider.prototype.getContextPadEntries = function (element) { + const contextPad = this._contextPad, + modeling = this._modeling, + elementFactory = this._elementFactory, + connect = this._connect, + create = this._create, + popupMenu = this._popupMenu, + canvas = this._canvas, + rules = this._rules, + autoPlace = this._autoPlace, + translate = this._translate + + const actions = {} + + if (element.type === 'label') { + return actions + } + + const businessObject = element.businessObject + + function startConnect(event, element) { + connect.start(event, element) + } + + function removeElement() { + modeling.removeElements([element]) + } + + function getReplaceMenuPosition(element) { + const Y_OFFSET = 5 + + const diagramContainer = canvas.getContainer(), + pad = contextPad.getPad(element).html + + const diagramRect = diagramContainer.getBoundingClientRect(), + padRect = pad.getBoundingClientRect() + + const top = padRect.top - diagramRect.top + const left = padRect.left - diagramRect.left + + const pos = { + x: left, + y: top + padRect.height + Y_OFFSET + } + + return pos + } + + /** + * Create an append action + * + * @param {string} type + * @param {string} className + * @param {string} [title] + * @param {Object} [options] + * + * @return {Object} descriptor + */ + function appendAction(type, className, title, options) { + if (typeof title !== 'string') { + options = title + title = translate('Append {type}', { type: type.replace(/^bpmn:/, '') }) + } + + function appendStart(event, element) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + create.start(event, shape, { + source: element + }) + } + + const append = autoPlace + ? function (event, element) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + + autoPlace.append(element, shape) + } + : appendStart + + return { + group: 'model', + className: className, + title: title, + action: { + dragstart: appendStart, + click: append + } + } + } + + function splitLaneHandler(count) { + return function (event, element) { + // actual split + modeling.splitLane(element, count) + + // refresh context pad after split to + // get rid of split icons + contextPad.open(element, true) + } + } + + if (isAny(businessObject, ['bpmn:Lane', 'bpmn:Participant']) && isExpanded(businessObject)) { + const childLanes = getChildLanes(element) + + assign(actions, { + 'lane-insert-above': { + group: 'lane-insert-above', + className: 'bpmn-icon-lane-insert-above', + title: translate('Add Lane above'), + action: { + click: function (event, element) { + modeling.addLane(element, 'top') + } + } + } + }) + + if (childLanes.length < 2) { + if (element.height >= 120) { + assign(actions, { + 'lane-divide-two': { + group: 'lane-divide', + className: 'bpmn-icon-lane-divide-two', + title: translate('Divide into two Lanes'), + action: { + click: splitLaneHandler(2) + } + } + }) + } + + if (element.height >= 180) { + assign(actions, { + 'lane-divide-three': { + group: 'lane-divide', + className: 'bpmn-icon-lane-divide-three', + title: translate('Divide into three Lanes'), + action: { + click: splitLaneHandler(3) + } + } + }) + } + } + + assign(actions, { + 'lane-insert-below': { + group: 'lane-insert-below', + className: 'bpmn-icon-lane-insert-below', + title: translate('Add Lane below'), + action: { + click: function (event, element) { + modeling.addLane(element, 'bottom') + } + } + } + }) + } + + if (is(businessObject, 'bpmn:FlowNode')) { + if (is(businessObject, 'bpmn:EventBasedGateway')) { + assign(actions, { + 'append.receive-task': appendAction( + 'bpmn:ReceiveTask', + 'bpmn-icon-receive-task', + translate('Append ReceiveTask') + ), + 'append.message-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-message', + translate('Append MessageIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:MessageEventDefinition' } + ), + 'append.timer-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-timer', + translate('Append TimerIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:TimerEventDefinition' } + ), + 'append.condition-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-condition', + translate('Append ConditionIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:ConditionalEventDefinition' } + ), + 'append.signal-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-signal', + translate('Append SignalIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:SignalEventDefinition' } + ) + }) + } else if ( + isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition') + ) { + assign(actions, { + 'append.compensation-activity': appendAction( + 'bpmn:Task', + 'bpmn-icon-task', + translate('Append compensation activity'), + { + isForCompensation: true + } + ) + }) + } else if ( + !is(businessObject, 'bpmn:EndEvent') && + !businessObject.isForCompensation && + !isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') && + !isEventSubProcess(businessObject) + ) { + assign(actions, { + 'append.end-event': appendAction( + 'bpmn:EndEvent', + 'bpmn-icon-end-event-none', + translate('Append EndEvent') + ), + 'append.gateway': appendAction( + 'bpmn:ExclusiveGateway', + 'bpmn-icon-gateway-none', + translate('Append Gateway') + ), + 'append.append-task': appendAction( + 'bpmn:UserTask', + 'bpmn-icon-user-task', + translate('Append Task') + ), + 'append.intermediate-event': appendAction( + 'bpmn:IntermediateThrowEvent', + 'bpmn-icon-intermediate-event-none', + translate('Append Intermediate/Boundary Event') + ) + }) + } + } + + if (!popupMenu.isEmpty(element, 'bpmn-replace')) { + // Replace menu entry + assign(actions, { + replace: { + group: 'edit', + className: 'bpmn-icon-screw-wrench', + title: '修改类型', + action: { + click: function (event, element) { + const position = assign(getReplaceMenuPosition(element), { + cursor: { x: event.x, y: event.y } + }) + + popupMenu.open(element, 'bpmn-replace', position) + } + } + } + }) + } + + if ( + isAny(businessObject, [ + 'bpmn:FlowNode', + 'bpmn:InteractionNode', + 'bpmn:DataObjectReference', + 'bpmn:DataStoreReference' + ]) + ) { + assign(actions, { + 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation'), + + connect: { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate( + 'Connect using ' + + (businessObject.isForCompensation ? '' : 'Sequence/MessageFlow or ') + + 'Association' + ), + action: { + click: startConnect, + dragstart: startConnect + } + } + }) + } + + if (isAny(businessObject, ['bpmn:DataObjectReference', 'bpmn:DataStoreReference'])) { + assign(actions, { + connect: { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate('Connect using DataInputAssociation'), + action: { + click: startConnect, + dragstart: startConnect + } + } + }) + } + + if (is(businessObject, 'bpmn:Group')) { + assign(actions, { + 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation') + }) + } + + // delete element entry, only show if allowed by rules + let deleteAllowed = rules.allowed('elements.delete', { elements: [element] }) + + if (isArray(deleteAllowed)) { + // was the element returned as a deletion candidate? + deleteAllowed = deleteAllowed[0] === element + } + + if (deleteAllowed) { + assign(actions, { + delete: { + group: 'edit', + className: 'bpmn-icon-trash', + title: translate('Remove'), + action: { + click: removeElement + } + } + }) + } + + return actions +} + +// helpers ///////// + +function isEventType(eventBo, type, definition) { + const isType = eventBo.$instanceOf(type) + let isDefinition = false + + const definitions = eventBo.eventDefinitions || [] + forEach(definitions, function (def) { + if (def.$type === definition) { + isDefinition = true + } + }) + + return isType && isDefinition +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js new file mode 100644 index 0000000..80009ef --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js @@ -0,0 +1,6 @@ +import CustomContextPadProvider from './contentPadProvider' + +export default { + __init__: ['contextPadProvider'], + contextPadProvider: ['type', CustomContextPadProvider] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js new file mode 100644 index 0000000..f3bc894 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js @@ -0,0 +1,24 @@ +export default (key, name, type) => { + if (!type) type = 'camunda' + const TYPE_TARGET = { + activiti: 'http://activiti.org/bpmn', + camunda: 'http://bpmn.io/schema/bpmn', + flowable: 'http://flowable.org/bpmn' + } + return ` + + + + + + + +` +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json b/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json new file mode 100644 index 0000000..94ba8f6 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json @@ -0,0 +1,1004 @@ +{ + "name": "Activiti", + "uri": "http://activiti.org/bpmn", + "prefix": "activiti", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "Definitions", + "isAbstract": true, + "extends": ["bpmn:Definitions"], + "properties": [ + { + "name": "diagramRelationId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "activiti:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "activiti:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + }, + { + "name": "executionListener", + "isAbstract": true, + "type": "Expression" + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "multiinstance_type", + "superClass": ["Element"] + }, + { + "name": "multiinstance_condition", + "superClass": ["Element"] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "multiinstance_condition", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStrategy", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateParam", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["activiti:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "activiti:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["activiti:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "activiti:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "activiti:ServiceTaskLike", + "activiti:ExecutionListener", + "activiti:TaskListener" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["activiti:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": ["activiti:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvent", + "isAttr": true, + "type": "String" + } + ] + } + ], + "emumerations": [] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json b/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json new file mode 100644 index 0000000..8322561 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json @@ -0,0 +1,1020 @@ +{ + "name": "Camunda", + "uri": "http://camunda.org/schema/1.0/bpmn", + "prefix": "camunda", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "Definitions", + "isAbstract": true, + "extends": ["bpmn:Definitions"], + "properties": [ + { + "name": "diagramRelationId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity", "bpmn:SignalEventDefinition"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "camunda:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "camunda:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + }, + { + "name": "modelerTemplateVersion", + "isAttr": true, + "type": "Integer" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStrategy", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateParam", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["camunda:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "camunda:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["camunda:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "camunda:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "camunda:ServiceTaskLike", + "camunda:ExecutionListener", + "camunda:TaskListener" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["camunda:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": ["camunda:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + }, + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "eventDefinitions", + "type": "bpmn:TimerEventDefinition", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "FormData", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "fields", + "type": "FormField", + "isMany": true + }, + { + "name": "businessKey", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FormField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvents", + "isAttr": true, + "type": "String" + } + ] + } + ], + "emumerations": [] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json new file mode 100644 index 0000000..130b594 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json @@ -0,0 +1,1483 @@ +{ + "name": "Flowable", + "uri": "http://flowable.org/bpmn", + "prefix": "flowable", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "flowable:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "flowable:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + }, + { + "name": "formType", + "isAttr": true, + "type": "String" + }, + { + "name": "formReadOnly", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "formInit", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStrategy", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateParam", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignee", + "supperClass": "Element", + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "viewId", + "type": "Number", + "isAttr": true + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementType", + "isAttr": true, + "type": "String" + }, + { + "name": "processInstanceName", + "isAttr": true, + "type": "String" + }, + { + "name": "inheritBusinessKey", + "isAttr": true, + "type": "Boolean" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "inheritVariables", + "isAttr": true, + "type": "Boolean" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["flowable:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "flowable:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Button", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "code", + "type": "String", + "isAttr": true + }, + { + "name": "isHide", + "type": "String", + "isAttr": true + }, + { + "name": "next", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "Assignee", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + }, + { + "name": "condition", + "type": "String", + "isAttr": true + }, + { + "name": "operationType", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["flowable:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "flowable:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "flowable:ServiceTaskLike", + "flowable:ExecutionListener", + "flowable:TaskListener" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + } + ] + }, + { + "name": "ChildField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["flowable:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": ["flowable:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + }, + { + "name": "children", + "type": "ChildField", + "isMany": true + }, + { + "name": "extensionElements", + "type": "bpmn:ExtensionElements", + "isMany": true + } + ] + }, + { + "name": "FormData", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "fields", + "type": "FormField", + "isMany": true + }, + { + "name": "businessKey", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FormField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvent", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Condition", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:SequenceFlow"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "field", + "type": "String", + "isAttr": true + }, + { + "name": "compare", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + }, + { + "name": "logic", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "AssignStartUserHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "RejectHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "RejectReturnTaskId", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "String", + "isBody": true + } + ] + }, + { + "name": "AssignEmptyHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "AssignEmptyUserIds", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "String", + "isBody": true + } + ] + }, + { + "name": "ButtonsSetting", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "flowable:id", + "type": "Integer", + "isAttr": true + }, + { + "name": "flowable:enable", + "type": "Boolean", + "isAttr": true + }, + { + "name": "flowable:displayName", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FieldsPermission", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "flowable:field", + "type": "String", + "isAttr": true + }, + { + "name": "flowable:title", + "type": "String", + "isAttr": true + }, + { + "name": "flowable:permission", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "BoundaryEventType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:BoundaryEvent"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "TimeoutHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:BoundaryEvent"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "ApproveType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "ApproveMethod", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "CandidateStrategy", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "CandidateParam", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "String", + "isBody": true + } + ] + }, + { + "name": "SignEnable", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Boolean", + "isBody": true + } + ] + }, + { + "name": "SkipExpression", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "skipExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ReasonRequire", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Boolean", + "isBody": true + } + ] + } + ], + "emumerations": [] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js new file mode 100644 index 0000000..56ef38a --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js @@ -0,0 +1,83 @@ +'use strict' + +import { some } from 'min-dash' + +// const some = require('min-dash').some +// const some = some + +const ALLOWED_TYPES = { + FailedJobRetryTimeCycle: [ + 'bpmn:StartEvent', + 'bpmn:BoundaryEvent', + 'bpmn:IntermediateCatchEvent', + 'bpmn:Activity' + ], + Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], + Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] +} + +function is(element, type) { + return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type) +} + +function exists(element) { + return element && element.length +} + +function includesType(collection, type) { + return ( + exists(collection) && + some(collection, function (element) { + return is(element, type) + }) + ) +} + +function anyType(element, types) { + return some(types, function (type) { + return is(element, type) + }) +} + +function isAllowed(propName, propDescriptor, newElement) { + const name = propDescriptor.name, + types = ALLOWED_TYPES[name.replace(/activiti:/, '')] + + return name === propName && anyType(newElement, types) +} + +function ActivitiModdleExtension(eventBus) { + eventBus.on( + 'property.clone', + function (context) { + const newElement = context.newElement, + propDescriptor = context.propertyDescriptor + + this.canCloneProperty(newElement, propDescriptor) + }, + this + ) +} + +ActivitiModdleExtension.$inject = ['eventBus'] + +ActivitiModdleExtension.prototype.canCloneProperty = function (newElement, propDescriptor) { + if (isAllowed('activiti:FailedJobRetryTimeCycle', propDescriptor, newElement)) { + return ( + includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || + includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || + is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') + ) + } + + if (isAllowed('activiti:Connector', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } + + if (isAllowed('activiti:Field', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } +} + +// module.exports = ActivitiModdleExtension; +export default ActivitiModdleExtension diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js new file mode 100644 index 0000000..c22ca34 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js @@ -0,0 +1,11 @@ +/* + * @author igdianov + * address https://github.com/igdianov/activiti-bpmn-moddle + * */ + +import activitiExtension from './activitiExtension' + +export default { + __init__: ['ActivitiModdleExtension'], + ActivitiModdleExtension: ['type', activitiExtension] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js new file mode 100644 index 0000000..b8c37a5 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js @@ -0,0 +1,151 @@ +'use strict' + +import { isFunction, isObject, some } from 'min-dash' + +// const isFunction = isFunction, +// isObject = isObject, +// some = some +// const isFunction = require('min-dash').isFunction, +// isObject = require('min-dash').isObject, +// some = require('min-dash').some + +const WILDCARD = '*' + +function CamundaModdleExtension(eventBus) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const self = this + + eventBus.on('moddleCopy.canCopyProperty', function (context) { + const property = context.property, + parent = context.parent + + return self.canCopyProperty(property, parent) + }) +} + +CamundaModdleExtension.$inject = ['eventBus'] + +/** + * Check wether to disallow copying property. + */ +CamundaModdleExtension.prototype.canCopyProperty = function (property, parent) { + // (1) check wether property is allowed in parent + if (isObject(property) && !isAllowedInParent(property, parent)) { + return false + } + + // (2) check more complex scenarios + + if (is(property, 'camunda:InputOutput') && !this.canHostInputOutput(parent)) { + return false + } + + if (isAny(property, ['camunda:Connector', 'camunda:Field']) && !this.canHostConnector(parent)) { + return false + } + + if (is(property, 'camunda:In') && !this.canHostIn(parent)) { + return false + } +} + +CamundaModdleExtension.prototype.canHostInputOutput = function (parent) { + // allowed in camunda:Connector + const connector = getParent(parent, 'camunda:Connector') + + if (connector) { + return true + } + + // special rules inside bpmn:FlowNode + const flowNode = getParent(parent, 'bpmn:FlowNode') + + if (!flowNode) { + return false + } + + if (isAny(flowNode, ['bpmn:StartEvent', 'bpmn:Gateway', 'bpmn:BoundaryEvent'])) { + return false + } + + return !(is(flowNode, 'bpmn:SubProcess') && flowNode.get('triggeredByEvent')) +} + +CamundaModdleExtension.prototype.canHostConnector = function (parent) { + const serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike') + + if (is(serviceTaskLike, 'bpmn:MessageEventDefinition')) { + // only allow on throw and end events + return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent') + } + + return true +} + +CamundaModdleExtension.prototype.canHostIn = function (parent) { + const callActivity = getParent(parent, 'bpmn:CallActivity') + + if (callActivity) { + return true + } + + const signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition') + + if (signalEventDefinition) { + // only allow on throw and end events + return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent') + } + + return true +} + +// module.exports = CamundaModdleExtension; +export default CamundaModdleExtension + +// helpers ////////// + +function is(element, type) { + return element && isFunction(element.$instanceOf) && element.$instanceOf(type) +} + +function isAny(element, types) { + return some(types, function (t) { + return is(element, t) + }) +} + +function getParent(element, type) { + if (!type) { + return element.$parent + } + + if (is(element, type)) { + return element + } + + if (!element.$parent) { + return + } + + return getParent(element.$parent, type) +} + +function isAllowedInParent(property, parent) { + // (1) find property descriptor + const descriptor = property.$type && property.$model.getTypeDescriptor(property.$type) + + const allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn + + if (!allowedIn || isWildcard(allowedIn)) { + return true + } + + // (2) check wether property has parent of allowed type + return some(allowedIn, function (type) { + return getParent(parent, type) + }) +} + +function isWildcard(allowedIn) { + return allowedIn.indexOf(WILDCARD) !== -1 +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js new file mode 100644 index 0000000..1da1bc7 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js @@ -0,0 +1,8 @@ +'use strict' + +import extension from './extension' + +export default { + __init__: ['camundaModdleExtension'], + camundaModdleExtension: ['type', extension] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js new file mode 100644 index 0000000..3dcea67 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js @@ -0,0 +1,83 @@ +'use strict' + +import { some } from 'min-dash' + +// const some = some +// const some = require('min-dash').some + +const ALLOWED_TYPES = { + FailedJobRetryTimeCycle: [ + 'bpmn:StartEvent', + 'bpmn:BoundaryEvent', + 'bpmn:IntermediateCatchEvent', + 'bpmn:Activity' + ], + Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], + Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] +} + +function is(element, type) { + return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type) +} + +function exists(element) { + return element && element.length +} + +function includesType(collection, type) { + return ( + exists(collection) && + some(collection, function (element) { + return is(element, type) + }) + ) +} + +function anyType(element, types) { + return some(types, function (type) { + return is(element, type) + }) +} + +function isAllowed(propName, propDescriptor, newElement) { + const name = propDescriptor.name, + types = ALLOWED_TYPES[name.replace(/flowable:/, '')] + + return name === propName && anyType(newElement, types) +} + +function FlowableModdleExtension(eventBus) { + eventBus.on( + 'property.clone', + function (context) { + const newElement = context.newElement, + propDescriptor = context.propertyDescriptor + + this.canCloneProperty(newElement, propDescriptor) + }, + this + ) +} + +FlowableModdleExtension.$inject = ['eventBus'] + +FlowableModdleExtension.prototype.canCloneProperty = function (newElement, propDescriptor) { + if (isAllowed('flowable:FailedJobRetryTimeCycle', propDescriptor, newElement)) { + return ( + includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || + includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || + is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') + ) + } + + if (isAllowed('flowable:Connector', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } + + if (isAllowed('flowable:Field', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } +} + +// module.exports = FlowableModdleExtension; +export default FlowableModdleExtension diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js new file mode 100644 index 0000000..6d59b67 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js @@ -0,0 +1,10 @@ +/* + * @author igdianov + * address https://github.com/igdianov/activiti-bpmn-moddle + * */ +import flowableExtension from './flowableExtension' + +export default { + __init__: ['FlowableModdleExtension'], + FlowableModdleExtension: ['type', flowableExtension] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js new file mode 100644 index 0000000..788e4d1 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js @@ -0,0 +1,233 @@ +import PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider' +import { assign } from 'min-dash' + +export default function CustomPalette( + palette, + create, + elementFactory, + spaceTool, + lassoTool, + handTool, + globalConnect, + translate +) { + PaletteProvider.call( + this, + palette, + create, + elementFactory, + spaceTool, + lassoTool, + handTool, + globalConnect, + translate, + 2000 + ) +} + +const F = function () {} // 核心,利用空对象作为中介; +F.prototype = PaletteProvider.prototype // 核心,将父类的原型赋值给空对象F; + +// 利用中介函数重写原型链方法 +F.prototype.getPaletteEntries = function () { + const actions = {}, + create = this._create, + elementFactory = this._elementFactory, + spaceTool = this._spaceTool, + lassoTool = this._lassoTool, + handTool = this._handTool, + globalConnect = this._globalConnect, + translate = this._translate + + function createAction(type, group, className, title, options) { + function createListener(event) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded + } + + create.start(event, shape) + } + + const shortType = type.replace(/^bpmn:/, '') + + return { + group: group, + className: className, + title: title || translate('Create {type}', { type: shortType }), + action: { + dragstart: createListener, + click: createListener + } + } + } + + function createSubprocess(event) { + const subProcess = elementFactory.createShape({ + type: 'bpmn:SubProcess', + x: 0, + y: 0, + isExpanded: true + }) + + const startEvent = elementFactory.createShape({ + type: 'bpmn:StartEvent', + x: 40, + y: 82, + parent: subProcess + }) + + create.start(event, [subProcess, startEvent], { + hints: { + autoSelect: [startEvent] + } + }) + } + + function createParticipant(event) { + create.start(event, elementFactory.createParticipantShape()) + } + + assign(actions, { + 'hand-tool': { + group: 'tools', + className: 'bpmn-icon-hand-tool', + title: '激活抓手工具', + // title: translate("Activate the hand tool"), + action: { + click: function (event) { + handTool.activateHand(event) + } + } + }, + 'lasso-tool': { + group: 'tools', + className: 'bpmn-icon-lasso-tool', + title: translate('Activate the lasso tool'), + action: { + click: function (event) { + lassoTool.activateSelection(event) + } + } + }, + 'space-tool': { + group: 'tools', + className: 'bpmn-icon-space-tool', + title: translate('Activate the create/remove space tool'), + action: { + click: function (event) { + spaceTool.activateSelection(event) + } + } + }, + 'global-connect-tool': { + group: 'tools', + className: 'bpmn-icon-connection-multi', + title: translate('Activate the global connect tool'), + action: { + click: function (event) { + globalConnect.toggle(event) + } + } + }, + 'tool-separator': { + group: 'tools', + separator: true + }, + 'create.start-event': createAction( + 'bpmn:StartEvent', + 'event', + 'bpmn-icon-start-event-none', + translate('Create StartEvent') + ), + 'create.intermediate-event': createAction( + 'bpmn:IntermediateThrowEvent', + 'event', + 'bpmn-icon-intermediate-event-none', + translate('Create Intermediate/Boundary Event') + ), + 'create.end-event': createAction( + 'bpmn:EndEvent', + 'event', + 'bpmn-icon-end-event-none', + translate('Create EndEvent') + ), + 'create.exclusive-gateway': createAction( + 'bpmn:ExclusiveGateway', + 'gateway', + 'bpmn-icon-gateway-none', + translate('Create Gateway') + ), + 'create.user-task': createAction( + 'bpmn:UserTask', + 'activity', + 'bpmn-icon-user-task', + translate('Create User Task') + ), + 'create.call-activity': createAction( + 'bpmn:CallActivity', + 'activity', + 'bpmn-icon-call-activity', + translate('Create Call Activity') + ), + 'create.service-task': createAction( + 'bpmn:ServiceTask', + 'activity', + 'bpmn-icon-service', + translate('Create Service Task') + ), + 'create.data-object': createAction( + 'bpmn:DataObjectReference', + 'data-object', + 'bpmn-icon-data-object', + translate('Create DataObjectReference') + ), + 'create.data-store': createAction( + 'bpmn:DataStoreReference', + 'data-store', + 'bpmn-icon-data-store', + translate('Create DataStoreReference') + ), + 'create.subprocess-expanded': { + group: 'activity', + className: 'bpmn-icon-subprocess-expanded', + title: translate('Create expanded SubProcess'), + action: { + dragstart: createSubprocess, + click: createSubprocess + } + }, + 'create.participant-expanded': { + group: 'collaboration', + className: 'bpmn-icon-participant', + title: translate('Create Pool/Participant'), + action: { + dragstart: createParticipant, + click: createParticipant + } + }, + 'create.group': createAction( + 'bpmn:Group', + 'artifact', + 'bpmn-icon-group', + translate('Create Group') + ) + }) + + return actions +} + +CustomPalette.$inject = [ + 'palette', + 'create', + 'elementFactory', + 'spaceTool', + 'lassoTool', + 'handTool', + 'globalConnect', + 'translate' +] + +CustomPalette.prototype = new F() // 核心,将 F的实例赋值给子类; +CustomPalette.prototype.constructor = CustomPalette // 修复子类CustomPalette的构造器指向,防止原型链的混乱; diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js new file mode 100644 index 0000000..8e4f3ac --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js @@ -0,0 +1,22 @@ +// import PaletteModule from "diagram-js/lib/features/palette"; +// import CreateModule from "diagram-js/lib/features/create"; +// import SpaceToolModule from "diagram-js/lib/features/space-tool"; +// import LassoToolModule from "diagram-js/lib/features/lasso-tool"; +// import HandToolModule from "diagram-js/lib/features/hand-tool"; +// import GlobalConnectModule from "diagram-js/lib/features/global-connect"; +// import translate from "diagram-js/lib/i18n/translate"; +// +// import PaletteProvider from "./paletteProvider"; +// +// export default { +// __depends__: [PaletteModule, CreateModule, SpaceToolModule, LassoToolModule, HandToolModule, GlobalConnectModule, translate], +// __init__: ["paletteProvider"], +// paletteProvider: ["type", PaletteProvider] +// }; + +import CustomPalette from './CustomPalette' + +export default { + __init__: ['paletteProvider'], + paletteProvider: ['type', CustomPalette] +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js new file mode 100644 index 0000000..304875c --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js @@ -0,0 +1,219 @@ +import { assign } from 'min-dash' + +/** + * A palette provider for BPMN 2.0 elements. + */ +export default function PaletteProvider( + palette, + create, + elementFactory, + spaceTool, + lassoTool, + handTool, + globalConnect, + translate +) { + this._palette = palette + this._create = create + this._elementFactory = elementFactory + this._spaceTool = spaceTool + this._lassoTool = lassoTool + this._handTool = handTool + this._globalConnect = globalConnect + this._translate = translate + + palette.registerProvider(this) +} + +PaletteProvider.$inject = [ + 'palette', + 'create', + 'elementFactory', + 'spaceTool', + 'lassoTool', + 'handTool', + 'globalConnect', + 'translate' +] + +PaletteProvider.prototype.getPaletteEntries = function () { + const actions = {}, + create = this._create, + elementFactory = this._elementFactory, + spaceTool = this._spaceTool, + lassoTool = this._lassoTool, + handTool = this._handTool, + globalConnect = this._globalConnect, + translate = this._translate + + function createAction(type, group, className, title, options) { + function createListener(event) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded + } + + create.start(event, shape) + } + + const shortType = type.replace(/^bpmn:/, '') + + return { + group: group, + className: className, + title: title || translate('Create {type}', { type: shortType }), + action: { + dragstart: createListener, + click: createListener + } + } + } + + function createSubprocess(event) { + const subProcess = elementFactory.createShape({ + type: 'bpmn:SubProcess', + x: 0, + y: 0, + isExpanded: true + }) + + const startEvent = elementFactory.createShape({ + type: 'bpmn:StartEvent', + x: 40, + y: 82, + parent: subProcess + }) + + create.start(event, [subProcess, startEvent], { + hints: { + autoSelect: [startEvent] + } + }) + } + + function createParticipant(event) { + create.start(event, elementFactory.createParticipantShape()) + } + + assign(actions, { + 'hand-tool': { + group: 'tools', + className: 'bpmn-icon-hand-tool', + title: translate('Activate the hand tool'), + action: { + click: function (event) { + handTool.activateHand(event) + } + } + }, + 'lasso-tool': { + group: 'tools', + className: 'bpmn-icon-lasso-tool', + title: translate('Activate the lasso tool'), + action: { + click: function (event) { + lassoTool.activateSelection(event) + } + } + }, + 'space-tool': { + group: 'tools', + className: 'bpmn-icon-space-tool', + title: translate('Activate the create/remove space tool'), + action: { + click: function (event) { + spaceTool.activateSelection(event) + } + } + }, + 'global-connect-tool': { + group: 'tools', + className: 'bpmn-icon-connection-multi', + title: translate('Activate the global connect tool'), + action: { + click: function (event) { + globalConnect.toggle(event) + } + } + }, + 'tool-separator': { + group: 'tools', + separator: true + }, + 'create.start-event': createAction( + 'bpmn:StartEvent', + 'event', + 'bpmn-icon-start-event-none', + translate('Create StartEvent') + ), + 'create.intermediate-event': createAction( + 'bpmn:IntermediateThrowEvent', + 'event', + 'bpmn-icon-intermediate-event-none', + translate('Create Intermediate/Boundary Event') + ), + 'create.end-event': createAction( + 'bpmn:EndEvent', + 'event', + 'bpmn-icon-end-event-none', + translate('Create EndEvent') + ), + 'create.exclusive-gateway': createAction( + 'bpmn:ExclusiveGateway', + 'gateway', + 'bpmn-icon-gateway-none', + translate('Create Gateway') + ), + 'create.user-task': createAction( + 'bpmn:UserTask', + 'activity', + 'bpmn-icon-user-task', + translate('Create User Task') + ), + 'create.service-task': createAction( + 'bpmn:ServiceTask', + 'activity', + 'bpmn-icon-service', + translate('Create Service Task') + ), + 'create.data-object': createAction( + 'bpmn:DataObjectReference', + 'data-object', + 'bpmn-icon-data-object', + translate('Create DataObjectReference') + ), + 'create.data-store': createAction( + 'bpmn:DataStoreReference', + 'data-store', + 'bpmn-icon-data-store', + translate('Create DataStoreReference') + ), + 'create.subprocess-expanded': { + group: 'activity', + className: 'bpmn-icon-subprocess-expanded', + title: translate('Create expanded SubProcess'), + action: { + dragstart: createSubprocess, + click: createSubprocess + } + }, + 'create.participant-expanded': { + group: 'collaboration', + className: 'bpmn-icon-participant', + title: translate('Create Pool/Participant'), + action: { + dragstart: createParticipant, + click: createParticipant + } + }, + 'create.group': createAction( + 'bpmn:Group', + 'artifact', + 'bpmn-icon-group', + translate('Create Group') + ) + }) + + return actions +} diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js new file mode 100644 index 0000000..d1796d3 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js @@ -0,0 +1,42 @@ +// import translations from "./zh"; +// +// export default function customTranslate(template, replacements) { +// replacements = replacements || {}; +// +// // Translate +// template = translations[template] || template; +// +// // Replace +// return template.replace(/{([^}]+)}/g, function(_, key) { +// let str = replacements[key]; +// if ( +// translations[replacements[key]] !== null && +// translations[replacements[key]] !== "undefined" +// ) { +// // eslint-disable-next-line no-mixed-spaces-and-tabs +// str = translations[replacements[key]]; +// // eslint-disable-next-line no-mixed-spaces-and-tabs +// } +// return str || "{" + key + "}"; +// }); +// } + +export default function customTranslate(translations) { + return function (template, replacements) { + replacements = replacements || {}; + // 将模板和翻译字典的键统一转换为小写进行匹配 + const lowerTemplate = template.toLowerCase(); + const translation = Object.keys(translations).find(key => key.toLowerCase() === lowerTemplate); + + // 如果找到匹配的翻译,使用翻译后的模板 + if (translation) { + template = translations[translation]; + } + + // 替换模板中的占位符 + return template.replace(/{([^}]+)}/g, function (_, key) { + // 如果替换值存在,返回替换值;否则返回原始占位符 + return replacements[key] !== undefined ? replacements[key] : `{${key}}`; + }); + }; +} \ No newline at end of file diff --git a/web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js b/web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js new file mode 100644 index 0000000..d243ec4 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js @@ -0,0 +1,242 @@ +/** + * This is a sample file that should be replaced with the actual translation. + * + * Checkout https://github.com/bpmn-io/bpmn-js-i18n for a list of available + * translations and labels to translate. + */ +export default { + // 添加部分 + 'Append EndEvent': '追加结束事件', + 'Append Gateway': '追加网关', + 'Append Task': '追加任务', + 'Append Intermediate/Boundary Event': '追加中间抛出事件/边界事件', + + 'Activate the global connect tool': '激活全局连接工具', + 'Append {type}': '添加 {type}', + 'Add Lane above': '在上面添加道', + 'Divide into two Lanes': '分割成两个道', + 'Divide into three Lanes': '分割成三个道', + 'Add Lane below': '在下面添加道', + 'Append compensation activity': '追加补偿活动', + 'Change type': '修改类型', + 'Connect using Association': '使用关联连接', + 'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接', + 'Connect using DataInputAssociation': '使用数据输入关联连接', + Remove: '移除', + 'Activate the hand tool': '激活抓手工具', + 'Activate the lasso tool': '激活套索工具', + 'Activate the create/remove space tool': '激活创建/删除空间工具', + 'Create expanded SubProcess': '创建扩展子过程', + 'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件', + 'Create Pool/Participant': '创建池/参与者', + 'Parallel Multi Instance': '并行多重事件', + 'Sequential Multi Instance': '时序多重事件', + DataObjectReference: '数据对象参考', + DataStoreReference: '数据存储参考', + Loop: '循环', + 'Ad-hoc': '即席', + 'Create {type}': '创建 {type}', + Task: '任务', + 'Send Task': '发送任务', + 'Receive Task': '接收任务', + 'User Task': '用户任务', + 'Manual Task': '手工任务', + 'Business Rule Task': '业务规则任务', + 'Service Task': '服务任务', + 'Script Task': '脚本任务', + 'Call Activity': '调用活动', + 'Sub-Process (collapsed)': '子流程(折叠的)', + 'Sub-Process (expanded)': '子流程(展开的)', + 'Start Event': '开始事件', + StartEvent: '开始事件', + 'Intermediate Throw Event': '中间事件', + 'End Event': '结束事件', + EndEvent: '结束事件', + 'Create StartEvent': '创建开始事件', + 'Create EndEvent': '创建结束事件', + 'Create Task': '创建任务', + 'Create User Task': '创建用户任务', + 'Create Call Activity': '创建调用活动', + 'Create Service Task': '创建服务任务', + 'Create Gateway': '创建网关', + 'Create DataObjectReference': '创建数据对象', + 'Create DataStoreReference': '创建数据存储', + 'Create Group': '创建分组', + 'Create Intermediate/Boundary Event': '创建中间/边界事件', + 'Message Start Event': '消息开始事件', + 'Timer Start Event': '定时开始事件', + 'Conditional Start Event': '条件开始事件', + 'Signal Start Event': '信号开始事件', + 'Error Start Event': '错误开始事件', + 'Escalation Start Event': '升级开始事件', + 'Compensation Start Event': '补偿开始事件', + 'Message Start Event (non-interrupting)': '消息开始事件(非中断)', + 'Timer Start Event (non-interrupting)': '定时开始事件(非中断)', + 'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)', + 'Signal Start Event (non-interrupting)': '信号开始事件(非中断)', + 'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)', + 'Message Intermediate Catch Event': '消息中间捕获事件', + 'Message Intermediate Throw Event': '消息中间抛出事件', + 'Timer Intermediate Catch Event': '定时中间捕获事件', + 'Escalation Intermediate Throw Event': '升级中间抛出事件', + 'Conditional Intermediate Catch Event': '条件中间捕获事件', + 'Link Intermediate Catch Event': '链接中间捕获事件', + 'Link Intermediate Throw Event': '链接中间抛出事件', + 'Compensation Intermediate Throw Event': '补偿中间抛出事件', + 'Signal Intermediate Catch Event': '信号中间捕获事件', + 'Signal Intermediate Throw Event': '信号中间抛出事件', + 'Message End Event': '消息结束事件', + 'Escalation End Event': '定时结束事件', + 'Error End Event': '错误结束事件', + 'Cancel End Event': '取消结束事件', + 'Compensation End Event': '补偿结束事件', + 'Signal End Event': '信号结束事件', + 'Terminate End Event': '终止结束事件', + 'Message Boundary Event': '消息边界事件', + 'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)', + 'Timer Boundary Event': '定时边界事件', + 'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)', + 'Escalation Boundary Event': '升级边界事件', + 'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)', + 'Conditional Boundary Event': '条件边界事件', + 'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)', + 'Error Boundary Event': '错误边界事件', + 'Cancel Boundary Event': '取消边界事件', + 'Signal Boundary Event': '信号边界事件', + 'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)', + 'Compensation Boundary Event': '补偿边界事件', + 'Exclusive Gateway': '互斥网关', + 'Parallel Gateway': '并行网关', + 'Inclusive Gateway': '相容网关', + 'Complex Gateway': '复杂网关', + 'Event based Gateway': '事件网关', + Transaction: '转运', + 'Sub Process': '子流程', + 'Event Sub Process': '事件子流程', + 'Collapsed Pool': '折叠池', + 'Expanded Pool': '展开池', + + // Errors + 'no parent for {element} in {parent}': '在{parent}里,{element}没有父类', + 'no shape type specified': '没有指定的形状类型', + 'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类', + 'out of bounds release': 'out of bounds release', + 'more than {count} child lanes': '子道大于{count} ', + 'element required': '元素不能为空', + 'diagram not part of bpmn:Definitions': '流程图不符合bpmn规范', + 'no diagram to display': '没有可展示的流程图', + 'no process or collaboration to display': '没有可展示的流程/协作', + 'element {element} referenced by {referenced}#{property} not yet drawn': + '由{referenced}#{property}引用的{element}元素仍未绘制', + 'already rendered {element}': '{element} 已被渲染', + 'failed to import {element}': '导入{element}失败', + //属性面板的参数 + Id: '编号', + Name: '名称', + General: '常规', + Details: '详情', + 'Message Name': '消息名称', + Message: '消息', + Initiator: '创建者', + 'Asynchronous Continuations': '持续异步', + 'Asynchronous Before': '异步前', + 'Asynchronous After': '异步后', + 'Job Configuration': '工作配置', + Exclusive: '排除', + 'Job Priority': '工作优先级', + 'Retry Time Cycle': '重试时间周期', + Documentation: '文档', + 'Element Documentation': '元素文档', + 'History Configuration': '历史配置', + 'History Time To Live': '历史的生存时间', + Forms: '表单', + 'Form Key': '表单key', + 'Form Fields': '表单字段', + 'Business Key': '业务key', + 'Form Field': '表单字段', + ID: '编号', + Type: '类型', + Label: '名称', + 'Default Value': '默认值', + 'Default Flow': '默认流转路径', + 'Conditional Flow': '条件流转路径', + 'Sequence Flow': '普通流转路径', + Validation: '校验', + 'Add Constraint': '添加约束', + Config: '配置', + Properties: '属性', + 'Add Property': '添加属性', + Value: '值', + Listeners: '监听器', + 'Execution Listener': '执行监听', + 'Event Type': '事件类型', + 'Listener Type': '监听器类型', + 'Java Class': 'Java类', + Expression: '表达式', + 'Must provide a value': '必须提供一个值', + 'Delegate Expression': '代理表达式', + Script: '脚本', + 'Script Format': '脚本格式', + 'Script Type': '脚本类型', + 'Inline Script': '内联脚本', + 'External Script': '外部脚本', + Resource: '资源', + 'Field Injection': '字段注入', + Extensions: '扩展', + 'Input/Output': '输入/输出', + 'Input Parameters': '输入参数', + 'Output Parameters': '输出参数', + Parameters: '参数', + 'Output Parameter': '输出参数', + 'Timer Definition Type': '定时器定义类型', + 'Timer Definition': '定时器定义', + Date: '日期', + Duration: '持续', + Cycle: '循环', + Signal: '信号', + 'Signal Name': '信号名称', + Escalation: '升级', + Error: '错误', + 'Link Name': '链接名称', + Condition: '条件名称', + 'Variable Name': '变量名称', + 'Variable Event': '变量事件', + 'Specify more than one variable change event as a comma separated list.': + '多个变量事件以逗号隔开', + 'Wait for Completion': '等待完成', + 'Activity Ref': '活动参考', + 'Version Tag': '版本标签', + Executable: '可执行文件', + 'External Task Configuration': '扩展任务配置', + 'Task Priority': '任务优先级', + External: '外部', + Connector: '连接器', + 'Must configure Connector': '必须配置连接器', + 'Connector Id': '连接器编号', + Implementation: '实现方式', + 'Field Injections': '字段注入', + Fields: '字段', + 'Result Variable': '结果变量', + Topic: '主题', + 'Configure Connector': '配置连接器', + 'Input Parameter': '输入参数', + Assignee: '代理人', + 'Candidate Users': '候选用户', + 'Candidate Groups': '候选组', + 'Due Date': '到期时间', + 'Follow Up Date': '跟踪日期', + Priority: '优先级', + 'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': + '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + 'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': + '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + Variables: '变量', + 'Candidate Starter Configuration': '候选人起动器配置', + 'Candidate Starter Groups': '候选人起动器组', + 'This maps to the process definition key.': '这映射到流程定义键。', + 'Candidate Starter Users': '候选人起动器的用户', + 'Specify more than one user as a comma separated list.': '指定多个用户作为逗号分隔的列表。', + 'Tasklist Configuration': 'Tasklist配置', + Startable: '启动', + 'Specify more than one group as a comma separated list.': '指定多个组作为逗号分隔的列表。' +} diff --git a/web/src/components/bpmnProcessDesigner/package/index.ts b/web/src/components/bpmnProcessDesigner/package/index.ts new file mode 100644 index 0000000..ce44a3c --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/index.ts @@ -0,0 +1,11 @@ +import MyProcessDesigner from './designer' +import MyProcessPenal from './penal' +import MyProcessViewer from './designer/index2' + +import './theme/index.scss' +import 'bpmn-js/dist/assets/diagram-js.css' +import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css' +import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css' +import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' + +export { MyProcessDesigner, MyProcessPenal, MyProcessViewer } diff --git a/web/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue b/web/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue new file mode 100644 index 0000000..ba97d96 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/web/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue new file mode 100644 index 0000000..9b898ad --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue @@ -0,0 +1,311 @@ + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue b/web/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue new file mode 100644 index 0000000..3172338 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue @@ -0,0 +1,183 @@ + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue new file mode 100644 index 0000000..f9cb9ac --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue new file mode 100644 index 0000000..ca46b27 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue new file mode 100644 index 0000000..3c748ff --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue @@ -0,0 +1,688 @@ + + + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts new file mode 100644 index 0000000..a45355e --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts @@ -0,0 +1,13 @@ +import UserTaskCustomConfig from './components/UserTaskCustomConfig.vue' +import BoundaryEventTimer from './components/BoundaryEventTimer.vue' + +export const CustomConfigMap = { + UserTask: { + name: '用户任务', + componet: UserTaskCustomConfig + }, + BoundaryEventTimerEventDefinition: { + name: '定时边界事件(非中断)', + componet: BoundaryEventTimer + } +} diff --git a/web/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue b/web/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue new file mode 100644 index 0000000..304630d --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue @@ -0,0 +1,191 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue b/web/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue new file mode 100644 index 0000000..2359aff --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue @@ -0,0 +1,479 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/index.js b/web/src/components/bpmnProcessDesigner/package/penal/index.js new file mode 100644 index 0000000..7fa5617 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/index.js @@ -0,0 +1,7 @@ +import MyPropertiesPanel from './PropertiesPanel.vue' + +MyPropertiesPanel.install = function (Vue) { + Vue.component(MyPropertiesPanel.name, MyPropertiesPanel) +} + +export default MyPropertiesPanel diff --git a/web/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue b/web/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue new file mode 100644 index 0000000..a161205 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue @@ -0,0 +1,447 @@ + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue b/web/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue new file mode 100644 index 0000000..21088ab --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue @@ -0,0 +1,85 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue b/web/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue new file mode 100644 index 0000000..76e0c80 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue @@ -0,0 +1,491 @@ + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/listeners/template.js b/web/src/components/bpmnProcessDesigner/package/penal/listeners/template.js new file mode 100644 index 0000000..430dc64 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/listeners/template.js @@ -0,0 +1,178 @@ +export const template = (isTaskListener) => { + return ` +
    + + + + + + + + +
    + 添加监听器 +
    + + + + + + + + + + + + + + + + + + + + + + + + + + ${ + isTaskListener + ? "" + + "" + + "" + + "" + + "" + + "" + + '' + + '' + + "" + + "" + + '' + : '' + } + + +

    + 注入字段: + 添加字段 +

    + + + + + + + + + + +
    + 取 消 + 保 存 +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    + ` +} diff --git a/web/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts b/web/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts new file mode 100644 index 0000000..b4eb1d2 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts @@ -0,0 +1,89 @@ +// 初始化表单数据 +export function initListenerForm(listener) { + let self = { + ...listener + } + if (listener.script) { + self = { + ...listener, + ...listener.script, + scriptType: listener.script.resource ? 'externalScript' : 'inlineScript' + } + } + if (listener.event === 'timeout' && listener.eventDefinitions) { + if (listener.eventDefinitions.length) { + let k = '' + for (const key in listener.eventDefinitions[0]) { + console.log(listener.eventDefinitions, key) + if (key.indexOf('time') !== -1) { + k = key + self.eventDefinitionType = key.replace('time', '').toLowerCase() + } + } + console.log(k) + self.eventTimeDefinitions = listener.eventDefinitions[0][k].body + } + } + return self +} + +export function initListenerType(listener) { + let listenerType + if (listener.class) listenerType = 'classListener' + if (listener.expression) listenerType = 'expressionListener' + if (listener.delegateExpression) listenerType = 'delegateExpressionListener' + if (listener.script) listenerType = 'scriptListener' + return { + ...JSON.parse(JSON.stringify(listener)), + ...(listener.script ?? {}), + listenerType: listenerType + } +} + +/** 将 ProcessListenerDO 转换成 initListenerForm 想同的 Form 对象 */ +export function initListenerForm2(processListener) { + if (processListener.valueType === 'class') { + return { + listenerType: 'classListener', + class: processListener.value, + event: processListener.event, + fields: [] + } + } else if (processListener.valueType === 'expression') { + return { + listenerType: 'expressionListener', + expression: processListener.value, + event: processListener.event, + fields: [] + } + } else if (processListener.valueType === 'delegateExpression') { + return { + listenerType: 'delegateExpressionListener', + delegateExpression: processListener.value, + event: processListener.event, + fields: [] + } + } + throw new Error('未知的监听器类型') +} + +export const listenerType = { + classListener: 'Java 类', + expressionListener: '表达式', + delegateExpressionListener: '代理表达式', + scriptListener: '脚本' +} + +export const eventType = { + create: '创建', + assignment: '指派', + complete: '完成', + delete: '删除', + update: '更新', + timeout: '超时' +} + +export const fieldType = { + string: '字符串', + expression: '表达式' +} diff --git a/web/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue b/web/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue new file mode 100644 index 0000000..99ee6f8 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue @@ -0,0 +1,421 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue b/web/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue new file mode 100644 index 0000000..05532c6 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue @@ -0,0 +1,55 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue b/web/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue new file mode 100644 index 0000000..7bf4f0e --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue @@ -0,0 +1,168 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue b/web/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue new file mode 100644 index 0000000..f38f31c --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue @@ -0,0 +1,113 @@ + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue new file mode 100644 index 0000000..3a71b4c --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue @@ -0,0 +1,78 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/data.ts b/web/src/components/bpmnProcessDesigner/package/penal/task/data.ts new file mode 100644 index 0000000..805c9ac --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/data.ts @@ -0,0 +1,36 @@ +import UserTask from './task-components/UserTask.vue' +import ServiceTask from './task-components/ServiceTask.vue' +import ScriptTask from './task-components/ScriptTask.vue' +import ReceiveTask from './task-components/ReceiveTask.vue' +import CallActivity from './task-components/CallActivity.vue' + +export const installedComponent = { + UserTask: { + name: '用户任务', + component: UserTask + }, + ServiceTask: { + name: '服务任务', + component: ServiceTask + }, + ScriptTask: { + name: '脚本任务', + component: ScriptTask + }, + ReceiveTask: { + name: '接收任务', + component: ReceiveTask + }, + CallActivity: { + name: '调用活动', + component: CallActivity + } +} + +export const getTaskCollapseItemName = (elementType) => { + return installedComponent[elementType].name +} + +export const isTaskCollapseItemShow = (elementType) => { + return installedComponent[elementType] +} diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue new file mode 100644 index 0000000..6d8268b --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue new file mode 100644 index 0000000..a038e69 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue @@ -0,0 +1,70 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue new file mode 100644 index 0000000..83ed24e --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue @@ -0,0 +1,125 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue new file mode 100644 index 0000000..683fef3 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue @@ -0,0 +1,99 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue new file mode 100644 index 0000000..2f9c535 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue @@ -0,0 +1,91 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue new file mode 100644 index 0000000..81088cc --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue @@ -0,0 +1,469 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/CycleConfig.vue b/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/CycleConfig.vue new file mode 100644 index 0000000..302fe73 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/CycleConfig.vue @@ -0,0 +1,285 @@ + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue b/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue new file mode 100644 index 0000000..1aa6a0b --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/DurationConfig.vue @@ -0,0 +1,86 @@ + + + diff --git a/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/TimeEventConfig.vue b/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/TimeEventConfig.vue new file mode 100644 index 0000000..3ec31f9 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/penal/time-event-config/TimeEventConfig.vue @@ -0,0 +1,312 @@ + + + + + diff --git a/web/src/components/bpmnProcessDesigner/package/theme/element-variables.scss b/web/src/components/bpmnProcessDesigner/package/theme/element-variables.scss new file mode 100644 index 0000000..0646f8e --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/theme/element-variables.scss @@ -0,0 +1,70 @@ +/* 改变主题色变量 */ +$--color-primary: #1890ff; +$--color-danger: #ff4d4f; + +/* 改变 icon 字体路径变量,必需 */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@use '~element-ui/packages/theme-chalk/src/index'; + +.el-table td, +.el-table th { + color: #333; +} +.el-drawer__header { + padding: 16px 16px 8px 16px; + margin: 0; + line-height: 24px; + font-size: 18px; + color: #303133; + box-sizing: border-box; + border-bottom: 1px solid #e8e8e8; +} +div[class^='el-drawer']:focus, +span:focus { + outline: none; +} +.el-drawer__body { + box-sizing: border-box; + padding: 16px; + width: 100%; + overflow-y: auto; +} + +.el-dialog { + margin-top: 50vh !important; + transform: translateY(-50%); + overflow: hidden; +} +.el-dialog__wrapper { + overflow: hidden; + max-height: 100vh; +} +.el-dialog__header { + padding: 16px 16px 8px 16px; + box-sizing: border-box; + border-bottom: 1px solid #e8e8e8; +} +.el-dialog__body { + padding: 16px; + max-height: 80vh; + box-sizing: border-box; + overflow-y: auto; +} +.el-dialog__footer { + padding: 16px; + box-sizing: border-box; + border-top: 1px solid #e8e8e8; +} +.el-dialog__close { + font-weight: 600; +} +.el-select { + width: 100%; +} +.el-divider:not(.el-divider--horizontal) { + margin: 0 8px; +} +.el-divider.el-divider--horizontal { + margin: 16px 0; +} diff --git a/web/src/components/bpmnProcessDesigner/package/theme/index.scss b/web/src/components/bpmnProcessDesigner/package/theme/index.scss new file mode 100644 index 0000000..2404760 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/theme/index.scss @@ -0,0 +1,117 @@ +@use './process-designer.scss'; +@use './process-panel.scss'; + +$success-color: #4eb819; +$primary-color: #409EFF; +$danger-color: #F56C6C; +$cancel-color: #909399; + +.process-viewer { + position: relative; + border: 1px solid #EFEFEF; + background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') repeat!important; + + .success-arrow { + fill: $success-color; + stroke: $success-color; + } + + .success-conditional { + fill: white; + stroke: $success-color; + } + + .success.djs-connection { + .djs-visual path { + stroke: $success-color!important; + //marker-end: url(#sequenceflow-end-white-success)!important; + } + } + + .success.djs-connection.condition-expression { + .djs-visual path { + //marker-start: url(#conditional-flow-marker-white-success)!important; + } + } + + .success.djs-shape { + .djs-visual rect { + stroke: $success-color!important; + fill: $success-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $success-color!important; + } + + .djs-visual path:nth-child(2) { + stroke: $success-color!important; + fill: $success-color!important; + } + + .djs-visual circle { + stroke: $success-color!important; + fill: $success-color!important; + fill-opacity: 0.15!important; + } + } + + .primary.djs-shape { + .djs-visual rect { + stroke: $primary-color!important; + fill: $primary-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $primary-color!important; + } + + .djs-visual circle { + stroke: $primary-color!important; + fill: $primary-color!important; + fill-opacity: 0.15!important; + } + } + + .danger.djs-shape { + .djs-visual rect { + stroke: $danger-color!important; + fill: $danger-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $danger-color!important; + } + + .djs-visual circle { + stroke: $danger-color!important; + fill: $danger-color!important; + fill-opacity: 0.15!important; + } + } + + .cancel.djs-shape { + .djs-visual rect { + stroke: $cancel-color!important; + fill: $cancel-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $cancel-color!important; + } + + .djs-visual circle { + stroke: $cancel-color!important; + fill: $cancel-color!important; + fill-opacity: 0.15!important; + } + } +} + +.process-viewer .djs-tooltip-container, .process-viewer .djs-overlay-container, .process-viewer .djs-palette { + display: none; +} diff --git a/web/src/components/bpmnProcessDesigner/package/theme/process-designer.scss b/web/src/components/bpmnProcessDesigner/package/theme/process-designer.scss new file mode 100644 index 0000000..bca0258 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/theme/process-designer.scss @@ -0,0 +1,159 @@ +@use 'bpmn-js-token-simulation/assets/css/bpmn-js-token-simulation.css'; + +// 边框被 token-simulation 样式覆盖了 +.djs-palette { + background: var(--palette-background-color); + border: solid 1px var(--palette-border-color) !important; + border-radius: 2px; +} + +.my-process-designer { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + box-sizing: border-box; + .my-process-designer__header { + width: 100%; + min-height: 36px; + .el-button { + text-align: center; + } + .el-button-group { + margin: 4px; + } + .el-tooltip__popper { + .el-button { + width: 100%; + text-align: left; + padding-left: 8px; + padding-right: 8px; + } + .el-button:hover { + background: rgba(64, 158, 255, 0.8); + color: #ffffff; + } + } + .align { + position: relative; + i { + &:after { + content: '|'; + position: absolute; + // transform: rotate(90deg) translate(200%, 60%); + transform: rotate(180deg) translate(271%, -10%); + } + } + } + .align.align-left i { + transform: rotate(90deg); + } + .align.align-right i { + transform: rotate(-90deg); + } + .align.align-top i { + transform: rotate(180deg); + } + .align.align-bottom i { + transform: rotate(0deg); + } + .align.align-center i { + transform: rotate(0deg); + &:after { + // transform: rotate(90deg) translate(0, 60%); + transform: rotate(0deg) translate(-0%, -5%); + } + } + .align.align-middle i { + transform: rotate(-90deg); + &:after { + // transform: rotate(90deg) translate(0, 60%); + transform: rotate(0deg) translate(0, -10%); + } + } + } + .my-process-designer__container { + display: inline-flex; + width: 100%; + flex: 1; + .my-process-designer__canvas { + flex: 1; + height: 100%; + position: relative; + background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') + repeat !important; + div.toggle-mode { + display: none; + } + } + .my-process-designer__property-panel { + height: 100%; + overflow: scroll; + overflow-y: auto; + z-index: 10; + * { + box-sizing: border-box; + } + } + // svg { + // width: 100%; + // height: 100%; + // min-height: 100%; + // overflow: hidden; + // } + } +} + +//侧边栏配置 +// .djs-palette .two-column .open { +.open { + // .djs-palette.open { + .djs-palette-entries { + div[class^='bpmn-icon-']:before, + div[class*='bpmn-icon-']:before { + line-height: unset; + } + div.entry { + position: relative; + } + div.entry:hover { + &::after { + width: max-content; + content: attr(title); + vertical-align: text-bottom; + position: absolute; + right: -10px; + top: 0; + bottom: 0; + overflow: hidden; + transform: translateX(100%); + font-size: 0.5em; + display: inline-block; + text-decoration: inherit; + font-variant: normal; + text-transform: none; + background: #fafafa; + box-shadow: 0 0 6px #eeeeee; + border: 1px solid #cccccc; + box-sizing: border-box; + padding: 0 16px; + border-radius: 4px; + z-index: 100; + } + } + } +} +pre { + margin: 0; + height: 100%; + overflow: hidden; + max-height: calc(80vh - 32px); + overflow-y: auto; +} +.hljs { + word-break: break-word; + white-space: pre-wrap; +} +.hljs * { + font-family: Consolas, Monaco, monospace; +} diff --git a/web/src/components/bpmnProcessDesigner/package/theme/process-panel.scss b/web/src/components/bpmnProcessDesigner/package/theme/process-panel.scss new file mode 100644 index 0000000..f840cdd --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/theme/process-panel.scss @@ -0,0 +1,107 @@ +.process-panel__container { + box-sizing: border-box; + padding: 0 8px; + border-left: 1px solid #eeeeee; + box-shadow: 0 0 8px #cccccc; + max-height: 100%; + overflow-y: scroll; +} +.panel-tab__title { + font-weight: 600; + padding: 0 8px; + font-size: 1.1em; + line-height: 1.2em; + i { + margin-right: 8px; + font-size: 1.2em; + } +} +.panel-tab__content { + width: 100%; + box-sizing: border-box; + border-top: 1px solid #eeeeee; + padding: 8px 16px; + .panel-tab__content--title { + display: flex; + justify-content: space-between; + padding-bottom: 8px; + span { + flex: 1; + text-align: left; + } + } +} +.element-property { + width: 100%; + display: flex; + align-items: flex-start; + margin: 8px 0; + .element-property__label { + display: block; + width: 90px; + text-align: right; + overflow: hidden; + padding-right: 12px; + line-height: 32px; + font-size: 14px; + box-sizing: border-box; + } + .element-property__value { + flex: 1; + line-height: 32px; + } + .el-form-item { + width: 100%; + margin-bottom: 0; + padding-bottom: 18px; + } +} +.list-property { + flex-direction: column; + .element-listener-item { + width: 100%; + display: inline-grid; + grid-template-columns: 16px auto 32px 32px; + grid-column-gap: 8px; + } + .element-listener-item + .element-listener-item { + margin-top: 8px; + } +} +.listener-filed__title { + display: inline-flex; + width: 100%; + justify-content: space-between; + align-items: center; + margin-top: 0; + span { + width: 200px; + text-align: left; + font-size: 14px; + } + i { + margin-right: 8px; + } +} +.element-drawer__button { + margin-top: 8px; + width: 100%; + display: inline-flex; + justify-content: space-around; +} +.element-drawer__button > .el-button { + width: 100%; +} + +.el-collapse-item__content { + padding-bottom: 0; +} +.el-input.is-disabled .el-input__inner { + color: #999999; +} +.el-form-item.el-form-item--mini { + margin-bottom: 0; + & + .el-form-item { + margin-top: 16px; + } +} diff --git a/web/src/components/bpmnProcessDesigner/package/utils.ts b/web/src/components/bpmnProcessDesigner/package/utils.ts new file mode 100644 index 0000000..bb6c5d5 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/package/utils.ts @@ -0,0 +1,77 @@ +import { toRaw } from 'vue' +const bpmnInstances = () => (window as any)?.bpmnInstances +// 创建监听器实例 +export function createListenerObject(options, isTask, prefix) { + const listenerObj = Object.create(null) + listenerObj.event = options.event + isTask && (listenerObj.id = options.id) // 任务监听器特有的 id 字段 + switch (options.listenerType) { + case 'scriptListener': + listenerObj.script = createScriptObject(options, prefix) + break + case 'expressionListener': + listenerObj.expression = options.expression + break + case 'delegateExpressionListener': + listenerObj.delegateExpression = options.delegateExpression + break + default: + listenerObj.class = options.class + } + // 注入字段 + if (options.fields) { + listenerObj.fields = options.fields.map((field) => { + return createFieldObject(field, prefix) + }) + } + // 任务监听器的 定时器 设置 + if (isTask && options.event === 'timeout' && !!options.eventDefinitionType) { + const timeDefinition = bpmnInstances().moddle.create('bpmn:FormalExpression', { + body: options.eventTimeDefinitions + }) + const TimerEventDefinition = bpmnInstances().moddle.create('bpmn:TimerEventDefinition', { + id: `TimerEventDefinition_${uuid(8)}`, + [`time${options.eventDefinitionType.replace(/^\S/, (s) => s.toUpperCase())}`]: timeDefinition + }) + listenerObj.eventDefinitions = [TimerEventDefinition] + } + return bpmnInstances().moddle.create( + `${prefix}:${isTask ? 'TaskListener' : 'ExecutionListener'}`, + listenerObj + ) +} + +// 创建 监听器的注入字段 实例 +export function createFieldObject(option, prefix) { + const { name, fieldType, string, expression } = option + const fieldConfig = fieldType === 'string' ? { name, string } : { name, expression } + return bpmnInstances().moddle.create(`${prefix}:Field`, fieldConfig) +} + +// 创建脚本实例 +export function createScriptObject(options, prefix) { + const { scriptType, scriptFormat, value, resource } = options + const scriptConfig = + scriptType === 'inlineScript' ? { scriptFormat, value } : { scriptFormat, resource } + return bpmnInstances().moddle.create(`${prefix}:Script`, scriptConfig) +} + +// 更新元素扩展属性 +export function updateElementExtensions(element, extensionList) { + const extensions = bpmnInstances().moddle.create('bpmn:ExtensionElements', { + values: extensionList + }) + bpmnInstances().modeling.updateProperties(toRaw(element), { + extensionElements: extensions + }) +} + +// 创建一个id +export function uuid(length = 8, chars?) { + let result = '' + const charsString = chars || '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + for (let i = length; i > 0; --i) { + result += charsString[Math.floor(Math.random() * charsString.length)] + } + return result +} diff --git a/web/src/components/bpmnProcessDesigner/src/highlight/index.js b/web/src/components/bpmnProcessDesigner/src/highlight/index.js new file mode 100644 index 0000000..5df38c9 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/highlight/index.js @@ -0,0 +1,5 @@ +const hljs = require('highlight.js/lib/core') +hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml')) +hljs.registerLanguage('json', require('highlight.js/lib/languages/json')) + +module.exports = hljs diff --git a/web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js b/web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js new file mode 100644 index 0000000..e876031 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js @@ -0,0 +1,14 @@ +import BpmnRenderer from 'bpmn-js/lib/draw/BpmnRenderer' + +export default function CustomRenderer(config, eventBus, styles, pathMap, canvas, textRenderer) { + BpmnRenderer.call(this, config, eventBus, styles, pathMap, canvas, textRenderer, 2000) + + this.handlers['label'] = function () { + return null + } +} + +const F = function () {} // 核心,利用空对象作为中介; +F.prototype = BpmnRenderer.prototype // 核心,将父类的原型赋值给空对象F; +CustomRenderer.prototype = new F() // 核心,将 F的实例赋值给子类; +CustomRenderer.prototype.constructor = CustomRenderer // 修复子类CustomRenderer的构造器指向,防止原型链的混乱; diff --git a/web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js b/web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js new file mode 100644 index 0000000..79d8bd0 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js @@ -0,0 +1,6 @@ +import CustomRenderer from './CustomRenderer' + +export default { + __init__: ['customRenderer'], + customRenderer: ['type', CustomRenderer] +} diff --git a/web/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js b/web/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js new file mode 100644 index 0000000..9fa1d14 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js @@ -0,0 +1,16 @@ +import BpmnRules from 'bpmn-js/lib/features/rules/BpmnRules' +import inherits from 'inherits' + +export default function CustomRules(eventBus) { + BpmnRules.call(this, eventBus) +} + +inherits(CustomRules, BpmnRules) + +CustomRules.prototype.canDrop = function () { + return false +} + +CustomRules.prototype.canMove = function () { + return false +} diff --git a/web/src/components/bpmnProcessDesigner/src/modules/rules/index.js b/web/src/components/bpmnProcessDesigner/src/modules/rules/index.js new file mode 100644 index 0000000..12cf05a --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/modules/rules/index.js @@ -0,0 +1,6 @@ +import CustomRules from './CustomRules' + +export default { + __init__: ['customRules'], + customRules: ['type', CustomRules] +} diff --git a/web/src/components/bpmnProcessDesigner/src/translations.ts b/web/src/components/bpmnProcessDesigner/src/translations.ts new file mode 100644 index 0000000..5f9b9a5 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/translations.ts @@ -0,0 +1,25 @@ +/** + * This is a sample file that should be replaced with the actual translation. + * + * Checkout https://github.com/bpmn-io/bpmn-js-i18n for a list of available + * translations and labels to translate. + */ +export default { + 'Exclusive Gateway': 'Exklusives Gateway', + 'Parallel Gateway': 'Paralleles Gateway', + 'Inclusive Gateway': 'Inklusives Gateway', + 'Complex Gateway': 'Komplexes Gateway', + 'Event based Gateway': 'Ereignis-basiertes Gateway', + 'Message Start Event': '消息启动事件', + 'Timer Start Event': '定时启动事件', + 'Conditional Start Event': '条件启动事件', + 'Signal Start Event': '信号启动事件', + 'Error Start Event': '错误启动事件', + 'Escalation Start Event': '升级启动事件', + 'Compensation Start Event': '补偿启动事件', + 'Message Start Event (non-interrupting)': '消息启动事件 (非中断)', + 'Timer Start Event (non-interrupting)': '定时启动事件 (非中断)', + 'Conditional Start Event (non-interrupting)': '条件启动事件 (非中断)', + 'Signal Start Event (non-interrupting)': '信号启动事件 (非中断)', + 'Escalation Start Event (non-interrupting)': '升级启动事件 (非中断)' +} diff --git a/web/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js b/web/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js new file mode 100644 index 0000000..bb71d44 --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js @@ -0,0 +1,39 @@ +//outside.js + +const ctx = '@@clickoutsideContext' + +export default { + bind(el, binding, vnode) { + const ele = el + const documentHandler = (e) => { + if (!vnode.context || ele.contains(e.target)) { + return false + } + // 调用指令回调 + if (binding.expression) { + vnode.context[el[ctx].methodName](e) + } else { + el[ctx].bindingFn(e) + } + } + // 将方法添加到ele + ele[ctx] = { + documentHandler, + methodName: binding.expression, + bindingFn: binding.value + } + + setTimeout(() => { + document.addEventListener('touchstart', documentHandler) // 为document绑定事件 + }) + }, + update(el, binding) { + const ele = el + ele[ctx].methodName = binding.expression + ele[ctx].bindingFn = binding.value + }, + unbind(el) { + document.removeEventListener('touchstart', el[ctx].documentHandler) // 解绑 + delete el[ctx] + } +} diff --git a/web/src/components/bpmnProcessDesigner/src/utils/index.js b/web/src/components/bpmnProcessDesigner/src/utils/index.js new file mode 100644 index 0000000..7d970ec --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/utils/index.js @@ -0,0 +1,10 @@ +export function debounce(fn, delay = 500) { + let timer + return function (...args) { + if (timer) { + clearTimeout(timer) + timer = null + } + timer = setTimeout(fn.bind(this, ...args), delay) + } +} diff --git a/web/src/components/bpmnProcessDesigner/src/utils/xml2json.js b/web/src/components/bpmnProcessDesigner/src/utils/xml2json.js new file mode 100644 index 0000000..fe1a52f --- /dev/null +++ b/web/src/components/bpmnProcessDesigner/src/utils/xml2json.js @@ -0,0 +1,50 @@ +function xmlStr2XmlObj(xmlStr) { + let xmlObj = {} + if (document.all) { + const xmlDom = new window.ActiveXObject('Microsoft.XMLDOM') + xmlDom.loadXML(xmlStr) + xmlObj = xmlDom + } else { + xmlObj = new DOMParser().parseFromString(xmlStr, 'text/xml') + } + return xmlObj +} + +function xml2json(xml) { + try { + let obj = {} + if (xml.children.length > 0) { + for (let i = 0; i < xml.children.length; i++) { + const item = xml.children.item(i) + const nodeName = item.nodeName + if (typeof obj[nodeName] == 'undefined') { + obj[nodeName] = xml2json(item) + } else { + if (typeof obj[nodeName].push == 'undefined') { + const old = obj[nodeName] + obj[nodeName] = [] + obj[nodeName].push(old) + } + obj[nodeName].push(xml2json(item)) + } + } + } else { + obj = xml.textContent + } + return obj + } catch (e) { + console.log(e.message) + } +} + +function xmlObj2json(xml) { + const xmlObj = xmlStr2XmlObj(xml) + console.log(xmlObj) + let jsonObj = {} + if (xmlObj.childNodes.length > 0) { + jsonObj = xml2json(xmlObj) + } + return jsonObj +} + +export default xmlObj2json diff --git a/web/src/components/index.ts b/web/src/components/index.ts new file mode 100644 index 0000000..4d030c3 --- /dev/null +++ b/web/src/components/index.ts @@ -0,0 +1,6 @@ +import type { App } from 'vue' +import { Icon } from './Icon' + +export const setupGlobCom = (app: App): void => { + app.component('Icon', Icon) +} diff --git a/web/src/config/axios/config.ts b/web/src/config/axios/config.ts new file mode 100644 index 0000000..8116508 --- /dev/null +++ b/web/src/config/axios/config.ts @@ -0,0 +1,28 @@ +const config: { + base_url: string + result_code: number | string + default_headers: AxiosHeaders + request_timeout: number +} = { + /** + * api请求基础路径 + */ + base_url: import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL, + /** + * 接口成功返回状态码 + */ + result_code: 200, + + /** + * 接口请求超时时间 + */ + request_timeout: 30000, + + /** + * 默认接口请求类型 + * 可选值:application/x-www-form-urlencoded multipart/form-data + */ + default_headers: 'application/json' +} + +export { config } diff --git a/web/src/config/axios/errorCode.ts b/web/src/config/axios/errorCode.ts new file mode 100644 index 0000000..94d719f --- /dev/null +++ b/web/src/config/axios/errorCode.ts @@ -0,0 +1,6 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + default: '系统未知错误,请反馈给管理员' +} diff --git a/web/src/config/axios/index.ts b/web/src/config/axios/index.ts new file mode 100644 index 0000000..07719a2 --- /dev/null +++ b/web/src/config/axios/index.ts @@ -0,0 +1,47 @@ +import { service } from './service' + +import { config } from './config' + +const { default_headers } = config + +const request = (option: any) => { + const { headersType, headers, ...otherOption } = option + return service({ + ...otherOption, + headers: { + 'Content-Type': headersType || default_headers, + ...headers + } + }) +} +export default { + get: async (option: any) => { + const res = await request({ method: 'GET', ...option }) + return res.data as unknown as T + }, + post: async (option: any) => { + const res = await request({ method: 'POST', ...option }) + return res.data as unknown as T + }, + postOriginal: async (option: any) => { + const res = await request({ method: 'POST', ...option }) + return res + }, + delete: async (option: any) => { + const res = await request({ method: 'DELETE', ...option }) + return res.data as unknown as T + }, + put: async (option: any) => { + const res = await request({ method: 'PUT', ...option }) + return res.data as unknown as T + }, + download: async (option: any) => { + const res = await request({ method: 'GET', responseType: 'blob', ...option }) + return res as unknown as Promise + }, + upload: async (option: any) => { + option.headersType = 'multipart/form-data' + const res = await request({ method: 'POST', ...option }) + return res as unknown as Promise + } +} diff --git a/web/src/config/axios/service.ts b/web/src/config/axios/service.ts new file mode 100644 index 0000000..74280a9 --- /dev/null +++ b/web/src/config/axios/service.ts @@ -0,0 +1,239 @@ +import axios, { AxiosError, AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios' + +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +import qs from 'qs' +import { config } from '@/config/axios/config' +import { + getAccessToken, + getRefreshToken, + getTenantId, + getVisitTenantId, + removeToken, + setToken +} from '@/utils/auth' +import errorCode from './errorCode' + +import { resetRouter } from '@/router' +import { deleteUserCache } from '@/hooks/web/useCache' + +const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE +const { result_code, base_url, request_timeout } = config + +// 需要忽略的提示。忽略后,自动 Promise.reject('error') +const ignoreMsgs = [ + '无效的刷新令牌', // 刷新令牌被删除时,不用提示 + '刷新令牌已过期' // 使用刷新令牌,刷新获取新的访问令牌时,结果因为过期失败,此时需要忽略。否则,会导致继续 401,无法跳转到登出界面 +] +// 是否显示重新登录 +export const isRelogin = { show: false } +// Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现 +// 请求队列 +let requestList: any[] = [] +// 是否正在刷新中 +let isRefreshToken = false +// 请求白名单,无须 token 的接口 +const whiteList: string[] = ['/login', '/refresh-token'] + +// 创建axios实例 +const service: AxiosInstance = axios.create({ + baseURL: base_url, // api 的 base_url + timeout: request_timeout, // 请求超时时间 + withCredentials: false, // 禁用 Cookie 等信息 + // 自定义参数序列化函数 + paramsSerializer: (params) => { + return qs.stringify(params, { allowDots: true }) + } +}) + +// request拦截器 +service.interceptors.request.use( + (config: InternalAxiosRequestConfig) => { + // 是否需要设置 token + let isToken = (config!.headers || {}).isToken === false + whiteList.some((v) => { + if (config.url && config.url.indexOf(v) > -1) { + return (isToken = false) + } + }) + if (getAccessToken() && !isToken) { + config.headers.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token + } + // 设置租户 + if (tenantEnable && tenantEnable === 'true') { + const tenantId = getTenantId() + if (tenantId) config.headers['tenant-id'] = tenantId + // 只有登录时,才设置 visit-tenant-id 访问租户 + const visitTenantId = getVisitTenantId() + if (config.headers.Authorization && visitTenantId) { + config.headers['visit-tenant-id'] = visitTenantId + } + } + const method = config.method?.toUpperCase() + // 防止 GET 请求缓存 + if (method === 'GET') { + config.headers['Cache-Control'] = 'no-cache' + config.headers['Pragma'] = 'no-cache' + } + // 自定义参数序列化函数 + else if (method === 'POST') { + const contentType = config.headers['Content-Type'] || config.headers['content-type'] + if (contentType === 'application/x-www-form-urlencoded') { + if (config.data && typeof config.data !== 'string') { + config.data = qs.stringify(config.data) + } + } + } + return config + }, + (error: AxiosError) => { + // Do something with request error + console.log(error) // for debug + return Promise.reject(error) + } +) + +// response 拦截器 +service.interceptors.response.use( + async (response: AxiosResponse) => { + let { data } = response + const config = response.config + if (!data) { + // 返回“[HTTP]请求没有返回值”; + throw new Error() + } + const { t } = useI18n() + // 未设置状态码则默认成功状态 + // 二进制数据则直接返回,例如说 Excel 导出 + if ( + response.request.responseType === 'blob' || + response.request.responseType === 'arraybuffer' + ) { + // 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载 + if (response.data.type !== 'application/json') { + return response.data + } + data = await new Response(response.data).json() + } + const code = data.code || result_code + // 获取错误信息 + const msg = data.msg || errorCode[code] || errorCode['default'] + if (ignoreMsgs.indexOf(msg) !== -1) { + // 如果是忽略的错误码,直接返回 msg 异常 + return Promise.reject(msg) + } else if (code === 401) { + // 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了 + if (!isRefreshToken) { + isRefreshToken = true + // 1. 如果获取不到刷新令牌,则只能执行登出操作 + if (!getRefreshToken()) { + return handleAuthorized() + } + // 2. 进行刷新访问令牌 + try { + const refreshTokenRes = await refreshToken() + // 2.1 刷新成功,则回放队列的请求 + 当前请求 + setToken((await refreshTokenRes).data.data) + config.headers!.Authorization = 'Bearer ' + getAccessToken() + requestList.forEach((cb: any) => { + cb() + }) + requestList = [] + return service(config) + } catch (e) { + // 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。 + // 2.2 刷新失败,只回放队列的请求 + requestList.forEach((cb: any) => { + cb() + }) + // 提示是否要登出。即不回放当前请求!不然会形成递归 + return handleAuthorized() + } finally { + requestList = [] + isRefreshToken = false + } + } else { + // 添加到队列,等待刷新获取到新的令牌 + return new Promise((resolve) => { + requestList.push(() => { + config.headers!.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + resolve(service(config)) + }) + }) + } + } else if (code === 500) { + ElMessage.error(t('sys.api.errMsg500')) + return Promise.reject(new Error(msg)) + } else if (code === 901) { + ElMessage.error({ + offset: 300, + dangerouslyUseHTMLString: true, + message: + '
    ' + + t('sys.api.errMsg901') + + '
    ' + + '
     
    ' + + '
    参考 https://doc.iocoder.cn/ 教程
    ' + + '
     
    ' + + '
    5 分钟搭建本地环境
    ' + }) + return Promise.reject(new Error(msg)) + } else if (code !== 200) { + if (msg === '无效的刷新令牌') { + // hard coding:忽略这个提示,直接登出 + console.log(msg) + return handleAuthorized() + } else { + ElNotification.error({ title: msg }) + } + return Promise.reject('error') + } else { + return data + } + }, + (error: AxiosError) => { + console.log('err' + error) // for debug + let { message } = error + const { t } = useI18n() + if (message === 'Network Error') { + message = t('sys.api.errorMessage') + } else if (message.includes('timeout')) { + message = t('sys.api.apiTimeoutMessage') + } else if (message.includes('Request failed with status code')) { + message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3) + } + ElMessage.error(message) + return Promise.reject(error) + } +) + +const refreshToken = async () => { + axios.defaults.headers.common['tenant-id'] = getTenantId() + return await axios.post(base_url + '/system/auth/refresh-token?refreshToken=' + getRefreshToken()) +} +const handleAuthorized = () => { + const { t } = useI18n() + if (!isRelogin.show) { + // 如果已经到登录页面则不进行弹窗提示 + if (window.location.href.includes('login')) { + return + } + isRelogin.show = true + ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), { + showCancelButton: false, + closeOnClickModal: false, + showClose: false, + closeOnPressEscape: false, + confirmButtonText: t('login.relogin'), + type: 'warning' + }).then(() => { + resetRouter() // 重置静态路由表 + deleteUserCache() // 删除用户缓存 + removeToken() + isRelogin.show = false + // 干掉token后再走一次路由让它过router.beforeEach的校验 + window.location.href = window.location.href + }) + } + return Promise.reject(t('sys.api.timeoutMessage')) +} +export { service } diff --git a/web/src/directives/index.ts b/web/src/directives/index.ts new file mode 100644 index 0000000..1b99988 --- /dev/null +++ b/web/src/directives/index.ts @@ -0,0 +1,24 @@ +import type { App } from 'vue' +import { hasRole } from './permission/hasRole' +import { hasPermi } from './permission/hasPermi' + +/** + * 导出指令:v-xxx + * @methods hasRole 用户权限,用法: v-hasRole + * @methods hasPermi 按钮权限,用法: v-hasPermi + */ +export const setupAuth = (app: App) => { + hasRole(app) + hasPermi(app) +} + +/** + * 导出指令:v-mountedFocus + */ +export const setupMountedFocus = (app: App) => { + app.directive('mountedFocus', { + mounted(el) { + el.focus() + } + }) +} diff --git a/web/src/directives/permission/hasPermi.ts b/web/src/directives/permission/hasPermi.ts new file mode 100644 index 0000000..90cd025 --- /dev/null +++ b/web/src/directives/permission/hasPermi.ts @@ -0,0 +1,31 @@ +import type { App } from 'vue' +import { useUserStore } from '@/store/modules/user' + +const { t } = useI18n() // 国际化 + +/** 判断权限的指令 directive */ +export function hasPermi(app: App) { + app.directive('hasPermi', (el, binding) => { + const { value } = binding + + if (value && value instanceof Array && value.length > 0) { + const hasPermissions = hasPermission(value) + + if (!hasPermissions) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(t('permission.hasPermission')) + } + }) +} + +/** 判断权限的方法 function */ +const userStore = useUserStore() +const all_permission = '*:*:*' +export const hasPermission = (permission: string[]) => { + return ( + userStore.permissions.has(all_permission) || + permission.some((permission) => userStore.permissions.has(permission)) + ) +} diff --git a/web/src/directives/permission/hasRole.ts b/web/src/directives/permission/hasRole.ts new file mode 100644 index 0000000..a512811 --- /dev/null +++ b/web/src/directives/permission/hasRole.ts @@ -0,0 +1,28 @@ +import type { App } from 'vue' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { t } = useI18n() // 国际化 + +export function hasRole(app: App) { + app.directive('hasRole', (el, binding) => { + const { wsCache } = useCache() + const { value } = binding + const super_admin = 'super_admin' + const userInfo = wsCache.get(CACHE_KEY.USER) + const roles = userInfo?.roles || [] + + if (value && value instanceof Array && value.length > 0) { + const roleFlag = value + + const hasRole = roles.some((role: string) => { + return super_admin === role || roleFlag.includes(role) + }) + + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(t('permission.hasRole')) + } + }) +} diff --git a/web/src/hooks/event/useScrollTo.ts b/web/src/hooks/event/useScrollTo.ts new file mode 100644 index 0000000..92aec87 --- /dev/null +++ b/web/src/hooks/event/useScrollTo.ts @@ -0,0 +1,60 @@ +export interface ScrollToParams { + el: HTMLElement + to: number + position: string + duration?: number + callback?: () => void +} + +const easeInOutQuad = (t: number, b: number, c: number, d: number) => { + t /= d / 2 + if (t < 1) { + return (c / 2) * t * t + b + } + t-- + return (-c / 2) * (t * (t - 2) - 1) + b +} +const move = (el: HTMLElement, position: string, amount: number) => { + el[position] = amount +} + +export function useScrollTo({ + el, + position = 'scrollLeft', + to, + duration = 500, + callback +}: ScrollToParams) { + const isActiveRef = ref(false) + const start = el[position] + const change = to - start + const increment = 20 + let currentTime = 0 + + function animateScroll() { + if (!unref(isActiveRef)) { + return + } + currentTime += increment + const val = easeInOutQuad(currentTime, start, change, duration) + move(el, position, val) + if (currentTime < duration && unref(isActiveRef)) { + requestAnimationFrame(animateScroll) + } else { + if (callback) { + callback() + } + } + } + + function run() { + isActiveRef.value = true + animateScroll() + } + + function stop() { + isActiveRef.value = false + } + + return { start: run, stop } +} diff --git a/web/src/hooks/web/useCache.ts b/web/src/hooks/web/useCache.ts new file mode 100644 index 0000000..1acb03b --- /dev/null +++ b/web/src/hooks/web/useCache.ts @@ -0,0 +1,41 @@ +/** + * 配置浏览器本地存储的方式,可直接存储对象数组。 + */ + +import WebStorageCache from 'web-storage-cache' + +type CacheType = 'localStorage' | 'sessionStorage' + +export const CACHE_KEY = { + // 用户相关 + ROLE_ROUTERS: 'roleRouters', + USER: 'user', + VisitTenantId: 'visitTenantId', + // 系统设置 + IS_DARK: 'isDark', + LANG: 'lang', + THEME: 'theme', + LAYOUT: 'layout', + DICT_CACHE: 'dictCache', + // 登录表单 + LoginForm: 'loginForm', + TenantId: 'tenantId' +} + +export const useCache = (type: CacheType = 'localStorage') => { + const wsCache: WebStorageCache = new WebStorageCache({ + storage: type + }) + + return { + wsCache + } +} + +export const deleteUserCache = () => { + const { wsCache } = useCache() + wsCache.delete(CACHE_KEY.USER) + wsCache.delete(CACHE_KEY.ROLE_ROUTERS) + wsCache.delete(CACHE_KEY.VisitTenantId) + // 注意,不要清理 LoginForm 登录表单 +} diff --git a/web/src/hooks/web/useConfigGlobal.ts b/web/src/hooks/web/useConfigGlobal.ts new file mode 100644 index 0000000..afb3db3 --- /dev/null +++ b/web/src/hooks/web/useConfigGlobal.ts @@ -0,0 +1,9 @@ +import { ConfigGlobalTypes } from '@/types/configGlobal' + +export const useConfigGlobal = () => { + const configGlobal = inject('configGlobal', {}) as ConfigGlobalTypes + + return { + configGlobal + } +} diff --git a/web/src/hooks/web/useCrudSchemas.ts b/web/src/hooks/web/useCrudSchemas.ts new file mode 100644 index 0000000..458b57e --- /dev/null +++ b/web/src/hooks/web/useCrudSchemas.ts @@ -0,0 +1,326 @@ +import { reactive } from 'vue' +import { AxiosPromise } from 'axios' +import { findIndex } from '@/utils' +import { eachTree, filter, treeMap } from '@/utils/tree' +import { getBoolDictOptions, getDictOptions, getIntDictOptions } from '@/utils/dict' + +import { FormSchema } from '@/types/form' +import { TableColumn } from '@/types/table' +import { DescriptionsSchema } from '@/types/descriptions' +import { ComponentOptions, ComponentProps } from '@/types/components' +import { DictTag } from '@/components/DictTag' +import { cloneDeep, merge } from 'lodash-es' + +export type CrudSchema = Omit & { + isSearch?: boolean // 是否在查询显示 + search?: CrudSearchParams // 查询的详细配置 + isTable?: boolean // 是否在列表显示 + table?: CrudTableParams // 列表的详细配置 + isForm?: boolean // 是否在表单显示 + form?: CrudFormParams // 表单的详细配置 + isDetail?: boolean // 是否在详情显示 + detail?: CrudDescriptionsParams // 详情的详细配置 + children?: CrudSchema[] + dictType?: string // 字典类型 + dictClass?: 'string' | 'number' | 'boolean' // 字典数据类型 string | number | boolean +} + +type CrudSearchParams = { + // 是否显示在查询项 + show?: boolean + // 接口 + api?: () => Promise + // 搜索字段 + field?: string +} & Omit + +type CrudTableParams = { + // 是否显示表头 + show?: boolean + // 列宽配置 + width?: number | string + // 列是否固定在左侧或者右侧 + fixed?: 'left' | 'right' +} & Omit +type CrudFormParams = { + // 是否显示表单项 + show?: boolean + // 接口 + api?: () => Promise +} & Omit + +type CrudDescriptionsParams = { + // 是否显示表单项 + show?: boolean +} & Omit + +interface AllSchemas { + searchSchema: FormSchema[] + tableColumns: TableColumn[] + formSchema: FormSchema[] + detailSchema: DescriptionsSchema[] +} + +const { t } = useI18n() + +// 过滤所有结构 +export const useCrudSchemas = ( + crudSchema: CrudSchema[] +): { + allSchemas: AllSchemas +} => { + // 所有结构数据 + const allSchemas = reactive({ + searchSchema: [], + tableColumns: [], + formSchema: [], + detailSchema: [] + }) + + const searchSchema = filterSearchSchema(crudSchema, allSchemas) + allSchemas.searchSchema = searchSchema || [] + + const tableColumns = filterTableSchema(crudSchema) + allSchemas.tableColumns = tableColumns || [] + + const formSchema = filterFormSchema(crudSchema, allSchemas) + allSchemas.formSchema = formSchema + + const detailSchema = filterDescriptionsSchema(crudSchema) + allSchemas.detailSchema = detailSchema + + return { + allSchemas + } +} + +// 过滤 Search 结构 +const filterSearchSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): FormSchema[] => { + const searchSchema: FormSchema[] = [] + + // 获取字典列表队列 + const searchRequestTask: Array<() => Promise> = [] + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isSearch || schemaItem.search?.show) { + let component = schemaItem?.search?.component || 'Input' + const options: ComponentOptions[] = [] + let comonentProps: ComponentProps = {} + if (schemaItem.dictType) { + const allOptions: ComponentOptions = { label: '全部', value: '' } + options.push(allOptions) + getDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + comonentProps = { + options: options + } + if (!schemaItem.search?.component) component = 'Select' + } + + // updated by AKing: 解决了当使用默认的dict选项时,form中事件不能触发的问题 + const searchSchemaItem = merge( + { + // 默认为 input + component, + ...schemaItem.search, + field: schemaItem.field, + label: schemaItem.search?.label || schemaItem.label + }, + { componentProps: comonentProps } + ) + if (searchSchemaItem.api) { + searchRequestTask.push(async () => { + const res = await (searchSchemaItem.api as () => AxiosPromise)() + if (res) { + const index = findIndex(allSchemas.searchSchema, (v: FormSchema) => { + return v.field === searchSchemaItem.field + }) + if (index !== -1) { + allSchemas.searchSchema[index]!.componentProps!.options = filterOptions( + res, + searchSchemaItem.componentProps.optionsAlias?.labelField + ) + } + } + }) + } + // 删除不必要的字段 + delete searchSchemaItem.show + + searchSchema.push(searchSchemaItem) + } + }) + for (const task of searchRequestTask) { + task() + } + return searchSchema +} + +// 过滤 table 结构 +const filterTableSchema = (crudSchema: CrudSchema[]): TableColumn[] => { + const tableColumns = treeMap(crudSchema, { + conversion: (schema: CrudSchema) => { + if (schema?.isTable !== false && schema?.table?.show !== false) { + // add by 芋艿:增加对 dict 字典数据的支持 + if (!schema.formatter && schema.dictType) { + schema.formatter = (_: Recordable, __: TableColumn, cellValue: any) => { + return h(DictTag, { + type: schema.dictType!, // ! 表示一定不为空 + value: cellValue + }) + } + } + return { + ...schema.table, + ...schema + } + } + } + }) + + // 第一次过滤会有 undefined 所以需要二次过滤 + return filter(tableColumns as TableColumn[], (data) => { + if (data.children === void 0) { + delete data.children + } + return !!data.field + }) +} + +// 过滤 form 结构 +const filterFormSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): FormSchema[] => { + const formSchema: FormSchema[] = [] + + // 获取字典列表队列 + const formRequestTask: Array<() => Promise> = [] + + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isForm !== false && schemaItem?.form?.show !== false) { + let component = schemaItem?.form?.component || 'Input' + let defaultValue: any = '' + if (schemaItem.form?.value) { + defaultValue = schemaItem.form?.value + } else { + if (component === 'InputNumber') { + defaultValue = 0 + } + } + let comonentProps: ComponentProps = {} + if (schemaItem.dictType) { + const options: ComponentOptions[] = [] + if (schemaItem.dictClass && schemaItem.dictClass === 'number') { + getIntDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } else if (schemaItem.dictClass && schemaItem.dictClass === 'boolean') { + getBoolDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } else { + getDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } + comonentProps = { + options: options + } + if (!(schemaItem.form && schemaItem.form.component)) component = 'Select' + } + + // updated by AKing: 解决了当使用默认的dict选项时,form中事件不能触发的问题 + const formSchemaItem = merge( + { + // 默认为 input + component, + value: defaultValue, + ...schemaItem.form, + field: schemaItem.field, + label: schemaItem.form?.label || schemaItem.label + }, + { componentProps: comonentProps } + ) + + if (formSchemaItem.api) { + formRequestTask.push(async () => { + const res = await (formSchemaItem.api as () => AxiosPromise)() + if (res) { + const index = findIndex(allSchemas.formSchema, (v: FormSchema) => { + return v.field === formSchemaItem.field + }) + if (index !== -1) { + allSchemas.formSchema[index]!.componentProps!.options = filterOptions( + res, + formSchemaItem.componentProps.optionsAlias?.labelField + ) + } + } + }) + } + + // 删除不必要的字段 + delete formSchemaItem.show + + formSchema.push(formSchemaItem) + } + }) + + for (const task of formRequestTask) { + task() + } + return formSchema +} + +// 过滤 descriptions 结构 +const filterDescriptionsSchema = (crudSchema: CrudSchema[]): DescriptionsSchema[] => { + const descriptionsSchema: FormSchema[] = [] + + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isDetail !== false && schemaItem.detail?.show !== false) { + const descriptionsSchemaItem = { + ...schemaItem.detail, + field: schemaItem.field, + label: schemaItem.detail?.label || schemaItem.label + } + if (schemaItem.dictType) { + descriptionsSchemaItem.dictType = schemaItem.dictType + } + if (schemaItem.detail?.dateFormat || schemaItem.formatter == 'formatDate') { + // 优先使用 detail 下的配置,如果没有默认为 YYYY-MM-DD HH:mm:ss + descriptionsSchemaItem.dateFormat = schemaItem?.detail?.dateFormat + ? schemaItem?.detail?.dateFormat + : 'YYYY-MM-DD HH:mm:ss' + } + + // 删除不必要的字段 + delete descriptionsSchemaItem.show + + descriptionsSchema.push(descriptionsSchemaItem) + } + }) + + return descriptionsSchema +} + +// 给options添加国际化 +const filterOptions = (options: Recordable, labelField?: string) => { + return options?.map((v: Recordable) => { + if (labelField) { + v['labelField'] = t(v.labelField) + } else { + v['label'] = t(v.label) + } + return v + }) +} + +// 将 tableColumns 指定 fields 放到最前面 +export const sortTableColumns = (tableColumns: TableColumn[], field: string) => { + const fieldIndex = tableColumns.findIndex((item) => item.field === field) + const fieldColumn = cloneDeep(tableColumns[fieldIndex]) + tableColumns.splice(fieldIndex, 1) + // 添加到开头 + tableColumns.unshift(fieldColumn) +} diff --git a/web/src/hooks/web/useDesign.ts b/web/src/hooks/web/useDesign.ts new file mode 100644 index 0000000..8ee3b38 --- /dev/null +++ b/web/src/hooks/web/useDesign.ts @@ -0,0 +1,18 @@ +import variables from '@/styles/global.module.scss' + +export const useDesign = () => { + const scssVariables = variables + + /** + * @param scope 类名 + * @returns 返回空间名-类名 + */ + const getPrefixCls = (scope: string) => { + return `${scssVariables.namespace}-${scope}` + } + + return { + variables: scssVariables, + getPrefixCls + } +} diff --git a/web/src/hooks/web/useEmitt.ts b/web/src/hooks/web/useEmitt.ts new file mode 100644 index 0000000..d4efea7 --- /dev/null +++ b/web/src/hooks/web/useEmitt.ts @@ -0,0 +1,22 @@ +import mitt from 'mitt' + +interface Option { + name: string // 事件名称 + callback: Fn // 回调 +} + +const emitter = mitt() + +export const useEmitt = (option?: Option) => { + if (option) { + emitter.on(option.name, option.callback) + + onBeforeUnmount(() => { + emitter.off(option.name) + }) + } + + return { + emitter + } +} diff --git a/web/src/hooks/web/useForm.ts b/web/src/hooks/web/useForm.ts new file mode 100644 index 0000000..53a8a94 --- /dev/null +++ b/web/src/hooks/web/useForm.ts @@ -0,0 +1,94 @@ +import type { Form, FormExpose } from '@/components/Form' +import type { ElForm } from 'element-plus' +import type { FormProps } from '@/components/Form/src/types' +import { FormSchema, FormSetPropsType } from '@/types/form' + +export const useForm = (props?: FormProps) => { + // From实例 + const formRef = ref() + + // ElForm实例 + const elFormRef = ref>() + + /** + * @param ref Form实例 + * @param elRef ElForm实例 + */ + const register = (ref: typeof Form & FormExpose, elRef: ComponentRef) => { + formRef.value = ref + elFormRef.value = elRef + } + + const getForm = async () => { + await nextTick() + const form = unref(formRef) + if (!form) { + console.error('The form is not registered. Please use the register method to register') + } + return form + } + + // 一些内置的方法 + const methods: { + setProps: (props: Recordable) => void + setValues: (data: Recordable) => void + getFormData: () => Promise + setSchema: (schemaProps: FormSetPropsType[]) => void + addSchema: (formSchema: FormSchema, index?: number) => void + delSchema: (field: string) => void + } = { + setProps: async (props: FormProps = {}) => { + const form = await getForm() + form?.setProps(props) + if (props.model) { + form?.setValues(props.model) + } + }, + + setValues: async (data: Recordable) => { + const form = await getForm() + form?.setValues(data) + }, + + /** + * @param schemaProps 需要设置的schemaProps + */ + setSchema: async (schemaProps: FormSetPropsType[]) => { + const form = await getForm() + form?.setSchema(schemaProps) + }, + + /** + * @param formSchema 需要新增数据 + * @param index 在哪里新增 + */ + addSchema: async (formSchema: FormSchema, index?: number) => { + const form = await getForm() + form?.addSchema(formSchema, index) + }, + + /** + * @param field 删除哪个数据 + */ + delSchema: async (field: string) => { + const form = await getForm() + form?.delSchema(field) + }, + + /** + * @returns form data + */ + getFormData: async (): Promise => { + const form = await getForm() + return form?.formModel as T + } + } + + props && methods.setProps(props) + + return { + register, + elFormRef, + methods + } +} diff --git a/web/src/hooks/web/useGuide.ts b/web/src/hooks/web/useGuide.ts new file mode 100644 index 0000000..7fd2fb0 --- /dev/null +++ b/web/src/hooks/web/useGuide.ts @@ -0,0 +1,49 @@ +import { Config, driver } from 'driver.js' +import 'driver.js/dist/driver.css' +import { useDesign } from '@/hooks/web/useDesign' +import { useI18n } from '@/hooks/web/useI18n' + +const { t } = useI18n() + +const { variables } = useDesign() + +export const useGuide = (options?: Config) => { + const driverObj = driver( + options || { + showProgress: true, + nextBtnText: t('common.nextLabel'), + prevBtnText: t('common.prevLabel'), + doneBtnText: t('common.doneLabel'), + steps: [ + { + element: `#${variables.namespace}-menu`, + popover: { + title: t('common.menu'), + description: t('common.menuDes'), + side: 'right' + } + }, + { + element: `#${variables.namespace}-tool-header`, + popover: { + title: t('common.tool'), + description: t('common.toolDes'), + side: 'left' + } + }, + { + element: `#${variables.namespace}-tags-view`, + popover: { + title: t('common.tagsView'), + description: t('common.tagsViewDes'), + side: 'bottom' + } + } + ] + } + ) + + return { + ...driverObj + } +} diff --git a/web/src/hooks/web/useI18n.ts b/web/src/hooks/web/useI18n.ts new file mode 100644 index 0000000..d1ab70f --- /dev/null +++ b/web/src/hooks/web/useI18n.ts @@ -0,0 +1,53 @@ +import { i18n } from '@/plugins/vueI18n' + +type I18nGlobalTranslation = { + (key: string): string + (key: string, locale: string): string + (key: string, locale: string, list: unknown[]): string + (key: string, locale: string, named: Record): string + (key: string, list: unknown[]): string + (key: string, named: Record): string +} + +type I18nTranslationRestParameters = [string, any] + +const getKey = (namespace: string | undefined, key: string) => { + if (!namespace) { + return key + } + if (key.startsWith(namespace)) { + return key + } + return `${namespace}.${key}` +} + +export const useI18n = ( + namespace?: string +): { + t: I18nGlobalTranslation +} => { + const normalFn = { + t: (key: string) => { + return getKey(namespace, key) + } + } + + if (!i18n) { + return normalFn + } + + const { t, ...methods } = i18n.global + + const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { + if (!key) return '' + if (!key.includes('.') && !namespace) return key + //@ts-ignore + return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters)) + } + return { + ...methods, + t: tFn + } +} + +export const t = (key: string) => key diff --git a/web/src/hooks/web/useIcon.ts b/web/src/hooks/web/useIcon.ts new file mode 100644 index 0000000..3500204 --- /dev/null +++ b/web/src/hooks/web/useIcon.ts @@ -0,0 +1,8 @@ +import { h } from 'vue' +import type { VNode } from 'vue' +import { Icon } from '@/components/Icon' +import { IconTypes } from '@/types/icon' + +export const useIcon = (props: IconTypes): VNode => { + return h(Icon, props) +} diff --git a/web/src/hooks/web/useLocale.ts b/web/src/hooks/web/useLocale.ts new file mode 100644 index 0000000..c65070e --- /dev/null +++ b/web/src/hooks/web/useLocale.ts @@ -0,0 +1,35 @@ +import { i18n } from '@/plugins/vueI18n' +import { useLocaleStoreWithOut } from '@/store/modules/locale' +import { setHtmlPageLang } from '@/plugins/vueI18n/helper' + +const setI18nLanguage = (locale: LocaleType) => { + const localeStore = useLocaleStoreWithOut() + + if (i18n.mode === 'legacy') { + i18n.global.locale = locale + } else { + ;(i18n.global.locale as any).value = locale + } + localeStore.setCurrentLocale({ + lang: locale + }) + setHtmlPageLang(locale) +} + +export const useLocale = () => { + // Switching the language will change the locale of useI18n + // And submit to configuration modification + const changeLocale = async (locale: LocaleType) => { + const globalI18n = i18n.global + + const langModule = await import(`../../locales/${locale}.ts`) + + globalI18n.setLocaleMessage(locale, langModule.default) + + setI18nLanguage(locale) + } + + return { + changeLocale + } +} diff --git a/web/src/hooks/web/useMessage.ts b/web/src/hooks/web/useMessage.ts new file mode 100644 index 0000000..ac2b552 --- /dev/null +++ b/web/src/hooks/web/useMessage.ts @@ -0,0 +1,95 @@ +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +import { useI18n } from './useI18n' +export const useMessage = () => { + const { t } = useI18n() + return { + // 消息提示 + info(content: string) { + ElMessage.info(content) + }, + // 错误消息 + error(content: string) { + ElMessage.error(content) + }, + // 成功消息 + success(content: string) { + ElMessage.success(content) + }, + // 警告消息 + warning(content: string) { + ElMessage.warning(content) + }, + // 弹出提示 + alert(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle')) + }, + // 错误提示 + alertError(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'error' }) + }, + // 成功提示 + alertSuccess(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'success' }) + }, + // 警告提示 + alertWarning(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'warning' }) + }, + // 通知提示 + notify(content: string) { + ElNotification.info(content) + }, + // 错误通知 + notifyError(content: string) { + ElNotification.error(content) + }, + // 成功通知 + notifySuccess(content: string) { + ElNotification.success(content) + }, + // 警告通知 + notifyWarning(content: string) { + ElNotification.warning(content) + }, + // 确认窗体 + confirm(content: string, tip?: string) { + return ElMessageBox.confirm(content, tip ? tip : t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + }, + // 删除窗体 + delConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.delMessage'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) + }, + // 导出窗体 + exportConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.exportMessage'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) + }, + // 提交内容 + prompt(content: string, tip: string) { + return ElMessageBox.prompt(content, tip, { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + } + } +} diff --git a/web/src/hooks/web/useNProgress.ts b/web/src/hooks/web/useNProgress.ts new file mode 100644 index 0000000..6d8c0b9 --- /dev/null +++ b/web/src/hooks/web/useNProgress.ts @@ -0,0 +1,33 @@ +import { useCssVar } from '@vueuse/core' +import type { NProgressOptions } from 'nprogress' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' + +const primaryColor = useCssVar('--el-color-primary', document.documentElement) + +export const useNProgress = () => { + NProgress.configure({ showSpinner: false } as NProgressOptions) + + const initColor = async () => { + await nextTick() + const bar = document.getElementById('nprogress')?.getElementsByClassName('bar')[0] as ElRef + if (bar) { + bar.style.background = unref(primaryColor.value) + } + } + + initColor() + + const start = () => { + NProgress.start() + } + + const done = () => { + NProgress.done() + } + + return { + start, + done + } +} diff --git a/web/src/hooks/web/useNetwork.ts b/web/src/hooks/web/useNetwork.ts new file mode 100644 index 0000000..66fa446 --- /dev/null +++ b/web/src/hooks/web/useNetwork.ts @@ -0,0 +1,21 @@ +import { ref, onBeforeUnmount } from 'vue' + +const useNetwork = () => { + const online = ref(true) + + const updateNetwork = () => { + online.value = navigator.onLine + } + + window.addEventListener('online', updateNetwork) + window.addEventListener('offline', updateNetwork) + + onBeforeUnmount(() => { + window.removeEventListener('online', updateNetwork) + window.removeEventListener('offline', updateNetwork) + }) + + return { online } +} + +export { useNetwork } diff --git a/web/src/hooks/web/useNow.ts b/web/src/hooks/web/useNow.ts new file mode 100644 index 0000000..09d3176 --- /dev/null +++ b/web/src/hooks/web/useNow.ts @@ -0,0 +1,60 @@ +import { dateUtil } from '@/utils/dateUtil' +import { reactive, toRefs } from 'vue' +import { tryOnMounted, tryOnUnmounted } from '@vueuse/core' + +export const useNow = (immediate = true) => { + let timer: IntervalHandle + + const state = reactive({ + year: 0, + month: 0, + week: '', + day: 0, + hour: '', + minute: '', + second: 0, + meridiem: '' + }) + + const update = () => { + const now = dateUtil() + + const h = now.format('HH') + const m = now.format('mm') + const s = now.get('s') + + state.year = now.get('y') + state.month = now.get('M') + 1 + state.week = '星期' + ['日', '一', '二', '三', '四', '五', '六'][now.day()] + state.day = now.get('date') + state.hour = h + state.minute = m + state.second = s + + state.meridiem = now.format('A') + } + + function start() { + update() + clearInterval(timer) + timer = setInterval(() => update(), 1000) + } + + function stop() { + clearInterval(timer) + } + + tryOnMounted(() => { + immediate && start() + }) + + tryOnUnmounted(() => { + stop() + }) + + return { + ...toRefs(state), + start, + stop + } +} diff --git a/web/src/hooks/web/usePageLoading.ts b/web/src/hooks/web/usePageLoading.ts new file mode 100644 index 0000000..bb89457 --- /dev/null +++ b/web/src/hooks/web/usePageLoading.ts @@ -0,0 +1,18 @@ +import { useAppStoreWithOut } from '@/store/modules/app' + +const appStore = useAppStoreWithOut() + +export const usePageLoading = () => { + const loadStart = () => { + appStore.setPageLoading(true) + } + + const loadDone = () => { + appStore.setPageLoading(false) + } + + return { + loadStart, + loadDone + } +} diff --git a/web/src/hooks/web/useTable.ts b/web/src/hooks/web/useTable.ts new file mode 100644 index 0000000..361dd67 --- /dev/null +++ b/web/src/hooks/web/useTable.ts @@ -0,0 +1,223 @@ +import download from '@/utils/download' +import { Table, TableExpose } from '@/components/Table' +import { ElMessage, ElMessageBox, ElTable } from 'element-plus' +import { computed, nextTick, reactive, ref, unref, watch } from 'vue' +import type { TableProps } from '@/components/Table/src/types' + +import { TableSetPropsType } from '@/types/table' + +const { t } = useI18n() +interface ResponseType { + list: T[] + total?: number +} + +interface UseTableConfig { + getListApi: (option: any) => Promise + delListApi?: (option: any) => Promise + exportListApi?: (option: any) => Promise + // 返回数据格式配置 + response?: ResponseType + // 默认传递的参数 + defaultParams?: Recordable + props?: TableProps +} + +interface TableObject { + pageSize: number + currentPage: number + total: number + tableList: T[] + params: any + loading: boolean + exportLoading: boolean + currentRow: Nullable +} + +export const useTable = (config?: UseTableConfig) => { + const tableObject = reactive>({ + // 页数 + pageSize: 10, + // 当前页 + currentPage: 1, + // 总条数 + total: 10, + // 表格数据 + tableList: [], + // AxiosConfig 配置 + params: { + ...(config?.defaultParams || {}) + }, + // 加载中 + loading: true, + // 导出加载中 + exportLoading: false, + // 当前行的数据 + currentRow: null + }) + + const paramsObj = computed(() => { + return { + ...tableObject.params, + pageSize: tableObject.pageSize, + pageNo: tableObject.currentPage + } + }) + + watch( + () => tableObject.currentPage, + () => { + methods.getList() + } + ) + + watch( + () => tableObject.pageSize, + () => { + // 当前页不为1时,修改页数后会导致多次调用getList方法 + if (tableObject.currentPage === 1) { + methods.getList() + } else { + tableObject.currentPage = 1 + methods.getList() + } + } + ) + + // Table实例 + const tableRef = ref() + + // ElTable实例 + const elTableRef = ref>() + + const register = (ref: typeof Table & TableExpose, elRef: ComponentRef) => { + tableRef.value = ref + elTableRef.value = elRef + } + + const getTable = async () => { + await nextTick() + const table = unref(tableRef) + if (!table) { + console.error('The table is not registered. Please use the register method to register') + } + return table + } + + const delData = async (ids: string | number | string[] | number[]) => { + let idsLength = 1 + if (ids instanceof Array) { + idsLength = ids.length + await Promise.all( + ids.map(async (id: string | number) => { + await (config?.delListApi && config?.delListApi(id)) + }) + ) + } else { + await (config?.delListApi && config?.delListApi(ids)) + } + ElMessage.success(t('common.delSuccess')) + + // 计算出临界点 + tableObject.currentPage = + tableObject.total % tableObject.pageSize === idsLength || tableObject.pageSize === 1 + ? tableObject.currentPage > 1 + ? tableObject.currentPage - 1 + : tableObject.currentPage + : tableObject.currentPage + await methods.getList() + } + + const methods = { + getList: async () => { + tableObject.loading = true + const res = await config?.getListApi(unref(paramsObj)).finally(() => { + tableObject.loading = false + }) + if (res) { + tableObject.tableList = (res as unknown as ResponseType).list + tableObject.total = (res as unknown as ResponseType).total ?? 0 + } + }, + setProps: async (props: TableProps = {}) => { + const table = await getTable() + table?.setProps(props) + }, + setColumn: async (columnProps: TableSetPropsType[]) => { + const table = await getTable() + table?.setColumn(columnProps) + }, + getSelections: async () => { + const table = await getTable() + return (table?.selections || []) as T[] + }, + // 与Search组件结合 + setSearchParams: (data: Recordable) => { + tableObject.params = Object.assign(tableObject.params, { + pageSize: tableObject.pageSize, + pageNo: 1, + ...data + }) + // 页码不等于1时更新页码重新获取数据,页码等于1时重新获取数据 + if (tableObject.currentPage !== 1) { + tableObject.currentPage = 1 + } else { + methods.getList() + } + }, + // 删除数据 + delList: async ( + ids: string | number | string[] | number[], + multiple: boolean, + message = true + ) => { + const tableRef = await getTable() + if (multiple) { + if (!tableRef?.selections.length) { + ElMessage.warning(t('common.delNoData')) + return + } + } + if (message) { + ElMessageBox.confirm(t('common.delMessage'), t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }).then(async () => { + await delData(ids) + }) + } else { + await delData(ids) + } + }, + // 导出列表 + exportList: async (fileName: string) => { + tableObject.exportLoading = true + ElMessageBox.confirm(t('common.exportMessage'), t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + .then(async () => { + const res = await config?.exportListApi?.(unref(paramsObj) as unknown as T) + if (res) { + download.excel(res as unknown as Blob, fileName) + } + }) + .finally(() => { + tableObject.exportLoading = false + }) + } + } + + config?.props && methods.setProps(config.props) + + return { + register, + elTableRef, + tableObject, + methods, + // add by 芋艿:返回 tableMethods 属性,和 tableObject 更统一 + tableMethods: methods + } +} diff --git a/web/src/hooks/web/useTagsView.ts b/web/src/hooks/web/useTagsView.ts new file mode 100644 index 0000000..31eadb0 --- /dev/null +++ b/web/src/hooks/web/useTagsView.ts @@ -0,0 +1,63 @@ +import { useTagsViewStoreWithOut } from '@/store/modules/tagsView' +import { RouteLocationNormalizedLoaded, useRouter } from 'vue-router' +import { computed, nextTick, unref } from 'vue' + +export const useTagsView = () => { + const tagsViewStore = useTagsViewStoreWithOut() + + const { replace, currentRoute } = useRouter() + + const selectedTag = computed(() => tagsViewStore.getSelectedTag) + + const closeAll = (callback?: Fn) => { + tagsViewStore.delAllViews() + callback?.() + } + + const closeLeft = (callback?: Fn) => { + tagsViewStore.delLeftViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeRight = (callback?: Fn) => { + tagsViewStore.delRightViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeOther = (callback?: Fn) => { + tagsViewStore.delOthersViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeCurrent = (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { + if (view?.meta?.affix) return + tagsViewStore.delView(view || unref(currentRoute)) + + callback?.() + } + + const refreshPage = async (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { + tagsViewStore.delCachedView() + const { path, query } = view || unref(currentRoute) + await nextTick() + replace({ + path: '/redirect' + path, + query: query + }) + callback?.() + } + + const setTitle = (title: string, path?: string) => { + tagsViewStore.setTitle(title, path) + } + + return { + closeAll, + closeLeft, + closeRight, + closeOther, + closeCurrent, + refreshPage, + setTitle + } +} diff --git a/web/src/hooks/web/useTimeAgo.ts b/web/src/hooks/web/useTimeAgo.ts new file mode 100644 index 0000000..a6da281 --- /dev/null +++ b/web/src/hooks/web/useTimeAgo.ts @@ -0,0 +1,49 @@ +import { useTimeAgo as useTimeAgoCore, UseTimeAgoMessages } from '@vueuse/core' +import { useLocaleStoreWithOut } from '@/store/modules/locale' + +const TIME_AGO_MESSAGE_MAP: { + 'zh-CN': UseTimeAgoMessages + en: UseTimeAgoMessages +} = { + // @ts-ignore + 'zh-CN': { + justNow: '刚刚', + past: (n) => (n.match(/\d/) ? `${n}前` : n), + future: (n) => (n.match(/\d/) ? `${n}后` : n), + month: (n, past) => (n === 1 ? (past ? '上个月' : '下个月') : `${n} 个月`), + year: (n, past) => (n === 1 ? (past ? '去年' : '明年') : `${n} 年`), + day: (n, past) => (n === 1 ? (past ? '昨天' : '明天') : `${n} 天`), + week: (n, past) => (n === 1 ? (past ? '上周' : '下周') : `${n} 周`), + hour: (n) => `${n} 小时`, + minute: (n) => `${n} 分钟`, + second: (n) => `${n} 秒` + }, + // @ts-ignore + en: { + justNow: 'just now', + past: (n) => (n.match(/\d/) ? `${n} ago` : n), + future: (n) => (n.match(/\d/) ? `in ${n}` : n), + month: (n, past) => + n === 1 ? (past ? 'last month' : 'next month') : `${n} month${n > 1 ? 's' : ''}`, + year: (n, past) => + n === 1 ? (past ? 'last year' : 'next year') : `${n} year${n > 1 ? 's' : ''}`, + day: (n, past) => (n === 1 ? (past ? 'yesterday' : 'tomorrow') : `${n} day${n > 1 ? 's' : ''}`), + week: (n, past) => + n === 1 ? (past ? 'last week' : 'next week') : `${n} week${n > 1 ? 's' : ''}`, + hour: (n) => `${n} hour${n > 1 ? 's' : ''}`, + minute: (n) => `${n} minute${n > 1 ? 's' : ''}`, + second: (n) => `${n} second${n > 1 ? 's' : ''}` + } +} + +export const useTimeAgo = (time: Date | number | string) => { + const localeStore = useLocaleStoreWithOut() + + const currentLocale = computed(() => localeStore.getCurrentLocale) + + const timeAgo = useTimeAgoCore(time, { + messages: TIME_AGO_MESSAGE_MAP[unref(currentLocale).lang] + }) + + return timeAgo +} diff --git a/web/src/hooks/web/useTitle.ts b/web/src/hooks/web/useTitle.ts new file mode 100644 index 0000000..020a9b7 --- /dev/null +++ b/web/src/hooks/web/useTitle.ts @@ -0,0 +1,24 @@ +import { watch, ref } from 'vue' +import { isString } from '@/utils/is' +import { useAppStoreWithOut } from '@/store/modules/app' + +const appStore = useAppStoreWithOut() + +export const useTitle = (newTitle?: string) => { + const { t } = useI18n() + const title = ref( + newTitle ? `${appStore.getTitle} - ${t(newTitle as string)}` : appStore.getTitle + ) + + watch( + title, + (n, o) => { + if (isString(n) && n !== o && document) { + document.title = n + } + }, + { immediate: true } + ) + + return title +} diff --git a/web/src/hooks/web/useValidator.ts b/web/src/hooks/web/useValidator.ts new file mode 100644 index 0000000..151e35b --- /dev/null +++ b/web/src/hooks/web/useValidator.ts @@ -0,0 +1,60 @@ +import { useI18n } from '@/hooks/web/useI18n' +import { FormItemRule } from 'element-plus' + +const { t } = useI18n() + +interface LengthRange { + min: number + max: number + message?: string +} + +export const useValidator = () => { + const required = (message?: string): FormItemRule => { + return { + required: true, + message: message || t('common.required') + } + } + + const lengthRange = (options: LengthRange): FormItemRule => { + const { min, max, message } = options + + return { + min, + max, + message: message || t('common.lengthRange', { min, max }) + } + } + + const notSpace = (message?: string): FormItemRule => { + return { + validator: (_, val, callback) => { + if (val?.indexOf(' ') !== -1) { + callback(new Error(message || t('common.notSpace'))) + } else { + callback() + } + } + } + } + + const notSpecialCharacters = (message?: string): FormItemRule => { + return { + validator: (_, val, callback) => { + if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) { + callback(new Error(message || t('common.notSpecialCharacters'))) + } else { + callback() + } + } + } + } + + return { + required, + lengthRange, + notSpace, + notSpecialCharacters + } +} diff --git a/web/src/hooks/web/useWatermark.ts b/web/src/hooks/web/useWatermark.ts new file mode 100644 index 0000000..028926b --- /dev/null +++ b/web/src/hooks/web/useWatermark.ts @@ -0,0 +1,72 @@ +import { useAppStore } from '@/store/modules/app' +import { watch } from 'vue' + +const domSymbol = Symbol('watermark-dom') + +export function useWatermark(appendEl: HTMLElement | null = document.body) { + let func: Fn = () => {} + const id = domSymbol.toString() + const appStore = useAppStore() + let watermarkStr = '' + + const clear = () => { + const domId = document.getElementById(id) + if (domId) { + const el = appendEl + el && el.removeChild(domId) + } + window.removeEventListener('resize', func) + } + const createWatermark = (str: string) => { + clear() + + const can = document.createElement('canvas') + can.width = 300 + can.height = 240 + + const cans = can.getContext('2d') + if (cans) { + cans.rotate((-20 * Math.PI) / 120) + cans.font = '15px Vedana' + cans.fillStyle = appStore.getIsDark ? 'rgba(255, 255, 255, 0.15)' : 'rgba(0, 0, 0, 0.15)' + cans.textAlign = 'left' + cans.textBaseline = 'middle' + cans.fillText(str, can.width / 20, can.height) + } + + const div = document.createElement('div') + div.id = id + div.style.pointerEvents = 'none' + div.style.top = '0px' + div.style.left = '0px' + div.style.position = 'absolute' + div.style.zIndex = '100000000' + div.style.width = document.documentElement.clientWidth + 'px' + div.style.height = document.documentElement.clientHeight + 'px' + div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat' + const el = appendEl + el && el.appendChild(div) + return id + } + + function setWatermark(str: string) { + watermarkStr = str + createWatermark(str) + func = () => { + createWatermark(str) + } + window.addEventListener('resize', func) + } + + // 监听主题变化 + watch( + () => appStore.getIsDark, + () => { + if (watermarkStr) { + createWatermark(watermarkStr) + } + } + ) + + return { setWatermark, clear } +} diff --git a/web/src/layout/Layout.vue b/web/src/layout/Layout.vue new file mode 100644 index 0000000..d15025c --- /dev/null +++ b/web/src/layout/Layout.vue @@ -0,0 +1,75 @@ + + + diff --git a/web/src/layout/components/AppView.vue b/web/src/layout/components/AppView.vue new file mode 100644 index 0000000..df720a1 --- /dev/null +++ b/web/src/layout/components/AppView.vue @@ -0,0 +1,55 @@ + + + diff --git a/web/src/layout/components/Breadcrumb/index.ts b/web/src/layout/components/Breadcrumb/index.ts new file mode 100644 index 0000000..93ffe70 --- /dev/null +++ b/web/src/layout/components/Breadcrumb/index.ts @@ -0,0 +1,3 @@ +import Breadcrumb from './src/Breadcrumb.vue' + +export { Breadcrumb } diff --git a/web/src/layout/components/Breadcrumb/src/Breadcrumb.vue b/web/src/layout/components/Breadcrumb/src/Breadcrumb.vue new file mode 100644 index 0000000..80770a8 --- /dev/null +++ b/web/src/layout/components/Breadcrumb/src/Breadcrumb.vue @@ -0,0 +1,130 @@ + + + diff --git a/web/src/layout/components/Breadcrumb/src/helper.ts b/web/src/layout/components/Breadcrumb/src/helper.ts new file mode 100644 index 0000000..fb3ec19 --- /dev/null +++ b/web/src/layout/components/Breadcrumb/src/helper.ts @@ -0,0 +1,31 @@ +import { pathResolve } from '@/utils/routerHelper' +import type { RouteMeta } from 'vue-router' + +export const filterBreadcrumb = ( + routes: AppRouteRecordRaw[], + parentPath = '' +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + + for (const route of routes) { + const meta = route?.meta as RouteMeta + if (meta.hidden && !meta.canTo) { + continue + } + + const data: AppRouteRecordRaw = + !meta.alwaysShow && route.children?.length === 1 + ? { ...route.children[0], path: pathResolve(route.path, route.children[0].path) } + : { ...route } + + data.path = pathResolve(parentPath, data.path) + + if (data.children) { + data.children = filterBreadcrumb(data.children, data.path) + } + if (data) { + res.push(data) + } + } + return res +} diff --git a/web/src/layout/components/Collapse/index.ts b/web/src/layout/components/Collapse/index.ts new file mode 100644 index 0000000..73f65a3 --- /dev/null +++ b/web/src/layout/components/Collapse/index.ts @@ -0,0 +1,3 @@ +import Collapse from './src/Collapse.vue' + +export { Collapse } diff --git a/web/src/layout/components/Collapse/src/Collapse.vue b/web/src/layout/components/Collapse/src/Collapse.vue new file mode 100644 index 0000000..a8fc7ee --- /dev/null +++ b/web/src/layout/components/Collapse/src/Collapse.vue @@ -0,0 +1,35 @@ + + + diff --git a/web/src/layout/components/ContextMenu/index.ts b/web/src/layout/components/ContextMenu/index.ts new file mode 100644 index 0000000..2a7c1f0 --- /dev/null +++ b/web/src/layout/components/ContextMenu/index.ts @@ -0,0 +1,10 @@ +import ContextMenu from './src/ContextMenu.vue' +import { ElDropdown } from 'element-plus' +import type { RouteLocationNormalizedLoaded } from 'vue-router' + +export interface ContextMenuExpose { + elDropdownMenuRef: ComponentRef + tagItem: RouteLocationNormalizedLoaded +} + +export { ContextMenu } diff --git a/web/src/layout/components/ContextMenu/src/ContextMenu.vue b/web/src/layout/components/ContextMenu/src/ContextMenu.vue new file mode 100644 index 0000000..90eea4c --- /dev/null +++ b/web/src/layout/components/ContextMenu/src/ContextMenu.vue @@ -0,0 +1,76 @@ + + + diff --git a/web/src/layout/components/Footer/index.ts b/web/src/layout/components/Footer/index.ts new file mode 100644 index 0000000..bd052e0 --- /dev/null +++ b/web/src/layout/components/Footer/index.ts @@ -0,0 +1,3 @@ +import Footer from './src/Footer.vue' + +export { Footer } diff --git a/web/src/layout/components/Footer/src/Footer.vue b/web/src/layout/components/Footer/src/Footer.vue new file mode 100644 index 0000000..98ce7e5 --- /dev/null +++ b/web/src/layout/components/Footer/src/Footer.vue @@ -0,0 +1,27 @@ + + + diff --git a/web/src/layout/components/LocaleDropdown/index.ts b/web/src/layout/components/LocaleDropdown/index.ts new file mode 100644 index 0000000..d02e640 --- /dev/null +++ b/web/src/layout/components/LocaleDropdown/index.ts @@ -0,0 +1,3 @@ +import LocaleDropdown from './src/LocaleDropdown.vue' + +export { LocaleDropdown } diff --git a/web/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue b/web/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue new file mode 100644 index 0000000..95132db --- /dev/null +++ b/web/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue @@ -0,0 +1,52 @@ + + + diff --git a/web/src/layout/components/Logo/index.ts b/web/src/layout/components/Logo/index.ts new file mode 100644 index 0000000..1c4224c --- /dev/null +++ b/web/src/layout/components/Logo/index.ts @@ -0,0 +1,3 @@ +import Logo from './src/Logo.vue' + +export { Logo } diff --git a/web/src/layout/components/Logo/src/Logo.vue b/web/src/layout/components/Logo/src/Logo.vue new file mode 100644 index 0000000..d241130 --- /dev/null +++ b/web/src/layout/components/Logo/src/Logo.vue @@ -0,0 +1,88 @@ + + + diff --git a/web/src/layout/components/Menu/index.ts b/web/src/layout/components/Menu/index.ts new file mode 100644 index 0000000..a6ec696 --- /dev/null +++ b/web/src/layout/components/Menu/index.ts @@ -0,0 +1,3 @@ +import Menu from './src/Menu.vue' + +export { Menu } diff --git a/web/src/layout/components/Menu/src/Menu.vue b/web/src/layout/components/Menu/src/Menu.vue new file mode 100644 index 0000000..94a1da4 --- /dev/null +++ b/web/src/layout/components/Menu/src/Menu.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/web/src/layout/components/Menu/src/components/useRenderMenuItem.tsx b/web/src/layout/components/Menu/src/components/useRenderMenuItem.tsx new file mode 100644 index 0000000..301313f --- /dev/null +++ b/web/src/layout/components/Menu/src/components/useRenderMenuItem.tsx @@ -0,0 +1,50 @@ +import { ElSubMenu, ElMenuItem } from 'element-plus' +import { hasOneShowingChild } from '../helper' +import { isUrl } from '@/utils/is' +import { useRenderMenuTitle } from './useRenderMenuTitle' +import { pathResolve } from '@/utils/routerHelper' + +const { renderMenuTitle } = useRenderMenuTitle() + +export const useRenderMenuItem = () => + // allRouters: AppRouteRecordRaw[] = [], + { + const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => { + return routers + .filter((v) => !v.meta?.hidden) + .map((v) => { + const meta = v.meta ?? {} + const { oneShowingChild, onlyOneChild } = hasOneShowingChild(v.children, v) + const fullPath = isUrl(v.path) ? v.path : pathResolve(parentPath, v.path) // getAllParentPath(allRouters, v.path).join('/') + + if ( + oneShowingChild && + (!onlyOneChild?.children || onlyOneChild?.noShowingChildren) && + !meta?.alwaysShow + ) { + return ( + + {{ + default: () => renderMenuTitle(onlyOneChild ? onlyOneChild?.meta : meta) + }} + + ) + } else { + return ( + + {{ + title: () => renderMenuTitle(meta), + default: () => renderMenuItem(v.children!, fullPath) + }} + + ) + } + }) + } + + return { + renderMenuItem + } + } diff --git a/web/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx b/web/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx new file mode 100644 index 0000000..8941d9d --- /dev/null +++ b/web/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx @@ -0,0 +1,27 @@ +import type { RouteMeta } from 'vue-router' +import { Icon } from '@/components/Icon' +import { useI18n } from '@/hooks/web/useI18n' + +export const useRenderMenuTitle = () => { + const renderMenuTitle = (meta: RouteMeta) => { + const { t } = useI18n() + const { title = 'Please set title', icon } = meta + + return icon ? ( + <> + + + {t(title as string)} + + + ) : ( + + {t(title as string)} + + ) + } + + return { + renderMenuTitle + } +} diff --git a/web/src/layout/components/Menu/src/helper.ts b/web/src/layout/components/Menu/src/helper.ts new file mode 100644 index 0000000..c26f5f4 --- /dev/null +++ b/web/src/layout/components/Menu/src/helper.ts @@ -0,0 +1,54 @@ +import type { RouteMeta } from 'vue-router' +import { findPath } from '@/utils/tree' + +type OnlyOneChildType = AppRouteRecordRaw & { noShowingChildren?: boolean } + +interface HasOneShowingChild { + oneShowingChild?: boolean + onlyOneChild?: OnlyOneChildType +} + +export const getAllParentPath = (treeData: T[], path: string) => { + const menuList = findPath(treeData, (n) => n.path === path) as AppRouteRecordRaw[] + return (menuList || []).map((item) => item.path) +} + +export const hasOneShowingChild = ( + children: AppRouteRecordRaw[] = [], + parent: AppRouteRecordRaw +): HasOneShowingChild => { + const onlyOneChild = ref() + + const showingChildren = children.filter((v) => { + const meta = (v.meta ?? {}) as RouteMeta + if (meta.hidden) { + return false + } else { + // Temp set(will be used if only has one showing child) + onlyOneChild.value = v + return true + } + }) + + // When there is only one child router, the child router is displayed by default + if (showingChildren.length === 1) { + return { + oneShowingChild: true, + onlyOneChild: unref(onlyOneChild) + } + } + + // Show parent if there are no child router to display + if (!showingChildren.length) { + onlyOneChild.value = { ...parent, path: '', noShowingChildren: true } + return { + oneShowingChild: true, + onlyOneChild: unref(onlyOneChild) + } + } + + return { + oneShowingChild: false, + onlyOneChild: unref(onlyOneChild) + } +} diff --git a/web/src/layout/components/Message/index.ts b/web/src/layout/components/Message/index.ts new file mode 100644 index 0000000..dfe0207 --- /dev/null +++ b/web/src/layout/components/Message/index.ts @@ -0,0 +1,3 @@ +import Message from './src/Message.vue' + +export { Message } diff --git a/web/src/layout/components/Message/src/Message.vue b/web/src/layout/components/Message/src/Message.vue new file mode 100644 index 0000000..d769d88 --- /dev/null +++ b/web/src/layout/components/Message/src/Message.vue @@ -0,0 +1,132 @@ + + + diff --git a/web/src/layout/components/Screenfull/index.ts b/web/src/layout/components/Screenfull/index.ts new file mode 100644 index 0000000..faec2d8 --- /dev/null +++ b/web/src/layout/components/Screenfull/index.ts @@ -0,0 +1,3 @@ +import Screenfull from './src/Screenfull.vue' + +export { Screenfull } diff --git a/web/src/layout/components/Screenfull/src/Screenfull.vue b/web/src/layout/components/Screenfull/src/Screenfull.vue new file mode 100644 index 0000000..4c045f2 --- /dev/null +++ b/web/src/layout/components/Screenfull/src/Screenfull.vue @@ -0,0 +1,32 @@ + + + diff --git a/web/src/layout/components/Setting/index.ts b/web/src/layout/components/Setting/index.ts new file mode 100644 index 0000000..b64c9ad --- /dev/null +++ b/web/src/layout/components/Setting/index.ts @@ -0,0 +1,3 @@ +import Setting from './src/Setting.vue' + +export { Setting } diff --git a/web/src/layout/components/Setting/src/Setting.vue b/web/src/layout/components/Setting/src/Setting.vue new file mode 100644 index 0000000..2973674 --- /dev/null +++ b/web/src/layout/components/Setting/src/Setting.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/web/src/layout/components/Setting/src/components/ColorRadioPicker.vue b/web/src/layout/components/Setting/src/components/ColorRadioPicker.vue new file mode 100644 index 0000000..fcc5e75 --- /dev/null +++ b/web/src/layout/components/Setting/src/components/ColorRadioPicker.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/web/src/layout/components/Setting/src/components/InterfaceDisplay.vue b/web/src/layout/components/Setting/src/components/InterfaceDisplay.vue new file mode 100644 index 0000000..3ba5c6b --- /dev/null +++ b/web/src/layout/components/Setting/src/components/InterfaceDisplay.vue @@ -0,0 +1,236 @@ + + + diff --git a/web/src/layout/components/Setting/src/components/LayoutRadioPicker.vue b/web/src/layout/components/Setting/src/components/LayoutRadioPicker.vue new file mode 100644 index 0000000..801686c --- /dev/null +++ b/web/src/layout/components/Setting/src/components/LayoutRadioPicker.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/web/src/layout/components/SizeDropdown/index.ts b/web/src/layout/components/SizeDropdown/index.ts new file mode 100644 index 0000000..516488d --- /dev/null +++ b/web/src/layout/components/SizeDropdown/index.ts @@ -0,0 +1,3 @@ +import SizeDropdown from './src/SizeDropdown.vue' + +export { SizeDropdown } diff --git a/web/src/layout/components/SizeDropdown/src/SizeDropdown.vue b/web/src/layout/components/SizeDropdown/src/SizeDropdown.vue new file mode 100644 index 0000000..3e15224 --- /dev/null +++ b/web/src/layout/components/SizeDropdown/src/SizeDropdown.vue @@ -0,0 +1,40 @@ + + + diff --git a/web/src/layout/components/TabMenu/index.ts b/web/src/layout/components/TabMenu/index.ts new file mode 100644 index 0000000..b5fd71c --- /dev/null +++ b/web/src/layout/components/TabMenu/index.ts @@ -0,0 +1,3 @@ +import TabMenu from './src/TabMenu.vue' + +export { TabMenu } diff --git a/web/src/layout/components/TabMenu/src/TabMenu.vue b/web/src/layout/components/TabMenu/src/TabMenu.vue new file mode 100644 index 0000000..efad6a6 --- /dev/null +++ b/web/src/layout/components/TabMenu/src/TabMenu.vue @@ -0,0 +1,240 @@ + + + diff --git a/web/src/layout/components/TabMenu/src/helper.ts b/web/src/layout/components/TabMenu/src/helper.ts new file mode 100644 index 0000000..cce3932 --- /dev/null +++ b/web/src/layout/components/TabMenu/src/helper.ts @@ -0,0 +1,51 @@ +import { getAllParentPath } from '@/layout/components/Menu/src/helper' +import type { RouteMeta } from 'vue-router' +import { isUrl } from '@/utils/is' +import { cloneDeep } from 'lodash-es' + +export type TabMapTypes = { + [key: string]: string[] +} + +export const tabPathMap = reactive({}) + +export const initTabMap = (routes: AppRouteRecordRaw[]) => { + for (const v of routes) { + const meta = (v.meta ?? {}) as RouteMeta + if (!meta?.hidden) { + tabPathMap[v.path] = [] + } + } +} + +export const filterMenusPath = ( + routes: AppRouteRecordRaw[], + allRoutes: AppRouteRecordRaw[] +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + for (const v of routes) { + let data: Nullable = null + const meta = (v.meta ?? {}) as RouteMeta + if (!meta.hidden || meta.canTo) { + const allParentPath = getAllParentPath(allRoutes, v.path) + + const fullPath = isUrl(v.path) ? v.path : allParentPath.join('/') + + data = cloneDeep(v) + data.path = fullPath + if (v.children && data) { + data.children = filterMenusPath(v.children, allRoutes) + } + + if (data) { + res.push(data) + } + + if (allParentPath.length && Reflect.has(tabPathMap, allParentPath[0])) { + tabPathMap[allParentPath[0]].push(fullPath) + } + } + } + + return res +} diff --git a/web/src/layout/components/TagsView/index.ts b/web/src/layout/components/TagsView/index.ts new file mode 100644 index 0000000..30e604a --- /dev/null +++ b/web/src/layout/components/TagsView/index.ts @@ -0,0 +1,3 @@ +import TagsView from './src/TagsView.vue' + +export { TagsView } diff --git a/web/src/layout/components/TagsView/src/TagsView.vue b/web/src/layout/components/TagsView/src/TagsView.vue new file mode 100644 index 0000000..af492ba --- /dev/null +++ b/web/src/layout/components/TagsView/src/TagsView.vue @@ -0,0 +1,651 @@ + + + + + diff --git a/web/src/layout/components/TagsView/src/helper.ts b/web/src/layout/components/TagsView/src/helper.ts new file mode 100644 index 0000000..22f6a50 --- /dev/null +++ b/web/src/layout/components/TagsView/src/helper.ts @@ -0,0 +1,21 @@ +import type { RouteMeta, RouteLocationNormalizedLoaded } from 'vue-router' +import { pathResolve } from '@/utils/routerHelper' + +export const filterAffixTags = (routes: AppRouteRecordRaw[], parentPath = '') => { + let tags: RouteLocationNormalizedLoaded[] = [] + routes.forEach((route) => { + const meta = route.meta as RouteMeta + const tagPath = pathResolve(parentPath, route.path) + if (meta?.affix) { + tags.push({ ...route, path: tagPath, fullPath: tagPath } as RouteLocationNormalizedLoaded) + } + if (route.children) { + const tempTags: RouteLocationNormalizedLoaded[] = filterAffixTags(route.children, tagPath) + if (tempTags.length >= 1) { + tags = [...tags, ...tempTags] + } + } + }) + + return tags +} diff --git a/web/src/layout/components/TenantVisit/index.vue b/web/src/layout/components/TenantVisit/index.vue new file mode 100644 index 0000000..2d7dced --- /dev/null +++ b/web/src/layout/components/TenantVisit/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/web/src/layout/components/ThemeSwitch/index.ts b/web/src/layout/components/ThemeSwitch/index.ts new file mode 100644 index 0000000..823a276 --- /dev/null +++ b/web/src/layout/components/ThemeSwitch/index.ts @@ -0,0 +1,3 @@ +import ThemeSwitch from './src/ThemeSwitch.vue' + +export { ThemeSwitch } diff --git a/web/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue b/web/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue new file mode 100644 index 0000000..39a8cfd --- /dev/null +++ b/web/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue @@ -0,0 +1,46 @@ + + + + diff --git a/web/src/layout/components/ToolHeader.vue b/web/src/layout/components/ToolHeader.vue new file mode 100644 index 0000000..276eed1 --- /dev/null +++ b/web/src/layout/components/ToolHeader.vue @@ -0,0 +1,103 @@ + + + diff --git a/web/src/layout/components/UserInfo/index.ts b/web/src/layout/components/UserInfo/index.ts new file mode 100644 index 0000000..c3a34ab --- /dev/null +++ b/web/src/layout/components/UserInfo/index.ts @@ -0,0 +1,3 @@ +import UserInfo from './src/UserInfo.vue' + +export { UserInfo } diff --git a/web/src/layout/components/UserInfo/src/UserInfo.vue b/web/src/layout/components/UserInfo/src/UserInfo.vue new file mode 100644 index 0000000..3adc34b --- /dev/null +++ b/web/src/layout/components/UserInfo/src/UserInfo.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/web/src/layout/components/UserInfo/src/components/LockDialog.vue b/web/src/layout/components/UserInfo/src/components/LockDialog.vue new file mode 100644 index 0000000..7257be1 --- /dev/null +++ b/web/src/layout/components/UserInfo/src/components/LockDialog.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/web/src/layout/components/UserInfo/src/components/LockPage.vue b/web/src/layout/components/UserInfo/src/components/LockPage.vue new file mode 100644 index 0000000..27d0a43 --- /dev/null +++ b/web/src/layout/components/UserInfo/src/components/LockPage.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/web/src/layout/components/useRenderLayout.tsx b/web/src/layout/components/useRenderLayout.tsx new file mode 100644 index 0000000..a631aa0 --- /dev/null +++ b/web/src/layout/components/useRenderLayout.tsx @@ -0,0 +1,294 @@ +import { computed } from 'vue' +import { useAppStore } from '@/store/modules/app' +import { Menu } from '@/layout/components/Menu' +import { TabMenu } from '@/layout/components/TabMenu' +import { TagsView } from '@/layout/components/TagsView' +import { Logo } from '@/layout/components/Logo' +import AppView from './AppView.vue' +import ToolHeader from './ToolHeader.vue' +import { ElScrollbar } from 'element-plus' +import { useDesign } from '@/hooks/web/useDesign' + +const { getPrefixCls } = useDesign() + +const prefixCls = getPrefixCls('layout') + +const appStore = useAppStore() + +const pageLoading = computed(() => appStore.getPageLoading) + +// 标签页 +const tagsView = computed(() => appStore.getTagsView) + +// 菜单折叠 +const collapse = computed(() => appStore.getCollapse) + +// logo +const logo = computed(() => appStore.logo) + +// 固定头部 +const fixedHeader = computed(() => appStore.getFixedHeader) + +// 是否是移动端 +const mobile = computed(() => appStore.getMobile) + +// 固定菜单 +const fixedMenu = computed(() => appStore.getFixedMenu) + +export const useRenderLayout = () => { + const renderClassic = () => { + return ( + <> +
    + {logo.value ? ( + + ) : undefined} + +
    +
    + +
    + + + {tagsView.value ? ( + + ) : undefined} +
    + + +
    +
    + + ) + } + + const renderTopLeft = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    +
    + + ) + } + + const renderTop = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    + + ) + } + + const renderCutMenu = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    +
    + + ) + } + + return { + renderClassic, + renderTopLeft, + renderTop, + renderCutMenu + } +} diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts new file mode 100644 index 0000000..8abe20f --- /dev/null +++ b/web/src/locales/en.ts @@ -0,0 +1,459 @@ +export default { + common: { + inputText: 'Please input', + selectText: 'Please select', + startTimeText: 'Start time', + endTimeText: 'End time', + login: 'Login', + required: 'This is required', + loginOut: 'Login out', + document: 'Document', + profile: 'User Center', + reminder: 'Reminder', + loginOutMessage: 'Exit the system?', + back: 'Back', + ok: 'OK', + save: 'Save', + cancel: 'Cancel', + close: 'Close', + reload: 'Reload current', + success: 'Success', + closeTab: 'Close current', + closeTheLeftTab: 'Close left', + closeTheRightTab: 'Close right', + closeOther: 'Close other', + closeAll: 'Close all', + prevLabel: 'Prev', + nextLabel: 'Next', + skipLabel: 'Jump', + doneLabel: 'End', + menu: 'Menu', + menuDes: 'Menu bar rendered in routed structure', + collapse: 'Collapse', + collapseDes: 'Expand and zoom the menu bar', + tagsView: 'Tags view', + tagsViewDes: 'Used to record routing history', + tool: 'Tool', + toolDes: 'Used to set up custom systems', + query: 'Query', + reset: 'Reset', + shrink: 'Put away', + expand: 'Expand', + confirmTitle: 'System Hint', + exportMessage: 'Whether to confirm export data item?', + importMessage: 'Whether to confirm import data item?', + createSuccess: 'Create Success', + updateSuccess: 'Update Success', + delMessage: 'Delete the selected data?', + delDataMessage: 'Delete the data?', + delNoData: 'Please select the data to delete', + delSuccess: 'Deleted successfully', + index: 'Index', + status: 'Status', + createTime: 'Create Time', + updateTime: 'Update Time', + copy: 'Copy', + copySuccess: 'Copy Success', + copyError: 'Copy Error' + }, + lock: { + lockScreen: 'Lock screen', + lock: 'Lock', + lockPassword: 'Lock screen password', + unlock: 'Click to unlock', + backToLogin: 'Back to login', + entrySystem: 'Entry the system', + placeholder: 'Please enter the lock screen password', + message: 'Lock screen password error' + }, + error: { + noPermission: `Sorry, you don't have permission to access this page.`, + pageError: 'Sorry, the page you visited does not exist.', + networkError: 'Sorry, the server reported an error.', + returnToHome: 'Return to home' + }, + permission: { + hasPermission: `Please set the operation permission label value`, + hasRole: `Please set the role permission tag value` + }, + setting: { + projectSetting: 'Project setting', + theme: 'Theme', + layout: 'Layout', + systemTheme: 'System theme', + menuTheme: 'Menu theme', + interfaceDisplay: 'Interface display', + breadcrumb: 'Breadcrumb', + breadcrumbIcon: 'Breadcrumb icon', + collapseMenu: 'Collapse menu', + hamburgerIcon: 'Hamburger icon', + screenfullIcon: 'Screenfull icon', + sizeIcon: 'Size icon', + localeIcon: 'Locale icon', + messageIcon: 'Message icon', + tagsView: 'Tags view', + logo: 'Logo', + greyMode: 'Grey mode', + fixedHeader: 'Fixed header', + headerTheme: 'Header theme', + cutMenu: 'Cut Menu', + copy: 'Copy', + clearAndReset: 'Clear cache and reset', + copySuccess: 'Copy success', + copyFailed: 'Copy failed', + footer: 'Footer', + uniqueOpened: 'Unique opened', + tagsViewIcon: 'Tags view icon', + reExperienced: 'Please exit the login experience again', + fixedMenu: 'Fixed menu' + }, + size: { + default: 'Default', + large: 'Large', + small: 'Small' + }, + login: { + welcome: 'Welcome to the system', + message: 'Backstage management system', + tenantname: 'TenantName', + username: 'Username', + password: 'Password', + code: 'verification code', + login: 'Sign in', + relogin: 'Sign in again', + otherLogin: 'Sign in with', + register: 'Register', + checkPassword: 'Confirm password', + remember: 'Remember me', + hasUser: 'Existing account? Go to login', + forgetPassword: 'Forget password?', + tenantNamePlaceholder: 'Please Enter Tenant Name', + usernamePlaceholder: 'Please Enter Username', + passwordPlaceholder: 'Please Enter Password', + codePlaceholder: 'Please Enter Verification Code', + mobileTitle: 'Mobile sign in', + mobileNumber: 'Mobile Number', + mobileNumberPlaceholder: 'Plaease Enter Mobile Number', + backLogin: 'back', + getSmsCode: 'Get SMS Code', + btnMobile: 'Mobile sign in', + btnQRCode: 'QR code sign in', + qrcode: 'Scan the QR code to log in', + btnRegister: 'Sign up', + SmsSendMsg: 'code has been sent', + resetPassword: "Reset Password", + resetPasswordSuccess: "Reset Password Success", + invalidTenantName:"Invalid Tenant Name" + }, + captcha: { + verification: 'Please complete security verification', + slide: 'Swipe right to complete verification', + point: 'Please click', + success: 'Verification succeeded', + fail: 'verification failed' + }, + router: { + login: 'Login', + home: 'Home', + analysis: 'Analysis', + workplace: 'Workplace' + }, + analysis: { + newUser: 'New user', + unreadInformation: 'Unread information', + transactionAmount: 'Transaction amount', + totalShopping: 'Total Shopping', + monthlySales: 'Monthly sales', + userAccessSource: 'User access source', + january: 'January', + february: 'February', + march: 'March', + april: 'April', + may: 'May', + june: 'June', + july: 'July', + august: 'August', + september: 'September', + october: 'October', + november: 'November', + december: 'December', + estimate: 'Estimate', + actual: 'Actual', + directAccess: 'Airect access', + mailMarketing: 'Mail marketing', + allianceAdvertising: 'Alliance advertising', + videoAdvertising: 'Video advertising', + searchEngines: 'Search engines', + weeklyUserActivity: 'Weekly user activity', + activeQuantity: 'Active quantity', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + sunday: 'Sunday' + }, + workplace: { + welcome: 'Hello', + happyDay: 'Wish you happy every day!', + toady: `It's sunny today`, + notice: 'Announcement', + project: 'Project', + access: 'Project access', + toDo: 'To do', + introduction: 'A serious introduction', + shortcutOperation: 'Quick entry', + operation: 'Operation', + index: 'Index', + personal: 'Personal', + team: 'Team', + quote: 'Quote', + contribution: 'Contribution', + hot: 'Hot', + yield: 'Yield', + dynamic: 'Dynamic', + push: 'push', + follow: 'Follow' + }, + form: { + input: 'Input', + inputNumber: 'InputNumber', + default: 'Default', + icon: 'Icon', + mixed: 'Mixed', + textarea: 'Textarea', + slot: 'Slot', + position: 'Position', + autocomplete: 'Autocomplete', + select: 'Select', + selectGroup: 'Select Group', + selectV2: 'SelectV2', + cascader: 'Cascader', + switch: 'Switch', + rate: 'Rate', + colorPicker: 'Color Picker', + transfer: 'Transfer', + render: 'Render', + radio: 'Radio', + button: 'Button', + checkbox: 'Checkbox', + slider: 'Slider', + datePicker: 'Date Picker', + shortcuts: 'Shortcuts', + today: 'Today', + yesterday: 'Yesterday', + aWeekAgo: 'A week ago', + week: 'Week', + year: 'Year', + month: 'Month', + dates: 'Dates', + daterange: 'Date Range', + monthrange: 'Month Range', + dateTimePicker: 'DateTimePicker', + dateTimerange: 'Datetime Range', + timePicker: 'Time Picker', + timeSelect: 'Time Select', + inputPassword: 'input Password', + passwordStrength: 'Password Strength', + operate: 'operate', + change: 'Change', + restore: 'Restore', + disabled: 'Disabled', + disablement: 'Disablement', + delete: 'Delete', + add: 'Add', + setValue: 'Set value', + resetValue: 'Reset value', + set: 'Set', + subitem: 'Subitem', + formValidation: 'Form validation', + verifyReset: 'Verify reset', + remark: 'Remark' + }, + watermark: { + watermark: 'Watermark' + }, + table: { + table: 'Table', + index: 'Index', + title: 'Title', + author: 'Author', + createTime: 'Create time', + action: 'Action', + pagination: 'pagination', + reserveIndex: 'Reserve index', + restoreIndex: 'Restore index', + showSelections: 'Show selections', + hiddenSelections: 'Restore selections', + showExpandedRows: 'Show expanded rows', + hiddenExpandedRows: 'Hidden expanded rows', + header: 'Header' + }, + action: { + create: 'Create', + add: 'Add', + del: 'Delete', + delete: 'Delete', + edit: 'Edit', + update: 'Update', + preview: 'Preview', + more: 'More', + sync: 'Sync', + save: 'Save', + detail: 'Detail', + export: 'Export', + import: 'Import', + generate: 'Generate', + logout: 'Login Out', + test: 'Test', + typeCreate: 'Dict Type Create', + typeUpdate: 'Dict Type Eidt', + dataCreate: 'Dict Data Create', + dataUpdate: 'Dict Data Eidt', + fileUpload: 'File Upload' + }, + dialog: { + dialog: 'Dialog', + open: 'Open', + close: 'Close' + }, + sys: { + api: { + operationFailed: 'Operation failed', + errorTip: 'Error Tip', + errorMessage: 'The operation failed, the system is abnormal!', + timeoutMessage: 'Login timed out, please log in again!', + apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!', + apiRequestFailed: 'The interface request failed, please try again later!', + networkException: 'network anomaly', + networkExceptionMsg: + 'Please check if your network connection is normal! The network is abnormal', + + errMsg401: 'The user does not have permission (token, user name, password error)!', + errMsg403: 'The user is authorized, but access is forbidden!', + errMsg404: 'Network request error, the resource was not found!', + errMsg405: 'Network request error, request method not allowed!', + errMsg408: 'Network request timed out!', + errMsg500: 'Server error, please contact the administrator!', + errMsg501: 'The network is not implemented!', + errMsg502: 'Network Error!', + errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!', + errMsg504: 'Network timeout!', + errMsg505: 'The http version does not support the request!', + errMsg901: 'Demo mode, no write operations are possible!' + }, + app: { + logoutTip: 'Reminder', + logoutMessage: 'Confirm to exit the system?', + menuLoading: 'Menu loading...' + }, + exception: { + backLogin: 'Back Login', + backHome: 'Back Home', + subTitle403: "Sorry, you don't have access to this page.", + subTitle404: 'Sorry, the page you visited does not exist.', + subTitle500: 'Sorry, the server is reporting an error.', + noDataTitle: 'No data on the current page.', + networkErrorTitle: 'Network Error', + networkErrorSubTitle: + 'Sorry, Your network connection has been disconnected, please check your network!' + }, + lock: { + unlock: 'Click to unlock', + alert: 'Lock screen password error', + backToLogin: 'Back to login', + entry: 'Enter the system', + placeholder: 'Please enter the lock screen password or user password' + }, + login: { + backSignIn: 'Back sign in', + mobileSignInFormTitle: 'Mobile sign in', + qrSignInFormTitle: 'Qr code sign in', + signInFormTitle: 'Sign in', + signUpFormTitle: 'Sign up', + forgetFormTitle: 'Reset password', + + signInTitle: 'Backstage management system', + signInDesc: 'Enter your personal details and get started!', + policy: 'I agree to the xxx Privacy Policy', + scanSign: `scanning the code to complete the login`, + + loginButton: 'Sign in', + registerButton: 'Sign up', + rememberMe: 'Remember me', + forgetPassword: 'Forget Password?', + otherSignIn: 'Sign in with', + + // notify + loginSuccessTitle: 'Login successful', + loginSuccessDesc: 'Welcome back', + + // placeholder + accountPlaceholder: 'Please input username', + passwordPlaceholder: 'Please input password', + smsPlaceholder: 'Please input sms code', + mobilePlaceholder: 'Please input mobile', + policyPlaceholder: 'Register after checking', + diffPwd: 'The two passwords are inconsistent', + + userName: 'Username', + password: 'Password', + confirmPassword: 'Confirm Password', + email: 'Email', + smsCode: 'SMS code', + mobile: 'Mobile' + } + }, + profile: { + user: { + title: 'Personal Information', + username: 'User Name', + nickname: 'Nick Name', + mobile: 'Phone Number', + email: 'User Mail', + dept: 'Department', + posts: 'Position', + roles: 'Own Role', + sex: 'Sex', + man: 'Man', + woman: 'Woman', + createTime: 'Created Date' + }, + info: { + title: 'Basic Information', + basicInfo: 'Basic Information', + resetPwd: 'Reset Password', + }, + rules: { + nickname: 'Please Enter User Nickname', + mail: 'Please Input The Email Address', + truemail: 'Please Input The Correct Email Address', + phone: 'Please Enter The Phone Number', + truephone: 'Please Enter The Correct Phone Number' + }, + password: { + oldPassword: 'Old PassWord', + newPassword: 'New Password', + confirmPassword: 'Confirm Password', + oldPwdMsg: 'Please Enter Old Password', + newPwdMsg: 'Please Enter New Password', + cfPwdMsg: 'Please Enter Confirm Password', + diffPwd: 'The Passwords Entered Twice No Match' + } + }, + cropper: { + selectImage: 'Select Image', + uploadSuccess: 'Uploaded success!', + modalTitle: 'Avatar upload', + okText: 'Confirm and upload', + btn_reset: 'Reset', + btn_rotate_left: 'Counterclockwise rotation', + btn_rotate_right: 'Clockwise rotation', + btn_scale_x: 'Flip horizontal', + btn_scale_y: 'Flip vertical', + btn_zoom_in: 'Zoom in', + btn_zoom_out: 'Zoom out', + preview: 'Preivew' + } +} diff --git a/web/src/locales/zh-CN.ts b/web/src/locales/zh-CN.ts new file mode 100644 index 0000000..cf24b94 --- /dev/null +++ b/web/src/locales/zh-CN.ts @@ -0,0 +1,453 @@ +export default { + common: { + inputText: '请输入', + selectText: '请选择', + startTimeText: '开始时间', + endTimeText: '结束时间', + login: '登录', + required: '该项为必填项', + loginOut: '退出系统', + profile: '个人中心', + reminder: '温馨提示', + loginOutMessage: '是否退出本系统?', + back: '返回', + ok: '确定', + save: '保存', + cancel: '取消', + close: '关闭', + reload: '重新加载', + success: '成功', + closeTab: '关闭标签页', + closeTheLeftTab: '关闭左侧标签页', + closeTheRightTab: '关闭右侧标签页', + closeOther: '关闭其他标签页', + closeAll: '关闭全部标签页', + prevLabel: '上一步', + nextLabel: '下一步', + skipLabel: '跳过', + doneLabel: '结束', + menu: '菜单', + menuDes: '以路由的结构渲染的菜单栏', + collapse: '展开缩收', + collapseDes: '展开和缩放菜单栏', + tagsView: '标签页', + tagsViewDes: '用于记录路由历史记录', + tool: '工具', + toolDes: '用于设置定制系统', + query: '查询', + reset: '重置', + shrink: '收起', + expand: '展开', + confirmTitle: '系统提示', + exportMessage: '是否确认导出数据项?', + importMessage: '是否确认导入数据项?', + createSuccess: '新增成功', + updateSuccess: '修改成功', + delMessage: '是否删除所选中数据?', + delDataMessage: '是否删除数据?', + delNoData: '请选择需要删除的数据', + delSuccess: '删除成功', + index: '序号', + status: '状态', + createTime: '创建时间', + updateTime: '更新时间', + copy: '复制', + copySuccess: '复制成功', + copyError: '复制失败' + }, + lock: { + lockScreen: '锁定屏幕', + lock: '锁定', + lockPassword: '锁屏密码', + unlock: '点击解锁', + backToLogin: '返回登录', + entrySystem: '进入系统', + placeholder: '请输入锁屏密码', + message: '锁屏密码错误' + }, + error: { + noPermission: `抱歉,您无权访问此页面。`, + pageError: '抱歉,您访问的页面不存在。', + networkError: '抱歉,服务器报告错误。', + returnToHome: '返回首页' + }, + permission: { + hasPermission: `请设置操作权限标签值`, + hasRole: `请设置角色权限标签值` + }, + setting: { + projectSetting: '项目配置', + theme: '主题', + layout: '布局', + systemTheme: '系统主题', + menuTheme: '菜单主题', + interfaceDisplay: '界面显示', + breadcrumb: '面包屑', + breadcrumbIcon: '面包屑图标', + collapseMenu: '折叠菜单', + hamburgerIcon: '折叠图标', + screenfullIcon: '全屏图标', + sizeIcon: '尺寸图标', + localeIcon: '多语言图标', + messageIcon: '消息图标', + tagsView: '标签页', + tagsViewImmerse: '标签页沉浸', + logo: '标志', + greyMode: '灰色模式', + fixedHeader: '固定头部', + headerTheme: '头部主题', + cutMenu: '切割菜单', + copy: '拷贝', + clearAndReset: '清除缓存并且重置', + copySuccess: '拷贝成功', + copyFailed: '拷贝失败', + footer: '页脚', + uniqueOpened: '菜单手风琴', + tagsViewIcon: '标签页图标', + reExperienced: '请重新退出登录体验', + fixedMenu: '固定菜单' + }, + size: { + default: '默认', + large: '大', + small: '小' + }, + login: { + welcome: '欢迎使用本系统', + message: 'welcome use this admin', + tenantname: '租户名称', + username: '用户名', + password: '密码', + code: '验证码', + login: '登录', + relogin: '重新登录', + otherLogin: '其他登录方式', + register: '注册', + checkPassword: '确认密码', + remember: '记住我', + hasUser: '已有账号?去登录', + forgetPassword: '忘记密码?', + tenantNamePlaceholder: '请输入租户名称', + usernamePlaceholder: '请输入用户名', + passwordPlaceholder: '请输入密码', + codePlaceholder: '请输入验证码', + mobileTitle: '手机登录', + mobileNumber: '手机号码', + mobileNumberPlaceholder: '请输入手机号码', + backLogin: '返回', + getSmsCode: '获取验证码', + btnMobile: '手机登录', + btnQRCode: '二维码登录', + qrcode: '扫描二维码登录', + btnRegister: '注册', + SmsSendMsg: '验证码已发送', + resetPassword: '重置密码', + resetPasswordSuccess: '重置密码成功', + invalidTenantName: '无效的租户名称' + }, + captcha: { + verification: '请完成安全验证', + slide: '向右滑动完成验证', + point: '请依次点击', + success: '验证成功', + fail: '验证失败' + }, + router: { + login: '登录', + home: '首页', + analysis: '分析页', + workplace: '工作台' + }, + analysis: { + newUser: '新增用户', + unreadInformation: '未读消息', + transactionAmount: '成交金额', + totalShopping: '购物总量', + monthlySales: '每月销售额', + userAccessSource: '用户访问来源', + january: '一月', + february: '二月', + march: '三月', + april: '四月', + may: '五月', + june: '六月', + july: '七月', + august: '八月', + september: '九月', + october: '十月', + november: '十一月', + december: '十二月', + estimate: '预计', + actual: '实际', + directAccess: '直接访问', + mailMarketing: '邮件营销', + allianceAdvertising: '联盟广告', + videoAdvertising: '视频广告', + searchEngines: '搜索引擎', + weeklyUserActivity: '每周用户活跃量', + activeQuantity: '活跃量', + monday: '周一', + tuesday: '周二', + wednesday: '周三', + thursday: '周四', + friday: '周五', + saturday: '周六', + sunday: '周日' + }, + workplace: { + welcome: '你好', + happyDay: '祝你开心每一天!', + toady: '今日晴', + notice: '通知公告', + project: '项目数', + access: '项目访问', + toDo: '待办', + introduction: '一个正经的简介', + shortcutOperation: '快捷入口', + operation: '操作', + index: '指数', + personal: '个人', + team: '团队', + quote: '引用', + contribution: '贡献', + hot: '热度', + yield: '产量', + dynamic: '动态', + push: '推送', + follow: '关注' + }, + form: { + input: '输入框', + inputNumber: '数字输入框', + default: '默认', + icon: '图标', + mixed: '复合型', + textarea: '多行文本', + slot: '插槽', + position: '位置', + autocomplete: '自动补全', + select: '选择器', + selectGroup: '选项分组', + selectV2: '虚拟列表选择器', + cascader: '级联选择器', + switch: '开关', + rate: '评分', + colorPicker: '颜色选择器', + transfer: '穿梭框', + render: '渲染器', + radio: '单选框', + button: '按钮', + checkbox: '多选框', + slider: '滑块', + datePicker: '日期选择器', + shortcuts: '快捷选项', + today: '今天', + yesterday: '昨天', + aWeekAgo: '一周前', + week: '周', + year: '年', + month: '月', + dates: '日期', + daterange: '日期范围', + monthrange: '月份范围', + dateTimePicker: '日期时间选择器', + dateTimerange: '日期时间范围', + timePicker: '时间选择器', + timeSelect: '时间选择', + inputPassword: '密码输入框', + passwordStrength: '密码强度', + operate: '操作', + change: '更改', + restore: '还原', + disabled: '禁用', + disablement: '解除禁用', + delete: '删除', + add: '添加', + setValue: '设置值', + resetValue: '重置值', + set: '设置', + subitem: '子项', + formValidation: '表单验证', + verifyReset: '验证重置', + remark: '备注' + }, + watermark: { + watermark: '水印' + }, + table: { + table: '表格', + index: '序号', + title: '标题', + author: '作者', + createTime: '创建时间', + action: '操作', + pagination: '分页', + reserveIndex: '叠加序号', + restoreIndex: '还原序号', + showSelections: '显示多选', + hiddenSelections: '隐藏多选', + showExpandedRows: '显示展开行', + hiddenExpandedRows: '隐藏展开行', + header: '头部' + }, + action: { + create: '新增', + add: '新增', + del: '删除', + delete: '删除', + edit: '编辑', + update: '编辑', + preview: '预览', + more: '更多', + sync: '同步', + save: '保存', + detail: '详情', + export: '导出', + import: '导入', + generate: '生成', + logout: '强制退出', + test: '测试', + typeCreate: '字典类型新增', + typeUpdate: '字典类型编辑', + dataCreate: '字典数据新增', + dataUpdate: '字典数据编辑' + }, + dialog: { + dialog: '弹窗', + open: '打开', + close: '关闭' + }, + sys: { + api: { + operationFailed: '操作失败', + errorTip: '错误提示', + errorMessage: '操作失败,系统异常!', + timeoutMessage: '登录超时,请重新登录!', + apiTimeoutMessage: '接口请求超时,请刷新页面重试!', + apiRequestFailed: '请求出错,请稍候重试', + networkException: '网络异常', + networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!', + errMsg401: '用户没有权限(令牌、用户名、密码错误)!', + errMsg403: '用户得到授权,但是访问是被禁止的。!', + errMsg404: '网络请求错误,未找到该资源!', + errMsg405: '网络请求错误,请求方法未允许!', + errMsg408: '网络请求超时!', + errMsg500: '服务器错误,请联系管理员!', + errMsg501: '网络未实现!', + errMsg502: '网络错误!', + errMsg503: '服务不可用,服务器暂时过载或维护!', + errMsg504: '网络超时!', + errMsg505: 'http版本不支持该请求!', + errMsg901: '演示模式,无法进行写操作!' + }, + app: { + logoutTip: '温馨提醒', + logoutMessage: '是否确认退出系统?', + menuLoading: '菜单加载中...' + }, + exception: { + backLogin: '返回登录', + backHome: '返回首页', + subTitle403: '抱歉,您无权访问此页面。', + subTitle404: '抱歉,您访问的页面不存在。', + subTitle500: '抱歉,服务器报告错误。', + noDataTitle: '当前页无数据', + networkErrorTitle: '网络错误', + networkErrorSubTitle: '抱歉,您的网络连接已断开,请检查您的网络!' + }, + lock: { + unlock: '点击解锁', + alert: '锁屏密码错误', + backToLogin: '返回登录', + entry: '进入系统', + placeholder: '请输入锁屏密码或者用户密码' + }, + login: { + backSignIn: '返回', + signInFormTitle: '登录', + ssoFormTitle: '三方授权', + mobileSignInFormTitle: '手机登录', + qrSignInFormTitle: '二维码登录', + signUpFormTitle: '注册', + forgetFormTitle: '重置密码', + signInTitle: '开箱即用的中后台管理系统', + signInDesc: '输入您的个人详细信息开始使用!', + policy: '我同意xxx隐私政策', + scanSign: `扫码后点击"确认",即可完成登录`, + loginButton: '登录', + registerButton: '注册', + rememberMe: '记住我', + forgetPassword: '忘记密码?', + otherSignIn: '其他登录方式', + // notify + loginSuccessTitle: '登录成功', + loginSuccessDesc: '欢迎回来', + // placeholder + accountPlaceholder: '请输入账号', + passwordPlaceholder: '请输入密码', + smsPlaceholder: '请输入验证码', + mobilePlaceholder: '请输入手机号码', + policyPlaceholder: '勾选后才能注册', + diffPwd: '两次输入密码不一致', + userName: '账号', + password: '密码', + confirmPassword: '确认密码', + email: '邮箱', + smsCode: '短信验证码', + mobile: '手机号码' + } + }, + profile: { + user: { + title: '个人信息', + username: '用户名称', + nickname: '用户昵称', + mobile: '手机号码', + email: '用户邮箱', + dept: '所属部门', + posts: '所属岗位', + roles: '所属角色', + sex: '性别', + man: '男', + woman: '女', + createTime: '创建日期' + }, + info: { + title: '基本信息', + basicInfo: '基本设置', + resetPwd: '密码设置', + }, + rules: { + nickname: '请输入用户昵称', + mail: '请输入邮箱地址', + truemail: '请输入正确的邮箱地址', + phone: '请输入正确的手机号码', + truephone: '请输入正确的手机号码' + }, + password: { + oldPassword: '旧密码', + newPassword: '新密码', + confirmPassword: '确认密码', + oldPwdMsg: '请输入旧密码', + newPwdMsg: '请输入新密码', + cfPwdMsg: '请输入确认密码', + pwdRules: '长度在 6 到 20 个字符', + diffPwd: '两次输入密码不一致' + } + }, + cropper: { + selectImage: '选择图片', + uploadSuccess: '上传成功', + modalTitle: '头像上传', + okText: '确认并上传', + btn_reset: '重置', + btn_rotate_left: '逆时针旋转', + btn_rotate_right: '顺时针旋转', + btn_scale_x: '水平翻转', + btn_scale_y: '垂直翻转', + btn_zoom_in: '放大', + btn_zoom_out: '缩小', + preview: '预览' + }, + 'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错 +} diff --git a/web/src/main.ts b/web/src/main.ts new file mode 100644 index 0000000..14f2e75 --- /dev/null +++ b/web/src/main.ts @@ -0,0 +1,73 @@ +// 引入unocss css +import '@/plugins/unocss' + +// 导入全局的svg图标 +import '@/plugins/svgIcon' + +// 初始化多语言 +import { setupI18n } from '@/plugins/vueI18n' + +// 引入状态管理 +import { setupStore } from '@/store' + +// 全局组件 +import { setupGlobCom } from '@/components' + +// 引入 element-plus +import { setupElementPlus } from '@/plugins/elementPlus' + +// 引入 form-create +import { setupFormCreate } from '@/plugins/formCreate' + +// 引入全局样式 +import '@/styles/index.scss' + +// 引入动画 +import '@/plugins/animate.css' + +// 路由 +import router, { setupRouter } from '@/router' + +// 指令 +import { setupAuth, setupMountedFocus } from '@/directives' + +import { createApp } from 'vue' + +import App from './App.vue' + +import './permission' + +import Logger from '@/utils/Logger' + +import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患 + +// 创建实例 +const setupAll = async () => { + const app = createApp(App) + + await setupI18n(app) + + setupStore(app) + + setupGlobCom(app) + + setupElementPlus(app) + + setupFormCreate(app) + + setupRouter(app) + + // directives 指令 + setupAuth(app) + setupMountedFocus(app) + + await router.isReady() + + app.use(VueDOMPurifyHTML) + + app.mount('#app') +} + +setupAll() + +Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE) diff --git a/web/src/permission.ts b/web/src/permission.ts new file mode 100644 index 0000000..c915201 --- /dev/null +++ b/web/src/permission.ts @@ -0,0 +1,105 @@ +import router from './router' +import type { RouteRecordRaw } from 'vue-router' +import { isRelogin } from '@/config/axios/service' +import { getAccessToken } from '@/utils/auth' +import { useTitle } from '@/hooks/web/useTitle' +import { useNProgress } from '@/hooks/web/useNProgress' +import { usePageLoading } from '@/hooks/web/usePageLoading' +import { useDictStoreWithOut } from '@/store/modules/dict' +import { useUserStoreWithOut } from '@/store/modules/user' +import { usePermissionStoreWithOut } from '@/store/modules/permission' + +const { start, done } = useNProgress() + +const { loadStart, loadDone } = usePageLoading() + +const parseURL = ( + url: string | null | undefined +): { basePath: string; paramsObject: { [key: string]: string } } => { + // 如果输入为 null 或 undefined,返回空字符串和空对象 + if (url == null) { + return { basePath: '', paramsObject: {} } + } + + // 找到问号 (?) 的位置,它之前是基础路径,之后是查询参数 + const questionMarkIndex = url.indexOf('?') + let basePath = url + const paramsObject: { [key: string]: string } = {} + + // 如果找到了问号,说明有查询参数 + if (questionMarkIndex !== -1) { + // 获取 basePath + basePath = url.substring(0, questionMarkIndex) + + // 从 URL 中获取查询字符串部分 + const queryString = url.substring(questionMarkIndex + 1) + + // 使用 URLSearchParams 遍历参数 + const searchParams = new URLSearchParams(queryString) + searchParams.forEach((value, key) => { + // 封装进 paramsObject 对象 + paramsObject[key] = value + }) + } + + // 返回 basePath 和 paramsObject + return { basePath, paramsObject } +} + +// 路由不重定向白名单 +const whiteList = [ + '/login', + '/auth-redirect', + '/bind', + '/register', + '/oauthLogin/gitee' +] + +// 路由加载前 +router.beforeEach(async (to, from, next) => { + start() + loadStart() + if (getAccessToken()) { + if (to.path === '/login') { + next({ path: '/' }) + } else { + // 获取所有字典 + const dictStore = useDictStoreWithOut() + const userStore = useUserStoreWithOut() + const permissionStore = usePermissionStoreWithOut() + if (!dictStore.getIsSetDict) { + await dictStore.setDictMap() + } + if (!userStore.getIsSetUser) { + isRelogin.show = true + await userStore.setUserInfoAction() + isRelogin.show = false + // 后端过滤菜单 + await permissionStore.generateRoutes() + permissionStore.getAddRouters.forEach((route) => { + router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表 + }) + const redirectPath = from.query.redirect || to.path + // 修复跳转时不带参数的问题 + const redirect = decodeURIComponent(redirectPath as string) + const { paramsObject: query } = parseURL(redirect) + const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect, query } + next(nextData) + } else { + next() + } + } + } else { + if (whiteList.indexOf(to.path) !== -1) { + next() + } else { + next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 + } + } +}) + +router.afterEach((to) => { + useTitle(to?.meta?.title as string) + done() // 结束Progress + loadDone() +}) diff --git a/web/src/plugins/animate.css/index.ts b/web/src/plugins/animate.css/index.ts new file mode 100644 index 0000000..3e93451 --- /dev/null +++ b/web/src/plugins/animate.css/index.ts @@ -0,0 +1 @@ +import 'animate.css' diff --git a/web/src/plugins/echarts/index.ts b/web/src/plugins/echarts/index.ts new file mode 100644 index 0000000..18d05aa --- /dev/null +++ b/web/src/plugins/echarts/index.ts @@ -0,0 +1,49 @@ +import * as echarts from 'echarts/core' + +import { + BarChart, + FunnelChart, + GaugeChart, + LineChart, + MapChart, + PictorialBarChart, + PieChart, + RadarChart +} from 'echarts/charts' + +import { + AriaComponent, + GridComponent, + LegendComponent, + ParallelComponent, + PolarComponent, + TitleComponent, + ToolboxComponent, + TooltipComponent, + VisualMapComponent +} from 'echarts/components' + +import { CanvasRenderer } from 'echarts/renderers' + +echarts.use([ + LegendComponent, + TitleComponent, + TooltipComponent, + ToolboxComponent, + GridComponent, + PolarComponent, + AriaComponent, + ParallelComponent, + VisualMapComponent, + BarChart, + LineChart, + PieChart, + MapChart, + CanvasRenderer, + PictorialBarChart, + RadarChart, + GaugeChart, + FunnelChart +]) + +export default echarts diff --git a/web/src/plugins/elementPlus/index.ts b/web/src/plugins/elementPlus/index.ts new file mode 100644 index 0000000..0ae2a8b --- /dev/null +++ b/web/src/plugins/elementPlus/index.ts @@ -0,0 +1,17 @@ +import type { App } from 'vue' +// 需要全局引入一些组件,如ElScrollbar,不然一些下拉项样式有问题 +import { ElLoading, ElScrollbar, ElButton } from 'element-plus' + +const plugins = [ElLoading] + +const components = [ElScrollbar, ElButton] + +export const setupElementPlus = (app: App) => { + plugins.forEach((plugin) => { + app.use(plugin) + }) + + components.forEach((component) => { + app.component(component.name, component) + }) +} diff --git a/web/src/plugins/formCreate/index.ts b/web/src/plugins/formCreate/index.ts new file mode 100644 index 0000000..01a57be --- /dev/null +++ b/web/src/plugins/formCreate/index.ts @@ -0,0 +1,135 @@ +import type { App } from 'vue' +// 👇使用 form-create 需额外全局引入 element plus 组件 +import { + // ElAutocomplete, + // ElButton, + // ElCascader, + // ElCheckbox, + // ElCheckboxButton, + // ElCheckboxGroup, + // ElCol, + // ElColorPicker, + // ElDatePicker, + // ElDialog, + // ElForm, + // ElInput, + // ElInputNumber, + // ElPopover, + // ElRadio, + // ElRadioButton, + // ElRadioGroup, + // ElRate, + // ElRow, + // ElSelect, + // ElSlider, + // ElSwitch, + // ElTimePicker, + // ElTooltip, + // ElTree, + // ElUpload, + // ElIcon, + // ElProgress, + // 以上会由 @form-create/element-ui/auto-import 自动引入 + ElAlert, + ElTransfer, + ElAside, + ElContainer, + ElDivider, + ElHeader, + ElMain, + ElPopconfirm, + ElTable, + ElTableColumn, + ElTabPane, + ElTabs, + ElDropdown, + ElDropdownMenu, + ElDropdownItem, + ElBadge, + ElTag, + ElText, + ElMenu, + ElMenuItem, + ElFooter, + ElMessage, + ElCollapse, + ElCollapseItem, + ElCard, + ElTreeSelect + // ElFormItem, + // ElOption +} from 'element-plus' +import FcDesigner from '@form-create/designer' +import formCreate from '@form-create/element-ui' +import install from '@form-create/element-ui/auto-import' + +//======================= 自定义组件 ======================= +import { UploadFile, UploadImg, UploadImgs } from '@/components/UploadFile' +import { useApiSelect } from '@/components/FormCreate' +import { Editor } from '@/components/Editor' +import DictSelect from '@/components/FormCreate/src/components/DictSelect.vue' + +const UserSelect = useApiSelect({ + name: 'UserSelect', + labelField: 'nickname', + valueField: 'id', + url: '/system/user/simple-list' +}) +const DeptSelect = useApiSelect({ + name: 'DeptSelect', + labelField: 'name', + valueField: 'id', + url: '/system/dept/simple-list' +}) +const ApiSelect = useApiSelect({ + name: 'ApiSelect' +}) + +const components = [ + ElAlert, + ElTransfer, + ElAside, + ElContainer, + ElDivider, + ElHeader, + ElMain, + ElPopconfirm, + ElTable, + ElTableColumn, + ElTabPane, + ElTabs, + ElTreeSelect, + ElDropdown, + ElDropdownMenu, + ElDropdownItem, + ElBadge, + ElTag, + ElText, + ElMenu, + ElMenuItem, + ElFooter, + ElMessage, + // ElFormItem, + // ElOption, + UploadImg, + UploadImgs, + UploadFile, + DictSelect, + UserSelect, + DeptSelect, + ApiSelect, + Editor, + ElCollapse, + ElCollapseItem, + ElCard +] + +// 参考 http://www.form-create.com/v3/element-ui/auto-import.html 文档 +export const setupFormCreate = (app: App) => { + components.forEach((component) => { + app.component(component.name, component) + }) + formCreate.use(install) + app.use(formCreate) + app.use(FcDesigner) +} diff --git a/web/src/plugins/svgIcon/index.ts b/web/src/plugins/svgIcon/index.ts new file mode 100644 index 0000000..b5b7f70 --- /dev/null +++ b/web/src/plugins/svgIcon/index.ts @@ -0,0 +1,3 @@ +import 'virtual:svg-icons-register' + +import '@purge-icons/generated' diff --git a/web/src/plugins/unocss/index.ts b/web/src/plugins/unocss/index.ts new file mode 100644 index 0000000..d366b5a --- /dev/null +++ b/web/src/plugins/unocss/index.ts @@ -0,0 +1 @@ +import 'virtual:uno.css' diff --git a/web/src/plugins/vueI18n/helper.ts b/web/src/plugins/vueI18n/helper.ts new file mode 100644 index 0000000..da6bc8c --- /dev/null +++ b/web/src/plugins/vueI18n/helper.ts @@ -0,0 +1,3 @@ +export const setHtmlPageLang = (locale: LocaleType) => { + document.querySelector('html')?.setAttribute('lang', locale) +} diff --git a/web/src/plugins/vueI18n/index.ts b/web/src/plugins/vueI18n/index.ts new file mode 100644 index 0000000..f845b13 --- /dev/null +++ b/web/src/plugins/vueI18n/index.ts @@ -0,0 +1,42 @@ +import type { App } from 'vue' +import { createI18n } from 'vue-i18n' +import { useLocaleStoreWithOut } from '@/store/modules/locale' +import type { I18n, I18nOptions } from 'vue-i18n' +import { setHtmlPageLang } from './helper' + +export let i18n: ReturnType + +const createI18nOptions = async (): Promise => { + const localeStore = useLocaleStoreWithOut() + const locale = localeStore.getCurrentLocale + const localeMap = localeStore.getLocaleMap + const defaultLocal = await import(`../../locales/${locale.lang}.ts`) + const message = defaultLocal.default ?? {} + + setHtmlPageLang(locale.lang) + + localeStore.setCurrentLocale({ + lang: locale.lang + // elLocale: elLocal + }) + + return { + legacy: false, + locale: locale.lang, + fallbackLocale: locale.lang, + messages: { + [locale.lang]: message + }, + availableLocales: localeMap.map((v) => v.lang), + sync: true, + silentTranslationWarn: true, + missingWarn: false, + silentFallbackWarn: true + } +} + +export const setupI18n = async (app: App) => { + const options = await createI18nOptions() + i18n = createI18n(options) as I18n + app.use(i18n) +} diff --git a/web/src/router/index.ts b/web/src/router/index.ts new file mode 100644 index 0000000..e80dae0 --- /dev/null +++ b/web/src/router/index.ts @@ -0,0 +1,28 @@ +import type { App } from 'vue' +import type { RouteRecordRaw } from 'vue-router' +import { createRouter, createWebHistory } from 'vue-router' +import remainingRouter from './modules/remaining' + +// 创建路由实例 +const router = createRouter({ + history: createWebHistory(import.meta.env.VITE_BASE_PATH), // createWebHashHistory URL带#,createWebHistory URL不带# + strict: true, + routes: remainingRouter as RouteRecordRaw[], + scrollBehavior: () => ({ left: 0, top: 0 }) +}) + +export const resetRouter = (): void => { + const resetWhiteNameList = ['Redirect', 'Login', 'NoFound', 'Home'] + router.getRoutes().forEach((route) => { + const { name } = route + if (name && !resetWhiteNameList.includes(name as string)) { + router.hasRoute(name) && router.removeRoute(name) + } + }) +} + +export const setupRouter = (app: App) => { + app.use(router) +} + +export default router diff --git a/web/src/router/modules/remaining.ts b/web/src/router/modules/remaining.ts new file mode 100644 index 0000000..02ea675 --- /dev/null +++ b/web/src/router/modules/remaining.ts @@ -0,0 +1,369 @@ +import { Layout } from '@/utils/routerHelper' + +const { t } = useI18n() +/** + * redirect: noredirect 当设置 noredirect 的时候该路由在面包屑导航中不可被点击 + * name:'router-name' 设定路由的名字,一定要填写不然使用时会出现各种问题 + * meta : { + hidden: true 当设置 true 的时候该路由不会再侧边栏出现 如404,login等页面(默认 false) + + alwaysShow: true 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式, + 只有一个时,会将那个子路由当做根路由显示在侧边栏, + 若你想不管路由下面的 children 声明的个数都显示你的根路由, + 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则, + 一直显示根路由(默认 false) + + title: 'title' 设置该路由在侧边栏和面包屑中展示的名字 + + icon: 'svg-name' 设置该路由的图标 + + noCache: true 如果设置为true,则不会被 缓存(默认 false) + + breadcrumb: false 如果设置为false,则不会在breadcrumb面包屑中显示(默认 true) + + affix: true 如果设置为true,则会一直固定在tag项中(默认 false) + + noTagsView: true 如果设置为true,则不会出现在tag中(默认 false) + + activeMenu: '/dashboard' 显示高亮的路由路径 + + followAuth: '/dashboard' 跟随哪个路由进行权限过滤 + + canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false) + } + **/ +const remainingRouter: AppRouteRecordRaw[] = [ + { + path: '/redirect', + component: Layout, + name: 'Redirect', + children: [ + { + path: '/redirect/:path(.*)', + name: 'Redirect', + component: () => import('@/views/Redirect/Redirect.vue'), + meta: {} + } + ], + meta: { + hidden: true, + noTagsView: true + } + }, + { + path: '/', + component: Layout, + redirect: '/index', + name: 'Home', + meta: {}, + children: [ + { + path: 'index', + component: () => import('@/views/Home/Index.vue'), + name: 'Index', + meta: { + title: t('router.home'), + icon: 'ep:home-filled', + noCache: false, + affix: true + } + } + ] + }, + { + path: '/user', + component: Layout, + name: 'UserInfo', + meta: { + hidden: true + }, + children: [ + { + path: 'profile', + component: () => import('@/views/Profile/Index.vue'), + name: 'Profile', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ep:user', + title: t('common.profile') + } + }, + { + path: 'notify-message', + component: () => import('@/views/system/notify/my/index.vue'), + name: 'MyNotifyMessage', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ep:message', + title: '我的站内信' + } + } + ] + }, + { + path: '/dict', + component: Layout, + name: 'dict', + meta: { + hidden: true + }, + children: [ + { + path: 'type/data/:dictType', + component: () => import('@/views/system/dict/data/index.vue'), + name: 'SystemDictData', + meta: { + title: '字典数据', + noCache: true, + hidden: true, + canTo: true, + icon: '', + activeMenu: '/system/dict' + } + } + ] + }, + + { + path: '/codegen', + component: Layout, + name: 'CodegenEdit', + meta: { + hidden: true + }, + children: [ + { + path: 'edit', + component: () => import('@/views/infra/codegen/EditTable.vue'), + name: 'InfraCodegenEditTable', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '修改生成配置', + activeMenu: 'infra/codegen/index' + } + } + ] + }, + { + path: '/job', + component: Layout, + name: 'JobL', + meta: { + hidden: true + }, + children: [ + { + path: 'job-log', + component: () => import('@/views/infra/job/logger/index.vue'), + name: 'InfraJobLog', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '调度日志', + activeMenu: 'infra/job/index' + } + } + ] + }, + { + path: '/login', + component: () => import('@/views/Login/Login.vue'), + name: 'Login', + meta: { + hidden: true, + title: t('router.login'), + noTagsView: true + } + }, + { + path: '/sso', + component: () => import('@/views/Login/Login.vue'), + name: 'SSOLogin', + meta: { + hidden: true, + title: t('router.login'), + noTagsView: true + } + }, + { + path: '/403', + component: () => import('@/views/Error/403.vue'), + name: 'NoAccess', + meta: { + hidden: true, + title: '403', + noTagsView: true + } + }, + { + path: '/404', + component: () => import('@/views/Error/404.vue'), + name: 'NoFound', + meta: { + hidden: true, + title: '404', + noTagsView: true + } + }, + { + path: '/500', + component: () => import('@/views/Error/500.vue'), + name: 'Error', + meta: { + hidden: true, + title: '500', + noTagsView: true + } + }, + { + path: '/:pathMatch(.*)*', + component: () => import('@/views/Error/404.vue'), + name: '', + meta: { + title: '404', + hidden: true, + breadcrumb: false + } + }, + { + path: '/iot', + component: Layout, + name: 'IOT', + meta: { + hidden: true + }, + children: [ + { + path: 'product/product/detail/:id', + name: 'IoTProductDetail', + meta: { + title: '产品详情', + noCache: true, + hidden: true, + activeMenu: '/iot/device/product' + }, + component: () => import('@/views/iot/product/product/detail/index.vue') + }, + { + path: 'device/detail/:id', + name: 'IoTDeviceDetail', + meta: { + title: '设备详情', + noCache: true, + hidden: true, + activeMenu: '/iot/device/device' + }, + component: () => import('@/views/iot/device/device/detail/index.vue') + }, + { + path: 'plugin/detail/:id', + name: 'IoTPluginDetail', + meta: { + title: '插件详情', + noCache: true, + hidden: true, + activeMenu: '/iot/plugin' + }, + component: () => import('@/views/iot/plugin/detail/index.vue') + } + ] + }, + { + path: '/bpm', + component: Layout, + name: 'bpm', + meta: { + hidden: true + }, + children: [ + { + path: 'manager/form/edit', + component: () => import('@/views/bpm/form/editor/index.vue'), + name: 'BpmFormEditor', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '设计流程表单', + activeMenu: '/bpm/manager/form' + } + }, + { + path: 'manager/definition', + component: () => import('@/views/bpm/model/definition/index.vue'), + name: 'BpmProcessDefinition', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '流程定义', + activeMenu: '/bpm/manager/model' + } + }, + { + path: 'process-instance/detail', + component: () => import('@/views/bpm/processInstance/detail/index.vue'), + name: 'BpmProcessInstanceDetail', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '流程详情', + activeMenu: '/bpm/task/my' + }, + props: (route) => ({ + id: route.query.id, + taskId: route.query.taskId, + activityId: route.query.activityId + }) + }, + { + path: 'process-instance/report', + component: () => import('@/views/bpm/processInstance/report/index.vue'), + name: 'BpmProcessInstanceReport', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '数据报表', + activeMenu: '/bpm/manager/model' + } + }, + { + path: 'manager/model/create', + component: () => import('@/views/bpm/model/form/index.vue'), + name: 'BpmModelCreate', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '创建流程', + activeMenu: '/bpm/manager/model' + } + }, + { + path: 'manager/model/:type/:id', + component: () => import('@/views/bpm/model/form/index.vue'), + name: 'BpmModelUpdate', + meta: { + noCache: true, + hidden: true, + canTo: true, + title: '修改流程', + activeMenu: '/bpm/manager/model' + } + } + ] + }, +] + +export default remainingRouter diff --git a/web/src/store/index.ts b/web/src/store/index.ts new file mode 100644 index 0000000..63f0045 --- /dev/null +++ b/web/src/store/index.ts @@ -0,0 +1,12 @@ +import type { App } from 'vue' +import { createPinia } from 'pinia' +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +const store = createPinia() +store.use(piniaPluginPersistedstate) + +export const setupStore = (app: App) => { + app.use(store) +} + +export { store } diff --git a/web/src/store/modules/app.ts b/web/src/store/modules/app.ts new file mode 100644 index 0000000..4a2ca9a --- /dev/null +++ b/web/src/store/modules/app.ts @@ -0,0 +1,322 @@ +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { ElementPlusSize } from '@/types/elementPlus' +import { LayoutType } from '@/types/layout' +import { ThemeTypes } from '@/types/theme' +import { humpToUnderline, setCssVar } from '@/utils' +import { getCssColorVariable, hexToRGB, mix } from '@/utils/color' +import { ElMessage } from 'element-plus' +import { defineStore } from 'pinia' +import { store } from '../index' + +const { wsCache } = useCache() + +interface AppState { + breadcrumb: boolean + breadcrumbIcon: boolean + collapse: boolean + uniqueOpened: boolean + hamburger: boolean + screenfull: boolean + search: boolean + size: boolean + locale: boolean + message: boolean + tagsView: boolean + tagsViewImmerse: boolean + tagsViewIcon: boolean + logo: boolean + fixedHeader: boolean + greyMode: boolean + pageLoading: boolean + layout: LayoutType + title: string + userInfo: string + isDark: boolean + currentSize: ElementPlusSize + sizeMap: ElementPlusSize[] + mobile: boolean + footer: boolean + theme: ThemeTypes + fixedMenu: boolean +} + +export const useAppStore = defineStore('app', { + state: (): AppState => { + return { + userInfo: 'userInfo', // 登录信息存储字段-建议每个项目换一个字段,避免与其他项目冲突 + sizeMap: ['default', 'large', 'small'], + mobile: false, // 是否是移动端 + title: import.meta.env.VITE_APP_TITLE, // 标题 + pageLoading: false, // 路由跳转loading + + breadcrumb: true, // 面包屑 + breadcrumbIcon: true, // 面包屑图标 + collapse: false, // 折叠菜单 + uniqueOpened: true, // 是否只保持一个子菜单的展开 + hamburger: true, // 折叠图标 + screenfull: true, // 全屏图标 + search: true, // 搜索图标 + size: true, // 尺寸图标 + locale: true, // 多语言图标 + message: true, // 消息图标 + tagsView: true, // 标签页 + tagsViewImmerse: false, // 标签页沉浸 + tagsViewIcon: true, // 是否显示标签图标 + logo: true, // logo + fixedHeader: true, // 固定toolheader + footer: true, // 显示页脚 + greyMode: false, // 是否开始灰色模式,用于特殊悼念日 + fixedMenu: wsCache.get('fixedMenu') || false, // 是否固定菜单 + + layout: wsCache.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局 + isDark: wsCache.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式 + currentSize: wsCache.get('default') || 'default', // 组件尺寸 + theme: wsCache.get(CACHE_KEY.THEME) || { + // 主题色 + elColorPrimary: '#409eff', + // 左侧菜单边框颜色 + leftMenuBorderColor: 'inherit', + // 左侧菜单背景颜色 + leftMenuBgColor: '#001529', + // 左侧菜单浅色背景颜色 + leftMenuBgLightColor: '#0f2438', + // 左侧菜单选中背景颜色 + leftMenuBgActiveColor: 'var(--el-color-primary)', + // 左侧菜单收起选中背景颜色 + leftMenuCollapseBgActiveColor: 'var(--el-color-primary)', + // 左侧菜单字体颜色 + leftMenuTextColor: '#bfcbd9', + // 左侧菜单选中字体颜色 + leftMenuTextActiveColor: '#fff', + // logo字体颜色 + logoTitleTextColor: '#fff', + // logo边框颜色 + logoBorderColor: 'inherit', + // 头部背景颜色 + topHeaderBgColor: '#fff', + // 头部字体颜色 + topHeaderTextColor: 'inherit', + // 头部悬停颜色 + topHeaderHoverColor: '#f6f6f6', + // 头部边框颜色 + topToolBorderColor: '#eee' + } + } + }, + getters: { + getBreadcrumb(): boolean { + return this.breadcrumb + }, + getBreadcrumbIcon(): boolean { + return this.breadcrumbIcon + }, + getCollapse(): boolean { + return this.collapse + }, + getUniqueOpened(): boolean { + return this.uniqueOpened + }, + getHamburger(): boolean { + return this.hamburger + }, + getScreenfull(): boolean { + return this.screenfull + }, + getSize(): boolean { + return this.size + }, + getLocale(): boolean { + return this.locale + }, + getMessage(): boolean { + return this.message + }, + getTagsView(): boolean { + return this.tagsView + }, + getTagsViewImmerse(): boolean { + return this.tagsViewImmerse + }, + getTagsViewIcon(): boolean { + return this.tagsViewIcon + }, + getLogo(): boolean { + return this.logo + }, + getFixedHeader(): boolean { + return this.fixedHeader + }, + getGreyMode(): boolean { + return this.greyMode + }, + getFixedMenu(): boolean { + return this.fixedMenu + }, + getPageLoading(): boolean { + return this.pageLoading + }, + getLayout(): LayoutType { + return this.layout + }, + getTitle(): string { + return this.title + }, + getUserInfo(): string { + return this.userInfo + }, + getIsDark(): boolean { + return this.isDark + }, + getCurrentSize(): ElementPlusSize { + return this.currentSize + }, + getSizeMap(): ElementPlusSize[] { + return this.sizeMap + }, + getMobile(): boolean { + return this.mobile + }, + getTheme(): ThemeTypes { + return this.theme + }, + getFooter(): boolean { + return this.footer + } + }, + actions: { + setPrimaryLight() { + if (this.theme.elColorPrimary) { + const elColorPrimary = this.theme.elColorPrimary + const color = this.isDark ? '#000000' : '#ffffff' + const lightList = [3, 5, 7, 8, 9] + lightList.forEach((v) => { + setCssVar(`--el-color-primary-light-${v}`, mix(color, elColorPrimary, v / 10)) + }) + setCssVar(`--el-color-primary-dark-2`, mix(color, elColorPrimary, 0.2)) + + this.setAllColorRgbVars() + } + }, + + // 处理element自带的主题色和辅助色的-rgb切换主题变化,如:--el-color-primary-rgb + setAllColorRgbVars() { + // 需要处理的颜色类型列表 + const colorTypes = ['primary', 'success', 'warning', 'danger', 'error', 'info'] + + colorTypes.forEach((type) => { + // 获取当前颜色值 + const colorValue = getCssColorVariable(`--el-color-${type}`) + if (colorValue) { + // 转换为rgba并提取RGB部分 + const rgbaString = hexToRGB(colorValue, 1) + const rgbValues = rgbaString.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i) + if (rgbValues) { + const [, r, g, b] = rgbValues + // 设置对应的RGB变量 + setCssVar(`--el-color-${type}-rgb`, `${r}, ${g}, ${b}`) + } + } + }) + }, + setBreadcrumb(breadcrumb: boolean) { + this.breadcrumb = breadcrumb + }, + setBreadcrumbIcon(breadcrumbIcon: boolean) { + this.breadcrumbIcon = breadcrumbIcon + }, + setCollapse(collapse: boolean) { + this.collapse = collapse + }, + setUniqueOpened(uniqueOpened: boolean) { + this.uniqueOpened = uniqueOpened + }, + setHamburger(hamburger: boolean) { + this.hamburger = hamburger + }, + setScreenfull(screenfull: boolean) { + this.screenfull = screenfull + }, + setSize(size: boolean) { + this.size = size + }, + setLocale(locale: boolean) { + this.locale = locale + }, + setMessage(message: boolean) { + this.message = message + }, + setTagsView(tagsView: boolean) { + this.tagsView = tagsView + }, + setTagsViewImmerse(tagsViewImmerse: boolean) { + this.tagsViewImmerse = tagsViewImmerse + }, + setTagsViewIcon(tagsViewIcon: boolean) { + this.tagsViewIcon = tagsViewIcon + }, + setLogo(logo: boolean) { + this.logo = logo + }, + setFixedHeader(fixedHeader: boolean) { + this.fixedHeader = fixedHeader + }, + setGreyMode(greyMode: boolean) { + this.greyMode = greyMode + }, + setFixedMenu(fixedMenu: boolean) { + wsCache.set('fixedMenu', fixedMenu) + this.fixedMenu = fixedMenu + }, + setPageLoading(pageLoading: boolean) { + this.pageLoading = pageLoading + }, + setLayout(layout: LayoutType) { + if (this.mobile && layout !== 'classic') { + ElMessage.warning('移动端模式下不支持切换其他布局') + return + } + this.layout = layout + wsCache.set(CACHE_KEY.LAYOUT, this.layout) + }, + setTitle(title: string) { + this.title = title + }, + setIsDark(isDark: boolean) { + this.isDark = isDark + if (this.isDark) { + document.documentElement.classList.add('dark') + document.documentElement.classList.remove('light') + } else { + document.documentElement.classList.add('light') + document.documentElement.classList.remove('dark') + } + wsCache.set(CACHE_KEY.IS_DARK, this.isDark) + this.setPrimaryLight() + }, + setCurrentSize(currentSize: ElementPlusSize) { + this.currentSize = currentSize + wsCache.set('currentSize', this.currentSize) + }, + setMobile(mobile: boolean) { + this.mobile = mobile + }, + setTheme(theme: ThemeTypes) { + this.theme = Object.assign(this.theme, theme) + wsCache.set(CACHE_KEY.THEME, this.theme) + }, + setCssVarTheme() { + for (const key in this.theme) { + setCssVar(`--${humpToUnderline(key)}`, this.theme[key]) + } + this.setPrimaryLight() + }, + setFooter(footer: boolean) { + this.footer = footer + } + }, + persist: false +}) + +export const useAppStoreWithOut = () => { + return useAppStore(store) +} diff --git a/web/src/store/modules/bpm/simpleWorkflow.ts b/web/src/store/modules/bpm/simpleWorkflow.ts new file mode 100644 index 0000000..2942951 --- /dev/null +++ b/web/src/store/modules/bpm/simpleWorkflow.ts @@ -0,0 +1,55 @@ +import { store } from '../../index' +import { defineStore } from 'pinia' + +export const useWorkFlowStore = defineStore('simpleWorkflow', { + state: () => ({ + tableId: '', + isTried: false, + promoterDrawer: false, + approverDrawer: false, + approverConfig1: {}, + copyerDrawer: false, + copyerConfig: {}, + conditionDrawer: false, + conditionsConfig1: { + conditionNodes: [] + }, + userTaskConfig: {} + }), + actions: { + setTableId(payload) { + this.tableId = payload + }, + setIsTried(payload) { + this.isTried = payload + }, + setPromoter(payload) { + this.promoterDrawer = payload + }, + setApproverDrawer(payload) { + this.approverDrawer = payload + }, + setApproverConfig(payload) { + this.approverConfig1 = payload + }, + setCopyerDrawer(payload) { + this.copyerDrawer = payload + }, + setCopyerConfig(payload) { + this.copyerConfig = payload + }, + setCondition(payload) { + this.conditionDrawer = payload + }, + setConditionsConfig(payload) { + this.conditionsConfig1 = payload + }, + setUserTaskConfig(payload) { + this.userTaskConfig = payload + } + } +}) + +export const useWorkFlowStoreWithOut = () => { + return useWorkFlowStore(store) +} diff --git a/web/src/store/modules/dict.ts b/web/src/store/modules/dict.ts new file mode 100644 index 0000000..64392de --- /dev/null +++ b/web/src/store/modules/dict.ts @@ -0,0 +1,106 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +// @ts-ignore +import { DictDataVO } from '@/api/system/dict/types' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +const { wsCache } = useCache('sessionStorage') +import { getSimpleDictDataList } from '@/api/system/dict/dict.data' + +export interface DictValueType { + value: any + label: string + clorType?: string + cssClass?: string +} +export interface DictTypeType { + dictType: string + dictValue: DictValueType[] +} +export interface DictState { + dictMap: Map + isSetDict: boolean +} + +export const useDictStore = defineStore('dict', { + state: (): DictState => ({ + dictMap: new Map(), + isSetDict: false + }), + getters: { + getDictMap(): Recordable { + const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) + if (dictMap) { + this.dictMap = dictMap + } + return this.dictMap + }, + getIsSetDict(): boolean { + return this.isSetDict + } + }, + actions: { + async setDictMap() { + const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) + if (dictMap) { + this.dictMap = dictMap + this.isSetDict = true + } else { + const res = await getSimpleDictDataList() + // 设置数据 + const dictDataMap = new Map() + console.log(res) + + res.forEach((dictData: DictDataVO) => { + // 获得 dictType 层级 + const enumValueObj = dictDataMap[dictData.dictType] + if (!enumValueObj) { + dictDataMap[dictData.dictType] = [] + } + // 处理 dictValue 层级 + dictDataMap[dictData.dictType].push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass + }) + }) + this.dictMap = dictDataMap + this.isSetDict = true + wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期 + } + }, + getDictByType(type: string) { + if (!this.isSetDict) { + this.setDictMap() + } + return this.dictMap[type] + }, + async resetDict() { + wsCache.delete(CACHE_KEY.DICT_CACHE) + const res = await getSimpleDictDataList() + // 设置数据 + const dictDataMap = new Map() + res.forEach((dictData: DictDataVO) => { + // 获得 dictType 层级 + const enumValueObj = dictDataMap[dictData.dictType] + if (!enumValueObj) { + dictDataMap[dictData.dictType] = [] + } + // 处理 dictValue 层级 + dictDataMap[dictData.dictType].push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass + }) + }) + this.dictMap = dictDataMap + this.isSetDict = true + wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期 + } + } +}) + +export const useDictStoreWithOut = () => { + return useDictStore(store) +} diff --git a/web/src/store/modules/locale.ts b/web/src/store/modules/locale.ts new file mode 100644 index 0000000..1fc772a --- /dev/null +++ b/web/src/store/modules/locale.ts @@ -0,0 +1,59 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +import zhCn from 'element-plus/es/locale/lang/zh-cn' +import en from 'element-plus/es/locale/lang/en' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { LocaleDropdownType } from '@/types/localeDropdown' + +const { wsCache } = useCache() + +const elLocaleMap = { + 'zh-CN': zhCn, + en: en +} +interface LocaleState { + currentLocale: LocaleDropdownType + localeMap: LocaleDropdownType[] +} + +export const useLocaleStore = defineStore('locales', { + state: (): LocaleState => { + return { + currentLocale: { + lang: wsCache.get(CACHE_KEY.LANG) || 'zh-CN', + elLocale: elLocaleMap[wsCache.get(CACHE_KEY.LANG) || 'zh-CN'] + }, + // 多语言 + localeMap: [ + { + lang: 'zh-CN', + name: '简体中文' + }, + { + lang: 'en', + name: 'English' + } + ] + } + }, + getters: { + getCurrentLocale(): LocaleDropdownType { + return this.currentLocale + }, + getLocaleMap(): LocaleDropdownType[] { + return this.localeMap + } + }, + actions: { + setCurrentLocale(localeMap: LocaleDropdownType) { + // this.locale = Object.assign(this.locale, localeMap) + this.currentLocale.lang = localeMap?.lang + this.currentLocale.elLocale = elLocaleMap[localeMap?.lang] + wsCache.set(CACHE_KEY.LANG, localeMap?.lang) + } + } +}) + +export const useLocaleStoreWithOut = () => { + return useLocaleStore(store) +} diff --git a/web/src/store/modules/lock.ts b/web/src/store/modules/lock.ts new file mode 100644 index 0000000..68ae1d7 --- /dev/null +++ b/web/src/store/modules/lock.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import { store } from '@/store' + +interface lockInfo { + isLock?: boolean + password?: string +} + +interface LockState { + lockInfo: lockInfo +} + +export const useLockStore = defineStore('lock', { + state: (): LockState => { + return { + lockInfo: { + // isLock: false, // 是否锁定屏幕 + // password: '' // 锁屏密码 + } + } + }, + getters: { + getLockInfo(): lockInfo { + return this.lockInfo + } + }, + actions: { + setLockInfo(lockInfo: lockInfo) { + this.lockInfo = lockInfo + }, + resetLockInfo() { + this.lockInfo = {} + }, + unLock(password: string) { + if (this.lockInfo?.password === password) { + this.resetLockInfo() + return true + } else { + return false + } + } + }, + persist: true +}) + +export const useLockStoreWithOut = () => { + return useLockStore(store) +} diff --git a/web/src/store/modules/permission.ts b/web/src/store/modules/permission.ts new file mode 100644 index 0000000..2ff8111 --- /dev/null +++ b/web/src/store/modules/permission.ts @@ -0,0 +1,71 @@ +import { defineStore } from 'pinia' +import { store } from '@/store' +import { cloneDeep } from 'lodash-es' +import remainingRouter from '@/router/modules/remaining' +import { flatMultiLevelRoutes, generateRoute } from '@/utils/routerHelper' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { wsCache } = useCache() + +export interface PermissionState { + routers: AppRouteRecordRaw[] + addRouters: AppRouteRecordRaw[] + menuTabRouters: AppRouteRecordRaw[] +} + +export const usePermissionStore = defineStore('permission', { + state: (): PermissionState => ({ + routers: [], + addRouters: [], + menuTabRouters: [] + }), + getters: { + getRouters(): AppRouteRecordRaw[] { + return this.routers + }, + getAddRouters(): AppRouteRecordRaw[] { + return flatMultiLevelRoutes(cloneDeep(this.addRouters)) + }, + getMenuTabRouters(): AppRouteRecordRaw[] { + return this.menuTabRouters + } + }, + actions: { + async generateRoutes(): Promise { + return new Promise(async (resolve) => { + // 获得菜单列表,它在登录的时候,setUserInfoAction 方法中已经进行获取 + let res: AppCustomRouteRecordRaw[] = [] + const roleRouters = wsCache.get(CACHE_KEY.ROLE_ROUTERS) + if (roleRouters) { + res = roleRouters as AppCustomRouteRecordRaw[] + } + const routerMap: AppRouteRecordRaw[] = generateRoute(res) + // 动态路由,404一定要放到最后面 + // preschooler:vue-router@4以后已支持静态404路由,此处可不再追加 + this.addRouters = routerMap.concat([ + { + path: '/:path(.*)*', + // redirect: '/404', + component: () => import('@/views/Error/404.vue'), + name: '404Page', + meta: { + hidden: true, + breadcrumb: false + } + } + ]) + // 渲染菜单的所有路由 + this.routers = cloneDeep(remainingRouter).concat(routerMap) + resolve() + }) + }, + setMenuTabRouters(routers: AppRouteRecordRaw[]): void { + this.menuTabRouters = routers + } + }, + persist: false +}) + +export const usePermissionStoreWithOut = () => { + return usePermissionStore(store) +} diff --git a/web/src/store/modules/tagsView.ts b/web/src/store/modules/tagsView.ts new file mode 100644 index 0000000..2b2d817 --- /dev/null +++ b/web/src/store/modules/tagsView.ts @@ -0,0 +1,177 @@ +import router from '@/router' +import type { RouteLocationNormalizedLoaded } from 'vue-router' +import { getRawRoute } from '@/utils/routerHelper' +import { defineStore } from 'pinia' +import { store } from '../index' +import { findIndex } from '@/utils' +import { useUserStoreWithOut } from './user' + +export interface TagsViewState { + visitedViews: RouteLocationNormalizedLoaded[] + cachedViews: Set + selectedTag?: RouteLocationNormalizedLoaded +} + +export const useTagsViewStore = defineStore('tagsView', { + state: (): TagsViewState => ({ + visitedViews: [], + cachedViews: new Set(), + selectedTag: undefined + }), + getters: { + getVisitedViews(): RouteLocationNormalizedLoaded[] { + return this.visitedViews + }, + getCachedViews(): string[] { + return Array.from(this.cachedViews) + }, + getSelectedTag(): RouteLocationNormalizedLoaded | undefined { + return this.selectedTag + } + }, + actions: { + // 新增缓存和tag + addView(view: RouteLocationNormalizedLoaded): void { + this.addVisitedView(view) + this.addCachedView() + }, + // 新增tag + addVisitedView(view: RouteLocationNormalizedLoaded) { + if (this.visitedViews.some((v) => v.fullPath === view.fullPath)) return + if (view.meta?.noTagsView) return + const visitedView = Object.assign({}, view, { title: view.meta?.title || 'no-name' }) + + if (visitedView.meta) { + const titleSuffixList: string[] = [] + this.visitedViews.forEach((v) => { + if (v.path === visitedView.path && v.meta?.title === visitedView.meta?.title) { + titleSuffixList.push(v.meta?.titleSuffix || '1') + } + }) + if (titleSuffixList.length) { + let titleSuffix = 1 + while (titleSuffixList.includes(`${titleSuffix}`)) { + titleSuffix += 1 + } + visitedView.meta.titleSuffix = titleSuffix === 1 ? undefined : `${titleSuffix}` + } + } + + this.visitedViews.push(visitedView) + }, + // 新增缓存 + addCachedView() { + const cacheMap: Set = new Set() + for (const v of this.visitedViews) { + const item = getRawRoute(v) + const needCache = !item.meta?.noCache + if (!needCache) { + continue + } + const name = item.name as string + cacheMap.add(name) + } + if (Array.from(this.cachedViews).sort().toString() === Array.from(cacheMap).sort().toString()) + return + this.cachedViews = cacheMap + }, + // 删除某个 + delView(view: RouteLocationNormalizedLoaded) { + this.delVisitedView(view) + this.delCachedView() + }, + // 删除tag + delVisitedView(view: RouteLocationNormalizedLoaded) { + for (const [i, v] of this.visitedViews.entries()) { + if (v.fullPath === view.fullPath) { + this.visitedViews.splice(i, 1) + break + } + } + }, + // 删除缓存 + delCachedView() { + const route = router.currentRoute.value + const index = findIndex(this.getCachedViews, (v) => v === route.name) + if (index > -1) { + this.cachedViews.delete(this.getCachedViews[index]) + } + }, + // 删除所有缓存和tag + delAllViews() { + this.delAllVisitedViews() + this.delCachedView() + }, + // 删除所有tag + delAllVisitedViews() { + const userStore = useUserStoreWithOut() + + // const affixTags = this.visitedViews.filter((tag) => tag.meta.affix) + this.visitedViews = userStore.getUser + ? this.visitedViews.filter((tag) => tag?.meta?.affix) + : [] + }, + // 删除其他 + delOthersViews(view: RouteLocationNormalizedLoaded) { + this.delOthersVisitedViews(view) + this.addCachedView() + }, + // 删除其他tag + delOthersVisitedViews(view: RouteLocationNormalizedLoaded) { + this.visitedViews = this.visitedViews.filter((v) => { + return v?.meta?.affix || v.fullPath === view.fullPath + }) + }, + // 删除左侧 + delLeftViews(view: RouteLocationNormalizedLoaded) { + const index = findIndex( + this.visitedViews, + (v) => v.fullPath === view.fullPath + ) + if (index > -1) { + this.visitedViews = this.visitedViews.filter((v, i) => { + return v?.meta?.affix || v.fullPath === view.fullPath || i > index + }) + this.addCachedView() + } + }, + // 删除右侧 + delRightViews(view: RouteLocationNormalizedLoaded) { + const index = findIndex( + this.visitedViews, + (v) => v.fullPath === view.fullPath + ) + if (index > -1) { + this.visitedViews = this.visitedViews.filter((v, i) => { + return v?.meta?.affix || v.fullPath === view.fullPath || i < index + }) + this.addCachedView() + } + }, + updateVisitedView(view: RouteLocationNormalizedLoaded) { + for (let v of this.visitedViews) { + if (v.fullPath === view.fullPath) { + v = Object.assign(v, view) + break + } + } + }, + // 设置当前选中的 tag + setSelectedTag(tag: RouteLocationNormalizedLoaded) { + this.selectedTag = tag + }, + setTitle(title: string, path?: string) { + for (const v of this.visitedViews) { + if (v.path === (path ?? this.selectedTag?.path)) { + v.meta.title = title + break + } + } + } + }, + persist: false +}) + +export const useTagsViewStoreWithOut = () => { + return useTagsViewStore(store) +} diff --git a/web/src/store/modules/user.ts b/web/src/store/modules/user.ts new file mode 100644 index 0000000..6876043 --- /dev/null +++ b/web/src/store/modules/user.ts @@ -0,0 +1,108 @@ +import { store } from '@/store' +import { defineStore } from 'pinia' +import { getAccessToken, removeToken } from '@/utils/auth' +import { CACHE_KEY, useCache, deleteUserCache } from '@/hooks/web/useCache' +import { getInfo, loginOut } from '@/api/login' + +const { wsCache } = useCache() + +interface UserVO { + id: number + avatar: string + nickname: string + deptId: number +} + +interface UserInfoVO { + // USER 缓存 + permissions: Set + roles: string[] + isSetUser: boolean + user: UserVO +} + +export const useUserStore = defineStore('admin-user', { + state: (): UserInfoVO => ({ + permissions: new Set(), + roles: [], + isSetUser: false, + user: { + id: 0, + avatar: '', + nickname: '', + deptId: 0 + } + }), + getters: { + getPermissions(): Set { + return this.permissions + }, + getRoles(): string[] { + return this.roles + }, + getIsSetUser(): boolean { + return this.isSetUser + }, + getUser(): UserVO { + return this.user + } + }, + actions: { + async setUserInfoAction() { + if (!getAccessToken()) { + this.resetState() + return null + } + let userInfo = wsCache.get(CACHE_KEY.USER) + if (!userInfo) { + userInfo = await getInfo() + } else { + // 特殊:在有缓存的情况下,进行加载。但是即使加载失败,也不影响后续的操作,保证可以进入系统 + try { + userInfo = await getInfo() + } catch (error) {} + } + this.permissions = new Set(userInfo.permissions) + this.roles = userInfo.roles + this.user = userInfo.user + this.isSetUser = true + wsCache.set(CACHE_KEY.USER, userInfo) + wsCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus) + }, + async setUserAvatarAction(avatar: string) { + const userInfo = wsCache.get(CACHE_KEY.USER) + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + this.user.avatar = avatar + userInfo.user.avatar = avatar + wsCache.set(CACHE_KEY.USER, userInfo) + }, + async setUserNicknameAction(nickname: string) { + const userInfo = wsCache.get(CACHE_KEY.USER) + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + this.user.nickname = nickname + userInfo.user.nickname = nickname + wsCache.set(CACHE_KEY.USER, userInfo) + }, + async loginOut() { + await loginOut() + removeToken() + deleteUserCache() // 删除用户缓存 + this.resetState() + }, + resetState() { + this.permissions = new Set() + this.roles = [] + this.isSetUser = false + this.user = { + id: 0, + avatar: '', + nickname: '', + deptId: 0 + } + } + } +}) + +export const useUserStoreWithOut = () => { + return useUserStore(store) +} diff --git a/web/src/styles/FormCreate/fonts/fontello.woff b/web/src/styles/FormCreate/fonts/fontello.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e00f4995b27e72b52d7d0fcf602d0206c3d6c89 GIT binary patch literal 4252 zcmY+HbyQSc_s1`cFvNhQfDF;K|Q|Njr| z2Ph2yATbA3MGzCNME*d-2jWto_8g2gL2R_yOpeg5wjQ812gc5zZMJF}&q3pSxB!6k zGKU(376ia}IJ$zG5de_yffCH_)@h)ltv6UpsRll#_#bqRE&&)&(*b}habT`|oDX*t z*1^^u0BEMb9B_R=P6#EfjRi$;o-1I?1;Pg%hpb~=ef&X<4~&^EVK^ZYUEI-^dGcTk zy98o-1?Ot(53Wmlxj(K;NP=j$-E3VQKn+}n#24J>#6$r*+{4}52LP@vfjI~el;8HV zw;o;&U@hHcT_8w)2woBIpO3b&x3O8Zldx$-+jw~%QrfPL>57h`)9h?)!+bdVu0kM)t5KNXUYn7TD@+bH z4wzml(wT=3SZRY#j=lljQ$*1ip-oxXY*>GiP{Ipf*p;@(KYuU1lO{|8rfIFh#Ux4f z=$Z|e@Mf6}-+F}HoFo~-lF*R4~h?S97NXDeH>UDnT4 zy-i;m7Py}}1-u`>M*>}{eE&dY>y7l`Wd2URg$`Di5W+Ns#Bs)-7TiL8SB~3?(fdSL zFM+S5R!!-s=3SdD{cLvb)@8sWKwnj#?xC4>a^Fj4bloQO0V-J*W6wrWT0sQL9+_Qe`Bx%38zuu;FkQ+r4>`&0l<=jjBwLy<5t{ z@wSY)(uOHZhFQ6WjDDvqlWT;s0j_iQM!Vu8w9I+(A>9$8Cd#-VA=&@9p2FUbRd@Th zL<^;ytHeSaI>$mzv?HcEn9r%;)2E!%0P$yWLlT)XvxyAjI*;>geKMve-rgt3$vl@#(=zN(q znM%aoJC&&qwg;@9383`b=qVLO{&VznG;z1VdE%=zgYI1Afh9*`IQ$*AkHgLeInQfG ze&yTC$-K;;(7JiYJaz5x?4{=d_nq#r`12Y!Iu#BXol@k$K*~%w2ZT%r_u|$-rt%rh)gf!{l@4q zO73s{BTbn)_4iuq656Hlv#4E$@7WC;pJiSqBecC=m9lCi)^6`#PdJH~q>4@>|7MzT zO{NMt6TK>{0sw5KWHsR#CTlpTh1(Z35n3)3AHkQ z#k6@QAD0WNg5Dc+_>P-RTr^LYjxA;(x}~EZFNxc`KCAV_<6tw4MI0zE&|>`Hai5woBduQ}`ethbygyKzvqv*BBZ_9suyqCV8t zh;(!H49#HjpLkeyS12x@;L^?DH8?HpY%yOQO`ppXbh^~^Gk>tXWaDt?;HziuMwIo( zc;}!RF(q-+zx*feJ1GkzZt}86zXb>+P=i*^Z2o2J40VTZ({gz-QR}Ylv3e-|O$HH~ z`DYw%loWf*UmDBqY;n`yQ1N;6Mu$D+ft6O2dx>BD)ZM9j*h(727$(~AE98gG91@9- zl|MYv&2^bStSY^bv_kePJ9rD;5gu*!NxfIQQE6ACxChI{ODTT9X=JYM@8o*4zIutg zsY9Od&flczAr+EE{)@r!Ng>mJN{F?t>*neMay{nK;nNX^2F9f>hV{kqTxq(_S)lc_jK`2UZ0ip%7JQ@&sQR9aF_A839nIm$5i~ceCw-7 z^58Lc?G03tTaa(&F#j=zA)=E)ed2LYaPn%5nUxP?>qU$7W~cn5MZ*kr?@Q-EdIC*~ zU7W|5tJ0e_Y*%%A@i&@Y_nmaQML-#d?Mu0#fWffzjxV7Npf;%ruN2qxb4q01z5M^?gHsqcT?i@`OqybRSBHrS?}E776Q#u#(BMy_0I?x499r}J?kxc zLGMZ$V*f=XjMIB+Vq|!$(%;#8^1Z12Ys z3{H}x^-t zZZj&>awMt*EH+7<%oDe&X)8mPuo8*{UiZx%W6#18%z|RqhC5El_!mgj!OI@J@<@n8 z;HrOqg~^0Fqc&5hJI3#5zBMTQZ| z_+Ck=P{IP$2S#KqReX&yYKiJK5s1wy6fx;5sm!A8I!2Cq-f`B@ZT~gJF>#)ITX80+ z=QD)7u|*>r%Lvm^BY)=sr1Whp1PL(M%Ioo&vI{oPyx@JJRt1SrGs2RPyrXa>f#}*I zMdGMNNbb5tO8_;jMpoAo00NI0Pd?!qJf{%1+}-^RJv(vsCaCx6Q?DOY4;s&&OcVq?U@>wurbVYT+?`L&+4e}qu$H-T+^uj(>6a07w(Sy^2owkK_{=|xeVK8{u;Bq^(> zNQop3kH>d2s;v43$Ipp)KqeM?t=t)mgVwm9&H$OEI$x)El{W- ziti)Zb7W>26^64?*-Kn>uftc70 zWiKo)bOP_KB~x*neQ|A5Kg+O!BcBJQ_w!!x;Js@l7z&PGqHk9?9)5XKv-=bM^5k!O zNvGU#PI=z+lXgNN;}+ws->Ilg|G7;M-@F0)Qi-Y4WnsDrcuSO~{EbwB(l1eI@RYIP zuV$M%e=bP5^IfiXyj>Kp&0RWG|3`-HcywX%q)xa+kdImR$S6}fzwtBfBSN>p+j}p* zF4iqYWjwG4qdlF&S)^~okcF~{d#gK>r{VE+w7;D^@B76?ME15Iscm;@P7^j?6HYvg7t&dboGd6s zSu?D3zle9jSjrDV(WA9(xWbAlOkGAZunXcige=RgVux|G$F@8Ha zTk-q%kC*AmR%mI#TQ_%CyK^AzJ_du>b+> z6&#Ux>HjuzJjy@ z(6CPvzI^z$2^}u2rFd(V>CxETGsiLhgTxJ~8vj?p8br7D2xwGRZCf8yByL8bOhHAA z`eD4@7}>)(MKD!+jNj{%7h5ag;{j!tdwWFFh^U#Tc=y?p_GwR6HjAB46^lNLUd`zV z!UkQMfg+4I3q}j`t3O=PErnZ)9Vt=uqX^%gwiOMBPugX^%bH!PwM`>mknZ!bQnre1 zkd#)KeZmcuL)>b~g?4-LptB0J)_w$RA#CGmWbE+55#gH2_{sUZ8D;l#B@j~H+04Ar zu~9<<35un`{OF~%7n1j!AQ(P-s7g;FuPRUUQc+`qiluVWaQPma=XZX~x<#dT*PqQO z&5rH;I{wb~kJ3bi>{3ft#iTpGqdX%FYBW7PeB&mC=J z7Y5uS-wn%5k5A7@k511_PY&nhSG8#6YblMYmv5;OZHW_?cB3T!EaF1Xdk;iz!eL0)gCS za2A9}Ln6ntn1@n&<7j9(=($1?#_CTGO+B94wgk50^v(y^50e}@3k&cZE(`^L{{nRLtcCyp literal 0 HcmV?d00001 diff --git a/web/src/styles/FormCreate/index.scss b/web/src/styles/FormCreate/index.scss new file mode 100644 index 0000000..bb62000 --- /dev/null +++ b/web/src/styles/FormCreate/index.scss @@ -0,0 +1,22 @@ +// 使用字体图标来源 https://fontello.com/ + +@font-face { + font-family: 'fc-icon'; + src: url('@/styles/FormCreate/fonts/fontello.woff') format('woff'); +} + +.icon-doc-text:before { + content: '\f0f6'; +} + +.icon-server:before { + content: '\f233'; +} + +.icon-address-card-o:before { + content: '\f2bc'; +} + +.icon-user-o:before { + content: '\f2c0'; +} diff --git a/web/src/styles/global.module.scss b/web/src/styles/global.module.scss new file mode 100644 index 0000000..af793f0 --- /dev/null +++ b/web/src/styles/global.module.scss @@ -0,0 +1,6 @@ +@use './variables.scss' as *; +// 导出变量 +:export { + namespace: $namespace; + elNamespace: $elNamespace; +} diff --git a/web/src/styles/index.scss b/web/src/styles/index.scss new file mode 100644 index 0000000..7607941 --- /dev/null +++ b/web/src/styles/index.scss @@ -0,0 +1,37 @@ +@use './var.css'; +@use './FormCreate/index.scss'; +@use './theme.scss'; +@use 'element-plus/theme-chalk/dark/css-vars.css'; + +.reset-margin [class*='el-icon'] + span { + margin-left: 2px !important; +} + +// 解决抽屉弹出时,body宽度变化的问题 +.el-popup-parent--hidden { + width: 100% !important; +} + +// 解决表格内容超过表格总宽度后,横向滚动条前端顶不到表格边缘的问题 +.el-scrollbar__bar { + display: flex; + justify-content: flex-start; +} + +/* nprogress 适配 element-plus 的主题色 */ +#nprogress { + & .bar { + background-color: var(--el-color-primary) !important; + } + + & .peg { + box-shadow: + 0 0 10px var(--el-color-primary), + 0 0 5px var(--el-color-primary) !important; + } + + & .spinner-icon { + border-top-color: var(--el-color-primary); + border-left-color: var(--el-color-primary); + } +} diff --git a/web/src/styles/theme.scss b/web/src/styles/theme.scss new file mode 100644 index 0000000..39b03b3 --- /dev/null +++ b/web/src/styles/theme.scss @@ -0,0 +1,6 @@ +// .text-color { +// color: var(--el-text-color-regular); +// } +// .dark .dark\:text-color { +// color: rgba(255, 255, 255, var(--dark-text-color)); +// } diff --git a/web/src/styles/var.css b/web/src/styles/var.css new file mode 100644 index 0000000..44f9405 --- /dev/null +++ b/web/src/styles/var.css @@ -0,0 +1,74 @@ +:root { + --login-bg-color: #293146; + + --left-menu-max-width: 200px; + + --left-menu-min-width: 64px; + + --left-menu-bg-color: #001529; + + --left-menu-bg-light-color: #0f2438; + + --left-menu-bg-active-color: var(--el-color-primary); + + --left-menu-text-color: #bfcbd9; + + --left-menu-text-active-color: #fff; + + --left-menu-collapse-bg-active-color: var(--el-color-primary); + /* left menu end */ + + /* logo start */ + --logo-height: 50px; + + --logo-title-text-color: #fff; + /* logo end */ + + /* header start */ + --top-header-bg-color: '#fff'; + + --top-header-text-color: 'inherit'; + + --top-header-hover-color: #f6f6f6; + + --top-tool-height: var(--logo-height); + + --top-tool-p-x: 0; + + --tags-view-height: 35px; + /* header start */ + + /* tab menu start */ + --tab-menu-max-width: 80px; + + --tab-menu-min-width: 30px; + + --tab-menu-collapse-height: 36px; + /* tab menu end */ + + --app-content-padding: 20px; + + --app-content-bg-color: #f5f7f9; + + --app-footer-height: 50px; + + --transition-time-02: 0.2s; +} + +.dark { + --app-content-bg-color: var(--el-bg-color); +} + +html, +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +*, +:after, +:before { + margin: 0; + padding: 0; + box-sizing: border-box; +} diff --git a/web/src/styles/variables.scss b/web/src/styles/variables.scss new file mode 100644 index 0000000..00b66f1 --- /dev/null +++ b/web/src/styles/variables.scss @@ -0,0 +1,4 @@ +// 命名空间 +$namespace: v; +// el命名空间 +$elNamespace: el; diff --git a/web/src/types/components.d.ts b/web/src/types/components.d.ts new file mode 100644 index 0000000..8de1f33 --- /dev/null +++ b/web/src/types/components.d.ts @@ -0,0 +1,56 @@ +export type ComponentName = + | 'Radio' + | 'RadioButton' + | 'Checkbox' + | 'CheckboxButton' + | 'Input' + | 'Autocomplete' + | 'InputNumber' + | 'Select' + | 'Cascader' + | 'Switch' + | 'Slider' + | 'TimePicker' + | 'DatePicker' + | 'Rate' + | 'ColorPicker' + | 'Transfer' + | 'Divider' + | 'TimeSelect' + | 'SelectV2' + | 'TreeSelect' + | 'InputPassword' + | 'Editor' + | 'UploadImg' + | 'UploadImgs' + | 'UploadFile' + +export type ColProps = { + span?: number + xs?: number + sm?: number + md?: number + lg?: number + xl?: number + tag?: string +} + +export type ComponentOptions = { + label?: string + value?: FormValueType + disabled?: boolean + key?: string | number + children?: ComponentOptions[] + options?: ComponentOptions[] +} & Recordable + +export type ComponentOptionsAlias = { + labelField?: string + valueField?: string +} + +export type ComponentProps = { + optionsAlias?: ComponentOptionsAlias + options?: ComponentOptions[] + optionsSlot?: boolean +} & Recordable diff --git a/web/src/types/configGlobal.d.ts b/web/src/types/configGlobal.d.ts new file mode 100644 index 0000000..f6d7b3c --- /dev/null +++ b/web/src/types/configGlobal.d.ts @@ -0,0 +1,4 @@ +import { ElementPlusSize } from './elementPlus' +export interface ConfigGlobalTypes { + size?: ElementPlusSize +} diff --git a/web/src/types/contextMenu.d.ts b/web/src/types/contextMenu.d.ts new file mode 100644 index 0000000..0738d0e --- /dev/null +++ b/web/src/types/contextMenu.d.ts @@ -0,0 +1,7 @@ +export type contextMenuSchema = { + disabled?: boolean + divided?: boolean + icon?: string + label: string + command?: (item: contextMenuSchema) => void +} diff --git a/web/src/types/descriptions.d.ts b/web/src/types/descriptions.d.ts new file mode 100644 index 0000000..af6d68c --- /dev/null +++ b/web/src/types/descriptions.d.ts @@ -0,0 +1,14 @@ +export interface DescriptionsSchema { + span?: number // 占多少分 + field: string // 字段名 + label?: string // label名 + mappedField?: string // 字段映射 + width?: string | number + minWidth?: string | number + align?: 'left' | 'center' | 'right' + labelAlign?: 'left' | 'center' | 'right' + className?: string + labelClassName?: string + dateFormat?: string // add by 星语:支持时间的格式化 + dictType?: string // add by 星语:支持 dict 字典数据 +} diff --git a/web/src/types/elementPlus.d.ts b/web/src/types/elementPlus.d.ts new file mode 100644 index 0000000..2c6b76e --- /dev/null +++ b/web/src/types/elementPlus.d.ts @@ -0,0 +1,3 @@ +export type ElementPlusSize = 'default' | 'small' | 'large' + +export type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger' diff --git a/web/src/types/form.d.ts b/web/src/types/form.d.ts new file mode 100644 index 0000000..980c8cc --- /dev/null +++ b/web/src/types/form.d.ts @@ -0,0 +1,44 @@ +import type { CSSProperties } from 'vue' +import { ColProps, ComponentProps, ComponentName } from '@/types/components' +import type { AxiosPromise } from 'axios' + +export type FormSetPropsType = { + field: string + path: string + value: any +} + +export type FormValueType = string | number | string[] | number[] | boolean | undefined | null + +export type FormItemProps = { + labelWidth?: string | number + required?: boolean + rules?: Recordable + error?: string + showMessage?: boolean + inlineMessage?: boolean + style?: CSSProperties +} + +export type FormSchema = { + // 唯一值 + field: string + // 标题 + label?: string + // 提示 + labelMessage?: string + // col组件属性 + colProps?: ColProps + // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档 + componentProps?: { slots?: Recordable } & ComponentProps + // formItem组件属性 + formItemProps?: FormItemProps + // 渲染的组件 + component?: ComponentName + // 初始值 + value?: FormValueType + // 是否隐藏 + hidden?: boolean + // 远程加载下拉项 + api?: () => AxiosPromise +} diff --git a/web/src/types/icon.d.ts b/web/src/types/icon.d.ts new file mode 100644 index 0000000..d1ffcdb --- /dev/null +++ b/web/src/types/icon.d.ts @@ -0,0 +1,5 @@ +export interface IconTypes { + size?: number + color?: string + icon: string +} diff --git a/web/src/types/infoTip.d.ts b/web/src/types/infoTip.d.ts new file mode 100644 index 0000000..6eff083 --- /dev/null +++ b/web/src/types/infoTip.d.ts @@ -0,0 +1,4 @@ +export interface TipSchema { + label: string + keys?: string[] +} diff --git a/web/src/types/layout.d.ts b/web/src/types/layout.d.ts new file mode 100644 index 0000000..cad3e2a --- /dev/null +++ b/web/src/types/layout.d.ts @@ -0,0 +1 @@ +export type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' diff --git a/web/src/types/localeDropdown.d.ts b/web/src/types/localeDropdown.d.ts new file mode 100644 index 0000000..c749dce --- /dev/null +++ b/web/src/types/localeDropdown.d.ts @@ -0,0 +1,10 @@ +export interface Language { + el: Recordable + name: string +} + +export interface LocaleDropdownType { + lang: LocaleType + name?: string + elLocale?: Language +} diff --git a/web/src/types/qrcode.d.ts b/web/src/types/qrcode.d.ts new file mode 100644 index 0000000..86cdf0b --- /dev/null +++ b/web/src/types/qrcode.d.ts @@ -0,0 +1,9 @@ +export interface QrcodeLogo { + src?: string + logoSize?: number + bgColor?: string + borderSize?: number + crossOrigin?: string + borderRadius?: number + logoRadius?: number +} diff --git a/web/src/types/table.d.ts b/web/src/types/table.d.ts new file mode 100644 index 0000000..9cb4205 --- /dev/null +++ b/web/src/types/table.d.ts @@ -0,0 +1,44 @@ +export type TableColumn = { + field: string + label?: string + width?: number | string + fixed?: 'left' | 'right' + children?: TableColumn[] +} & Recordable + +export type VxeTableColumn = { + field: string + title?: string + children?: TableColumn[] +} & Recordable + +export type TableSlotDefault = { + row: Recordable + column: TableColumn + $index: number +} & Recordable + +export interface Pagination { + small?: boolean + background?: boolean + pageSize?: number + defaultPageSize?: number + total?: number + pageCount?: number + pagerCount?: number + currentPage?: number + defaultCurrentPage?: number + layout?: string + pageSizes?: number[] + popperClass?: string + prevText?: string + nextText?: string + disabled?: boolean + hideOnSinglePage?: boolean +} + +export interface TableSetPropsType { + field: string + path: string + value: any +} diff --git a/web/src/types/theme.d.ts b/web/src/types/theme.d.ts new file mode 100644 index 0000000..ad649b0 --- /dev/null +++ b/web/src/types/theme.d.ts @@ -0,0 +1,16 @@ +export type ThemeTypes = { + elColorPrimary?: string + leftMenuBorderColor?: string + leftMenuBgColor?: string + leftMenuBgLightColor?: string + leftMenuBgActiveColor?: string + leftMenuCollapseBgActiveColor?: string + leftMenuTextColor?: string + leftMenuTextActiveColor?: string + logoTitleTextColor?: string + logoBorderColor?: string + topHeaderBgColor?: string + topHeaderTextColor?: string + topHeaderHoverColor?: string + topToolBorderColor?: string +} diff --git a/web/src/utils/Logger.ts b/web/src/utils/Logger.ts new file mode 100644 index 0000000..ca58df2 --- /dev/null +++ b/web/src/utils/Logger.ts @@ -0,0 +1,100 @@ +const isArray = function (obj: any): boolean { + return Object.prototype.toString.call(obj) === '[object Array]' +} + +const Logger = () => {} + +Logger.typeColor = function (type: string) { + let color = '' + switch (type) { + case 'primary': + color = '#2d8cf0' + break + case 'success': + color = '#19be6b' + break + case 'info': + color = '#909399' + break + case 'warn': + color = '#ff9900' + break + case 'error': + color = '#f03f14' + break + default: + color = '#35495E' + break + } + return color +} + +Logger.print = function (type = 'default', text: any, back = false) { + if (typeof text === 'object') { + // 如果是對象則調用打印對象方式 + isArray(text) ? console.table(text) : console.dir(text) + return + } + if (back) { + // 如果是打印帶背景圖的 + console.log( + `%c ${text} `, + `background:${Logger.typeColor(type)}; padding: 2px; border-radius: 4px; color: #fff;` + ) + } else { + console.log( + `%c ${text} `, + `border: 1px solid ${Logger.typeColor(type)}; + padding: 2px; border-radius: 4px; + color: ${Logger.typeColor(type)};` + ) + } +} + +Logger.printBack = function (type = 'primary', text) { + this.print(type, text, true) +} + +Logger.pretty = function (type = 'primary', title, text) { + if (typeof text === 'object') { + console.group('Console Group', title) + console.log( + `%c ${title}`, + `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 4px; color: #fff;` + ) + isArray(text) ? console.table(text) : console.dir(text) + console.groupEnd() + return + } + console.log( + `%c ${title} %c ${text} %c`, + `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 4px 0 0 4px; color: #fff;`, + `border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 0 4px 4px 0; color: ${Logger.typeColor(type)};`, + 'background:transparent' + ) +} + +Logger.prettyPrimary = function (title, ...text) { + text.forEach((t) => this.pretty('primary', title, t)) +} + +Logger.prettySuccess = function (title, ...text) { + text.forEach((t) => this.pretty('success', title, t)) +} + +Logger.prettyWarn = function (title, ...text) { + text.forEach((t) => this.pretty('warn', title, t)) +} + +Logger.prettyError = function (title, ...text) { + text.forEach((t) => this.pretty('error', title, t)) +} + +Logger.prettyInfo = function (title, ...text) { + text.forEach((t) => this.pretty('info', title, t)) +} + +export default Logger diff --git a/web/src/utils/auth.ts b/web/src/utils/auth.ts new file mode 100644 index 0000000..ad67440 --- /dev/null +++ b/web/src/utils/auth.ts @@ -0,0 +1,80 @@ +import { useCache, CACHE_KEY } from '@/hooks/web/useCache' +import { TokenType } from '@/api/login/types' +import { decrypt, encrypt } from '@/utils/jsencrypt' + +const { wsCache } = useCache() + +const AccessTokenKey = 'ACCESS_TOKEN' +const RefreshTokenKey = 'REFRESH_TOKEN' + +// 获取token +export const getAccessToken = () => { + // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错 + const accessToken = wsCache.get(AccessTokenKey) + return accessToken ? accessToken : wsCache.get('ACCESS_TOKEN') +} + +// 刷新token +export const getRefreshToken = () => { + return wsCache.get(RefreshTokenKey) +} + +// 设置token +export const setToken = (token: TokenType) => { + wsCache.set(RefreshTokenKey, token.refreshToken) + wsCache.set(AccessTokenKey, token.accessToken) +} + +// 删除token +export const removeToken = () => { + wsCache.delete(AccessTokenKey) + wsCache.delete(RefreshTokenKey) +} + +/** 格式化token(jwt格式) */ +export const formatToken = (token: string): string => { + return 'Bearer ' + token +} +// ========== 账号相关 ========== + +export type LoginFormType = { + tenantName: string + username: string + password: string + rememberMe: boolean +} + +export const getLoginForm = () => { + const loginForm: LoginFormType = wsCache.get(CACHE_KEY.LoginForm) + if (loginForm) { + loginForm.password = decrypt(loginForm.password) as string + } + return loginForm +} + +export const setLoginForm = (loginForm: LoginFormType) => { + loginForm.password = encrypt(loginForm.password) as string + wsCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 }) +} + +export const removeLoginForm = () => { + wsCache.delete(CACHE_KEY.LoginForm) +} + +// ========== 租户相关 ========== + +export const getTenantId = () => { + return wsCache.get(CACHE_KEY.TenantId) +} + +export const setTenantId = (tenantId: number) => { + wsCache.set(CACHE_KEY.TenantId, tenantId) +} + +export const getVisitTenantId = () => { + return wsCache.get(CACHE_KEY.VisitTenantId) +} + +export const setVisitTenantId = (visitTenantId: number) => { + wsCache.set(CACHE_KEY.VisitTenantId, visitTenantId) +} diff --git a/web/src/utils/color.ts b/web/src/utils/color.ts new file mode 100644 index 0000000..943be97 --- /dev/null +++ b/web/src/utils/color.ts @@ -0,0 +1,217 @@ +/** + * 判断是否 十六进制颜色值. + * 输入形式可为 #fff000 #f00 + * + * @param String color 十六进制颜色值 + * @return Boolean + */ +export const isHexColor = (color: string) => { + const reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-f]{6})$/ + return reg.test(color) +} + +/** + * RGB 颜色值转换为 十六进制颜色值. + * r, g, 和 b 需要在 [0, 255] 范围内 + * + * @return String 类似#ff00ff + * @param r + * @param g + * @param b + */ +export const rgbToHex = (r: number, g: number, b: number) => { + // tslint:disable-next-line:no-bitwise + const hex = ((r << 16) | (g << 8) | b).toString(16) + return '#' + new Array(Math.abs(hex.length - 7)).join('0') + hex +} + +/** + * Transform a HEX color to its RGB representation + * @param {string} hex The color to transform + * @returns The RGB representation of the passed color + */ +export const hexToRGB = (hex: string, opacity?: number) => { + let sHex = hex.toLowerCase() + if (isHexColor(hex)) { + if (sHex.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sHex.slice(i, i + 1).concat(sHex.slice(i, i + 1)) + } + sHex = sColorNew + } + const sColorChange: number[] = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt('0x' + sHex.slice(i, i + 2))) + } + return opacity + ? 'RGBA(' + sColorChange.join(',') + ',' + opacity + ')' + : 'RGB(' + sColorChange.join(',') + ')' + } + return sHex +} + +export const colorIsDark = (color: string) => { + if (!isHexColor(color)) return + const [r, g, b] = hexToRGB(color) + .replace(/(?:\(|\)|rgb|RGB)*/g, '') + .split(',') + .map((item) => Number(item)) + return r * 0.299 + g * 0.578 + b * 0.114 < 192 +} + +/** + * Darkens a HEX color given the passed percentage + * @param {string} color The color to process + * @param {number} amount The amount to change the color by + * @returns {string} The HEX representation of the processed color + */ +export const darken = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${subtractLight(color.substring(0, 2), amount)}${subtractLight( + color.substring(2, 4), + amount + )}${subtractLight(color.substring(4, 6), amount)}` +} + +/** + * Lightens a 6 char HEX color according to the passed percentage + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed color represented as HEX + */ +export const lighten = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${addLight(color.substring(0, 2), amount)}${addLight( + color.substring(2, 4), + amount + )}${addLight(color.substring(4, 6), amount)}` +} + +/* Suma el porcentaje indicado a un color (RR, GG o BB) hexadecimal para aclararlo */ +/** + * Sums the passed percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const addLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) + amount + const c = cc > 255 ? 255 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +/** + * Calculates luminance of an rgb color + * @param {number} r red + * @param {number} g green + * @param {number} b blue + */ +const luminanace = (r: number, g: number, b: number) => { + const a = [r, g, b].map((v) => { + v /= 255 + return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4) + }) + return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722 +} + +/** + * Calculates contrast between two rgb colors + * @param {string} rgb1 rgb color 1 + * @param {string} rgb2 rgb color 2 + */ +const contrast = (rgb1: string[], rgb2: number[]) => { + return ( + (luminanace(~~rgb1[0], ~~rgb1[1], ~~rgb1[2]) + 0.05) / + (luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05) + ) +} + +/** + * Determines what the best text color is (black or white) based con the contrast with the background + * @param hexColor - Last selected color by the user + */ +export const calculateBestTextColor = (hexColor: string) => { + const rgbColor = hexToRGB(hexColor.substring(1)) + const contrastWithBlack = contrast(rgbColor.split(','), [0, 0, 0]) + + return contrastWithBlack >= 12 ? '#000000' : '#FFFFFF' +} + +/** + * Subtracts the indicated percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const subtractLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) - amount + const c = cc < 0 ? 0 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +// 预设颜色 +export const PREDEFINE_COLORS = [ + '#ff4500', + '#ff8c00', + '#ffd700', + '#90ee90', + '#00ced1', + '#1e90ff', + '#c71585', + '#409EFF', + '#909399', + '#C0C4CC', + '#b7390b', + '#ff7800', + '#fad400', + '#5b8c5f', + '#00babd', + '#1f73c3', + '#711f57' +] + + +/** + * Mixes two colors. + * + * @param {string} color1 - The first color, should be a 6-digit hexadecimal color code starting with `#`. + * @param {string} color2 - The second color, should be a 6-digit hexadecimal color code starting with `#`. + * @param {number} [weight=0.5] - The weight of color1 in the mix, should be a number between 0 and 1, where 0 represents 100% of color2, and 1 represents 100% of color1. + * @returns {string} The mixed color, a 6-digit hexadecimal color code starting with `#`. + */ +export const mix = (color1: string, color2: string, weight: number = 0.5): string => { + let color = '#' + for (let i = 0; i <= 2; i++) { + const c1 = parseInt(color1.substring(1 + i * 2, 3 + i * 2), 16) + const c2 = parseInt(color2.substring(1 + i * 2, 3 + i * 2), 16) + const c = Math.round(c1 * weight + c2 * (1 - weight)) + color += c.toString(16).padStart(2, '0') + } + return color +} + +/** + * getCssColorVariable + * @description 获取css变量的颜色值 + * @param colorVariable css变量名 + * @param opacity 透明度 + * @returns {string} 颜色值 + * @example getCssColorVariable('--el-color-primary', 0.5) + * @example getCssColorVariable('--el-color-primary') + * @example getCssColorVariable() + */ +export const getCssColorVariable = ( + colorVariable: string = '--el-color-primary', + opacity?: number +) => { + const colorValue = getComputedStyle(document.documentElement) + .getPropertyValue(colorVariable) + .trim() + if (colorValue) { + return opacity ? hexToRGB(colorValue, opacity) : colorValue + } + return '' +} diff --git a/web/src/utils/constants.ts b/web/src/utils/constants.ts new file mode 100644 index 0000000..419ad8e --- /dev/null +++ b/web/src/utils/constants.ts @@ -0,0 +1,446 @@ +/** + * + * 枚举类 + */ + +// ========== COMMON 模块 ========== +// 全局通用状态枚举 +export const CommonStatusEnum = { + ENABLE: 0, // 开启 + DISABLE: 1 // 禁用 +} + +// 全局用户类型枚举 +export const UserTypeEnum = { + MEMBER: 1, // 会员 + ADMIN: 2 // 管理员 +} + +// ========== SYSTEM 模块 ========== +/** + * 菜单的类型枚举 + */ +export const SystemMenuTypeEnum = { + DIR: 1, // 目录 + MENU: 2, // 菜单 + BUTTON: 3 // 按钮 +} + +/** + * 角色的类型枚举 + */ +export const SystemRoleTypeEnum = { + SYSTEM: 1, // 内置角色 + CUSTOM: 2 // 自定义角色 +} + +/** + * 数据权限的范围枚举 + */ +export const SystemDataScopeEnum = { + ALL: 1, // 全部数据权限 + DEPT_CUSTOM: 2, // 指定部门数据权限 + DEPT_ONLY: 3, // 部门数据权限 + DEPT_AND_CHILD: 4, // 部门及以下数据权限 + DEPT_SELF: 5 // 仅本人数据权限 +} + +// ========== INFRA 模块 ========== +/** + * 代码生成模板类型 + */ +export const InfraCodegenTemplateTypeEnum = { + CRUD: 1, // 基础 CRUD + TREE: 2, // 树形 CRUD + SUB: 15 // 主子表 CRUD +} + +/** + * 任务状态的枚举 + */ +export const InfraJobStatusEnum = { + INIT: 0, // 初始化中 + NORMAL: 1, // 运行中 + STOP: 2 // 暂停运行 +} + +/** + * API 异常数据的处理状态 + */ +export const InfraApiErrorLogProcessStatusEnum = { + INIT: 0, // 未处理 + DONE: 1, // 已处理 + IGNORE: 2 // 已忽略 +} + +// ========== PAY 模块 ========== +/** + * 支付渠道枚举 + */ +export const PayChannelEnum = { + WX_PUB: { + code: 'wx_pub', + name: '微信 JSAPI 支付' + }, + WX_LITE: { + code: 'wx_lite', + name: '微信小程序支付' + }, + WX_APP: { + code: 'wx_app', + name: '微信 APP 支付' + }, + WX_NATIVE: { + code: 'wx_native', + name: '微信 Native 支付' + }, + WX_WAP: { + code: 'wx_wap', + name: '微信 WAP 网站支付' + }, + WX_BAR: { + code: 'wx_bar', + name: '微信条码支付' + }, + ALIPAY_PC: { + code: 'alipay_pc', + name: '支付宝 PC 网站支付' + }, + ALIPAY_WAP: { + code: 'alipay_wap', + name: '支付宝 WAP 网站支付' + }, + ALIPAY_APP: { + code: 'alipay_app', + name: '支付宝 APP 支付' + }, + ALIPAY_QR: { + code: 'alipay_qr', + name: '支付宝扫码支付' + }, + ALIPAY_BAR: { + code: 'alipay_bar', + name: '支付宝条码支付' + }, + WALLET: { + code: 'wallet', + name: '钱包支付' + }, + MOCK: { + code: 'mock', + name: '模拟支付' + } +} + +/** + * 支付的展示模式每局 + */ +export const PayDisplayModeEnum = { + URL: { + mode: 'url' + }, + IFRAME: { + mode: 'iframe' + }, + FORM: { + mode: 'form' + }, + QR_CODE: { + mode: 'qr_code' + }, + APP: { + mode: 'app' + } +} + +/** + * 支付类型枚举 + */ +export const PayType = { + WECHAT: 'WECHAT', + ALIPAY: 'ALIPAY', + MOCK: 'MOCK' +} + +/** + * 支付订单状态枚举 + */ +export const PayOrderStatusEnum = { + WAITING: { + status: 0, + name: '未支付' + }, + SUCCESS: { + status: 10, + name: '已支付' + }, + CLOSED: { + status: 20, + name: '未支付' + } +} + +// ========== MALL - 商品模块 ========== +/** + * 商品 SPU 状态 + */ +export const ProductSpuStatusEnum = { + RECYCLE: { + status: -1, + name: '回收站' + }, + DISABLE: { + status: 0, + name: '下架' + }, + ENABLE: { + status: 1, + name: '上架' + } +} + +// ========== MALL - 营销模块 ========== +/** + * 优惠劵模板的有限期类型的枚举 + */ +export const CouponTemplateValidityTypeEnum = { + DATE: { + type: 1, + name: '固定日期可用' + }, + TERM: { + type: 2, + name: '领取之后可用' + } +} + +/** + * 优惠劵模板的领取方式的枚举 + */ +export const CouponTemplateTakeTypeEnum = { + USER: { + type: 1, + name: '直接领取' + }, + ADMIN: { + type: 2, + name: '指定发放' + }, + REGISTER: { + type: 3, + name: '新人券' + } +} + +/** + * 营销的商品范围枚举 + */ +export const PromotionProductScopeEnum = { + ALL: { + scope: 1, + name: '通用劵' + }, + SPU: { + scope: 2, + name: '商品劵' + }, + CATEGORY: { + scope: 3, + name: '品类劵' + } +} + +/** + * 营销的条件类型枚举 + */ +export const PromotionConditionTypeEnum = { + PRICE: { + type: 10, + name: '满 N 元' + }, + COUNT: { + type: 20, + name: '满 N 件' + } +} + +/** + * 优惠类型枚举 + */ +export const PromotionDiscountTypeEnum = { + PRICE: { + type: 1, + name: '满减' + }, + PERCENT: { + type: 2, + name: '折扣' + } +} + +// ========== MALL - 交易模块 ========== +/** + * 分销关系绑定模式枚举 + */ +export const BrokerageBindModeEnum = { + ANYTIME: { + mode: 1, + name: '首次绑定' + }, + REGISTER: { + mode: 2, + name: '注册绑定' + }, + OVERRIDE: { + mode: 3, + name: '覆盖绑定' + } +} +/** + * 分佣模式枚举 + */ +export const BrokerageEnabledConditionEnum = { + ALL: { + condition: 1, + name: '人人分销' + }, + ADMIN: { + condition: 2, + name: '指定分销' + } +} +/** + * 佣金记录业务类型枚举 + */ +export const BrokerageRecordBizTypeEnum = { + ORDER: { + type: 1, + name: '获得推广佣金' + }, + WITHDRAW: { + type: 2, + name: '提现申请' + } +} +/** + * 佣金提现状态枚举 + */ +export const BrokerageWithdrawStatusEnum = { + AUDITING: { + status: 0, + name: '审核中' + }, + AUDIT_SUCCESS: { + status: 10, + name: '审核通过' + }, + AUDIT_FAIL: { + status: 20, + name: '审核不通过' + }, + WITHDRAW_SUCCESS: { + status: 11, + name: '提现成功' + }, + WITHDRAW_FAIL: { + status: 21, + name: '提现失败' + } +} +/** + * 佣金提现类型枚举 + */ +export const BrokerageWithdrawTypeEnum = { + WALLET: { + type: 1, + name: '钱包' + }, + BANK: { + type: 2, + name: '银行卡' + }, + WECHAT: { + type: 3, + name: '微信' + }, + ALIPAY: { + type: 4, + name: '支付宝' + } +} + +/** + * 配送方式枚举 + */ +export const DeliveryTypeEnum = { + EXPRESS: { + type: 1, + name: '快递发货' + }, + PICK_UP: { + type: 2, + name: '到店自提' + } +} +/** + * 交易订单 - 状态 + */ +export const TradeOrderStatusEnum = { + UNPAID: { + status: 0, + name: '待支付' + }, + UNDELIVERED: { + status: 10, + name: '待发货' + }, + DELIVERED: { + status: 20, + name: '已发货' + }, + COMPLETED: { + status: 30, + name: '已完成' + }, + CANCELED: { + status: 40, + name: '已取消' + } +} + +// ========== ERP - 企业资源计划 ========== + +export const ErpBizType = { + PURCHASE_ORDER: 10, + PURCHASE_IN: 11, + PURCHASE_RETURN: 12, + SALE_ORDER: 20, + SALE_OUT: 21, + SALE_RETURN: 22 +} + +// ========== BPM 模块 ========== + +export const BpmModelType = { + BPMN: 10, // BPMN 设计器 + SIMPLE: 20 // 简易设计器 +} + +export const BpmModelFormType = { + NORMAL: 10, // 流程表单 + CUSTOM: 20 // 业务表单 +} + +export const BpmProcessInstanceStatus = { + NOT_START: -1, // 未开始 + RUNNING: 1, // 审批中 + APPROVE: 2, // 审批通过 + REJECT: 3, // 审批不通过 + CANCEL: 4 // 已取消 +} + +export const BpmAutoApproveType = { + NONE: 0, // 不自动通过 + APPROVE_ALL: 1, // 仅审批一次,后续重复的审批节点均自动通过 + APPROVE_SEQUENT: 2 // 仅针对连续审批的节点自动通过 +} diff --git a/web/src/utils/dateUtil.ts b/web/src/utils/dateUtil.ts new file mode 100644 index 0000000..316b870 --- /dev/null +++ b/web/src/utils/dateUtil.ts @@ -0,0 +1,18 @@ +/** + * Independent time operation tool to facilitate subsequent switch to dayjs + */ +// TODO 芋艿:【锁屏】可能后面删除掉 +import dayjs from 'dayjs' + +const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss' +const DATE_FORMAT = 'YYYY-MM-DD' + +export function formatToDateTime(date?: dayjs.ConfigType, format = DATE_TIME_FORMAT): string { + return dayjs(date).format(format) +} + +export function formatToDate(date?: dayjs.ConfigType, format = DATE_FORMAT): string { + return dayjs(date).format(format) +} + +export const dateUtil = dayjs diff --git a/web/src/utils/dict.ts b/web/src/utils/dict.ts new file mode 100644 index 0000000..7582a0b --- /dev/null +++ b/web/src/utils/dict.ts @@ -0,0 +1,171 @@ +/** + * 数据字典工具类 + */ +import { useDictStoreWithOut } from '@/store/modules/dict' +import { ElementPlusInfoType } from '@/types/elementPlus' + +const dictStore = useDictStoreWithOut() + +/** + * 获取 dictType 对应的数据字典数组 + * + * @param dictType 数据类型 + * @returns {*|Array} 数据字典数组 + */ +export interface DictDataType { + dictType: string + label: string + value: string | number | boolean + colorType: ElementPlusInfoType | '' + cssClass: string +} + +export interface NumberDictDataType extends DictDataType { + value: number +} + +export interface StringDictDataType extends DictDataType { + value: string +} + +export const getDictOptions = (dictType: string) => { + return dictStore.getDictByType(dictType) || [] +} + +export const getIntDictOptions = (dictType: string): NumberDictDataType[] => { + // 获得通用的 DictDataType 列表 + const dictOptions: DictDataType[] = getDictOptions(dictType) + // 转换成 number 类型的 NumberDictDataType 类型 + // why 需要特殊转换:避免 IDEA 在 v-for="dict in getIntDictOptions(...)" 时,el-option 的 key 会告警 + const dictOption: NumberDictDataType[] = [] + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: parseInt(dict.value + '') + }) + }) + return dictOption +} + +export const getStrDictOptions = (dictType: string) => { + // 获得通用的 DictDataType 列表 + const dictOptions: DictDataType[] = getDictOptions(dictType) + // 转换成 string 类型的 StringDictDataType 类型 + // why 需要特殊转换:避免 IDEA 在 v-for="dict in getStrDictOptions(...)" 时,el-option 的 key 会告警 + const dictOption: StringDictDataType[] = [] + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' + }) + }) + return dictOption +} + +export const getBoolDictOptions = (dictType: string) => { + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' === 'true' + }) + }) + return dictOption +} + +/** + * 获取指定字典类型的指定值对应的字典对象 + * @param dictType 字典类型 + * @param value 字典值 + * @return DictDataType 字典对象 + */ +export const getDictObj = (dictType: string, value: any): DictDataType | undefined => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + for (const dict of dictOptions) { + if (dict.value === value + '') { + return dict + } + } +} + +/** + * 获得字典数据的文本展示 + * + * @param dictType 字典类型 + * @param value 字典数据的值 + * @return 字典名称 + */ +export const getDictLabel = (dictType: string, value: any): string => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + const dictLabel = ref('') + dictOptions.forEach((dict: DictDataType) => { + if (dict.value === value + '') { + dictLabel.value = dict.label + } + }) + return dictLabel.value +} + +export enum DICT_TYPE { + USER_TYPE = 'user_type', + COMMON_STATUS = 'common_status', + TERMINAL = 'terminal', // 终端 + DATE_INTERVAL = 'date_interval', // 数据间隔 + + // ========== SYSTEM 模块 ========== + SYSTEM_USER_SEX = 'system_user_sex', + SYSTEM_MENU_TYPE = 'system_menu_type', + SYSTEM_ROLE_TYPE = 'system_role_type', + SYSTEM_DATA_SCOPE = 'system_data_scope', + SYSTEM_NOTICE_TYPE = 'system_notice_type', + SYSTEM_LOGIN_TYPE = 'system_login_type', + SYSTEM_LOGIN_RESULT = 'system_login_result', + SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code', + SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type', + SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status', + SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status', + SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type', + SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', + SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', + + // ========== INFRA 模块 ========== + INFRA_BOOLEAN_STRING = 'infra_boolean_string', + INFRA_JOB_STATUS = 'infra_job_status', + INFRA_JOB_LOG_STATUS = 'infra_job_log_status', + INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', + INFRA_CONFIG_TYPE = 'infra_config_type', + INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type', + INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type', + INFRA_CODEGEN_SCENE = 'infra_codegen_scene', + INFRA_FILE_STORAGE = 'infra_file_storage', + INFRA_OPERATE_TYPE = 'infra_operate_type', + + // ========== BPM 模块 ========== + BPM_MODEL_TYPE = 'bpm_model_type', + BPM_MODEL_FORM_TYPE = 'bpm_model_form_type', + BPM_TASK_CANDIDATE_STRATEGY = 'bpm_task_candidate_strategy', + BPM_PROCESS_INSTANCE_STATUS = 'bpm_process_instance_status', + BPM_TASK_STATUS = 'bpm_task_status', + BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type', + BPM_PROCESS_LISTENER_TYPE = 'bpm_process_listener_type', + BPM_PROCESS_LISTENER_VALUE_TYPE = 'bpm_process_listener_value_type', + + // ========== IOT - 物联网模块 ========== + IOT_NET_TYPE = 'iot_net_type', // IOT 联网方式 + IOT_VALIDATE_TYPE = 'iot_validate_type', // IOT 数据校验级别 + IOT_PRODUCT_STATUS = 'iot_product_status', // IOT 产品状态 + IOT_PRODUCT_DEVICE_TYPE = 'iot_product_device_type', // IOT 产品设备类型 + IOT_DATA_FORMAT = 'iot_data_format', // IOT 数据格式 + IOT_PROTOCOL_TYPE = 'iot_protocol_type', // IOT 接入网关协议 + IOT_DEVICE_STATE = 'iot_device_state', // IOT 设备状态 + IOT_THING_MODEL_TYPE = 'iot_thing_model_type', // IOT 产品功能类型 + IOT_DATA_TYPE = 'iot_data_type', // IOT 数据类型 + IOT_THING_MODEL_UNIT = 'iot_thing_model_unit', // IOT 物模型单位 + IOT_RW_TYPE = 'iot_rw_type', // IOT 读写类型 + IOT_PLUGIN_DEPLOY_TYPE = 'iot_plugin_deploy_type', // IOT 插件部署类型 + IOT_PLUGIN_STATUS = 'iot_plugin_status', // IOT 插件状态 + IOT_PLUGIN_TYPE = 'iot_plugin_type', // IOT 插件类型 + IOT_DATA_BRIDGE_DIRECTION_ENUM = 'iot_data_bridge_direction_enum', // 桥梁方向 + IOT_DATA_BRIDGE_TYPE_ENUM = 'iot_data_bridge_type_enum' // 桥梁类型 +} diff --git a/web/src/utils/domUtils.ts b/web/src/utils/domUtils.ts new file mode 100644 index 0000000..dbc1989 --- /dev/null +++ b/web/src/utils/domUtils.ts @@ -0,0 +1,289 @@ +import { isServer } from './is' +const ieVersion = isServer ? 0 : Number((document as any).documentMode) +const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g +const MOZ_HACK_REGEXP = /^moz([A-Z])/ + +export interface ViewportOffsetResult { + left: number + top: number + right: number + bottom: number + rightIncludeBody: number + bottomIncludeBody: number +} + +/* istanbul ignore next */ +const trim = function (string: string) { + return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '') +} + +/* istanbul ignore next */ +const camelCase = function (name: string) { + return name + .replace(SPECIAL_CHARS_REGEXP, function (_, __, letter, offset) { + return offset ? letter.toUpperCase() : letter + }) + .replace(MOZ_HACK_REGEXP, 'Moz$1') +} + +/* istanbul ignore next */ +export function hasClass(el: Element, cls: string) { + if (!el || !cls) return false + if (cls.indexOf(' ') !== -1) { + throw new Error('className should not contain space.') + } + if (el.classList) { + return el.classList.contains(cls) + } else { + return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1 + } +} + +/* istanbul ignore next */ +export function addClass(el: Element, cls: string) { + if (!el) return + let curClass = el.className + const classes = (cls || '').split(' ') + + for (let i = 0, j = classes.length; i < j; i++) { + const clsName = classes[i] + if (!clsName) continue + + if (el.classList) { + el.classList.add(clsName) + } else if (!hasClass(el, clsName)) { + curClass += ' ' + clsName + } + } + if (!el.classList) { + el.className = curClass + } +} + +/* istanbul ignore next */ +export function removeClass(el: Element, cls: string) { + if (!el || !cls) return + const classes = cls.split(' ') + let curClass = ' ' + el.className + ' ' + + for (let i = 0, j = classes.length; i < j; i++) { + const clsName = classes[i] + if (!clsName) continue + + if (el.classList) { + el.classList.remove(clsName) + } else if (hasClass(el, clsName)) { + curClass = curClass.replace(' ' + clsName + ' ', ' ') + } + } + if (!el.classList) { + el.className = trim(curClass) + } +} + +export function getBoundingClientRect(element: Element): DOMRect | number { + if (!element || !element.getBoundingClientRect) { + return 0 + } + return element.getBoundingClientRect() +} + +/** + * 获取当前元素的left、top偏移 + * left:元素最左侧距离文档左侧的距离 + * top:元素最顶端距离文档顶端的距离 + * right:元素最右侧距离文档右侧的距离 + * bottom:元素最底端距离文档底端的距离 + * rightIncludeBody:元素最左侧距离文档右侧的距离 + * bottomIncludeBody:元素最底端距离文档最底部的距离 + * + * @description: + */ +export function getViewportOffset(element: Element): ViewportOffsetResult { + const doc = document.documentElement + + const docScrollLeft = doc.scrollLeft + const docScrollTop = doc.scrollTop + const docClientLeft = doc.clientLeft + const docClientTop = doc.clientTop + + const pageXOffset = window.pageXOffset + const pageYOffset = window.pageYOffset + + const box = getBoundingClientRect(element) + + const { left: retLeft, top: rectTop, width: rectWidth, height: rectHeight } = box as DOMRect + + const scrollLeft = (pageXOffset || docScrollLeft) - (docClientLeft || 0) + const scrollTop = (pageYOffset || docScrollTop) - (docClientTop || 0) + const offsetLeft = retLeft + pageXOffset + const offsetTop = rectTop + pageYOffset + + const left = offsetLeft - scrollLeft + const top = offsetTop - scrollTop + + const clientWidth = window.document.documentElement.clientWidth + const clientHeight = window.document.documentElement.clientHeight + return { + left: left, + top: top, + right: clientWidth - rectWidth - left, + bottom: clientHeight - rectHeight - top, + rightIncludeBody: clientWidth - left, + bottomIncludeBody: clientHeight - top + } +} + +/* istanbul ignore next */ +export const on = function ( + element: HTMLElement | Document | Window, + event: string, + handler: EventListenerOrEventListenerObject +): void { + if (element && event && handler) { + element.addEventListener(event, handler, false) + } +} + +/* istanbul ignore next */ +export const off = function ( + element: HTMLElement | Document | Window, + event: string, + handler: any +): void { + if (element && event && handler) { + element.removeEventListener(event, handler, false) + } +} + +/* istanbul ignore next */ +export const once = function (el: HTMLElement, event: string, fn: EventListener): void { + const listener = function (this: any, ...args: unknown[]) { + if (fn) { + // @ts-ignore + fn.apply(this, args) + } + off(el, event, listener) + } + on(el, event, listener) +} + +/* istanbul ignore next */ +export const getStyle = + ieVersion < 9 + ? function (element: Element | any, styleName: string) { + if (isServer) return + if (!element || !styleName) return null + styleName = camelCase(styleName) + if (styleName === 'float') { + styleName = 'styleFloat' + } + try { + switch (styleName) { + case 'opacity': + try { + return element.filters.item('alpha').opacity / 100 + } catch (e) { + return 1.0 + } + default: + return element.style[styleName] || element.currentStyle + ? element.currentStyle[styleName] + : null + } + } catch (e) { + return element.style[styleName] + } + } + : function (element: Element | any, styleName: string) { + if (isServer) return + if (!element || !styleName) return null + styleName = camelCase(styleName) + if (styleName === 'float') { + styleName = 'cssFloat' + } + try { + const computed = (document as any).defaultView.getComputedStyle(element, '') + return element.style[styleName] || computed ? computed[styleName] : null + } catch (e) { + return element.style[styleName] + } + } + +/* istanbul ignore next */ +export function setStyle(element: Element | any, styleName: any, value: any) { + if (!element || !styleName) return + + if (typeof styleName === 'object') { + for (const prop in styleName) { + if (Object.prototype.hasOwnProperty.call(styleName, prop)) { + setStyle(element, prop, styleName[prop]) + } + } + } else { + styleName = camelCase(styleName) + if (styleName === 'opacity' && ieVersion < 9) { + element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')' + } else { + element.style[styleName] = value + } + } +} + +/* istanbul ignore next */ +export const isScroll = (el: Element, vertical: any) => { + if (isServer) return + + const determinedDirection = vertical !== null || vertical !== undefined + const overflow = determinedDirection + ? vertical + ? getStyle(el, 'overflow-y') + : getStyle(el, 'overflow-x') + : getStyle(el, 'overflow') + + return overflow.match(/(scroll|auto)/) +} + +/* istanbul ignore next */ +export const getScrollContainer = (el: Element, vertical?: any) => { + if (isServer) return + + let parent: any = el + while (parent) { + if ([window, document, document.documentElement].includes(parent)) { + return window + } + if (isScroll(parent, vertical)) { + return parent + } + parent = parent.parentNode + } + + return parent +} + +/* istanbul ignore next */ +export const isInContainer = (el: Element, container: any) => { + if (isServer || !el || !container) return false + + const elRect = el.getBoundingClientRect() + let containerRect + + if ([window, document, document.documentElement, null, undefined].includes(container)) { + containerRect = { + top: 0, + right: window.innerWidth, + bottom: window.innerHeight, + left: 0 + } + } else { + containerRect = container.getBoundingClientRect() + } + + return ( + elRect.top < containerRect.bottom && + elRect.bottom > containerRect.top && + elRect.right > containerRect.left && + elRect.left < containerRect.right + ) +} diff --git a/web/src/utils/download.ts b/web/src/utils/download.ts new file mode 100644 index 0000000..32fc624 --- /dev/null +++ b/web/src/utils/download.ts @@ -0,0 +1,100 @@ +const download0 = (data: Blob, fileName: string, mineType: string) => { + // 创建 blob + const blob = new Blob([data], { type: mineType }) + // 创建 href 超链接,点击进行下载 + window.URL = window.URL || window.webkitURL + const href = URL.createObjectURL(blob) + const downA = document.createElement('a') + downA.href = href + downA.download = fileName + downA.click() + // 销毁超连接 + window.URL.revokeObjectURL(href) +} + +const download = { + // 下载 Excel 方法 + excel: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/vnd.ms-excel') + }, + // 下载 Word 方法 + word: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/msword') + }, + // 下载 Zip 方法 + zip: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/zip') + }, + // 下载 Html 方法 + html: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/html') + }, + // 下载 Markdown 方法 + markdown: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/markdown') + }, + // 下载 Json 方法 + json: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/json') + }, + // 下载图片(允许跨域) + image: ({ + url, + canvasWidth, + canvasHeight, + drawWithImageSize = true + }: { + url: string + canvasWidth?: number // 指定画布宽度 + canvasHeight?: number // 指定画布高度 + drawWithImageSize?: boolean // 将图片绘制在画布上时带上图片的宽高值, 默认是要带上的 + }) => { + const image = new Image() + // image.setAttribute('crossOrigin', 'anonymous') + image.src = url + image.onload = () => { + const canvas = document.createElement('canvas') + canvas.width = canvasWidth || image.width + canvas.height = canvasHeight || image.height + const ctx = canvas.getContext('2d') as CanvasRenderingContext2D + ctx?.clearRect(0, 0, canvas.width, canvas.height) + if (drawWithImageSize) { + ctx.drawImage(image, 0, 0, image.width, image.height) + } else { + ctx.drawImage(image, 0, 0) + } + const url = canvas.toDataURL('image/png') + const a = document.createElement('a') + a.href = url + a.download = 'image.png' + a.click() + } + }, + base64ToFile: (base64: any, fileName: string) => { + // 将base64按照 , 进行分割 将前缀 与后续内容分隔开 + const data = base64.split(',') + // 利用正则表达式 从前缀中获取图片的类型信息(image/png、image/jpeg、image/webp等) + const type = data[0].match(/:(.*?);/)[1] + // 从图片的类型信息中 获取具体的文件格式后缀(png、jpeg、webp) + const suffix = type.split('/')[1] + // 使用atob()对base64数据进行解码 结果是一个文件数据流 以字符串的格式输出 + const bstr = window.atob(data[1]) + // 获取解码结果字符串的长度 + let n = bstr.length + // 根据解码结果字符串的长度创建一个等长的整形数字数组 + // 但在创建时 所有元素初始值都为 0 + const u8arr = new Uint8Array(n) + // 将整形数组的每个元素填充为解码结果字符串对应位置字符的UTF-16 编码单元 + while (n--) { + // charCodeAt():获取给定索引处字符对应的 UTF-16 代码单元 + u8arr[n] = bstr.charCodeAt(n) + } + + // 将File文件对象返回给方法的调用者 + return new File([u8arr], `${fileName}.${suffix}`, { + type: type + }) + } +} + +export default download diff --git a/web/src/utils/filt.ts b/web/src/utils/filt.ts new file mode 100644 index 0000000..b1a7b2c --- /dev/null +++ b/web/src/utils/filt.ts @@ -0,0 +1,157 @@ +export const openWindow = ( + url: string, + opt?: { + target?: '_self' | '_blank' | string + noopener?: boolean + noreferrer?: boolean + } +) => { + const { target = '__blank', noopener = true, noreferrer = true } = opt || {} + const feature: string[] = [] + + noopener && feature.push('noopener=yes') + noreferrer && feature.push('noreferrer=yes') + + window.open(url, target, feature.join(',')) +} + +/** + * @description: base64 to blob + */ +export const dataURLtoBlob = (base64Buf: string): Blob => { + const arr = base64Buf.split(',') + const typeItem = arr[0] + const mime = typeItem.match(/:(.*?);/)![1] + const bstr = window.atob(arr[1]) + let n = bstr.length + const u8arr = new Uint8Array(n) + while (n--) { + u8arr[n] = bstr.charCodeAt(n) + } + return new Blob([u8arr], { type: mime }) +} + +/** + * img url to base64 + * @param url + */ +export const urlToBase64 = (url: string, mineType?: string): Promise => { + return new Promise((resolve, reject) => { + let canvas = document.createElement('CANVAS') as Nullable + const ctx = canvas!.getContext('2d') + + const img = new Image() + img.crossOrigin = '' + img.onload = function () { + if (!canvas || !ctx) { + return reject() + } + canvas.height = img.height + canvas.width = img.width + ctx.drawImage(img, 0, 0) + const dataURL = canvas.toDataURL(mineType || 'image/png') + canvas = null + resolve(dataURL) + } + img.src = url + }) +} + +/** + * Download online pictures + * @param url + * @param filename + * @param mime + * @param bom + */ +export const downloadByOnlineUrl = ( + url: string, + filename: string, + mime?: string, + bom?: BlobPart +) => { + urlToBase64(url).then((base64) => { + downloadByBase64(base64, filename, mime, bom) + }) +} + +/** + * Download pictures based on base64 + * @param buf + * @param filename + * @param mime + * @param bom + */ +export const downloadByBase64 = (buf: string, filename: string, mime?: string, bom?: BlobPart) => { + const base64Buf = dataURLtoBlob(buf) + downloadByData(base64Buf, filename, mime, bom) +} + +/** + * Download according to the background interface file stream + * @param {*} data + * @param {*} filename + * @param {*} mime + * @param {*} bom + */ +export const downloadByData = (data: BlobPart, filename: string, mime?: string, bom?: BlobPart) => { + const blobData = typeof bom !== 'undefined' ? [bom, data] : [data] + const blob = new Blob(blobData, { type: mime || 'application/octet-stream' }) + + const blobURL = window.URL.createObjectURL(blob) + const tempLink = document.createElement('a') + tempLink.style.display = 'none' + tempLink.href = blobURL + tempLink.setAttribute('download', filename) + if (typeof tempLink.download === 'undefined') { + tempLink.setAttribute('target', '_blank') + } + document.body.appendChild(tempLink) + tempLink.click() + document.body.removeChild(tempLink) + window.URL.revokeObjectURL(blobURL) +} + +/** + * Download file according to file address + * @param {*} sUrl + */ +export const downloadByUrl = ({ + url, + target = '_blank', + fileName +}: { + url: string + target?: '_self' | '_blank' + fileName?: string +}): boolean => { + const isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1 + const isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1 + + if (/(iP)/g.test(window.navigator.userAgent)) { + console.error('Your browser does not support download!') + return false + } + if (isChrome || isSafari) { + const link = document.createElement('a') + link.href = url + link.target = target + + if (link.download !== undefined) { + link.download = fileName || url.substring(url.lastIndexOf('/') + 1, url.length) + } + + if (document.createEvent) { + const e = document.createEvent('MouseEvents') + e.initEvent('click', true, true) + link.dispatchEvent(e) + return true + } + } + if (url.indexOf('?') === -1) { + url += '?download' + } + + openWindow(url, { target }) + return true +} diff --git a/web/src/utils/formCreate.ts b/web/src/utils/formCreate.ts new file mode 100644 index 0000000..19862f5 --- /dev/null +++ b/web/src/utils/formCreate.ts @@ -0,0 +1,205 @@ +/** + * 针对 https://github.com/xaboy/form-create-designer 封装的工具类 + */ +import { isRef } from 'vue' + +// 编码表单 Conf +export const encodeConf = (designerRef: object) => { + // @ts-ignore + return JSON.stringify(designerRef.value.getOption()) +} + +// 编码表单 Fields +export const encodeFields = (designerRef: object) => { + // @ts-ignore + const rule = JSON.parse(designerRef.value.getJson()) + const fields: string[] = [] + rule.forEach((item) => { + fields.push(JSON.stringify(item)) + }) + return fields +} + +// 解码表单 Fields +export const decodeFields = (fields: string[]) => { + const rule: object[] = [] + fields.forEach((item) => { + rule.push(JSON.parse(item)) + }) + return rule +} + +// 设置表单的 Conf 和 Fields,适用 FcDesigner 场景 +export const setConfAndFields = (designerRef: object, conf: string, fields: string) => { + // @ts-ignore + designerRef.value.setOption(JSON.parse(conf)) + // @ts-ignore + designerRef.value.setRule(decodeFields(fields)) +} + +// 设置表单的 Conf 和 Fields,适用 form-create 场景 +export const setConfAndFields2 = ( + detailPreview: object, + conf: string, + fields: string[], + value?: object +) => { + if (isRef(detailPreview)) { + // @ts-ignore + detailPreview = detailPreview.value + } + + // 修复所有函数类型(解决设计器保存后函数变成字符串的问题)。例如说: + // https://t.zsxq.com/rADff + // https://t.zsxq.com/ZfbGt + // https://t.zsxq.com/mHOoj + // https://t.zsxq.com/BSylB + const option = JSON.parse(conf) + const rule = decodeFields(fields) + // 🔧 修复所有函数类型 - 解决设计器保存后函数变成字符串的问题 + const fixFunctions = (obj: any) => { + if (obj && typeof obj === 'object') { + Object.keys(obj).forEach((key) => { + // 检查是否是函数相关的属性 + if (isFunctionProperty(key)) { + // 如果不是函数类型,重新构建为函数 + if (typeof obj[key] !== 'function') { + obj[key] = createDefaultFunction(key) + } + } else if (typeof obj[key] === 'object' && obj[key] !== null) { + // 递归处理嵌套对象 + fixFunctions(obj[key]) + } + }) + } + } + // 判断是否是函数属性 + const isFunctionProperty = (key: string): boolean => { + const functionKeys = [ + 'beforeFetch', // 请求前处理 + 'afterFetch', // 请求后处理 + 'onSubmit', // 表单提交 + 'onReset', // 表单重置 + 'onChange', // 值变化 + 'onInput', // 输入事件 + 'onClick', // 点击事件 + 'onFocus', // 获取焦点 + 'onBlur', // 失去焦点 + 'onMounted', // 组件挂载 + 'onCreated', // 组件创建 + 'onReload', // 重新加载 + 'remoteMethod', // 远程搜索方法 + 'parseFunc', // 解析函数 + 'validator', // 验证器 + 'asyncValidator', // 异步验证器 + 'formatter', // 格式化函数 + 'parser', // 解析函数 + 'beforeUpload', // 上传前处理 + 'onSuccess', // 成功回调 + 'onError', // 错误回调 + 'onProgress', // 进度回调 + 'onPreview', // 预览回调 + 'onRemove', // 移除回调 + 'onExceed', // 超出限制回调 + 'filterMethod', // 过滤方法 + 'sortMethod', // 排序方法 + 'loadData', // 加载数据 + 'renderContent', // 渲染内容 + 'render' // 渲染函数 + ] + // 检查是否以函数相关前缀开头 + const functionPrefixes = ['on', 'before', 'after', 'handle'] + return functionKeys.includes(key) || functionPrefixes.some((prefix) => key.startsWith(prefix)) + } + // 根据函数名创建默认函数 + const createDefaultFunction = (key: string): Function => { + switch (key) { + case 'beforeFetch': + return (config: any) => { + // 添加 Token 认证头。例如说: + // https://t.zsxq.com/hK3FO + const token = localStorage.getItem('token') + if (token) { + config.headers = { + ...config.headers, + Authorization: 'Bearer ' + token + } + } + // 添加通用请求头 + config.headers = { + ...config.headers, + 'Content-Type': 'application/json', + 'X-Requested-With': 'XMLHttpRequest' + } + // 添加时间戳防止缓存 + config.params = { + ...config.params, + _t: Date.now() + } + return config + } + case 'afterFetch': + return (data: any) => { + return data + } + case 'onSubmit': + return (_formData: any) => { + return true + } + case 'onReset': + return () => { + return true + } + case 'onChange': + return (_value: any, _oldValue: any) => {} + case 'remoteMethod': + return (query: string) => { + console.log('remoteMethod被调用:', query) + } + case 'parseFunc': + return (data: any) => { + // 默认解析逻辑:如果是数组直接返回,否则尝试获取list属性 + if (Array.isArray(data)) { + return data + } + return data?.list || data?.data || [] + } + case 'validator': + return (_rule: any, _value: any, callback: Function) => { + callback() + } + case 'beforeUpload': + return (_file: any) => { + return true + } + default: + // 通用默认函数 + return (...args: any[]) => { + // 对于事件处理函数,返回true表示继续执行 + if (key.startsWith('on') || key.startsWith('handle')) { + return true + } + // 对于其他函数,返回第一个参数(通常是数据传递) + return args[0] + } + } + } + // 修复 option 中的所有函数 + fixFunctions(option) + // 修复 rule 中的所有函数(包括组件的 props) + if (Array.isArray(rule)) { + rule.forEach((item: any) => { + fixFunctions(item) + }) + } + + // @ts-ignore + detailPreview.option = option + // @ts-ignore + detailPreview.rule = rule + + if (value) { + // @ts-ignore + detailPreview.value = value + } +} diff --git a/web/src/utils/formRules.ts b/web/src/utils/formRules.ts new file mode 100644 index 0000000..2989867 --- /dev/null +++ b/web/src/utils/formRules.ts @@ -0,0 +1,7 @@ +const { t } = useI18n() + +// 必填项 +export const required = { + required: true, + message: t('common.required') +} diff --git a/web/src/utils/formatTime.ts b/web/src/utils/formatTime.ts new file mode 100644 index 0000000..99eb428 --- /dev/null +++ b/web/src/utils/formatTime.ts @@ -0,0 +1,332 @@ +import dayjs from 'dayjs' +import type { TableColumnCtx } from 'element-plus' + +/** + * 日期快捷选项适用于 el-date-picker + */ +export const defaultShortcuts = [ + { + text: '今天', + value: () => { + return new Date() + } + }, + { + text: '昨天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24) + return [date, date] + } + }, + { + text: '最近七天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7) + return [date, new Date()] + } + }, + { + text: '最近 30 天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 30) + return [date, new Date()] + } + }, + { + text: '本月', + value: () => { + const date = new Date() + date.setDate(1) // 设置为当前月的第一天 + return [date, new Date()] + } + }, + { + text: '今年', + value: () => { + const date = new Date() + return [new Date(`${date.getFullYear()}-01-01`), date] + } + } +] + +/** + * 时间日期转换 + * @param date 当前时间,new Date() 格式 + * @param format 需要转换的时间格式字符串 + * @description format 字符串随意,如 `YYYY-MM、YYYY-MM-DD` + * @description format 季度:"YYYY-MM-DD HH:mm:ss QQQQ" + * @description format 星期:"YYYY-MM-DD HH:mm:ss WWW" + * @description format 几周:"YYYY-MM-DD HH:mm:ss ZZZ" + * @description format 季度 + 星期 + 几周:"YYYY-MM-DD HH:mm:ss WWW QQQQ ZZZ" + * @returns 返回拼接后的时间字符串 + */ +export function formatDate(date: Date, format?: string): string { + // 日期不存在,则返回空 + if (!date) { + return '' + } + // 日期存在,则进行格式化 + return date ? dayjs(date).format(format ?? 'YYYY-MM-DD HH:mm:ss') : '' +} + +/** + * 获取当前的日期+时间 + */ +export function getNowDateTime() { + return dayjs() +} + +/** + * 获取当前日期是第几周 + * @param dateTime 当前传入的日期值 + * @returns 返回第几周数字值 + */ +export function getWeek(dateTime: Date): number { + const temptTime = new Date(dateTime.getTime()) + // 周几 + const weekday = temptTime.getDay() || 7 + // 周1+5天=周六 + temptTime.setDate(temptTime.getDate() - weekday + 1 + 5) + let firstDay = new Date(temptTime.getFullYear(), 0, 1) + const dayOfWeek = firstDay.getDay() + let spendDay = 1 + if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1 + firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay) + const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000) + return Math.ceil(d / 7) +} + +/** + * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前` + * @param param 当前时间,new Date() 格式或者字符串时间格式 + * @param format 需要转换的时间格式字符串 + * @description param 10秒: 10 * 1000 + * @description param 1分: 60 * 1000 + * @description param 1小时: 60 * 60 * 1000 + * @description param 24小时:60 * 60 * 24 * 1000 + * @description param 3天: 60 * 60* 24 * 1000 * 3 + * @returns 返回拼接后的时间字符串 + */ +export function formatPast(param: string | Date, format = 'YYYY-MM-DD HH:mm:ss'): string { + // 传入格式处理、存储转换值 + let t: any, s: number + // 获取js 时间戳 + let time: number = new Date().getTime() + // 是否是对象 + typeof param === 'string' || 'object' ? (t = new Date(param).getTime()) : (t = param) + // 当前时间戳 - 传入时间戳 + time = Number.parseInt(`${time - t}`) + if (time < 10000) { + // 10秒内 + return '刚刚' + } else if (time < 60000 && time >= 10000) { + // 超过10秒少于1分钟内 + s = Math.floor(time / 1000) + return `${s}秒前` + } else if (time < 3600000 && time >= 60000) { + // 超过1分钟少于1小时 + s = Math.floor(time / 60000) + return `${s}分钟前` + } else if (time < 86400000 && time >= 3600000) { + // 超过1小时少于24小时 + s = Math.floor(time / 3600000) + return `${s}小时前` + } else if (time < 259200000 && time >= 86400000) { + // 超过1天少于3天内 + s = Math.floor(time / 86400000) + return `${s}天前` + } else { + // 超过3天 + const date = typeof param === 'string' || 'object' ? new Date(param) : param + return formatDate(date, format) + } +} + +/** + * 时间问候语 + * @param param 当前时间,new Date() 格式 + * @description param 调用 `formatAxis(new Date())` 输出 `上午好` + * @returns 返回拼接后的时间字符串 + */ +export function formatAxis(param: Date): string { + const hour: number = new Date(param).getHours() + if (hour < 6) return '凌晨好' + else if (hour < 9) return '早上好' + else if (hour < 12) return '上午好' + else if (hour < 14) return '中午好' + else if (hour < 17) return '下午好' + else if (hour < 19) return '傍晚好' + else if (hour < 22) return '晚上好' + else return '夜里好' +} + +/** + * 将毫秒,转换成时间字符串。例如说,xx 分钟 + * + * @param ms 毫秒 + * @returns {string} 字符串 + */ +export function formatPast2(ms: number): string { + const day = Math.floor(ms / (24 * 60 * 60 * 1000)) + const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24) + const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60) + const second = Math.floor(ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60) + if (day > 0) { + return day + ' 天' + hour + ' 小时 ' + minute + ' 分钟' + } + if (hour > 0) { + return hour + ' 小时 ' + minute + ' 分钟' + } + if (minute > 0) { + return minute + ' 分钟' + } + if (second > 0) { + return second + ' 秒' + } else { + return 0 + ' 秒' + } +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD HH:mm:ss 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue) : '' +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter2(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : '' +} + +/** + * 设置起始日期,时间为00:00:00 + * @param param 传入日期 + * @returns 带时间00:00:00的日期 + */ +export function beginOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0) +} + +/** + * 设置结束日期,时间为23:59:59 + * @param param 传入日期 + * @returns 带时间23:59:59的日期 + */ +export function endOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59) +} + +/** + * 计算两个日期间隔天数 + * @param param1 日期1 + * @param param2 日期2 + */ +export function betweenDay(param1: Date, param2: Date): number { + param1 = convertDate(param1) + param2 = convertDate(param2) + // 计算差值 + return Math.floor((param2.getTime() - param1.getTime()) / (24 * 3600 * 1000)) +} + +/** + * 日期计算 + * @param param1 日期 + * @param param2 添加的时间 + */ +export function addTime(param1: Date, param2: number): Date { + param1 = convertDate(param1) + return new Date(param1.getTime() + param2) +} + +/** + * 日期转换 + * @param param 日期 + */ +export function convertDate(param: Date | string): Date { + if (typeof param === 'string') { + return new Date(param) + } + return param +} + +/** + * 指定的两个日期, 是否为同一天 + * @param a 日期 A + * @param b 日期 B + */ +export function isSameDay(a: dayjs.ConfigType, b: dayjs.ConfigType): boolean { + if (!a || !b) return false + + const aa = dayjs(a) + const bb = dayjs(b) + return aa.year() == bb.year() && aa.month() == bb.month() && aa.day() == bb.day() +} + +/** + * 获取一天的开始时间、截止时间 + * @param date 日期 + * @param days 天数 + */ +export function getDayRange( + date: dayjs.ConfigType, + days: number +): [dayjs.ConfigType, dayjs.ConfigType] { + const day = dayjs(date).add(days, 'd') + return getDateRange(day, day) +} + +/** + * 获取最近7天的开始时间、截止时间 + */ +export function getLast7Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastWeekDay = dayjs().subtract(7, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastWeekDay, yesterday) +} + +/** + * 获取最近30天的开始时间、截止时间 + */ +export function getLast30Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastMonthDay = dayjs().subtract(30, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastMonthDay, yesterday) +} + +/** + * 获取最近1年的开始时间、截止时间 + */ +export function getLast1Year(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastYearDay = dayjs().subtract(1, 'y') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastYearDay, yesterday) +} + +/** + * 获取指定日期的开始时间、截止时间 + * @param beginDate 开始日期 + * @param endDate 截止日期 + */ +export function getDateRange( + beginDate: dayjs.ConfigType, + endDate: dayjs.ConfigType +): [string, string] { + return [ + dayjs(beginDate).startOf('d').format('YYYY-MM-DD HH:mm:ss'), + dayjs(endDate).endOf('d').format('YYYY-MM-DD HH:mm:ss') + ] +} diff --git a/web/src/utils/formatter.ts b/web/src/utils/formatter.ts new file mode 100644 index 0000000..8777f32 --- /dev/null +++ b/web/src/utils/formatter.ts @@ -0,0 +1,7 @@ +import { floatToFixed2 } from '@/utils' + +// 格式化金额【分转元】 +// @ts-ignore +export const fenToYuanFormat = (_, __, cellValue: any, ___) => { + return `¥${floatToFixed2(cellValue)}` +} diff --git a/web/src/utils/index.ts b/web/src/utils/index.ts new file mode 100644 index 0000000..f0b4faa --- /dev/null +++ b/web/src/utils/index.ts @@ -0,0 +1,538 @@ +import { toNumber } from 'lodash-es' + +/** + * + * @param component 需要注册的组件 + * @param alias 组件别名 + * @returns any + */ +export const withInstall = (component: T, alias?: string) => { + const comp = component as any + comp.install = (app: any) => { + app.component(comp.name || comp.displayName, component) + if (alias) { + app.config.globalProperties[alias] = component + } + } + return component as T & Plugin +} + +/** + * @param str 需要转下划线的驼峰字符串 + * @returns 字符串下划线 + */ +export const humpToUnderline = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +/** + * @param str 需要转驼峰的下划线字符串 + * @returns 字符串驼峰 + */ +export const underlineToHump = (str: string): string => { + if (!str) return '' + return str.replace(/\-(\w)/g, (_, letter: string) => { + return letter.toUpperCase() + }) +} + +/** + * 驼峰转横杠 + */ +export const humpToDash = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +export const setCssVar = (prop: string, val: any, dom = document.documentElement) => { + dom.style.setProperty(prop, val) +} + +/** + * 查找数组对象的某个下标 + * @param {Array} ary 查找的数组 + * @param {Functon} fn 判断的方法 + */ +// eslint-disable-next-line +export const findIndex = (ary: Array, fn: Fn): number => { + if (ary.findIndex) { + return ary.findIndex(fn) + } + let index = -1 + ary.some((item: T, i: number, ary: Array) => { + const ret: T = fn(item, i, ary) + if (ret) { + index = i + return ret + } + }) + return index +} + +export const trim = (str: string) => { + return str.replace(/(^\s*)|(\s*$)/g, '') +} + +/** + * @param {Date | number | string} time 需要转换的时间 + * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss + */ +export function formatTime(time: Date | number | string, fmt: string) { + if (!time) return '' + else { + const date = new Date(time) + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'H+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + S: date.getMilliseconds() + } + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + for (const k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) + ) + } + } + return fmt + } +} + +/** + * 生成随机字符串 + */ +export function toAnyString() { + const str: string = 'xxxxx-xxxxx-4xxxx-yxxxx-xxxxx'.replace(/[xy]/g, (c: string) => { + const r: number = (Math.random() * 16) | 0 + const v: number = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString() + }) + return str +} + +/** + * 生成指定长度的随机字符串 + * + * @param length 字符串长度 + */ +export function generateRandomStr(length: number): string { + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + let result = '' + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * chars.length)) + } + return result +} + +/** + * 根据支持的文件类型生成 accept 属性值 + * + * @param supportedFileTypes 支持的文件类型数组,如 ['PDF', 'DOC', 'DOCX'] + * @returns 用于文件上传组件 accept 属性的字符串 + */ +export const generateAcceptedFileTypes = (supportedFileTypes: string[]): string => { + const allowedExtensions = supportedFileTypes.map((ext) => ext.toLowerCase()) + const mimeTypes: string[] = [] + + // 添加常见的 MIME 类型映射 + if (allowedExtensions.includes('txt')) { + mimeTypes.push('text/plain') + } + if (allowedExtensions.includes('pdf')) { + mimeTypes.push('application/pdf') + } + if (allowedExtensions.includes('html') || allowedExtensions.includes('htm')) { + mimeTypes.push('text/html') + } + if (allowedExtensions.includes('csv')) { + mimeTypes.push('text/csv') + } + if (allowedExtensions.includes('xlsx') || allowedExtensions.includes('xls')) { + mimeTypes.push('application/vnd.ms-excel') + mimeTypes.push('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') + } + if (allowedExtensions.includes('docx') || allowedExtensions.includes('doc')) { + mimeTypes.push('application/msword') + mimeTypes.push('application/vnd.openxmlformats-officedocument.wordprocessingml.document') + } + if (allowedExtensions.includes('pptx') || allowedExtensions.includes('ppt')) { + mimeTypes.push('application/vnd.ms-powerpoint') + mimeTypes.push('application/vnd.openxmlformats-officedocument.presentationml.presentation') + } + if (allowedExtensions.includes('xml')) { + mimeTypes.push('application/xml') + mimeTypes.push('text/xml') + } + if (allowedExtensions.includes('md') || allowedExtensions.includes('markdown')) { + mimeTypes.push('text/markdown') + } + if (allowedExtensions.includes('epub')) { + mimeTypes.push('application/epub+zip') + } + if (allowedExtensions.includes('eml')) { + mimeTypes.push('message/rfc822') + } + if (allowedExtensions.includes('msg')) { + mimeTypes.push('application/vnd.ms-outlook') + } + + // 添加文件扩展名 + const extensions = allowedExtensions.map((ext) => `.${ext}`) + + return [...mimeTypes, ...extensions].join(',') +} + +/** + * 首字母大写 + */ +export function firstUpperCase(str: string) { + return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()) +} + +export const generateUUID = () => { + if (typeof crypto === 'object') { + if (typeof crypto.randomUUID === 'function') { + return crypto.randomUUID() + } + if (typeof crypto.getRandomValues === 'function' && typeof Uint8Array === 'function') { + const callback = (c: any) => { + const num = Number(c) + return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString( + 16 + ) + } + return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, callback) + } + } + let timestamp = new Date().getTime() + let performanceNow = + (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0 + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let random = Math.random() * 16 + if (timestamp > 0) { + random = (timestamp + random) % 16 | 0 + timestamp = Math.floor(timestamp / 16) + } else { + random = (performanceNow + random) % 16 | 0 + performanceNow = Math.floor(performanceNow / 16) + } + return (c === 'x' ? random : (random & 0x3) | 0x8).toString(16) + }) +} + +/** + * element plus 的文件大小 Formatter 实现 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +// @ts-ignore +export const fileSizeFormatter = (row, column, cellValue) => { + const fileSize = cellValue + const unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + const srcSize = parseFloat(fileSize) + const index = Math.floor(Math.log(srcSize) / Math.log(1024)) + const size = srcSize / Math.pow(1024, index) + const sizeStr = size.toFixed(2) //保留的小数位数 + return sizeStr + ' ' + unitArr[index] +} + +/** + * 将值复制到目标对象,且以目标对象属性为准,例:target: {a:1} source:{a:2,b:3} 结果为:{a:2} + * @param target 目标对象 + * @param source 源对象 + */ +export const copyValueToTarget = (target: any, source: any) => { + const newObj = Object.assign({}, target, source) + // 删除多余属性 + Object.keys(newObj).forEach((key) => { + // 如果不是target中的属性则删除 + if (Object.keys(target).indexOf(key) === -1) { + delete newObj[key] + } + }) + // 更新目标对象值 + Object.assign(target, newObj) +} + +/** + * 获取链接的参数值 + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlValue = (key: string, urlStr: string = location.href): string => { + if (!urlStr || !key) return '' + const url = new URL(decodeURIComponent(urlStr)) + return url.searchParams.get(key) ?? '' +} + +/** + * 获取链接的参数值(值类型) + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlNumberValue = (key: string, urlStr: string = location.href): number => { + return toNumber(getUrlValue(key, urlStr)) +} + +/** + * 构建排序字段 + * @param prop 字段名称 + * @param order 顺序 + */ +export const buildSortingField = ({ prop, order }) => { + return { field: prop, order: order === 'ascending' ? 'asc' : 'desc' } +} + +// ========== NumberUtils 数字方法 ========== + +/** + * 数组求和 + * + * @param values 数字数组 + * @return 求和结果,默认为 0 + */ +export const getSumValue = (values: number[]): number => { + return values.reduce((prev, curr) => { + const value = Number(curr) + if (!Number.isNaN(value)) { + return prev + curr + } else { + return prev + } + }, 0) +} + +// ========== 通用金额方法 ========== + +/** + * 将一个整数转换为分数保留两位小数 + * @param num + */ +export const formatToFraction = (num: number | string | undefined): string => { + if (typeof num === 'undefined') return '0.00' + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + return (parsedNumber / 100.0).toFixed(2) +} + +/** + * 将一个数转换为 1.00 这样 + * 数据呈现的时候使用 + * + * @param num 整数 + */ +// TODO @芋艿:看看怎么融合掉 +export const floatToFixed2 = (num: number | string | undefined): string => { + let str = '0.00' + if (typeof num === 'undefined') { + return str + } + const f = formatToFraction(num) + const decimalPart = f.toString().split('.')[1] + const len = decimalPart ? decimalPart.length : 0 + switch (len) { + case 0: + str = f.toString() + '.00' + break + case 1: + str = f.toString() + '0' + break + case 2: + str = f.toString() + break + } + return str +} + +/** + * 将一个分数转换为整数 + * @param num + */ +// TODO @芋艿:看看怎么融合掉 +export const convertToInteger = (num: number | string | undefined): number => { + if (typeof num === 'undefined') return 0 + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + // TODO 分转元后还有小数则四舍五入 + return Math.round(parsedNumber * 100) +} + +/** + * 元转分 + */ +export const yuanToFen = (amount: string | number): number => { + return convertToInteger(amount) +} + +/** + * 分转元 + */ +export const fenToYuan = (price: string | number): string => { + return formatToFraction(price) +} + +/** + * 计算环比 + * + * @param value 当前数值 + * @param reference 对比数值 + */ +export const calculateRelativeRate = (value?: number, reference?: number) => { + // 防止除0 + if (!reference || reference == 0) return 0 + + return ((100 * ((value || 0) - reference)) / reference).toFixed(0) +} + +// ========== ERP 专属方法 ========== + +const ERP_COUNT_DIGIT = 3 +const ERP_PRICE_DIGIT = 2 + +/** + * 【ERP】格式化 Input 数字 + * + * 例如说:库存数量 + * + * @param num 数量 + * @package digit 保留的小数位数 + * @return 格式化后的数量 + */ +export const erpNumberFormatter = (num: number | string | undefined, digit: number) => { + if (num == null) { + return '' + } + if (typeof num === 'string') { + num = parseFloat(num) + } + // 如果非 number,则直接返回空串 + if (isNaN(num)) { + return '' + } + return num.toFixed(digit) +} + +/** + * 【ERP】格式化数量,保留三位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpCountInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_COUNT_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化数量,保留三位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpCountTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_COUNT_DIGIT) +} + +/** + * 【ERP】格式化金额,保留二位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpPriceInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_PRICE_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化金额,保留二位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpPriceTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_PRICE_DIGIT) +} + +/** + * 【ERP】价格计算,四舍五入保留两位小数 + * + * @param price 价格 + * @param count 数量 + * @return 总价格。如果有任一为空,则返回 undefined + */ +export const erpPriceMultiply = (price: number, count: number) => { + if (price == null || count == null) { + return undefined + } + return parseFloat((price * count).toFixed(ERP_PRICE_DIGIT)) +} + +/** + * 【ERP】百分比计算,四舍五入保留两位小数 + * + * 如果 total 为 0,则返回 0 + * + * @param value 当前值 + * @param total 总值 + */ +export const erpCalculatePercentage = (value: number, total: number) => { + if (total === 0) return 0 + return ((value / total) * 100).toFixed(2) +} + +/** + * 适配 echarts map 的地名 + * + * @param areaName 地区名称 + */ +export const areaReplace = (areaName: string) => { + if (!areaName) { + return areaName + } + return areaName + .replace('维吾尔自治区', '') + .replace('壮族自治区', '') + .replace('回族自治区', '') + .replace('自治区', '') + .replace('省', '') +} + +/** + * 解析 JSON 字符串 + * + * @param str + */ +export function jsonParse(str: string) { + try { + return JSON.parse(str) + } catch (e) { + console.warn(`str[${str}] 不是一个 JSON 字符串`) + return str + } +} + +/** + * 截取字符串 + * + * @param str 字符串 + * @param start 开始位置 + * @param end 结束位置 + */ + +export const subString = (str: string, start: number, end: number) => { + if (str.length > end) { + return str.slice(start, end) + } + return str +} diff --git a/web/src/utils/is.ts b/web/src/utils/is.ts new file mode 100644 index 0000000..24d7191 --- /dev/null +++ b/web/src/utils/is.ts @@ -0,0 +1,118 @@ +// copy to vben-admin + +const toString = Object.prototype.toString + +export const is = (val: unknown, type: string) => { + return toString.call(val) === `[object ${type}]` +} + +export const isDef = (val?: T): val is T => { + return typeof val !== 'undefined' +} + +export const isUnDef = (val?: T): val is T => { + return !isDef(val) +} + +export const isObject = (val: any): val is Record => { + return val !== null && is(val, 'Object') +} + +export const isEmpty = (val: any): boolean => { + if (val === null || val === undefined || typeof val === 'undefined') { + return true + } + if (isArray(val) || isString(val)) { + return val.length === 0 + } + + if (val instanceof Map || val instanceof Set) { + return val.size === 0 + } + + if (isObject(val)) { + return Object.keys(val).length === 0 + } + + return false +} + +export const isDate = (val: unknown): val is Date => { + return is(val, 'Date') +} + +export const isNull = (val: unknown): val is null => { + return val === null +} + +export const isNullAndUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) && isNull(val) +} + +export const isNullOrUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) || isNull(val) +} + +export const isNumber = (val: unknown): val is number => { + return is(val, 'Number') +} + +export const isPromise = (val: unknown): val is Promise => { + return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch) +} + +export const isString = (val: unknown): val is string => { + return is(val, 'String') +} + +export const isFunction = (val: unknown): val is Function => { + return typeof val === 'function' +} + +export const isBoolean = (val: unknown): val is boolean => { + return is(val, 'Boolean') +} + +export const isRegExp = (val: unknown): val is RegExp => { + return is(val, 'RegExp') +} + +export const isArray = (val: any): val is Array => { + return val && Array.isArray(val) +} + +export const isWindow = (val: any): val is Window => { + return typeof window !== 'undefined' && is(val, 'Window') +} + +export const isElement = (val: unknown): val is Element => { + return isObject(val) && !!val.tagName +} + +export const isMap = (val: unknown): val is Map => { + return is(val, 'Map') +} + +export const isServer = typeof window === 'undefined' + +export const isClient = !isServer + +export const isUrl = (path: string): boolean => { + // fix:修复hash路由无法跳转的问题 + const reg = + /(((^https?:(?:\/\/)?)(?:[-:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%#\/.\w-_]*)?\??(?:[-\+=&%@.\w_]*)#?(?:[\w]*))?)$/ + return reg.test(path) +} + +export const isDark = (): boolean => { + return window.matchMedia('(prefers-color-scheme: dark)').matches +} + +// 是否是图片链接 +export const isImgPath = (path: string): boolean => { + return /(https?:\/\/|data:image\/).*?\.(png|jpg|jpeg|gif|svg|webp|ico)/gi.test(path) +} + +export const isEmptyVal = (val: any): boolean => { + return val === '' || val === null || val === undefined +} diff --git a/web/src/utils/jsencrypt.ts b/web/src/utils/jsencrypt.ts new file mode 100644 index 0000000..374d5f6 --- /dev/null +++ b/web/src/utils/jsencrypt.ts @@ -0,0 +1,31 @@ +import { JSEncrypt } from 'jsencrypt' + +// 密钥对生成 http://web.chacuo.net/netrsakeypair + +const publicKey = + 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + + 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' + +const privateKey = + 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + + '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + + 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + + 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + + 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + + 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + + 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + + 'UP8iWi1Qw0Y=' + +// 加密 +export const encrypt = (txt: string) => { + const encryptor = new JSEncrypt() + encryptor.setPublicKey(publicKey) // 设置公钥 + return encryptor.encrypt(txt) // 对数据进行加密 +} + +// 解密 +export const decrypt = (txt: string) => { + const encryptor = new JSEncrypt() + encryptor.setPrivateKey(privateKey) // 设置私钥 + return encryptor.decrypt(txt) // 对数据进行解密 +} diff --git a/web/src/utils/permission.ts b/web/src/utils/permission.ts new file mode 100644 index 0000000..4138173 --- /dev/null +++ b/web/src/utils/permission.ts @@ -0,0 +1,36 @@ +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import {hasPermission} from "@/directives/permission/hasPermi"; + + +const { t } = useI18n() // 国际化 + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(permission: string[]) { + return hasPermission(permission) +} + +/** + * 角色权限校验 + * @param {string[]} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value: string[]) { + if (value && value instanceof Array && value.length > 0) { + const { wsCache } = useCache() + const permissionRoles = value + const super_admin = 'super_admin' + const userInfo = wsCache.get(CACHE_KEY.USER) + const roles = userInfo?.roles || [] + const hasRole = roles.some((role: string) => { + return super_admin === role || permissionRoles.includes(role) + }) + return !!hasRole + } else { + console.error(t('permission.hasRole')) + return false + } +} diff --git a/web/src/utils/propTypes.ts b/web/src/utils/propTypes.ts new file mode 100644 index 0000000..863f55c --- /dev/null +++ b/web/src/utils/propTypes.ts @@ -0,0 +1,24 @@ +import { VueTypeValidableDef, VueTypesInterface, createTypes, toValidableType } from 'vue-types' +import { CSSProperties } from 'vue' + +type PropTypes = VueTypesInterface & { + readonly style: VueTypeValidableDef +} +const newPropTypes = createTypes({ + func: undefined, + bool: undefined, + string: undefined, + number: undefined, + object: undefined, + integer: undefined +}) as PropTypes + +class propTypes extends newPropTypes { + static get style() { + return toValidableType('style', { + type: [String, Object] + }) + } +} + +export { propTypes } diff --git a/web/src/utils/routerHelper.ts b/web/src/utils/routerHelper.ts new file mode 100644 index 0000000..7a87bd7 --- /dev/null +++ b/web/src/utils/routerHelper.ts @@ -0,0 +1,256 @@ +import type { RouteLocationNormalized, Router, RouteRecordNormalized } from 'vue-router' +import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router' +import { isUrl } from '@/utils/is' +import { cloneDeep, omit } from 'lodash-es' +import qs from 'qs' + +const modules = import.meta.glob('../views/**/*.{vue,tsx}') +/** + * 注册一个异步组件 + * @param componentPath 例:/bpm/oa/leave/detail + */ +export const registerComponent = (componentPath: string) => { + for (const item in modules) { + if (item.includes(componentPath)) { + // 使用异步组件的方式来动态加载组件 + // @ts-ignore + return defineAsyncComponent(modules[item]) + } + } +} +/* Layout */ +export const Layout = () => import('@/layout/Layout.vue') + +export const getParentLayout = () => { + return () => + new Promise((resolve) => { + resolve({ + name: 'ParentLayout' + }) + }) +} + +// 按照路由中meta下的rank等级升序来排序路由 +export const ascending = (arr: any[]) => { + arr.forEach((v) => { + if (v?.meta?.rank === null) v.meta.rank = undefined + if (v?.meta?.rank === 0) { + if (v.name !== 'home' && v.path !== '/') { + console.warn('rank only the home page can be 0') + } + } + }) + return arr.sort((a: { meta: { rank: number } }, b: { meta: { rank: number } }) => { + return a?.meta?.rank - b?.meta?.rank + }) +} + +export const getRawRoute = (route: RouteLocationNormalized): RouteLocationNormalized => { + if (!route) return route + const { matched, ...opt } = route + return { + ...opt, + matched: (matched + ? matched.map((item) => ({ + meta: item.meta, + name: item.name, + path: item.path + })) + : undefined) as RouteRecordNormalized[] + } +} + +// 后端控制路由生成 +export const generateRoute = (routes: AppCustomRouteRecordRaw[]): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + const modulesRoutesKeys = Object.keys(modules) + for (const route of routes) { + // 1. 生成 meta 菜单元数据 + const meta = { + title: route.name, + icon: route.icon, + hidden: !route.visible, + noCache: !route.keepAlive, + alwaysShow: + route.children && + route.children.length > 0 && + (route.alwaysShow !== undefined ? route.alwaysShow : true) + } as any + // 特殊逻辑:如果后端配置的 MenuDO.component 包含 ?,则表示需要传递参数 + // 此时,我们需要解析参数,并且将参数放到 meta.query 中 + // 这样,后续在 Vue 文件中,可以通过 const { currentRoute } = useRouter() 中,通过 meta.query 获取到参数 + if (route.component && route.component.indexOf('?') > -1) { + const query = route.component.split('?')[1] + route.component = route.component.split('?')[0] + meta.query = qs.parse(query) + } + + // 2. 生成 data(AppRouteRecordRaw) + // 路由地址转首字母大写驼峰,作为路由名称,适配keepAlive + let data: AppRouteRecordRaw = { + path: + route.path.indexOf('?') > -1 && !isUrl(route.path) ? route.path.split('?')[0] : route.path, // 注意,需要排除 http 这种 url,避免它带 ? 参数被截取掉 + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + //处理顶级非目录路由 + if (!route.children && route.parentId == 0 && route.component) { + data.component = Layout + data.meta = { + hidden: meta.hidden, + } + data.name = toCamelCase(route.path, true) + 'Parent' + data.redirect = '' + meta.alwaysShow = true + const childrenData: AppRouteRecordRaw = { + path: '', + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + childrenData.component = modules[modulesRoutesKeys[index]] + data.children = [childrenData] + } else { + // 目录 + if (route.children?.length) { + data.component = Layout + data.redirect = getRedirect(route.path, route.children) + // 外链 + } else if (isUrl(route.path)) { + data = { + path: '/external-link', + component: Layout, + meta: { + name: route.name + }, + children: [data] + } as AppRouteRecordRaw + // 菜单 + } else { + // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会根path保持一致) + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + data.component = modules[modulesRoutesKeys[index]] + } + if (route.children) { + data.children = generateRoute(route.children) + } + } + res.push(data as AppRouteRecordRaw) + } + return res +} +export const getRedirect = (parentPath: string, children: AppCustomRouteRecordRaw[]) => { + if (!children || children.length == 0) { + return parentPath + } + const path = generateRoutePath(parentPath, children[0].path) + // 递归子节点 + if (children[0].children) return getRedirect(path, children[0].children) +} +const generateRoutePath = (parentPath: string, path: string) => { + if (parentPath.endsWith('/')) { + parentPath = parentPath.slice(0, -1) // 移除默认的 / + } + if (!path.startsWith('/')) { + path = '/' + path + } + return parentPath + path +} +export const pathResolve = (parentPath: string, path: string) => { + if (isUrl(path)) return path + const childPath = path.startsWith('/') || !path ? path : `/${path}` + return `${parentPath}${childPath}`.replace(/\/\//g, '/') +} + +// 路由降级 +export const flatMultiLevelRoutes = (routes: AppRouteRecordRaw[]) => { + const modules: AppRouteRecordRaw[] = cloneDeep(routes) + for (let index = 0; index < modules.length; index++) { + const route = modules[index] + if (!isMultipleRoute(route)) { + continue + } + promoteRouteLevel(route) + } + return modules +} + +// 层级是否大于2 +const isMultipleRoute = (route: AppRouteRecordRaw) => { + if (!route || !Reflect.has(route, 'children') || !route.children?.length) { + return false + } + + const children = route.children + + let flag = false + for (let index = 0; index < children.length; index++) { + const child = children[index] + if (child.children?.length) { + flag = true + break + } + } + return flag +} + +// 生成二级路由 +const promoteRouteLevel = (route: AppRouteRecordRaw) => { + let router: Router | null = createRouter({ + routes: [route as RouteRecordRaw], + history: createWebHashHistory() + }) + + const routes = router.getRoutes() + addToChildren(routes, route.children || [], route) + router = null + + route.children = route.children?.map((item) => omit(item, 'children')) +} + +// 添加所有子菜单 +const addToChildren = ( + routes: RouteRecordNormalized[], + children: AppRouteRecordRaw[], + routeModule: AppRouteRecordRaw +) => { + for (let index = 0; index < children.length; index++) { + const child = children[index] + const route = routes.find((item) => item.name === child.name) + if (!route) { + continue + } + routeModule.children = routeModule.children || [] + if (!routeModule.children.find((item) => item.name === route.name)) { + routeModule.children?.push(route as unknown as AppRouteRecordRaw) + } + if (child.children?.length) { + addToChildren(routes, child.children, routeModule) + } + } +} +const toCamelCase = (str: string, upperCaseFirst: boolean) => { + str = (str || '') + .replace(/-(.)/g, function (group1: string) { + return group1.toUpperCase() + }) + .replaceAll('-', '') + + if (upperCaseFirst && str) { + str = str.charAt(0).toUpperCase() + str.slice(1) + } + + return str +} diff --git a/web/src/utils/tree.ts b/web/src/utils/tree.ts new file mode 100644 index 0000000..e5db503 --- /dev/null +++ b/web/src/utils/tree.ts @@ -0,0 +1,403 @@ +interface TreeHelperConfig { + id: string + children: string + pid: string +} + +const DEFAULT_CONFIG: TreeHelperConfig = { + id: 'id', + children: 'children', + pid: 'pid' +} +export const defaultProps = { + children: 'children', + label: 'name', + value: 'id', + isLeaf: 'leaf', + emitPath: false // 用于 cascader 组件:在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值 +} + +const getConfig = (config: Partial) => Object.assign({}, DEFAULT_CONFIG, config) + +// tree from list +export const listToTree = (list: any[], config: Partial = {}): T[] => { + const conf = getConfig(config) as TreeHelperConfig + const nodeMap = new Map() + const result: T[] = [] + const { id, children, pid } = conf + + for (const node of list) { + node[children] = node[children] || [] + nodeMap.set(node[id], node) + } + for (const node of list) { + const parent = nodeMap.get(node[pid]) + ;(parent ? parent.children : result).push(node) + } + return result +} + +export const treeToList = (tree: any, config: Partial = {}): T => { + config = getConfig(config) + const { children } = config + const result: any = [...tree] + for (let i = 0; i < result.length; i++) { + if (!result[i][children!]) continue + result.splice(i + 1, 0, ...result[i][children!]) + } + return result +} + +export const findNode = ( + tree: any, + func: Fn, + config: Partial = {} +): T | null => { + config = getConfig(config) + const { children } = config + const list = [...tree] + for (const node of list) { + if (func(node)) return node + node[children!] && list.push(...node[children!]) + } + return null +} + +export const findNodeAll = ( + tree: any, + func: Fn, + config: Partial = {} +): T[] => { + config = getConfig(config) + const { children } = config + const list = [...tree] + const result: T[] = [] + for (const node of list) { + func(node) && result.push(node) + node[children!] && list.push(...node[children!]) + } + return result +} + +export const findPath = ( + tree: any, + func: Fn, + config: Partial = {} +): T | T[] | null => { + config = getConfig(config) + const path: T[] = [] + const list = [...tree] + const visitedSet = new Set() + const { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + if (func(node)) { + return path + } + } + } + return null +} + +export const findPathAll = (tree: any, func: Fn, config: Partial = {}) => { + config = getConfig(config) + const path: any[] = [] + const list = [...tree] + const result: any[] = [] + const visitedSet = new Set(), + { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + func(node) && result.push([...path]) + } + } + return result +} + +export const filter = ( + tree: T[], + func: (n: T) => boolean, + config: Partial = {} +): T[] => { + config = getConfig(config) + const children = config.children as string + + function listFilter(list: T[]) { + return list + .map((node: any) => ({ ...node })) + .filter((node) => { + node[children] = node[children] && listFilter(node[children]) + return func(node) || (node[children] && node[children].length) + }) + } + + return listFilter(tree) +} + +export const forEach = ( + tree: T[], + func: (n: T) => any, + config: Partial = {} +): void => { + config = getConfig(config) + const list: any[] = [...tree] + const { children } = config + for (let i = 0; i < list.length; i++) { + // func 返回true就终止遍历,避免大量节点场景下无意义循环,引起浏览器卡顿 + if (func(list[i])) { + return + } + children && list[i][children] && list.splice(i + 1, 0, ...list[i][children]) + } +} + +/** + * @description: Extract tree specified structure + */ +export const treeMap = ( + treeData: T[], + opt: { children?: string; conversion: Fn } +): T[] => { + return treeData.map((item) => treeMapEach(item, opt)) +} + +/** + * @description: Extract tree specified structure + */ +export const treeMapEach = ( + data: any, + { children = 'children', conversion }: { children?: string; conversion: Fn } +) => { + const haveChildren = Array.isArray(data[children]) && data[children].length > 0 + const conversionData = conversion(data) || {} + if (haveChildren) { + return { + ...conversionData, + [children]: data[children].map((i: number) => + treeMapEach(i, { + children, + conversion + }) + ) + } + } else { + return { + ...conversionData + } + } +} + +/** + * 递归遍历树结构 + * @param treeDatas 树 + * @param callBack 回调 + * @param parentNode 父节点 + */ +export const eachTree = (treeDatas: any[], callBack: Fn, parentNode = {}) => { + treeDatas.forEach((element) => { + const newNode = callBack(element, parentNode) || element + if (element.children) { + eachTree(element.children, callBack, newNode) + } + }) +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + */ +export const handleTree = (data: any[], id?: string, parentId?: string, children?: string) => { + if (!Array.isArray(data)) { + console.warn('data must be an array') + return [] + } + const config = { + id: id || 'id', + parentId: parentId || 'parentId', + childrenList: children || 'children' + } + + const childrenListMap = {} + const nodeIds = {} + const tree: any[] = [] + + for (const d of data) { + const parentId = d[config.parentId] + if (childrenListMap[parentId] == null) { + childrenListMap[parentId] = [] + } + nodeIds[d[config.id]] = d + childrenListMap[parentId].push(d) + } + + for (const d of data) { + const parentId = d[config.parentId] + if (nodeIds[parentId] == null) { + tree.push(d) + } + } + + for (const t of tree) { + adaptToChildrenList(t) + } + + function adaptToChildrenList(o) { + if (childrenListMap[o[config.id]] !== null) { + o[config.childrenList] = childrenListMap[o[config.id]] + } + if (o[config.childrenList]) { + for (const c of o[config.childrenList]) { + adaptToChildrenList(c) + } + } + } + + return tree +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +// @ts-ignore +export const handleTree2 = (data, id, parentId, children, rootId) => { + id = id || 'id' + parentId = parentId || 'parentId' + // children = children || 'children' + rootId = + rootId || + Math.min( + ...data.map((item) => { + return item[parentId] + }) + ) || + 0 + // 对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + // 循环所有项 + const treeData = cloneData.filter((father) => { + const branchArr = cloneData.filter((child) => { + // 返回每一项的子级数组 + return father[id] === child[parentId] + }) + branchArr.length > 0 ? (father.children = branchArr) : '' + // 返回第一层 + return father[parentId] === rootId + }) + return treeData !== '' ? treeData : data +} + +/** + * 校验选中的节点,是否为指定 level + * + * @param tree 要操作的树结构数据 + * @param nodeId 需要判断在什么层级的数据 + * @param level 检查的级别, 默认检查到二级 + * @return true 是;false 否 + */ +export const checkSelectedNode = (tree: any[], nodeId: any, level = 2): boolean => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return false + } + + // 校验是否是一级节点 + if (tree.some((item) => item.id === nodeId)) { + return false + } + + // 递归计数 + let count = 1 + + // 深层次校验 + function performAThoroughValidation(arr: any[]): boolean { + count += 1 + for (const item of arr) { + if (item.id === nodeId) { + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + count = 1 + if (performAThoroughValidation(item.children)) { + // 找到后对比是否是期望的层级 + if (count >= level) { + return true + } + } + } + + return false +} + +/** + * 获取节点的完整结构 + * @param tree 树数据 + * @param nodeId 节点 id + */ +export const treeToString = (tree: any[], nodeId) => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return '' + } + // 校验是否是一级节点 + const node = tree.find((item) => item.id === nodeId) + if (typeof node !== 'undefined') { + return node.name + } + let str = '' + + function performAThoroughValidation(arr) { + if (typeof arr === 'undefined' || !Array.isArray(arr) || arr.length === 0) { + return false + } + for (const item of arr) { + if (item.id === nodeId) { + str += ` / ${item.name}` + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + str += ` / ${item.name}` + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + str = `${item.name}` + if (performAThoroughValidation(item.children)) { + break + } + } + return str +} diff --git a/web/src/utils/tsxHelper.ts b/web/src/utils/tsxHelper.ts new file mode 100644 index 0000000..6087fa3 --- /dev/null +++ b/web/src/utils/tsxHelper.ts @@ -0,0 +1,16 @@ +import { Slots } from 'vue' +import { isFunction } from '@/utils/is' + +export const getSlot = (slots: Slots, slot = 'default', data?: Recordable) => { + // Reflect.has 判断一个对象是否存在某个属性 + if (!slots || !Reflect.has(slots, slot)) { + return null + } + if (!isFunction(slots[slot])) { + console.error(`${slot} is not a function!`) + return null + } + const slotFn = slots[slot] + if (!slotFn) return null + return slotFn(data) +} diff --git a/web/src/views/Error/403.vue b/web/src/views/Error/403.vue new file mode 100644 index 0000000..a3ec487 --- /dev/null +++ b/web/src/views/Error/403.vue @@ -0,0 +1,8 @@ + + diff --git a/web/src/views/Error/404.vue b/web/src/views/Error/404.vue new file mode 100644 index 0000000..f6a08de --- /dev/null +++ b/web/src/views/Error/404.vue @@ -0,0 +1,7 @@ + + diff --git a/web/src/views/Error/500.vue b/web/src/views/Error/500.vue new file mode 100644 index 0000000..998487d --- /dev/null +++ b/web/src/views/Error/500.vue @@ -0,0 +1,7 @@ + + diff --git a/web/src/views/Home/Index.vue b/web/src/views/Home/Index.vue new file mode 100644 index 0000000..c5922d0 --- /dev/null +++ b/web/src/views/Home/Index.vue @@ -0,0 +1,31 @@ + + diff --git a/web/src/views/Home/echarts-data.ts b/web/src/views/Home/echarts-data.ts new file mode 100644 index 0000000..56093f4 --- /dev/null +++ b/web/src/views/Home/echarts-data.ts @@ -0,0 +1,308 @@ +import { EChartsOption } from 'echarts' + +const { t } = useI18n() + +export const lineOptions: EChartsOption = { + title: { + text: t('analysis.monthlySales'), + left: 'center' + }, + xAxis: { + data: [ + t('analysis.january'), + t('analysis.february'), + t('analysis.march'), + t('analysis.april'), + t('analysis.may'), + t('analysis.june'), + t('analysis.july'), + t('analysis.august'), + t('analysis.september'), + t('analysis.october'), + t('analysis.november'), + t('analysis.december') + ], + boundaryGap: false, + axisTick: { + show: false + } + }, + grid: { + left: 20, + right: 20, + bottom: 20, + top: 80, + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross' + }, + padding: [5, 10] + }, + yAxis: { + axisTick: { + show: false + } + }, + legend: { + data: [t('analysis.estimate'), t('analysis.actual')], + top: 50 + }, + series: [ + { + name: t('analysis.estimate'), + smooth: true, + type: 'line', + data: [100, 120, 161, 134, 105, 160, 165, 114, 163, 185, 118, 123], + animationDuration: 2800, + animationEasing: 'cubicInOut' + }, + { + name: t('analysis.actual'), + smooth: true, + type: 'line', + itemStyle: {}, + data: [120, 82, 91, 154, 162, 140, 145, 250, 134, 56, 99, 123], + animationDuration: 2800, + animationEasing: 'quadraticOut' + } + ] +} + +export const pieOptions: EChartsOption = { + title: { + text: t('analysis.userAccessSource'), + left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
    {b} : {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left', + data: [ + t('analysis.directAccess'), + t('analysis.mailMarketing'), + t('analysis.allianceAdvertising'), + t('analysis.videoAdvertising'), + t('analysis.searchEngines') + ] + }, + series: [ + { + name: t('analysis.userAccessSource'), + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [ + { value: 335, name: t('analysis.directAccess') }, + { value: 310, name: t('analysis.mailMarketing') }, + { value: 234, name: t('analysis.allianceAdvertising') }, + { value: 135, name: t('analysis.videoAdvertising') }, + { value: 1548, name: t('analysis.searchEngines') } + ] + } + ] +} + +export const barOptions: EChartsOption = { + title: { + text: t('analysis.weeklyUserActivity'), + left: 'center' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + grid: { + left: 50, + right: 20, + bottom: 20 + }, + xAxis: { + type: 'category', + data: [ + t('analysis.monday'), + t('analysis.tuesday'), + t('analysis.wednesday'), + t('analysis.thursday'), + t('analysis.friday'), + t('analysis.saturday'), + t('analysis.sunday') + ], + axisTick: { + alignWithLabel: true + } + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: t('analysis.activeQuantity'), + data: [13253, 34235, 26321, 12340, 24643, 1322, 1324], + type: 'bar' + } + ] +} + +export const radarOption: EChartsOption = { + legend: { + data: [t('workplace.personal'), t('workplace.team')] + }, + radar: { + // shape: 'circle', + indicator: [ + { name: t('workplace.quote'), max: 65 }, + { name: t('workplace.contribution'), max: 160 }, + { name: t('workplace.hot'), max: 300 }, + { name: t('workplace.yield'), max: 130 }, + { name: t('workplace.follow'), max: 100 } + ] + }, + series: [ + { + name: `xxx${t('workplace.index')}`, + type: 'radar', + data: [ + { + value: [42, 30, 20, 35, 80], + name: t('workplace.personal') + }, + { + value: [50, 140, 290, 100, 90], + name: t('workplace.team') + } + ] + } + ] +} + +export const wordOptions = { + series: [ + { + type: 'wordCloud', + gridSize: 2, + sizeRange: [12, 50], + rotationRange: [-90, 90], + shape: 'pentagon', + width: 600, + height: 400, + drawOutOfBound: true, + textStyle: { + color: function () { + return ( + 'rgb(' + + [ + Math.round(Math.random() * 160), + Math.round(Math.random() * 160), + Math.round(Math.random() * 160) + ].join(',') + + ')' + ) + } + }, + emphasis: { + textStyle: { + shadowBlur: 10, + shadowColor: '#333' + } + }, + data: [ + { + name: 'Sam S Club', + value: 10000, + textStyle: { + color: 'black' + }, + emphasis: { + textStyle: { + color: 'red' + } + } + }, + { + name: 'Macys', + value: 6181 + }, + { + name: 'Amy Schumer', + value: 4386 + }, + { + name: 'Jurassic World', + value: 4055 + }, + { + name: 'Charter Communications', + value: 2467 + }, + { + name: 'Chick Fil A', + value: 2244 + }, + { + name: 'Planet Fitness', + value: 1898 + }, + { + name: 'Pitch Perfect', + value: 1484 + }, + { + name: 'Express', + value: 1112 + }, + { + name: 'Home', + value: 965 + }, + { + name: 'Johnny Depp', + value: 847 + }, + { + name: 'Lena Dunham', + value: 582 + }, + { + name: 'Lewis Hamilton', + value: 555 + }, + { + name: 'KXAN', + value: 550 + }, + { + name: 'Mary Ellen Mark', + value: 462 + }, + { + name: 'Farrah Abraham', + value: 366 + }, + { + name: 'Rita Ora', + value: 360 + }, + { + name: 'Serena Williams', + value: 282 + }, + { + name: 'NCAA baseball tournament', + value: 273 + }, + { + name: 'Point Break', + value: 265 + } + ] + } + ] +} diff --git a/web/src/views/Home/types.ts b/web/src/views/Home/types.ts new file mode 100644 index 0000000..956636a --- /dev/null +++ b/web/src/views/Home/types.ts @@ -0,0 +1,57 @@ +export type WorkplaceTotal = { + project: number + access: number + todo: number +} + +export type Project = { + name: string + icon: string + message: string + personal: string + time: Date | number | string + color: string +} + +export type Notice = { + title: string + type: string + keys: string[] + date: Date | number | string +} + +export type Shortcut = { + name: string + icon: string + url: string + color: string +} + +export type RadarData = { + personal: number + team: number + max: number + name: string +} +export type AnalysisTotalTypes = { + users: number + messages: number + moneys: number + shoppings: number +} + +export type UserAccessSource = { + value: number + name: string +} + +export type WeeklyUserActivity = { + value: number + name: string +} + +export type MonthlySales = { + name: string + estimate: number + actual: number +} diff --git a/web/src/views/Login/Login.vue b/web/src/views/Login/Login.vue new file mode 100644 index 0000000..520b9d3 --- /dev/null +++ b/web/src/views/Login/Login.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/web/src/views/Login/components/ForgetPasswordForm.vue b/web/src/views/Login/components/ForgetPasswordForm.vue new file mode 100644 index 0000000..0c3b2e0 --- /dev/null +++ b/web/src/views/Login/components/ForgetPasswordForm.vue @@ -0,0 +1,278 @@ + + + + diff --git a/web/src/views/Login/components/LoginForm.vue b/web/src/views/Login/components/LoginForm.vue new file mode 100644 index 0000000..7cdcc4c --- /dev/null +++ b/web/src/views/Login/components/LoginForm.vue @@ -0,0 +1,292 @@ + + + + diff --git a/web/src/views/Login/components/LoginFormTitle.vue b/web/src/views/Login/components/LoginFormTitle.vue new file mode 100644 index 0000000..cdf4fac --- /dev/null +++ b/web/src/views/Login/components/LoginFormTitle.vue @@ -0,0 +1,26 @@ + + diff --git a/web/src/views/Login/components/MobileForm.vue b/web/src/views/Login/components/MobileForm.vue new file mode 100644 index 0000000..545d403 --- /dev/null +++ b/web/src/views/Login/components/MobileForm.vue @@ -0,0 +1,226 @@ + + + + diff --git a/web/src/views/Login/components/QrCodeForm.vue b/web/src/views/Login/components/QrCodeForm.vue new file mode 100644 index 0000000..601052d --- /dev/null +++ b/web/src/views/Login/components/QrCodeForm.vue @@ -0,0 +1,30 @@ + + diff --git a/web/src/views/Login/components/RegisterForm.vue b/web/src/views/Login/components/RegisterForm.vue new file mode 100644 index 0000000..0636a1c --- /dev/null +++ b/web/src/views/Login/components/RegisterForm.vue @@ -0,0 +1,282 @@ + + + + diff --git a/web/src/views/Login/components/SSOLogin.vue b/web/src/views/Login/components/SSOLogin.vue new file mode 100644 index 0000000..99e359e --- /dev/null +++ b/web/src/views/Login/components/SSOLogin.vue @@ -0,0 +1,199 @@ + + diff --git a/web/src/views/Login/components/index.ts b/web/src/views/Login/components/index.ts new file mode 100644 index 0000000..89bcb25 --- /dev/null +++ b/web/src/views/Login/components/index.ts @@ -0,0 +1,9 @@ +import LoginForm from './LoginForm.vue' +import MobileForm from './MobileForm.vue' +import LoginFormTitle from './LoginFormTitle.vue' +import RegisterForm from './RegisterForm.vue' +import QrCodeForm from './QrCodeForm.vue' +import SSOLoginVue from './SSOLogin.vue' +import ForgetPasswordForm from './ForgetPasswordForm.vue' + +export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, ForgetPasswordForm, SSOLoginVue } diff --git a/web/src/views/Login/components/useLogin.ts b/web/src/views/Login/components/useLogin.ts new file mode 100644 index 0000000..b4a02f8 --- /dev/null +++ b/web/src/views/Login/components/useLogin.ts @@ -0,0 +1,42 @@ +import { Ref } from 'vue' + +export enum LoginStateEnum { + LOGIN, + REGISTER, + RESET_PASSWORD, + MOBILE, + QR_CODE, + SSO +} + +const currentState = ref(LoginStateEnum.LOGIN) + +export function useLoginState() { + function setLoginState(state: LoginStateEnum) { + currentState.value = state + } + const getLoginState = computed(() => currentState.value) + + function handleBackLogin() { + setLoginState(LoginStateEnum.LOGIN) + } + + return { + setLoginState, + getLoginState, + handleBackLogin + } +} + +export function useFormValid(formRef: Ref) { + async function validForm() { + const form = unref(formRef) + if (!form) return + const data = await form.validate() + return data as T + } + + return { + validForm + } +} diff --git a/web/src/views/Profile/Index.vue b/web/src/views/Profile/Index.vue new file mode 100644 index 0000000..55a1f9a --- /dev/null +++ b/web/src/views/Profile/Index.vue @@ -0,0 +1,64 @@ + + + diff --git a/web/src/views/Profile/components/BasicInfo.vue b/web/src/views/Profile/components/BasicInfo.vue new file mode 100644 index 0000000..f785aff --- /dev/null +++ b/web/src/views/Profile/components/BasicInfo.vue @@ -0,0 +1,104 @@ + + diff --git a/web/src/views/Profile/components/ProfileUser.vue b/web/src/views/Profile/components/ProfileUser.vue new file mode 100644 index 0000000..6282c3e --- /dev/null +++ b/web/src/views/Profile/components/ProfileUser.vue @@ -0,0 +1,105 @@ + + + + diff --git a/web/src/views/Profile/components/ResetPwd.vue b/web/src/views/Profile/components/ResetPwd.vue new file mode 100644 index 0000000..477be91 --- /dev/null +++ b/web/src/views/Profile/components/ResetPwd.vue @@ -0,0 +1,73 @@ + + diff --git a/web/src/views/Profile/components/UserAvatar.vue b/web/src/views/Profile/components/UserAvatar.vue new file mode 100644 index 0000000..23ecc3a --- /dev/null +++ b/web/src/views/Profile/components/UserAvatar.vue @@ -0,0 +1,54 @@ + + + + diff --git a/web/src/views/Profile/components/index.ts b/web/src/views/Profile/components/index.ts new file mode 100644 index 0000000..82c85a1 --- /dev/null +++ b/web/src/views/Profile/components/index.ts @@ -0,0 +1,6 @@ +import BasicInfo from './BasicInfo.vue' +import ProfileUser from './ProfileUser.vue' +import ResetPwd from './ResetPwd.vue' +import UserAvatarVue from './UserAvatar.vue' + +export { BasicInfo, ProfileUser, ResetPwd, UserAvatarVue } diff --git a/web/src/views/Redirect/Redirect.vue b/web/src/views/Redirect/Redirect.vue new file mode 100644 index 0000000..f7717ce --- /dev/null +++ b/web/src/views/Redirect/Redirect.vue @@ -0,0 +1,28 @@ + + diff --git a/web/src/views/bpm/category/CategoryForm.vue b/web/src/views/bpm/category/CategoryForm.vue new file mode 100644 index 0000000..defd760 --- /dev/null +++ b/web/src/views/bpm/category/CategoryForm.vue @@ -0,0 +1,130 @@ + + diff --git a/web/src/views/bpm/category/index.vue b/web/src/views/bpm/category/index.vue new file mode 100644 index 0000000..085b371 --- /dev/null +++ b/web/src/views/bpm/category/index.vue @@ -0,0 +1,199 @@ + + + diff --git a/web/src/views/bpm/form/editor/index.vue b/web/src/views/bpm/form/editor/index.vue new file mode 100644 index 0000000..4165fcc --- /dev/null +++ b/web/src/views/bpm/form/editor/index.vue @@ -0,0 +1,174 @@ + + + + diff --git a/web/src/views/bpm/form/index.vue b/web/src/views/bpm/form/index.vue new file mode 100644 index 0000000..57b44a3 --- /dev/null +++ b/web/src/views/bpm/form/index.vue @@ -0,0 +1,205 @@ + + + diff --git a/web/src/views/bpm/group/UserGroupForm.vue b/web/src/views/bpm/group/UserGroupForm.vue new file mode 100644 index 0000000..3c825eb --- /dev/null +++ b/web/src/views/bpm/group/UserGroupForm.vue @@ -0,0 +1,132 @@ + + diff --git a/web/src/views/bpm/group/index.vue b/web/src/views/bpm/group/index.vue new file mode 100644 index 0000000..62785a9 --- /dev/null +++ b/web/src/views/bpm/group/index.vue @@ -0,0 +1,191 @@ + + + diff --git a/web/src/views/bpm/model/CategoryDraggableModel.vue b/web/src/views/bpm/model/CategoryDraggableModel.vue new file mode 100644 index 0000000..0c6f368 --- /dev/null +++ b/web/src/views/bpm/model/CategoryDraggableModel.vue @@ -0,0 +1,663 @@ + + + + + + diff --git a/web/src/views/bpm/model/definition/index.vue b/web/src/views/bpm/model/definition/index.vue new file mode 100644 index 0000000..2b061f4 --- /dev/null +++ b/web/src/views/bpm/model/definition/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/web/src/views/bpm/model/form/BasicInfo.vue b/web/src/views/bpm/model/form/BasicInfo.vue new file mode 100644 index 0000000..03513f4 --- /dev/null +++ b/web/src/views/bpm/model/form/BasicInfo.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/web/src/views/bpm/model/form/ExtraSettings.vue b/web/src/views/bpm/model/form/ExtraSettings.vue new file mode 100644 index 0000000..fa6947d --- /dev/null +++ b/web/src/views/bpm/model/form/ExtraSettings.vue @@ -0,0 +1,442 @@ + + + diff --git a/web/src/views/bpm/model/form/FormDesign.vue b/web/src/views/bpm/model/form/FormDesign.vue new file mode 100644 index 0000000..e1ca27f --- /dev/null +++ b/web/src/views/bpm/model/form/FormDesign.vue @@ -0,0 +1,129 @@ + + + diff --git a/web/src/views/bpm/model/form/ProcessDesign.vue b/web/src/views/bpm/model/form/ProcessDesign.vue new file mode 100644 index 0000000..565ae15 --- /dev/null +++ b/web/src/views/bpm/model/form/ProcessDesign.vue @@ -0,0 +1,72 @@ + + + diff --git a/web/src/views/bpm/model/form/editor/index.vue b/web/src/views/bpm/model/form/editor/index.vue new file mode 100644 index 0000000..93c7261 --- /dev/null +++ b/web/src/views/bpm/model/form/editor/index.vue @@ -0,0 +1,124 @@ + + + + diff --git a/web/src/views/bpm/model/form/index.vue b/web/src/views/bpm/model/form/index.vue new file mode 100644 index 0000000..42183e4 --- /dev/null +++ b/web/src/views/bpm/model/form/index.vue @@ -0,0 +1,442 @@ + + + + + diff --git a/web/src/views/bpm/model/index.vue b/web/src/views/bpm/model/index.vue new file mode 100644 index 0000000..08c9650 --- /dev/null +++ b/web/src/views/bpm/model/index.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/web/src/views/bpm/processExpression/ProcessExpressionForm.vue b/web/src/views/bpm/processExpression/ProcessExpressionForm.vue new file mode 100644 index 0000000..2e5ed2e --- /dev/null +++ b/web/src/views/bpm/processExpression/ProcessExpressionForm.vue @@ -0,0 +1,114 @@ + + diff --git a/web/src/views/bpm/processExpression/index.vue b/web/src/views/bpm/processExpression/index.vue new file mode 100644 index 0000000..ec2de5a --- /dev/null +++ b/web/src/views/bpm/processExpression/index.vue @@ -0,0 +1,182 @@ + + + diff --git a/web/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue b/web/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue new file mode 100644 index 0000000..49ce3b0 --- /dev/null +++ b/web/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue @@ -0,0 +1,331 @@ + + + + diff --git a/web/src/views/bpm/processInstance/create/index.vue b/web/src/views/bpm/processInstance/create/index.vue new file mode 100644 index 0000000..2c714d1 --- /dev/null +++ b/web/src/views/bpm/processInstance/create/index.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/web/src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue b/web/src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue new file mode 100644 index 0000000..781263d --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue @@ -0,0 +1,61 @@ + + + diff --git a/web/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue b/web/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue new file mode 100644 index 0000000..6588910 --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue @@ -0,0 +1,1117 @@ + + + + diff --git a/web/src/views/bpm/processInstance/detail/ProcessInstanceSimpleViewer.vue b/web/src/views/bpm/processInstance/detail/ProcessInstanceSimpleViewer.vue new file mode 100644 index 0000000..87f8119 --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/ProcessInstanceSimpleViewer.vue @@ -0,0 +1,174 @@ + + + + diff --git a/web/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue b/web/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue new file mode 100644 index 0000000..8690e58 --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/ProcessInstanceTaskList.vue @@ -0,0 +1,103 @@ + + diff --git a/web/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue b/web/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue new file mode 100644 index 0000000..6b80b4e --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue @@ -0,0 +1,330 @@ + + + + diff --git a/web/src/views/bpm/processInstance/detail/SignDialog.vue b/web/src/views/bpm/processInstance/detail/SignDialog.vue new file mode 100644 index 0000000..744a355 --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/SignDialog.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/web/src/views/bpm/processInstance/detail/index.vue b/web/src/views/bpm/processInstance/detail/index.vue new file mode 100644 index 0000000..c3f83cf --- /dev/null +++ b/web/src/views/bpm/processInstance/detail/index.vue @@ -0,0 +1,355 @@ + + + + diff --git a/web/src/views/bpm/processInstance/index.vue b/web/src/views/bpm/processInstance/index.vue new file mode 100644 index 0000000..d6fc83d --- /dev/null +++ b/web/src/views/bpm/processInstance/index.vue @@ -0,0 +1,333 @@ + + diff --git a/web/src/views/bpm/processInstance/manager/index.vue b/web/src/views/bpm/processInstance/manager/index.vue new file mode 100644 index 0000000..21e3a9e --- /dev/null +++ b/web/src/views/bpm/processInstance/manager/index.vue @@ -0,0 +1,259 @@ + + diff --git a/web/src/views/bpm/processInstance/report/index.vue b/web/src/views/bpm/processInstance/report/index.vue new file mode 100644 index 0000000..939c0bd --- /dev/null +++ b/web/src/views/bpm/processInstance/report/index.vue @@ -0,0 +1,274 @@ + + diff --git a/web/src/views/bpm/processListener/ProcessListenerForm.vue b/web/src/views/bpm/processListener/ProcessListenerForm.vue new file mode 100644 index 0000000..a9684df --- /dev/null +++ b/web/src/views/bpm/processListener/ProcessListenerForm.vue @@ -0,0 +1,162 @@ + + diff --git a/web/src/views/bpm/processListener/index.vue b/web/src/views/bpm/processListener/index.vue new file mode 100644 index 0000000..8b5c36e --- /dev/null +++ b/web/src/views/bpm/processListener/index.vue @@ -0,0 +1,185 @@ + + + diff --git a/web/src/views/bpm/simple/SimpleModelDesign.vue b/web/src/views/bpm/simple/SimpleModelDesign.vue new file mode 100644 index 0000000..1dc5210 --- /dev/null +++ b/web/src/views/bpm/simple/SimpleModelDesign.vue @@ -0,0 +1,40 @@ + + + diff --git a/web/src/views/bpm/task/copy/index.vue b/web/src/views/bpm/task/copy/index.vue new file mode 100644 index 0000000..91cfaaf --- /dev/null +++ b/web/src/views/bpm/task/copy/index.vue @@ -0,0 +1,161 @@ + + + diff --git a/web/src/views/bpm/task/done/index.vue b/web/src/views/bpm/task/done/index.vue new file mode 100644 index 0000000..2f91e69 --- /dev/null +++ b/web/src/views/bpm/task/done/index.vue @@ -0,0 +1,272 @@ + + diff --git a/web/src/views/bpm/task/manager/index.vue b/web/src/views/bpm/task/manager/index.vue new file mode 100644 index 0000000..ad21748 --- /dev/null +++ b/web/src/views/bpm/task/manager/index.vue @@ -0,0 +1,166 @@ + + diff --git a/web/src/views/bpm/task/todo/index.vue b/web/src/views/bpm/task/todo/index.vue new file mode 100644 index 0000000..2c72e82 --- /dev/null +++ b/web/src/views/bpm/task/todo/index.vue @@ -0,0 +1,236 @@ + + + diff --git a/web/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue b/web/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue new file mode 100644 index 0000000..314fd26 --- /dev/null +++ b/web/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue @@ -0,0 +1,79 @@ + + + diff --git a/web/src/views/infra/apiAccessLog/index.vue b/web/src/views/infra/apiAccessLog/index.vue new file mode 100644 index 0000000..570f579 --- /dev/null +++ b/web/src/views/infra/apiAccessLog/index.vue @@ -0,0 +1,226 @@ + + diff --git a/web/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue b/web/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue new file mode 100644 index 0000000..41153a2 --- /dev/null +++ b/web/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue @@ -0,0 +1,81 @@ + + diff --git a/web/src/views/infra/apiErrorLog/index.vue b/web/src/views/infra/apiErrorLog/index.vue new file mode 100644 index 0000000..ca145a7 --- /dev/null +++ b/web/src/views/infra/apiErrorLog/index.vue @@ -0,0 +1,252 @@ + + + diff --git a/web/src/views/infra/build/index.vue b/web/src/views/infra/build/index.vue new file mode 100644 index 0000000..260b8b7 --- /dev/null +++ b/web/src/views/infra/build/index.vue @@ -0,0 +1,184 @@ + + + + diff --git a/web/src/views/infra/codegen/EditTable.vue b/web/src/views/infra/codegen/EditTable.vue new file mode 100644 index 0000000..f8473e3 --- /dev/null +++ b/web/src/views/infra/codegen/EditTable.vue @@ -0,0 +1,87 @@ + + diff --git a/web/src/views/infra/codegen/ImportTable.vue b/web/src/views/infra/codegen/ImportTable.vue new file mode 100644 index 0000000..132a602 --- /dev/null +++ b/web/src/views/infra/codegen/ImportTable.vue @@ -0,0 +1,160 @@ + + diff --git a/web/src/views/infra/codegen/PreviewCode.vue b/web/src/views/infra/codegen/PreviewCode.vue new file mode 100644 index 0000000..b6a307d --- /dev/null +++ b/web/src/views/infra/codegen/PreviewCode.vue @@ -0,0 +1,222 @@ + + + diff --git a/web/src/views/infra/codegen/components/BasicInfoForm.vue b/web/src/views/infra/codegen/components/BasicInfoForm.vue new file mode 100644 index 0000000..1859300 --- /dev/null +++ b/web/src/views/infra/codegen/components/BasicInfoForm.vue @@ -0,0 +1,87 @@ + + diff --git a/web/src/views/infra/codegen/components/ColumInfoForm.vue b/web/src/views/infra/codegen/components/ColumInfoForm.vue new file mode 100644 index 0000000..2be931f --- /dev/null +++ b/web/src/views/infra/codegen/components/ColumInfoForm.vue @@ -0,0 +1,167 @@ + + diff --git a/web/src/views/infra/codegen/components/GenerateInfoForm.vue b/web/src/views/infra/codegen/components/GenerateInfoForm.vue new file mode 100644 index 0000000..aaf176f --- /dev/null +++ b/web/src/views/infra/codegen/components/GenerateInfoForm.vue @@ -0,0 +1,385 @@ + + diff --git a/web/src/views/infra/codegen/components/index.ts b/web/src/views/infra/codegen/components/index.ts new file mode 100644 index 0000000..1634a76 --- /dev/null +++ b/web/src/views/infra/codegen/components/index.ts @@ -0,0 +1,4 @@ +import BasicInfoForm from './BasicInfoForm.vue' +import ColumInfoForm from './ColumInfoForm.vue' +import GenerateInfoForm from './GenerateInfoForm.vue' +export { BasicInfoForm, ColumInfoForm, GenerateInfoForm } diff --git a/web/src/views/infra/codegen/index.vue b/web/src/views/infra/codegen/index.vue new file mode 100644 index 0000000..647759a --- /dev/null +++ b/web/src/views/infra/codegen/index.vue @@ -0,0 +1,286 @@ + + diff --git a/web/src/views/infra/config/ConfigForm.vue b/web/src/views/infra/config/ConfigForm.vue new file mode 100644 index 0000000..4f7333a --- /dev/null +++ b/web/src/views/infra/config/ConfigForm.vue @@ -0,0 +1,131 @@ + + diff --git a/web/src/views/infra/config/index.vue b/web/src/views/infra/config/index.vue new file mode 100644 index 0000000..de0deb8 --- /dev/null +++ b/web/src/views/infra/config/index.vue @@ -0,0 +1,256 @@ + + diff --git a/web/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue b/web/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue new file mode 100644 index 0000000..e2a4eaa --- /dev/null +++ b/web/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue @@ -0,0 +1,111 @@ + + diff --git a/web/src/views/infra/dataSourceConfig/index.vue b/web/src/views/infra/dataSourceConfig/index.vue new file mode 100644 index 0000000..9bde09e --- /dev/null +++ b/web/src/views/infra/dataSourceConfig/index.vue @@ -0,0 +1,135 @@ + + diff --git a/web/src/views/infra/druid/index.vue b/web/src/views/infra/druid/index.vue new file mode 100644 index 0000000..2ac99d2 --- /dev/null +++ b/web/src/views/infra/druid/index.vue @@ -0,0 +1,28 @@ +

    5~PjnxLGfdSY+_&-XX2kbnZPj>6F+SkQo$>5yDDnW`IHBKbsJ! zlfWJ*;=)05Z(mMcUf%8A&%f?afl9|QRPVV`4&JOG#DDDE-nUX>TptZ zj!Pj*@=9oyKf>>M>2c4P$i1IV!d(0`=!lP=`E_Ro8a#F78j(s<9%Y^xga#Oq_$p(p z>-BDV=2hQoOk};nf)%Dm=zZB*Uej`UQz}4$OtIsJmP#!=3$Ay|JZ#)l7wYM8lL&WS z`JrajQNBnJuWYvMMjKXwgb6(zp=1({HxC!46$XEy*;nhSm>;t3dYlIj3$&y>g}=xt zF_BD>D0rm|t)Q87%V7);K%}Pz8=o1OZ|c2^Bl!;owj!>J`$wN|NGYAG8ownX_Z9<- zUj1PltK@+FiLiI{@>RSWD5q#2Vu(XqWlK9NF*L{jUS(a>TIDe4K~NMa>@>n+YyWyC zt5){%o4PTaU{UE*iWmkKiJ_DGceHBQVTK-T-teT4wY5JN-eNydDrvU%>u); z_kJNE+3tBT{a(cV#6yc6<4dXU_{Bh>6n-J$($nMMv7fMkp8)+M%nT-SPch`fW{h>g zkI}M7k_06TlbI|IPg@a3s>3sKlOXEf`B-@8`PvnR(S_jx$hPqbS5QqB`oO&2zaq}tar8>Xn z$9+A`PBFviLX9Et<;L^4XDVAR4i>6$cO^lBntd+RFpX$GkT9HFUPnlS0s!_0xD~LR z-(1MN;+T75TE9Fjneiicy<*`E9?XNAOGKFx{$#6W8y0tgz=06VlvHq)WWvftEVP=R z89dyABS&|rS~nvPdwUst_p%}X^5BH{TJ*t-+7S=r;Qd2j5+U%BX} z<;@4EtLEL5i^vCQ_0%TahcFuz!LDgr#8|SLD`;~YVK#vuzu{)j;v$sN|CWq>IeFTB zp51+b!KlYaPw_}_1`iWSx2L>!#&PJZ@(s%9Y0}IArLSHSx<8MVm^Tn1^V67~nFHEqv<*2Pa#Xa6m)dB(I}*a} zTUSR<9NQ_`RC^MIt*#@!kDM6*5dQHq2M3*)t_`vA{?d`zys)GTAaJ!e#%x@ZRDhge z!AZVqZ;d`m88j66#Vh_I+$^+iQDV~|vf}vaO-_-rR7sIM!Pmcc+puNgzH-yD?xZT0 z^C9mgl;&@rwWzI4Md<m*b!Lsx9Jl0vFf`?x z_;+%D;zn)$ndqlUlc?)#f$Ls_A8HW_s5CAq(?W;-U$l#~Ul zx>P$E_?sQS%Zxj-J}exwKzU^vp!M0z@!DY`>Qrwv2};s>;^3E3lwIFa(u=QXnh{n? z?ftdRKNiF@R;wITS>345ZZVm0DvipE#ye zxQOV`ISx}&1an7p8<$H@bcQW-PiQp1smMkXHO=5V5o~>*UV}#lgp#1I3>B=*laR-j zlL_a9WE>fv>g}@+rD$>eOrr5?GCz54Fb{$0OcO{ zBF+4~%g^31FwKA(p(wH&qZILz&K>>Z=NR1%#cZXPQ+Z!smZiorJQlyt-=wa0Zh!&n z4D%Pm{Ky_{k@t+yD`Cby-kIO<^xYmi=<`4!w_Y$sw-YX{@Z=2 zU3fWtSb+h6xY7t*i}!M?Vi zjWkdC2OSP6yf5ZG2BD1q5HV%~0D~xXDgvFawH}*@-Fs_xFMf0>6I#qH1wg`0;5hchc<% zF#ZY)a|mxmt>I-9b=LP54CawQ*0K^6MQbes4|iQBT{@H>ZCZ_=R)ZRP^-@JCp1BK+ zxB*>dsT?l|*`Gc>)ti4W;g#EcH1^V0jJJ6ond=2xDa9Xdm69A^nuil(qgF{nSk$1y zDn>!YPU#JMu2%!xugSg_1QxhYO#L*&(F3^SfpUb#PQbv`e(P1ImTkg6#iObIH&*Nz z1lM1YhALdla6+^{h3TEPw13TRv>n?i?M~!#ee^5b;8Qn(ax+rUBuV8dzLk zVk{C_nP2i>gz?rD?M?^lXkH@&-`OSehoz5!5dc+ z_osB6#o&53B=>EBP3WKD(ks4ZS#0L5`_!(twl9NLfmB@YcCk%ld^Zf$2iamG)Oi#_ za|8e0sxq=gzG1tO_$+hd0ilhhxV^JNk;06*T9e??BJayFHM(1*KmEy^QP?iwV5LAN zH>I)}(lud8CNtzXwNZzz+Ybc_@id2Ty{pKo^bhamcIAup64Urx~l3mWBG z8*yO_S*iL=n5x$3Bbe)a5sQf7BZyHgzKbI#$WY4FCCDrpF%4pM9J>@7xLkTGT+m1uk2+<86j*>dRA{QH$V4B#Bx&L8x>|WFdSbOX|Av^a zdxV44zHAJK+f9_9keG@Ofy|wqNyQt@1%K3c4?6;*<({(h>3TaE86|4VTE!>TWL55} z)ZaT)6y>h&VneKV4O8vf+w=}(r@n-%;Jui;to`HXD;&w!e3h3?5TGr~vT1n&ClU77 zU>DCy*2QNzg_9DCA<&0O5w14wJX-*5Ul(I7cf+dTnag|`k0ZD^sZWGpB{>q0$Yvx|BM{BWZg=b8^qOc^^56^~58WG=hF+!!r8x7e<-p=9JCpGN( zZ38Xt{9$pCFX#Il%+^8u)ipo2bg<+;^z(r=?ftryI=Du7D||ZLHjGPkUt>X;u9FZa z?Pg$DDq#xMcy>iv4!q6i+TSSU3Is9=CMM|LdOd zvjeU+EyTyGYiGofbVK72@PQ?WEkC!O*bL~6{R`LqMX8P~?FA|pXhR=!Sn6ER!Q=$0 zZb9ubgT`EE1jT}OHdW<3^pHw$x+Tx?s&+yIRf&F-t{%&)FXr&~kGCr?cQ7XEauq;w zOEGc;XtHi0f(z95MwcJgV!^_IsEWgtRHz7aD+t;tnOE31^VrN-1$hdG=N`v-AC*SSC zU_GlN;g?U9iG%Qg>Xt7ysT2Oyn0#~rRb0&~FdN&4-K`h&wWOo0|LNx|E{>G7p&q}8 zwcc*crp<9Q9b1?|z2GxB_at=x%-(N*BA2^*`2HYNMt~5JhM9bkMsqsLkDQa?LtTgP z(h}A=K%F*wA|hDooU!k02RW*b?%>!z>`qcUblY;p449HZ>8qRZ5mqWZcEyz1)Y6u%$9kM({ z(IiyQJ-q+$_pL9(r*ybT+L~Jqt4G4^o0#d~v44b%>-679ea~0Ph=>r38ek|tyqz!s zXc0GiN-Y+q5K8WrhZo?Si-NCkmIz4oYgmxRS(;{QxrIOKXlrtlh|!2J&}T`yeQdcI z8c>en%O9i6TWUx~Z>{|L*Fu4L8mgB7FK!L)7%CnO&*VvFK*tqQg4j|W3VA5`xFFDi zA$(?it0k7mR+W6Ojk@hVUTOeX_*B28EtPwctw!)=I{89xtR*tbE zUrdg#7)(|RGTqJS0?qi>Gq3mxN~o6E>?`#?t)^|#3Dj_2Pd}X;H#!LGa&bSx{Gcwx z+aM+%8|as)iSs$G3Yy+&C&)4B5paK{bEZQ2b<9qYqx^uyb$NJtyR-f?#S1m6qmqbs z4a<^5ZPj!hUyEK7ygB&!s@8evnhc~ z-Uef-S{_d4#|k=vMe{ZJ2&kt|1X2UH!MC!{Rz<+-q>5s2+rqM9ULputff z3$*lkdO}5fOf*>}-A+bpX!Ug?`^$$O!?b!ZJ`DY%OIn)u7LTkG{|0G@Ry1n65^z*g$xyD`$2KGEj7~884vS^h0OrwZmsDIWHv}nu?P@c@-(T zqo^o_h{dDC$_a`ub>>WwZ;n^@w_juDQ8g-ZG9}3B?Qbjw%l3USOUlh+4gM4I@buOw zF60ye08oS~Sc@>;G=+LgEQkicnM;x3=`l=X2DCdBz(USE^>vVMlzvqDt+XCeH&|w0 z;rn$DW(}O~s|#j{kO>>oC8@*|!JV+*TK3(dW+c~lQz2s0H{myc}VR4(YQP(BnYUjt+fG>iBlpH5~bipfl z4AM&T*m@H}1qe0gkyw34tQa;*2mj&7E?}P1GziEX7*>R!<5F2mP5AVRxywa7P~owx z0hbQ$3e0O`+xw-M33SyeG)&wiu*(jDn<1*ivfO_;fu{px^!JI+`Ra(H0!~lsOUSR( z0Ypf+7%MA?5;g6if!>h!CWN?@CU7J8x^C?dacqeGiDAXEC`OYHgL@<6mSNNB>j<&+ zp7O*h-!JR=*{;s^<>WU6zh@$rA?}?B0VWn!E~>PeaQikJMR{3Hf#IufeLP$ZIv3OqGeCYs}CpeU(-pm!wzu z%<>vsBSGr7TsQ2&Fc<}i0OSpq64&D|)wIHIk1ObAh?*JutjY{q|ZB7L9AF*n7 zGOhE*Z<58+pMV?gJ6N%Rn1OQSL@ixtJ%o*2D4bKUp1oI?*th@M8H$aEF@k`$67#%! zc-2Hwx$*b?W98A=61m)>Z3dp8f{l)kEz2o>l)j?%s${Mw%gfnZEIAU;B~?=mZe^hj znZs4Tk!5PCZhMP0T+rr_RpX=bfofc+I|EexMgs=diu{Q(aLpu?7ewCuK&c`>GjLM@ zH;!JxO4Xm**cK77k?BmqHsFPM@UmOer{E@$MA5*g3I}>iurl?hw5$4>xG0%W6}=pfNY7u~EcgQ34|ot^r``i6GW;r41Hd2x+R_3!Z8^?25{_ zl(y@J#O)6k3oNZ_lC9|_^^S9cI-^4B8SBY5?{Z_g#++=qWZrwH++nn(zyRe-ZAsTt zKAhH$DUEBt;g$wQMVjsX3F8?}K-L*A@%)(sS|v;-o^ZB~ds)PEbj^rBxtDWObZ0HZ zbs&ZyS*UA}`8%c2eZzfO$j#$numOH3h7Kn|XeGWWPjpH7Ed`0bEg;hl%tJ#Hz5Zn# z8yH6E9iluTXZj>I(hdjT={d)9IZ9Tk@`QNZs&ydI$xZ%=``KU7p)NZ_Zdaq{{2pH2 z-ja}+@3;%$1?E2yfF!R>s<(mx{UeJ&g)Akje{C5%~7Tk)A@h2m66 zC5;MFYyPXMIKbOZt2>gM-x{j#s=nMuZutFe?--Wm2KCAkLBC;vodF?001%&~xGnm- z*w+TySq=5=1i=U4`94Y*wrs8tz*~GJAd=~@#aN9CfyZuDec7`R?jP;qTC)KN0aHvq5-YuT^gAc9swMy!tLSKhOkch0%mNC3iI1sd930TM z#|C|8VzrDUs(SI^OLTUhhgl_)@5el|mAV=}jUgDaK%4G!VMvh~jwMM9eeG?-?c>Gr zA-@7axz+oBBAzGwB@D=s-=r`AR%j$HeM+uA0X_`~TTSF86K(?bR0S-K1z7H7E;fTy zmcuiss5V_4v0qc6{yWpA>On9wKsK~Afl3VsD2CSRRd7Z36|3Z7+cccU{>|(r7JANy zGT^W@(0Wu_-y4AlEAS+EsBKnX_ZZea1}%BBs2G=~H$`uaBfZ2>#E)*9GkV{YzHW(q z=t2hGY;K_NK4omYS+plUOuhWM-s5@sn;Z4(_7dS z18|>M8t8dyE?8m*#n_xS(aeNsY1w}oct*-qo}CBcW=G>Vth)6xL2pFl2p-;SaxQ&i z;bQxt1k0*vqh}{Dwlbi#t%Eg>vU+MSsoj*SG zX3e!zp?h&PobgewY`Oq!02N4rf<#qdt{B;+q(2YymL`G-cn`DMwnPm(+Ov?142FDW z{aA8LQ9n`jhYZnRV)yq;6u{u;3T`uggA$k8)}--ieV)w9>6a*TrQ->AH9^XZ76HKg$@TZ^Yi0joXq^PGheAqUHt z-A=|#%l_9TuG^aY^7X_BnEl&A8d_gh6APYUxAFw_9K_x`hKn z4!iH(N3)keRPRS^MJWxQb-?0T=knj*ct(^vj&$n|1CBi=xremQV~N8T$NE`~Uvn z5iYKz^`dmH`la!I{?%hGs@pK#7fovzuq3YbXnJG{kESq$$X}qMWsp2xLzrZAGKwi( zDO4sh7NaBMuYNS|1&xrI&7I=1adP~MA2Evgd<*z&y#HsE`oN;-FWpaO&sDS^LLS=z z(`1rTdeBb_FbtwmW*tWaJ{dCu7IKTaxg;!NfKmYX6h(g7R{jP{e$tYaFj^p8kpkO@ z1<-%RRdWQzMNY^Mk347g1C+>Hm)11z?}ptC5Wu9H?quSx?qXZYLj26}z+N>HN#7xfX# z^U)ivFi4Nn&oOJS%9f)OL5&h5^0JY`KlYi7Hv=DZYV_1cf1DUSrxIE#kd+8l+eNq& z1t(F-+q`)ftcWIdu?Hmt=djwz!hwWR{sfsUiz~%HCk!eQ>a%JsS6 z@ZSVdMZn{FBfTe|EV)^`HZpVyjNwOZd?fMB!^u$7CM^}qZySI5+`d0f3pKSL5D^9J z4654WjMUQG(qQnZmr+YmgocHxTrX6GE>4Z+@yLB(e|A%ST`VuD5I-wqQkI*oTun2` z(}CM8pHMCK*Z@Mm-s6d4$!fKE7_~EaA8>euunKo~Fw6W2RIy*>pxw0I*;uGovO7PS z)sIZ3B6{XutMsE-W{@3>n2>R9tr#<&KkDwn8(%0+&oB8K6sg9|O2}&1qu@L7RoeUi z=NEzUqUC&ivNqU+butD$Kcr3!M$D8m#%hw(xMY{F0?%cODuM?F5uoTHK)t5(k z7QTpf$>fx8^H^#w=roM4aoVeBzjx;FVzN#+P{_BedzOF6;BxCG#gopSjIqV65JFVe z1C2G#4?S+I7&o+0I&tVbd3-eGd;D|DMFs(sHkOw>9R0wT=~rXW7H}prfhy6%r{*1^ zC>5Rt6gh+{*Pe9{Ph5wUzo#w$@hvXL6q-IQ0ZR9~^Zl_wta6_&gFK z{f+zguU`fFJs*Le6qPa3%fid0#Okimmv+qC!)r_{SD`Ye!T{rKl}dWYALaVVsyBM? z%T9T8Z8}F|z5KRfyqT_rKUdq^WMdBE$k#%?eAJ}09B;Nd(}6AZ3o>=Ta_@O;eK0uk zdkjE7oFQ+VyS6hF9Ld>o0DPeLa-~23JZzY`-&YW0l$+u`q=U$H;|W$xj?k9B4uv~o zaJ&KrjMO<=C|2(}d`ihy>z+v&w3DNkLaG(>nxP)5dA4h63Kf>h?3w4-%s;-(6sJ8u z)g2WgUYxWQ;t@!l6oqu~R&|-O93^V{;Ipzn$A4}X!=}l35+e)8x?>D53}jEyBq18H zTTuG?Dy>3AypqLGN@dLd3<96(VHfBgiG2G}wNE zpmn-`JiB@PrU}4cB_+|&j1dMS1qrNE@n32Xi3&O+atN#uWbI;Pw%hu}^cXB}Box8b zaQ)($T<2S_qhnUBo$^zBx$%?~27yFmsQ;e4z|vBa4J_3cB0XHbRQc}h3dt;y_jgTp zZVu$J@_xoOZyPdbdIbKKWb%tB>0tY$GV03F*(Yj1A$BCNS1b+eD(y;bTY-dU$59n& zhG(T451w7vm|r;Vbd>xAJqEhGF8Z`hcS_N%ydEJa2jqT*8LsxM3Z8Quxn^p?S_ME? zZy11M-uolSXUeH3teif-hy#@CZVSX!Z$ zt8?3=4nIx(NVg~PU*jo#S^-sCQ+?1 zeG+sdN3-5JJtuE0C}4`NGv$)NMy>i+;JxcXfX%*HCH%Tj-!A}l&r;riIe)t&02)aEd}|Om zBS1c_iS1{|m`-smrQ0+}9#D)k`d#YXnbOoumT&~6!vTI4^?+%z2PPnV%=i{Kd3GFd z87Li|@-?xb(~3LmOJrNnRZk*A<8xDNno$l=S-%6-?qate-U>D|XL|ebg|F_D<_pXA z4saMz$CdaCays`pd-3?bSE=Mbir!vm3=u^$7ul>1vu5*+lCS5gvJ!@7g|Z-ScxF)R zVboFo*AEdchxGzwpoX;}wrifvK{REFpRuOEGSDuGr%eXpyKj;zM-KV`6!jA~nbW7S z#>7UwCd_L+CX&L^e5-6pX}giZmb(z}Omux<3uJT23YM#-O0N8;yQU(AY{?In!%sX$ z*a9$oXYgJ#R4wpiswCtCOdwAZXxOj^5FuqE4VKL?;)0GG(p9P(t21y(C1RgNL5f?M>$dQx&8ovkEEG5?Y4HIL26)cMz{NYkq<4Aqlh9KM;#o zz^QV;jQ4s`*!z!d3z`)up%iwzw*uMy3u?9T$A)Ss)0MB3)BEe#M)aCl6;TV0JiG66Yt#cb07w zk|)9WPe0$I@iHBjCd8P7Xkn z0vlndqPJr+@QR0cEak@;F3fK%V18K!zeJ^{*tv_KUz%f@f`roTO@D$96DOjs7lIAI z2*-028kK{ZN9E%Xvu^|GdG4TUAIGWRFkoudybI(DaqUmyRtRoXr`*x@;eS%mDac0} zRaOIxc5Aqt4hReMeEN)^C0#V3QpZ&Sy@EBgV%U`If;5<*wrcwXZSCN8pJbifV1tTQ zn(DX*dCa}}Hp!-)^Vx*A`1L~m)pK{@W!?u##HTfi0}R)5A7517a-h{MpNEjB?P-E( z6@V23KmceR;e5+K7E8t&9u!BoMW*Ccc*MwRaOFB2L~$4;s;_ZI+;pmRNX}4mt5_bQ zvTSsV-~!nB>(lep=)Mp$q$Wu?i@~C_D^vo?_dOnOJl^*g!vOhu?!%lOEMhVfd0~)5 zh0c{?-}=rNY?O6s$I-j1#L6XCad!RsMr&Nc=NYzGVXBd#4%TAE))PI5~SpMP<3h=0d?Cu+yMsnvIs$NKn^ReY(MdN}KJ4(2t~j8Da8h z>Erp$@*UfPwVs||)1w-w0r`4WZvC;3%=KNJvC9I)YfJ6nw(3;78dPU1*yJTwq3k#X zROFf_%m3+TDI5o2Wi-Si+GMDB|3zk~pRyp>iU+bXV4KY2J5A@cqm#~NZB9>%N*dPV zN@#};&YpCbE5Q7yHjiit=r#_cslGAkvn*=-{BIe;881~2 z_tyjhur9qN9Ni5N24%sFaCnEg0H}NB5_EWEvyCc{uw`cvV|+_S2UN)0G174=NmMNN zP2y*F7dg^XH@IYdmC*E#&rT|A(|H>W2Sc+ywnQBzOC}p_7m=!VhZ8!SW2W=~m2&XhTr|hB3@L%p$az_@?J?f`F z)umA3+y?cUP7lf(k48Nj=~51%01N;I{}xwZRNP7erW2W0m%I@Mhnld^OMDVWE*`RI zYrDat7_~vG@`fKoQ7m{epR=p+6}JlBZZ2QZ%?!1`iC-JWsSc$LNGNibBsCPJ%&JH- zInc?LkK*ni(sG?A_3#ex_Op_n!u_?2GkR?O^rk;_SGs-;{85UPT|Mr`x_CRYU-IiN zhV%NTp0bmsizfch?53?iSgsYhXexo~)icLT zJgokB7;9uD4D1v+qAzXm^zp{*-^J-M04o(2Kq03@&4rO>Z5x-sEO!JaxvJ$)dr7f+cNp)O?4XlBd-7 z*|PSJ)Gt~N#_UE#ys{lLvzryHiN@^4C6-Xmo$|~FYb;-ST5?%`2e@eMmGvBH3R}?% zB9@EuARR6OutV=1{KO>h37U@5o=`v-3>pgbxNhUZNoc3Xqwv5e>t&yZ9&YbIKARaW z0-uRubCOOe&dL1h-BukYm4XS{?_ciJFw+@V8F7ieI=y&4p8y<|&Mm#wdw&!1@7o7L zV=@Bhdxua^Li<{A?Ua{&m@BP>kgfL@C3Tqm6?I1SJS`WNE6BW+(|KRfAa_QybGb8U z%0JaC@XDUwcY`%QmOQ|RaZT-%-G1l>yv>Y5L=SmJ_+emmiWYvo)a6&D+J#CNs;OdH zyKzLiE2B8t*`M|61*T&k;0U5NPao1aXk4_ zl#+`C($(JoQ*APXk<%7KSX?xbPE9nS^shO#Kqz*XM-L=Zm}chms}0~P$Ki81j|S7} zfoU;QyeUX+=s*4Jgkn!x8^0z}g6TwYZQ6uK(_(~}X*5fOxl)}J#3VL7=uTT`3!eJ! z)5lO|*efX$@6{8Qz3muGO(&R~QAq2~ef3kqDN7YN(Ek|E$xzpjVD_(mrAI4|nk*E+ zmkQRX7}yTeP{&7ZN76ffsshE%-PuO42&4jPP)Vfg!40|!^)7|NoY&aMl)0(tLI|_P z(Vt3!w-?=P0ITJls#UjYh6sD@mXol2Lf^}U;%!Mmonw*gfOD)B#t1(aT?K`$UvkPH zu8wHsL_AoBPI|BouT;o+T^qftJmU>N$E4Rv{rowP?hQ`9t7~R%^*B8k&gk1*N57vy zw$)a|=|}&3L-(AP(M0tr6J;7N1uDEjAD_4vOKZ4?Tl4SQGEcw3iF@66FZw6q(@-{P zH8uQAFt48kE;iCPnaKqoOKq-}d8HueGv8bi(8mIWwV6|X&xB=ho9)u+r>WJXc_xwC zDJ}450oFDg%}m-pTwdJ0d@63B@8tZ@Q<>X((eN!aj0y(z*N&YF}jFG2bDUH|)Hs`d*>&mg=P-*C^!f)fc-)o1A?%q7Mc7m4xko z#`U5M{jGPu{?l({(h4RJIJ($$Uo3D>M2 z*P?JgQ&Y#X;jvNVkdi_j#EAaV4|}NWl0ST$XfgPUmW_Kefbp+1`!MZ zz)_49t(sxBElFjR+bu306^XZcl3)+x29XPTM!F&!`iTdh4JgO=xd_TgL6NSrQEi9I z@)psFD;Ji7^izfyNeaN8FssR9;wbfXI8uuT#o5u>Fr+>;z%Z&*BM?xKS$S^JhZ&Gz zd46EHFwWrdLMEeK8Eu6pqbim(=qfv=w-8-*%!*6Y{?d|>5zmH`KF-xW&_@5kZ~~R# z<1-yA{l*HA7QiagMCb|g0Yw8U=q=~ff{P0Y6ZoB zR>_PwzGv@xUOYIed#{FU`j8pC43qjg8gHMn_Y0kDE$?#qfbg9VWb}<|7;uVCd+8;D zCh-aqm%zG7a_$tY{&k1QOV+;KXdf_hEd5GCK;?|P#NuN@33kCp@)Baw_}h-v>qJDX z+uU(rbYMn%z(S+Bd)wSQo-_Aj!>$HNGqO zbq%vE@f*oKp+Po;Jbp?8zQC8W>YBO@6BCC(7xNp%UoF*PbHA@$Stytad*62t?)vx` zxh4PE}8Q7sFbAQ9}!Ch1DJOoQIFLAObNXC?RK*#8n+rK^9PuV8^?(Q1~7ytmIfIODy55nWZ*RWeKqd`lqr%oyQfw^S3bYjqA zw}_;6Lo$1^HeTB52RZ_o`6(Sg4=yB?hJDm8Qch7XaSHG~_Dji-A=BbDkMIved2Hz-jlmbZ~Jh-n*1*66+B z{Fyze~5iqucYY8XzF*S`*+3b_xd{Q5TCv9Le9) zITYgnutU+A27d(kJ7X?}>v$rg6js(o9KCHZQXAsLvE=NQbNQ!#be4*w!Q)kEN;Tzw z5EZq_q&Bl2(vs1RP?X5y>hckKXJwm%p;+%Mf;dVUINzx()jwQ+yyq8=bXQwjwOK+r4eLO&)SeE?Dbj2UBBEJbGL zlp7LSYHmXNi*O7PmjCo~7|!;`Om9kC6K1$CRbUf^qGEP3;DxM)DJHo(|AkyuGc?GF zxbuQMxT#E3GHXg%YYIv*%AA!2@xigW&ZTDOLeWgS!7*Jpamtd7zEVy%A)CW}jdXnv zCjfa&jJoK4V`6TBEQ~r@p3pDOJho6`5J-2gc42^-dYU3kBnI19v<;W-2E^i9roTp^ z#wC!3=q8;3A5~ef(KFYku~)AjnL{J%7f=Buchs^bxl@btm4?~sR^yqgPS%PaAsHt8 zoUW#latexH4Gi+lubP*k(UA|dESx(1vXrDvz9EV+?97o=Y6T92%F6G}lakmSM(PZ| z;VN#Z7ld@+F`Y=c<+bwu;I#^TWqa&+63+vZ+UzcX1dgQNtOucebpT=h>F&oznT$00 zIWi22_-qM>SXfl3%Tkj*?&gs03wYN>EF!g~xcnHG1`A65S04A|-H7#|nW??>N8fZ% z2R_ZPWo+T|R1U`|J?PY>VC>c0nd`IG+uv1x=`acmDC#rAa_yF$P(Ann-K0~-`DA!q3R3?)7Hb;r z`iJbfZnw&tC~O&ZVo0>m3uf!Jc?ZgJa+EX`cC_8X=R=ca{_ttqrHe;$|ApxLjuniIW9#;@iFYbdPLRr4NG_A6M)Jz2 zA4d6S94PpzEM@75+fS{xwh%tuk_0} znUzCkoDQOoR?ZWxW**v$vx^+9U)p@XW&fCcHY@Y$bBFtzpg&YURYCi6yMcQ&b6IQ! z7RPUXt>CUIsReoO;H{8D{?pGf0Qb3-;i81imgR0-y&aJn)pEQ=qQD|Lf5%-kG7bU5 zFcjF0i*1(np}23c1yGXoobS`%uAR3nALQ)64J!y`p%F)ST-#G_z-Oc~4m%*ea7 zqJNJaakC+hi;c>UO|Z2&35`Gs%t1fF??3(dXx_ezef1}h1C0R%_1^65yKNCRjoQC= zXpmm2Pte_DV>mt08Ol{-CW#xzifn2spvqZaXltWTa=;n*qVTnbN{W#SiH5HTyg zo?Qu+m^82MVD%_JaQthl_oLVSeDuB~Z(mA&Rl+K!Oqwnp^AhT0IM^yF_>H1|D>Ig-bp6J%=HYm)8cwcLDRN;%hl zN5re`U`GX$_sRWIoWE51gvEVWfql7;pO&vixs+Ilo#aXZmuA4 zwm*0;lrWOTT7LT2mHzQ&I;#52dIyQG!I`^{eNcqJgR zo|K^_9=-6-X$d(KLVj6pVa6Qth>W~yWni#aQcEYV^F&U5Qbc_(_U~CC!Q67S0?&Z4 z3^@Ur%(@uNv+e1B1b=b9?tCyh)XpynRtaC|4C)_E`7wYYN8!N8VW>9C2?o!Ev11kv z<#2*T6$i08eJ4SxcE{^ek&BYz@P>I6RKkgPS{^SnGC5dt2CKj~eX7m-op$5ygx{1e zaHZuN+=>O8j4|6{+&7t9GlEg^TmMPKUT&HIeWTx{46~jF@pLi29+g#IfFPg zgQyev!?*o$N~DjU`1>ACOLP*>-luZkQn5N<9E>hT290!$@*Tt!0Tcf)4f*>?UK^NC z+=^y|C%>bm_^?TZ#0QWO!O=P8LIn2Psvwb^^_(1q00VM*#q?<%$mL}eeT1+h=K2~1 zX*5k9*`y-O>ou@7C}?VzyL+JWT@-SItS*@_Dy;ZP>FC$68FF5+Y$4Q0N{XU+EP;^H z*rwLUiZsiz&4J660_z>Xmz)I>dwLNzrZu#UaF7ljBtkS!zEsHBK=IGg?3Soo|GVM^ z!W3K^wkLx6YIfXg4F;TjyO7lVul}4yMDyC{D|m|Pdc>Wq%SBjHW}^8~WdQ?jIkiW3 zK(G84VRZiVgY3;`r1n3;C+zDy5t8LQ;sjmzf3lvZsD7_MS2!}(fdpsv{VV9rOjGf_ zU){>5#ALsvu{A|0$G5_^$zV(R)ylVZ!Y&eFZbT??c``I+$6$blDBYU_3tPXxJ`-h6 zED#2yT#CR3@~4?na^?asv~EdNtHBbHWy-u&AL=#-tpsrVq)`D5)W+o`dS`wEEqq$( z?2%P7Nz?Zj%-D)s*EkXqX6%U+VHIa@v^0yGoWn4FIA`d5oFUViB&lF`H4Xo+UtA}L z_Uk!)@HNztc%F*Qaf^N#{~Y3O&00 z(Ezk*Tn{XuaF?%9uV`zJV$ln#)FWyyvCo+aE0lNEd8`s3CmGs`6P14}?*idx5LJpS zISyi|JMx86(7K9RHemCI(4i@_k4+aUHzyay8eEFfYKoE?WH|H~@lrbdIgK>r*>Wlw zrhvK|5nT!MR#`_^YNCKYPS8gDO534U7+51SQ(SbR5BgPnQUk$=eWQ%3`c7-1Q~fe> zD$m>le8ngHl$!LM2wooLY@Pb1Ml|M}+RVu7;Ec~cE5K?q$O=nNt>_#EQrL)lJ_ zqX~?|!ef|m0Mz##6nQ`!iuE5|;acqeE)3A7pNmbPg*i1QUiESRC)DAAnBfb(ZtG9n zl-=LOew>I~;;rp4QaeX8UN;`k;~Veac5`nEy;thZC^z&sdc`=R4S{X%H&4_LpTN+= z6>H!@JirE{6c80k7Ng=j9QIUx5F}A9g@NG_ggF{(O;*gHrLJS!1;e*lVx*>dnkAq6 zrB~)mOzoBOUatsivy;xdT9JGX!vWJHyu-_Ym3r5F?Q@AsAK#Of;+tGpzV#Zd1U3tOK5ktorxpWqo2JLy#5x9^aqQ2ENtA9ek+?N9IPeO(T*!!&Pr zA<4*$r?L*Pu!FM-004eoL}iV55xl_4!Xp@XmfL+jraD3|Cn8q^Ra(NBqsXO^+Ud*{ zHp}Q#tklNz&nPa$YM_t;xqqBC0%637mGUtz67tc>-ao$!Ieq;3U@ZZv@h<_!$phw8 zq4q9_#sn@xEC7xc3Qj5n%xj9e%r@zl_u#4u|L6@c>r{dY~Nscgq|^f{n>#7>53J4PF3c4gaQ?fm@e0>3JsSSJ4Bn>nUF4)EzXKWudN zJeg~BP@X&*U4vbF6>|SOnAVPP(!HVlul{V3;AmOux4MggbxMOGo)bL-nY`A}a)=$! zBSO!g%dI!m(%R63Q1q}JhwtncE(^@|!^i#gRAf#K+X6lB%-|nL8m2WV+3>)dY1}%D zi?yvZT(8Ul`Iq6guu`D7ZqN%V5|Zz+;`odehcn z-nR$zh{S*VE*3VBlx6BJMJu6^h<}eiHyN+Zyvc**;6cBd(3k%Ffaf`GAr3Hri)!cv z1^DlAdYZCcDL?b+lG?1xXB8IWWa{dv*DI~L){}=H{uw=>=j4jL-WD}D z=spsWy0)i$u*QS}FtIqz`gCLM<_dKoyqPIvRCE2pKsy#!1VP{1?cv;(nWG%gwauvf zqXIfy;bD})+2b?dC9IS~{xNP~^yrKp}Y`kjudAQ6+NGFd{AMF1w#Z>`K zYkA87RkH$PUVDd>k z>*8HvYH&J)79o-BjA_G!7mJC7k^GxeMu0*BiyRFyww1H};1C(A#EZ@WjILMwaPpfe z{jBl%MfZm3B_WCJ^!8R-LVZ-D<}2Su;<&ydN9wHlx+gN?g;}f-2htt?A|q~%uYNeC zSSkd$+y3L|ihiTfxMuhxv&OZzP}&Uo(NA}BrZsJXrE}fEeyP-LW{E?`9*|hNo>&6*2nQ1$2GaeV;a;MaZc(YafFnV8phUDxgZt z|BN`bGhrrP%^KM`h>-j@@!$luHx054qACF1QpZv__Yu7}PMJ3(A}3}Fn73t)%1s0m zJUqQa&lB(aZZLLBo!(k2nomqtqoy+|#0a9x2yC_BOe}<1aZfU+MT-$>>5SmyXWvsp zvS-xk@+ZjDKztnA!VI5FIo}VG} zNTE*gZf`R_dR1EJff@i_7{(#>MB{b;|9*OugzIRzKsToCh}-B#OU$hLFBARz6 zQ6**%-Hu4=$3zm*-wQ^q19la0Y6Z3l*%ZC9s9#s@i#%#sVpSWS$33THXZXUL-w`8IS!OuWsz^_QPo%LWg2t%Fk_k$0;_(wf zZ)$XaSR(@-mX%g^YKP@w?jx;s@Jtg|J)=G+%SSX;E+1yD!^HsaCn!8jG8hz zdVVWmj^~iA-&M9;CqisRUt)`PEj0tUg*5Y#?Eq{rp zZ$~k)NcqishX&J^>$>;aN_61r(j5wFOMe%$E$)Ztf8a4%`qy`YwH(bnSD0*ve%xMt z6PEp>ks~SQD|mM?O8M;M;n%-Un%kIon_nMauQNStj*9p6^l;QgI@0C-0fc@E5xBg% zd>#&=0;~bbbU2znES_m?vA>`#>6ncEul^k1;>20%QEH3I8`@3A*~F&M5c}y73oPfp zVR35@eFsjbF@W3niQ?lD$F_>=wj~vyBv$oP<~En?+8wJ;b$99elr+ddvkDp0rO*Ef zUVs1Fx67n1_>blH-bCo&#;A$#g&EI}f237pAt~5Xvei_%N|V+Y-l^ns#zyS}{Pq-F zZG72fEeuI@sJRE{K(%tvrxU_dqs+C!)l)*Yt%WFv{l`WZkq^ZyLhS4=_L@ySN;60u ztvRli37_VeDJ|jUophS%&nOn|SOZp3a(o>c=EH?T(=!ZBU>J*^qP$ZU*B%}@qxnNT zJhfz8LD%?)i!z4^QLCCr@)`*AO~vBtTxpNiZ*If=H}$WqjE0RiHLBqaSv&39X<`;o z+t0VLk(d~4(%uWv*SHw^7*Vbh=kLg=zA5vpL~vUWBw3mAbQC(jIE-G|2&VJB%D#K( z(bH8Mp2VJ*;fdu7n*LZ^R;l%&S0*RT@PNg~QZq-K`1urlJaf%!hv?o~9SfBdlnLo` zz41}l0*j4KXBNA2vk}yU0{&_ECd^xhMPcX+#N59|Rf_X&vt6*rdZKK-=M{h8? z1`MR78yzre^yrjskQPv+yGA#TZlwhQX#@$8PNk(pK*5G@@Ans;=iFDGbDiaz>hFpI zN#i@kGZ{FwOHTct33@cG2=^%x`{f?9v~^22^rU7Pn{sMFbk$B&>ylJqs7j*9(z0iP zqR{~d#Yp4*82m;6$s1LCSSQdbtjNxZZ6hwm%2;PuW+RUrQVQ!#21c@{sw%kwM!6Ag`<2W%Xm^eeo%)IM0K|2CnRCPH7TUO zZ6~^@K4>~M=KGTT<`W8xNxix_S=tbqul@QrE>Y3D9JMHs#W=7%J(`r6)7%geV>ryA z+NU6GQfb{Rei5C>AQEx(nN=rb>5rppaU_P;LSi-XfyRgTfsJt85LS_h@q6k-42<(? zD0|it0pyknM(sqct|{`HK(yh*mph>Hu1FK9ZtTRHeLq6=5^<#;WqNYwYvr4AX}9C< zfFU3Ng(E?>?P$0a$&1=gq_i}P7_$=-Xm(rX0O+?}+UR&%`L@VjTA5!F&vTQ5)rSTF zJNsm*6`fku??gWfx)-Xk8O%p2C8x+vAOVQqQs}kkMPem)sh$fzsu6tUdSLzs%Kqpk z+UEC^OQTCnJtOmy*O|8->gAhn;V!vxXQRW9zU|E7Fs2?C+H_)wlrmWUrrCi?6kwU)5xs0xXEOdc(?{)L(^AHzYptzQ` ziB@aUcmM37+ztQvo24S=CR`cZIkMCA|2{ag|HHfw0CsCv2p(d~At-{_M7kJRrE6<* z`)_bTnPAMcb&BS4QT(!s{e2m2oNK-?A1MmI9uiKREHhRSk=zTOk4NlsvIkq{^INOL zss9S?6qlE{y4`qk`{9U)6ThZsp>Dfa)bA&W5fq`O1>(l{O1{c#DI{>D8FtBa1@W2Z zRXa9%Ud5I|P%oj!MgQx)pAgen#lr z1E~9nIqWp8$mz*&58q|+UfQhjw+&tSgNIA%dh1jBGeOgN`wn|$7Z}jXq}~uja;(a* zGCvK$r{3rnKsr3P>uQB|jtut-IvCHtO~Qq29_h8Y11W!d*ZnVoaV_NKM1Fe=Vm#%p z7d>8qXh1DwmEo03M5P!(x}ZDTcF))(MaJ8 z)hr^$i^SM8rDNQ;E+U&RUd`0<1vm>|<`|iEwKf&oUA!Bb(dfHx>3_O&w<@^xtM9Kk z*4G$kyWdrg_nl8VJ2k_jx}HA;*y78WMqSD3Sy#V(cJIR>@ll`+#rc2u`4~mmj9F44 zmuNPPsZVs`%BF`tH>5zUk|ff*?Z+gIZxP!sZWN91RE2b91zkz)%D2koIF|l2Lm5)y3>rj|&HaeT$Fv$41#)0ceJ;NN zL+BpnbCon3i4&*d8#2pG+iI$eg%*?AOXq%o@;SupkN*H>l1z^ z-UiDQ;=o@)YH4(uD~~2JYX8}cBgj0LPd!z0mk+v4(r!F$SKkflU)NI)IWIg_YZe=t z-N6tkgL@y8C!JaSS?URUlW_a*y5CHhP6WVQ06Zg?l7WF)JtATOsWmc$$Fa2diykuB z=eD8{W9Agj`6|F$8y-3P=Jt5orwKmcbTS!F;!mPjO#1ky^UV2EgFXhLX^Ztbl`@oq zob14(OVIL5lW(wzP5)EgjL*3S5HGp)DL~yV#9MT!a7( z4x*pC{QFF#s?~hRA$7l_%fLeWxyc-FbW4gBxBoMR@@XZ-5{zZRqk9^EHiVc2KI>?N z&ZS%2uq#Eb%C(=Zn*q{*5CDsy#)T`EBso5ra5(m@nFw&AIGa%)uklM@2H*%|h-z{G z;D|-UFjNHS5*oT*-N4|fO#EcA{?ns@M~a8vbF{o!DO9&ZcQa4#&al4}w5TOXYAl7W z&#exBpJczV{P=9oHP5Nm=NEdCu6R7l@n67qH}jy=Pc4&nzsv#2-UvS6Sk}n2M&1I6 z$(K35SKX7UeOlqhwB`>X=G(4}CVPsdI;Jaw`kc_DQgrDf#S;LC5r1%4A3)&qAAYWh ziD6dr0-jPv?mYERow#c0n*0q?@%>j&27h06npuOyO%BboRcPQtJF^rVg%oFtSldD% zjT*2ZQXueFDWv5>i~w9TTg!H$fi*A)E^#>gfMrAONIKiEQnnd6(OsA#VxFulX|s#l z`APitxb@Dy#f!jD_~ut65gff`E~mwSc8C4UJt|5ONsh*;7}0(*7NXv|oN{Up(3A zrn|20x0G}tN49`y(GeWvwf9YQQBaI-%x+KnbSe?AiHxbgwa<;&RyKAJ3yijJcWn(iQ1eMmm zdhGs5@AkLnqAd^$WZ{q}rQsG96`|oo(DB3#0$!yQSfKz4ED1QM%3~6PYzP$rc^pq$ z8%66dCAq8K?*VytGPhEk=1Sm4(=|+PY6C3KOSADe0JM~-8WpVIZm(%&@;Q%QhjwA_ z&?3JTTe!yTQfH^}FHyrq=YIFv#F4wT?Mu~t=7nr!vSX(iv5f^&OD2_1H&Ny-@osH z@cRoR2W=@4V~6ASc09TCn_)T>EsRQ@*yF&MG&2Cj&&~Lqh$YD=+~9~Wp!FfL^3B=! z2JLRld-$tddw2fG+3Bg3j3H4=yyOFX^P)^`@3q?U^R#iJjrn+N7ZIrD^X8m6l1A(I z%l@0oWs@(ALEq(-0gxCxf>z)p7r~OWCJd6}+Y(|RewPJKxxZ!{AF3O%*Z@XdiFdB= zEBn?tX+aLMqY`{_kA(epLNrJ3#8EpJt2xb>RwG%wbfM)iQZXiSa4pWH{6>;7ID+D+$K9q&Hp zoVX95Bu?KbEmFsRex~NfNUiSK^KTUgg2BP~)DO#^MTpVyIF@HnVRMZzC#+aleu zZ{HD4vBjN=nJ=VzesO)9?6f6TeH1IA_V=al=KAo5xgWL{b=2FrMaZ!}aQ9+_jc(Y_ zrkUFlI02FerV&hl!#3B}VOwL!M}ZMe3zD&P<(9@+LT2fx2mmSgBc%BPg0Arpk&TD7 zOJzW;1Suu{sc(EQsH~&H0;OHog;E;jPiNlP_R8rc@Q2pg42CX@ej*#$$m~^kZaopw zdhxNf_MaHki%-uB!F$J6vkc+>P29hc+F0z3g^Cm?zTgLt?xoKYP8Njm$MN3sFGgGIV?r`5ZGIm}j_~;6|*49-W=+duzq?Ijio?P46Gl(_k$)g@N+QCpDXA1*^&dL(&p^IcN=5kfgyG}xqS-yEu% zskWg+!?Y+R#YEm}O`r4LE@nPx4_$gsxCN0ZHkbg`e|ZP4L+VFXUH`6q1McJcPZg?V zqfz2lVq=4OsIk}IvCF-1#aw+Xz2f(5pFzsl^>di6+;Oc@!H?~nuTr1;r8y|BvP8b@ z7)_*d*=;F(ryFli1S+?Qk4-Z|LCz@3?u-8*Q6#pqM`cOo5BX?=)>W1yC~y=$hFw3D}gZ1hc9o} zZ*W`?0HDnuP&>`+L2L<`tA$Y`gyF}=V(=8R@|(>32L}U7%JyWmsQaUT|H?ZDL!HXR z65V{)izypcnd_E!%n4~b??eT|SzZ_dx;(C5h`)^PZLc0IF{-zqz~;T?hyssi2M|Sw_x1$PvF;OvD_sOF}b+{gU7cIQXV`U;DQ2(ZwyZM^vD>KCY}F} zp9pT+hl?j>Xdlzv`Y;#b`}BhkwJ7XT6Y>5jZn-@A)xD8XZ_inAYx=p$z-6EJ*naT)`KG6GdUo&|?$hBt1p@?J_&S6|-%bs=}nz z+c!Anyn1o#aMS*sdN?%zpgL=0rC(?3J5{C;DwOi7|I8TFX!@?elb5y25$-8NNBt2*ncxNzD~~#c zsV=;Yn@)5YYxpRmU=|b(JlfohBMmz&yIyP~NQSb|P?59G{CSy{8+*TVJN)L%_%_}( zV-555ap>D2R&3m_$IT&fh7Nm>)&zMxJ7}L=fpfn73)Zu}-1=upgtlH|!t5R+5|==? zG8~!chjutv*F7~y4T$E zpOnLSrn`T<)K2lQ%P0T=2oCSnlz+Od6vto11~OVWkKqXC3}ev^w)UB4t#FKqCrjk7 zhj!64TlzE)!Wb$=0p9x4r;AAsns0o^lPAYV7c0oGa}D&|DKvT$E78UwY0cSYf~zF! zk&rM-ZU(fG!sWY$!~|ohofUIGZ6=ZWgUXd1I!4@+d%UK@O7(RMD6B|!Tk2s!omuGG zVM)0=t>;xsoPn$^@@W)6Rhl!mQ|sNtSkJ0Je#+F3Q@Y1!0lr5qwD?<)ILk;TQURzSQCr?6g($wv8L?U- z^ex8^X2}MJ#R&nZNOw|HyhdyTi%Ld(q+3MKzP}DBRXnGXE%gB=iR1~fudRBbI^Ep? z7(ZsTEPuZ?`vri0pofTBheR|pnSx?Fpim)`+(0$+Zsbu6ChK0PK$Pld;w4eDA(V1H zlaBoi)6kgL;|}Sb(W2^N^0WItqOw!_9v9j1J(AC?dP*H znH}ilD!&1DAs^ml^1W)r7Jra>!5pq^+|7eCV(sU(hj}A>{bCTc7yfvY-a6_t|u+g}VDuL#?hVuwS zyGS$2#CLA_Mnp01+85z$v4e7$klGPGA%yHV0@0(<5s$2y%t4j_n#N89*X!(0qVk@< z?1rJ6LN&&t;h)@eo}>GOK9pPC%9uM7{JXEE#+uZpzO-<)-VfUOuJO1xpf%vVbTIp% zvvPthJw+1M@U?{ehh(@^1Bj=P00*PSHAfiz(lZxHa{jl3=qRU z_?DvmLXE|CZfej7p2WRk7$CP3ZN5x{dvN!5^xv}q+BhT<3_;&^Udp916_}R<542X> zfe9m?)TD`LRGvlejzAn&zjr;|s#h6AIRiVe14#r?SZa z!X*eZa}_ZKjUmy)V^%SBt9r4uisN$V;j@g;nwdilx2GQUouC6xi+E=tro0p#=joO# z=Z*T0diN&|&ysf<<0YnF1RjNYp|9uyjpN&tROx6-7rXo(cs!#6hM=l3QT!fs#E$r7 z@_+ejFOtaJX3>(5O-xS({l@9YjNwbXHopH-3gU5hizDe)XZeMK$+}QOa+`lHZND`+ zA@d($ zvYeAW93qpTi&tX#MxreIm9hkwJI@aG+FivOPh-0~iu`9M3A0wRW@j9PyMAhqJM9q{ zDD%LnbGc6@DLVT5453GJ*urpHv&cLPyUH`Yh9czy>DRxwv>`BxPRn%z-*g*E zYNRv%76ixI^OuY_){gv!y@KS?NgjgdO6%9u+H@8s9#CuH$wLl1e8mp|>E?iS1kluz zY?>fwBvYh%e(;?MWVDwbd92=Ot*L~gAXbD~#2RPC-N3FfUm1})|Gwa~NvC01Lxzf! zjXhXqiOg^#>UquGx(^;?;YM$7#TcUSpJ8gGcI#~>46H2{Ga4P4EcZ&swiZm7h_(=s zV*&qdu8K6hN1CkDjs;634z^Bax5_hwm>528i5-zk2Zga4hn-%enh#N=ymC7->=2cd z&v6rUV1k2vvPFsoDXB$)DyvGm2o@v=*xwQQsAEA278`hR(IHTLau8*n1N!>0n|XypKcn+ zfB4ysA_{)E;GikhY`Xipgq?(qjxkyAWfk|Cg5rC^u=tc9rFZg>qf}4Kwj-PTZ&Z6&l0%!gz$L-*4JY$FyI%(r<; z;H6`ClO66c=HspGQ5~<$$fBUBh~tLw{X%rU0@n&s5a!rByt>MV10w(c_`!i+b`X?r z1``|SF}M&> zpTJ5_odfL*7T@J?!_8!|+oR>0+~3h(hw!d{!h#9>Z#9b@fygs<|R5 z;8N{ zJCRPy>SL8Hr+i)vIHJL!FqSCxXPiM{W9hMs?Jx-+3A64<(kRR~slAtrGH2%_amk~? zsN6pm4g5-{?ax)gWgNV6Nwu!@A_3W2*}TGT>Z`6Z=HH7506=(lf21#fF!>VweHh;G zAAa!n4@qnccg@j0Cd2L}cBhWCnvn)NiZnoEs=I43BDhQBR6&_~StIDP_DS(o~WlWKg~&eN!3|Et^Zzmvx+q$t2pa!Rc~ zevJ~>K2+uEfHM_+<0D}%SB}eeX~)}t!#O{ib7@;xMgvLNryVc-h~+|bgIfuRNKiw< z+p{5s{7OOUqHWDZFM~$nsE%6)A2x~oBYy%k=07G^KVL5J(2{a)HejfkyY~UTg~+N9 zl=x1{?u4FEa;o^COPQym$bhwA<|%rX=*42;{KcIS(&E;p+4mhiHGuJDoO&&aYAGmr5KPupfg6 z$t18|5=<^a3`QFTmOMZ$pQ%UZuC?60yggN~2;n&vF)%9#;w+eZ$9fbLxI~(t(@RFJ zqe_FeGtOLMOi+}mutJA9L7y)=A*!CtR;oVJnZ1OmWpJYP$H!cc8BR3Tw>;u{yANEn z+ZmU63?&WojNb?!Grp!<2#{I8KH53a7X?`4JXQ5i`19h5G%Gt1hy%pr+~P&(jLIz5 zN3aW)DAuw3S{3(7^PeEK*jzP9%8qgcX}0ow*wxywc&{NlF0XGP&HwQOu2}a51sC29 zneRpbRk#s5dO`fmDNuio{vmJE2q6uNfn;mB!7P%bjN%RlUu_H2aXO-TkdSn!;3$%q zwfU(8g&;LKHvwgYV`9`U1Wd(x@b6Vwgm-0HtokZK9DSh}twKHK_#--^ymh%eFmU?K zbdOEEZp<+00~6tVb+;?R*!Lp?GEpb#5`je7jyl5j_S#40ewnQ*aq$Tsgsdiv-9+6WRdY_>7^KE;H-#cvX5$G~lCVee1_e5`tKCe@n!Ih^=W|wl_jaIxOyjS= z4Jfkv|A(I)Vj^=}!~gP^xk_Qb(}6Snzc6)*=C#2Xctco5(iTZ7MwL91h)puhz0Yx3 zKhLcf)7DP?HBl$|%!G9W(qPG8r2nyQd3_RA{5*tvWi{VJTJS*lMmC?5F`-zl>!m;{ zy8N?pPPNrIT%yjJ2-22%b^9n|_EnF(JKuY`$KFZq03Z^NB*r8(nHVjlj7$Sg1Z3KP zG~?*Uhy`efuh46I>z7;jOIH#gRh=}|*4DZxZP?E>Dgc!Ve0I9xex$e3HDPTQB_?%hpDv=qjfYh&GrA2j3m;nV%H_5dz?x z%JTW*L*`g1F7gLiaW!b5XX6`X$W5h(uRtyC_g);7+tttgMe{eTnBwzrw1>p;dM;;O zzLUX~9@8gV5$FuHHA0HbL}Ghb1cyTE z3@h0RslFC#E7u@m8KF#uQ29Pw@ogr$Lqc5UyGc~X6zl|31@iGg zM8fjO+5Fg}Ppk7p0Kf~ljH@Pd1&EMG?~vqI1dDS#{rRUwO_VDGScoaQm^T5fp|tXj z;6)7%%d3g&XF(yj4EHv6gO&u2NL=bRrVBO*x5PS#GR6)q9Fo3H7QTwjRDSKwPb7{i9Yw@?c+wIxgTA!IGSI&HP$fmxmeW$g z$Ia@>f%;nG!7j4PyZ%Rh6;1nuEJdsDG=Smm#|3_C0^Sef+ni99(y^w0Ff0|wl?cG0 z&voDAyk0me&57%b&SbT%d?+!7n1jS>*EUaFI2%~!wN}@Aq0dGFET`2Vdg6OrSYWfW zQZKrU%IGPpDp4D&xi0BE4q6wQ<)E_3V4UE8cyfK)YuAn8GXu0+eV{=*4wXvgsy`&V zE8-R-F(5|BON)IqsKi6qg=;C_9h*DnwJPuj;}z+)xJ3PBvxdDo<}u}s619Q;mGz-L z@dgQUoxb4Zp-VUa$phY|<>v`S+1F~!kN10c>t*jrDa4z!6OtAW4h;<$b-@(cG%uUd zNe}#Ds0U{S&o3wR2g|mi{1gPCRN0}q^CjCOzV|$1Owg^Q0)k_;cv2meXny+sH-!3V z2q9#?-AQH*OM%yyl_g zjN~OP2C76Y=gS0loz*zs0V(MpJ(wCi_#1=diJ5(=O-*c4_4EBq&bpY!jqrX4z`Nl` zpsg zj>tM9Eyu--5@$mcg910ozRkN_`7MjazkTu?=YP}v1?Ev4wZf9I{3Uus30r)Wg-RT3 z6M&Re2IG_T@nJqtl|co&gqrQU)UPrF2Enpo>Di$4Iv(@*p~YRWLbgHQUb$F?u}gMb z_vL@_=Pihs#Mac~p0BR}`({W9yX4l}O7JPX!hRALq;b({Fw0=IT{pOz*3T zzqN#I7ipLKm~vjxBjV(EhJ1;cS?K*H_?I7aFb#m!fQ0yD1ajiZp^&|K6)bE2iEa~? z$xxHqPxY;vlt~-AlO&jasB>e6eZS`5zzP%rqXiKJa3f}!9bTtYv9~&(Zm&F!=~;Np zACr=HUDU`fk?l#>E878pq(p>oQGIG@RdX!F`L#10nyvaX^U0#K+EoE#3_T%g%WI8@ z&Zmy_`}8~hM4oif^P^RB7FvR7ZzrkCEv&*VB=#??CE08`;+bO8qXnoEiHWtT1dAEo zw%g9#A+@i#6Ne6pp-IpuqFnmJj6YF3=`s~G^XRjeJ<-i$HEwwDbCs%Q1;}dxDW(U# zCYmr>96_=mKI?*N9u$8LvsD$OKr~=9vlSiM-E)GgT{Vx0N5-TAZG+Qpa9BE zsbOnb0I|I1JDQZL3L-h6f$mIc$LzbBtG(C4Of96%Qxw8YS^&$U=T#HW=B($BxR9=1 z2tCR&q>ei;zguRMMnAVjIv@-R8ef@utT(~c_+rW*Mleg?x}$N2dn{Mvq=OK~A~I3%aFs`Pc4 zs2Fu?kwcfRjZ9Chy#o)l#*md>L07lW^?FCVi|$9)vWhg-Jbm%uRHeZX!Ac~9Gc?Ca z!Yc5~{+Z`~c4g?BGrL>96`N%9{bGK)s@{10kj$)Cml@jnt|!m4U&P7&eOAHT zEBE4w;`7fAj~w~dBuOa|R!p42qQR3_mX*XakVyQ~e$xUHaW2z@B}KrgRwHn!GQI$q%N=q!ON%r~ zGmAl@EET6j`?bEMPKQRV5%bh%O#x@walSZZjD{V_Jq>fXJnm&lwB`Zz_%bJXz9S|v zrc@2v8`rB9Ga@dS>!Bi2H6labM53#nNt8~dQxs79&{s4kzx%6lzhmfYBL2JFs@DN8 zgv)=j_aplzRX@}F@xwOWb(`iYvQ@Y4GfG6+jJ#L1R3+ViGxi}dU6|I`Hzw-Av|qKF zD`KYS=l}h8@cRoo^CcBQNu>D^|33wu6>}vw{Zz&5iR^s$z+6f*5PvBCodLB2Qym#{ z=r+blB&WfXYarH5O?@|#r}QL3=*kwU@a(4a)dy-1K$IoEmt7rrFD~uvh}vPYKbjeWlI~0vD6YoNM4BiPi5pvuZ=Ei#U<`82t<3xgv0s*& zFd6I7ZNDj00%DBVOugk!qf*(%_LId-^>anfyt#>!*7?dSUNU-tmLW)q9KNzx{ohZf z(SZ8T5%{45`9TPVZWU9e-1bI2ln|KQ6N+&KjF4I2$c5=2;q&5h-od%5OX;IBYNPzi zLpwsY#A<i+e<-k2dyE=DYB~KvAz8{^NJH016G8sap zY#Zq#oNAg#nbm5R1nsOf1AZ%-(v}eRFVvtFkM_v}N7F4%)5G>I>vL81X149MkV8MH zjauI4Pn%VD9juN#e3)5WG8XQ8f32ZrGU`x7Qj!CFd!-LxoWn+dAaIK5)t5xC(#pM6 z)b-s`{)<2BQABQ*iz?b`NYgz$e=Hh*Kg!y4s(D^hC(Zp|V*xyIwMT`&5!A61@X=)V z&fG$-NS!tHfOOcQ1J)m@-q8y)@;;I6Ew{}FBfWh&j(!g%(0H%++^#% z?ic000~XXqJ#awFUIMG&kbmDG_`Fe^X?QgGqrL^dE3>%q35`szT!Y7t;(A3eKMS1* zKT&Un57!I(6L&-VcXdKlXg1LoPvYuJcHZD=Kq7#I-FsP#pA$guiWQE&X{cw!WjNAl zBn%_7N#O5%WOzI7JuVjE6)U7?j@_urcx%^favpQn@c~_=Q@Sd22!)E68~jE59XZ6o znbl#?DK%uGtkDuD_=4R+%~9y_$IK6|?^SBc$YpM5VmgW$a$s&xE4PW;SF{B5#<=x= z|7o7_RL-clbTWR~xBfTf5natt<-&7Ym&COPcYsLFu{OCsS&e|V5d1wk&|R-iA(PhL z%%)>tz6+(zfB3=gzus9dSmOCV?x@0aCw%`^=a2a>f7xdKKmO!%&@Wg9S0fm93^X3@ z`wH3fgRW()kP-*%G@99Mrk#EZ$D&E9Hno927(UaI)aC#nm)=ZxpA?Fzxjy!#)W^3Q zKye5V%79R|H~kPBpG{z*h^7=tl%O@uXxr_%!0P$))Jn0Acs!DiTo7v2fpZbs7s_rcOT%ML_oEzc- zz9yJB_sE=OOwsVpu-`b7dapWpP_X#I?MKr)`bIX>=L`$NgG$65T4dV&%5vnqp-(fZ z(YrApo=HsKZ+ZNQWUVmlux@5FryWSd0s!)!FW|7Hwj2`@Rk39@F7FQ0P>9ML2*beQ zRQtL!OlXss@*T7GyAwUx>+J+@=0Fb>>ZQ=Nog=(4QXOLoP^T8*m*zRAy6wT@U9i5O zZtJU=kEWPI{x;3@;(~fL6*~nC9-WhDx#Z{Hf2rLHZarMc32j^BlTMZLXJ|^N>MP|B zd(xY(mk`KIF)_7R`*S$cp=E78tEi_k1S=;t99Vs>5-` z=U!Dl6_|oVy>Y@!AWT4?vKAljrQuuELeZVLTD+;LS1QLhD>ba!?%+-QC5Aex= zR$Gu`kAYOg&0d`-hKjKoy#;_6egEbs#7pDFsQ~a zEvAeb8X9p^4MH!rPBUYIS@xXDi}4CKk2p_$xyJ-^62tG7z0o3@D-wybUueWkJ%fV3 zn5?+IYkJQ#^XdKPSrlo;;HsZ9(wJQ>VH7|LD`EfwzRs|{D9dgPD-nn$L%yF1Si)1a zFE9SX&mo9A%x)gfA49q!UWdDJRnq9F8+ukQ0^O>E-Y z{-3Vt>8aYUn{7C8LP?bljSZUy9%dhKG#X?`WVw+QD(~r{oJ3xKrP$`bzp;4pCLkq* zOXTgCaz0}J*f@boUxkq`00blXuX!+mlo+h}^z%3@wP_*&aRq z+S(m@@6`-h2USmtzGsA>E9W#e2c!ijnadIB#z;+y2y6V%F=F~yEHsf?9fGJ{RSw9n zm2>#)al^dz#DPsm@Y%Dx4uCuT+ySmh*q+!Kt}|A;bKyO;c$kKWR) z<|i)^zyJs!7v$reMpnBcMc$|=k0@oZ*qM9N=w#(iS&7}0>wzFdBTo;#sT1Pgw#XDR zXAq9QCFoukWuh93PfUmz?t-LKmR_-v9C>$B=oi`VfWXE191Ho=0emPhXPvo_SL|>} zY!*nI+JB_6^ygx(FW`fCy0g%_4H$2YxFP!qLpCnh#^>a)IWZpI`m1X-YrBH=Ok3RI zn-h`p7-!WXQw8*X1OYy!-U-by7}$#$@FFbEMa$}2=yT{DMr>Kv6JOmkBjP_(6(_5q z_<#NaaR*w@t7x(z?Htxpo#L`#EgptmBJ;o;`lA*+|Cx%4hCoP;&=VFp&;>~?dl4%| zR?_EO%LK0`X97PazIQ(dnlE*fMYi*JpNG<3^}R!iPGLjfm7jz|$@eM}qyc~vEYB-x zD5`D);D|sa%u8*$!;PwV{gmhE^zK9v*^r4Efn(B(4t5k0j7ag;kX1OLcRp=`rF<<8 zR<+D#jK(P^o>)_=(l=BkVoqZtScwWFE-lis6+gGUY8*W$PnvIgRV6D^9X~(9_Z6jk zkd_|9KV@jk-s4-=E;PYOOZt(mk69nyf! zSB62xo?pK@0t{3D_+TSD1xxdQmI&A_4aX2=w~e&dT@0m*4LYbUR}Dq26os_T$$ydc zpQytnHR4q}575jqJ{ikJZ`s{GSCQ&VM$ooAB8VqWBG@(r=wD(`W-_+Mugn(8|4nq0 zf8nPpq^WO>y~|!V^&MdT67PXPA_`O^E|gIrFsbuVfe7!yQE#~Q?aLT~3zlrFY;AQf zpC0Fq*U}UFX}S$3%sP0Thr6COK4k&t%`N~15aPlE+mzXGg;E|AUT~WAk=kI zxy2nn+UJ9F5K@V)pe!C#XYGw8tzvt+MrhnWYL1m#+mp;brsIf7?f3QSvIovD_fZLA z3kCWfionEPL5>p3Pfe#FB|J@%dPZ|mLad^)m%&4lUnU7%JGRx@yQJkyoX8b^Ppugt z`+xjIaJ$+X@7|M8_U8JX>J(i`)A7VI74cXT$KWoRore1x&e_TXB`42Iume}-OA%#> z@GCHA3s&eI-3z3wo~%-Mk)cqw8uue?F-wzWyenr)-8w04T;)$w=Eu6&1^#~NG5{~3 z68=#G1x4<_(CwqtICAJvU4)U0M}8>>#(1I-`-HqR@p^~b@+4(Ap_Xj?YDZ;F{JSwXd${w4R(UeO~(}ITx(U?PD4F z#bH*Mo5?8x#)StD!TtdmGc_@Kv0eKv6#)qfpn?MdDrlVKFsNs~k;8fxr5?I0jz$zd z$tdpKmEg;kpPFJVKglR%-kirgRAl@4G6{=f9>XAAj+Aw(KKOsLZjIkLk~>_Q>hW*$ z`7jc()F~`>aJuFlwBPvK_U_B2EdttBGGayEi6l7yG^N=LPqj>CjC8$@{uM#T_(8}^ z&QJ+$ocPlImRCWTJ$PS>pHH?pR^@HZE~{9C&r(+%efl=lihd1PdC- z1N?veL%=O=z4%Q|>^zA3x2IQJE)Cxkvs8u+Rx}{9mG|E-h@AH7 zVloR_2-NHb12g%B^zItyV^jcQQ(2LRf{I##1UgZiM!d1wMIF-|dM~Cn=?Wz|Xnsy= zCg!>f7S}YVrtX(iUpQI%T;*_k``Uv}WRL8zkmf2{TpMoO&`^Dbjq)UWSE@!f7S}{R zey7xE-T3bvXY24KpnVD+=@!gi-xx&=-idrKFscoct8U0SR{P*fw1V0LO)L|!J=@iY zfUp%X)|PY9@!aL-U}iJgxeIx-Bh9?zcwz|Gs_apW5xG$&&k(r_Nfs$mp@le%%wOBQ}eeXY&tBS3;ds zvF2NJw@D?rD6fA4Om=uCEr8s1BO-zjq+6AT{7z6k_;AA3fHIi}v=$c4z%uNN#me|55iV)` zU;lmqAj-2b5=dk-@f)u%apTIRjtwzQ%@2-zPR0K(RaAc^Jkq!kVnK4}<}dHMjUkBd z@3RNaXY2mqC%ubG88nIHFlD`F8A0SX4_jLv1frS05Z4@zCJ-=O_fB^EbP)&;2LMIe zo}Nz}*#$OiKizAo}yv+i&=@Q!s2(XQ6X9$J~u;o`8UdHofX~8oAmw*VGqvL)JFS zBK!yc@%L6fBj3*YM~ISVLHFO#Z#{lE0GBNefFD1Ek;nRB@-g0zz!7lmacMb0yH0y9 z1aWmca1d0^%}vZ+a14S#YsTD}>@Pk5!{ScrJvDr#)i@9Wh?1&20OWs^zd#$5y;F|+Sq|vG z_;Usz8aA67PLV=}Y2xeW=t@k8llhm*K+O_deOPvq8BW$!l$$#2+-c8OEI9LHYBtoF zFZw|~fH#+Dcv8y9h7fsC5&2!fQbxB#+Ni0?Ku_VMe0wl+&0wK_k?~Iz6wzmPdJx)U zVEHt1*;6iOtvBYTnvZ~3h7bZGLDYbHCHCO*`A8#d=jej+g3oYHqp(8h7qXW1cji>mJ%>0_~xq5DD_=RQ}o4ZSGoOY?Q)= zO^_qD*eNgjl`Qs$Wyhh1pqHnRoIBR=KN>iW;N;Ro@$Y#B=tl$&jh$ zV`K8<5QDE}>x<+FU`!-Q1b`5@+^DjA2ONZ@kod+z65T?oyq`;?x<_1RcwDwSi_Rna z$PnW-=S}c&_v`)cH13=gtJkMYq&!&BcgMvyq3p&Jodwgn-K2!%$>|m*^G6TnKWxIb3g?L2AX~J`N>4}|F%crcye0?_3a}py`w}k zkh5lHkho%knF=GxVbyN8|$DeV6v=`7ru;J-FL#;DOS zx<-$#fs}NYjBZ9Z(gG3#28`|$kZz<~ly0O^QIu|_ZROqbd;f#&x;{HQ=X}q7-x_@_ zd;ARWTG1Wpu>3f|Ha&kQ4)#^t^}N`Mk-QpSsO_({9nSpXIMuH95EEBxd>*V!zS@Em`@){<}=wD0fvXM>DZm5 zuQMIB`2mDDGbRfE@w12Gnz1tdttUz4bP)dBB`%kCCq_4&>pjjgr^j6mIpwq#pA$0+ z$N>a!zOFClLGMHG_jP~SMtgnB!zxxu@ZcqAJqJnFI-jsZ+-RmxCIBF6lr4ulO<5$)84`9Dp&3kY*Y6-XvLZSvRuuY}m*@ z88JSO>?}ib3omWM56($hWwwOP-wjQA^spJu4GiD5lRbtv?PPFT>CNf}ms5>K9zZp- z+2PQw;yn;k=0h$>IK8?l5rF0Ymt>%4{P;^;>8PmbiiN=d_WfkCGnm| zbB{P;D^1{VTz~yr>XO6~7rmHi>1frv=G)}!lywi8_AC&z;MDNToM-2+gE~0v(?nI=8tfBave?5@h;#ctEs0 zt^%LMqI@V!+!rTim}68+mjz~ay(Kv%+B-VZ%1IeGqLf)L(PoU^w+u%NX$Zc$IE`F+ zm{D!Ojt*}L%}FELbQCAaq?$2JAL(!!ahpLZlTv5FRkgwU60M})w*9-7=}iXNj10@D zQfCFTv#LE*#7#Tr+cxU-x|wq_|HM5z%~fG&dNa4xiGP}8!~o4~uDhwOvQX}o_^d^m z4CO+jxc>gFZ^QYYet8QBy0A3vOkx$ctqy;U9POax4$~#Aev0#q?mzut=7$8Q4rodi zDG7U_yXBE_`Ff(@?A<#oK{U$s`GBa z7`wKo^jH+ie>KML_bp$2p=vi2E1%rN*g{pWcdWqQ$Sw@RwMAlM}3XIu>cKW5mt*b3U`%NDkv_oatuD93O>9| zw7aWP6o#6o5VMKX)r%7p#a9lk0t18%b3Mx#$$E%#Ub@3KzA91${N|H=VyBdF=Krk* z(-G#?OE%R^m&h?rxW|?LxV((DSt8hPNNjGvFVwZ$>#cOy?l(4O8gTdm1MP~uyuF$L zQ#spnGikP=91*j@?*(dmepX>^S^)m#CJiqzbCL$(K{OC`{K1=^I^_g z;|39hrFy~TT4YOu%767|2Om$sa#goj{L&Wh*O!NJ7<%?VjW;f7F#+lPk%_g0;!3Ij zBoc}XrE)tW&L?!N*7E=iNZE((BTS8K1x!h0gEA$}SJ=M*<#)ff8Neq~*%|Xc z%x$WjKnEswsKkWf>W{pk;9geG?=y+(HQKK^YQ;VT)-|l&X5(UgE+{ofG!oSzEE3un zD8{~W7!ITsf6tN!@ADg;Mu|p*Dv5%t_zxM2w{vlfI;CcJ729!^hS^WUzIuMm9#(FL zp~_v>78tB=<#`SGe}(M4_Z44wQ&x-tlYHWD!a38^gpru|i#CRTR5voBql~B=H`p14EfKS)?ai&ygqKw#}c`QZGQb~cJ+1suTZC@ zE71_&=D^$DsN%#U6q0J#`QzQQ!sCGX1a~C>fD1tSX2y`p#@+ZUC=xtrAalet)!4@8ymPe|* z>2ayHji@LCfx!~E@E$ha{z{R$I9;YlU zyjTtS9b8+AOUx2s%B>DLG`~;B8JOJg(It9aKKtRA{4IbT1OTGi(EE{?DHYvm7v+i1 zIwMeLQT*7L7|qzcE)@)zSBa7k2#X^z`vc#wmZgUdQexT)>FCd2Fi+NmG3)4&7VFvRm8Z=%`q7%FbmPa5Fm*Z{0isG{qenHIn**cR<6SQ7 zD7&N05IsxQ%KLtviXQK=spdOlXA_5MYY>g4>#hs>YP&fC#@&YOTn?mEX|;?|8!Vr7 zY{486t`aUsdzKnB9EF!kYUI3r{a5k+-gqRjzE@K@%M3JjqtbDX&D~bSX7$!!n{@y{ z&y|27h6B7+O-TeJTk3aMXIW;IM0Hw?Qh*m9=Pu}20zaW?$K&b<=;n?lZocOWDoXRW z@bta^=|n4l{?)qk)qd^CEj37ftVi8&PO|mkp5?^(Elbt{)DjidLc&W?^rSb0ri}#k4q;WYc&}y06K~zj` zFK$G#PlkfT{w#pM`u|+{A3wVQJRKX8Jy$kS*OTNSYm_f+*sLspBV8&jPKvSf6ts1qu) zdZnz5Tqic)n~WkHKf$l(Ox{`j+lh9f$XhADr;$>QJSg|JINvcPyHa?Q$o+6Z7BhL!^d$Iv(CN8k z`;GYg5$%uso}WJTBI_TzzeE?AXmdUx!xUH;z5}Wtk{LR**%gi6NUo3lQOmv%?JCh; z&X-*!?P%ae5YSg&@lk5El|&V2cCN)hDDGu_r8_>d~nwppMN_OAD8R)ECwcTC+>2Wqct82jOPL*O0VeZvT6*h zY%(_3jQ_adUXm9!oECH57f$BOv8~P;5H0izV|9iENt}`{BKCLnWn8J;2CSL0YA=4= zY8I!T{_1}2J(jPizof$a9YOvTogQ4g*+w7)_*dcA`eH|xRy`A=zgm$;wXVnbGSL-! z$_};8|6auNYR(y9ZLBP%x_7P`looZGuTzSFPR=e3P zrEw_=+dm&?pOonEdiGRATihe~q^X?4Ew1M(&%*2;HpbAEi3}Ru8>|D&wKzmU+5kNE z>U0kNGYe;6o+G}0cp9z)8TdyYHnbB;{I_UnCtLlhj)Yno({PKEi_hh-pA&1e!B`*N zP0wdwscr*XF;-S_vlHH(4b@g`SG<2x_d(Mg2ZJ4Dls{(bs#KNX%EeZhI$-1Ifi%>j z>@EV#ZG3K51+PRs4P_0~Ld7BZ?hmo4fu>Htnc>90-PYfP~?S{1;T->tibdi9FjJEWtN$L*wj1DP(*Su(b z!>XOpz}Jl#VzquIH)x3PjmE;3QhNk()$ewjr%!uY6dzCaJgm43gL+7zl_>sdHh54R z{pG7S5*|Ho<;LA@*Povfu0DF}<(#^TfTFkI03|w4M91^O9nxQE26#2x1jeI+QW=^Uf4&gxTWzdd+=) zw~HGyEuVR;*UFRrP`H?C_awtSA}~-=`{#GYhtDv>--DzSu}>xUs+PwD*a;6XB1B)s zT27cwTt)sM>6pwVPC{-Q2ijrmvd{UR7cX^rTZx1aI*Yj^`O@ZeNeC*0`>nrNLX#L#^34efFvZ) z+e!_jBrl|YX0n(=mfTPhlx3Dx{2xDGvHg$78mhWzw) zUbOFq*dWmhW^x$1>^sQ8FWyJO*kWLjH^DJyf0dX834t1vaG zX3TAC#0y8}cPp1S<}*GWVZ)3qePq6ult$~|s|8t5Pd!OxHPV-qdFVrmVGyi`DTMe% zsjHZyklO`YFfCKywD&Hj$h^`qkfF`s~n}l`NOI=>JsB+-+WCo-yC)LKZ zuey+s-HsrzaYq!&+>9`PIYrf{VTOb+Wg+15sgZ3$!!h5dL<|;F>Bl?-uY!*1p*<8YC#v!>BKBEgxz8K$%lA4sNHry`&Njulf*S?cP zH2_O$3gS_B;hg%&_a-NeYm`MM$G92 zZokp={lf5!?Zm`{9)M<3T64qCAk?}lMyjvueFE!(KYmQ<6rXEORF_`!%LB(IyHE_? z-{1cImj?j=+e-fwrQ-m##?Uk`2f+16^+sP3iVoLp9~X*pto%K5^?-bXmNlu_Bf_## zQ9N^-o@F@Z!!!M;%0*@giVD=n6QQ>_&o(oaipG93$Cj{ep8sUmt~kA?8@LU`l)?5P$LG!fdUZm zg;w-pR)b(XR%1XzPDlHxl%$Zed{YK7E7F|}BYDFeYk@OzZtab>)1L*1)@=dnqMS2w zw%2h|Yi7i=6YPL=KgMWNzi z<$xz@OR1*ioC3K^IKKO63xD>y3OIAE(pnMqS@55VaJHZqRH=rEu{%XYpf(;BS!X3! zD!P5`$GgJnS$qxzkv~!VRO)EFiMopaFEo!26FmzqV*pNx=PgJdN}NsSN8*otV)ZiU z@WlYBcF8dth95-#9zdMS?OnSTrXn(?XTBH*8`lOt=er4W*Cw^iHI%-h*dCUMROCRB z7Evj40RS6z=$t~0zM>AIrO@IF!JPm2xkQT6kBvG_{KC#(;WP|x2&{iEj(v`2 za02P^xJFYW136g_G3!R|n4`rN&Oi2gu%=C=y}l~%M$fJGM!BHL{-gH``fs)#V$vJ2 znce55n9Oi{u6y&dz1L@d!2mt2ZF!{&^ptuUfW}Guwv9l(K1nog$;EjAkSq2)PCbi4 z4HQf8M-D!~v3@!M22p@3HacEi(f&9NAG8WH{<9*dna#$~K--A!e_;Q*!{0-x!qF&m zCB`I9rJNd1CvzSdYNQ)tJFkE1WBMdux z;*XGRdt|EMP#4>*i?C5;z~$T$r{_*D2stXed5DlgLvYu8b?UM_{=m%Gcn|sfw-43c z@bL60G>5dw=mIBAC2NxNs0;#caaqFf{uRe8%gvRKYA$TP*D-YP)%x ze(7NKQ3@a<9UY#o@TJVA9ZsweMSDcKsaDS`d&N%uk>c-%+mOcC_1?w2g+Wd` zfa>%P%a7~+6J8UU4w$r==kSkWiNO!x#Fsp!_-~aulCtSoi2z-a)Ry`w%6?XvKIyV5 ziQI}4$B)DHoBjqvD2UKStW5rGYz1o85BuWKV9-1&lo2S6|9q09t-nf?0Y?^@k3*;8 zPENSUzu0jrIX!|Dzd`>KEZ(wVPh3u57hz){9;Wx;RVSWw$)&y$=9Uc_&eRue4?pja zeHmcTk(KqO#-(iPkDe)C7FKC{zJDvS5Z$j6N(GV&Pbcya4uzm)hZJjCVxxsG|fa4E-vT2eyt6z>Bi zF`J7!!7d5`qYFv$&ZKFo@&M1m$mgN@;6hbn^i9^hc;^bj~N-eB|;6|of$1F%Jnnb;%w`SIXDbgG?@@!iC6+) za`Qm*lhrj=+X(2d%?B#al0X|=CW+(^7@P?mq6F_)_L5$5K}0fLZFce=)Ou~m=Qohd z;>~7h)KUZkH4I85-Z^>=9Nk%J|gld`?551P^ zh>=`|le+}6!tUq|Je&>HmnDrn9(I7BPi|ku*t=b$_36`H>tBU?IIps-s3jPKO?eV< z>m2)6cx4pj%<2WpKO*p0WdlBc?0d3D(t1pXR0?0C!&=b4uB-tlq01?7K=qiqy{Y4x zbyA#e8fj+4SVFbe8C@62%hLH{G32Tg@kROo=5`jVUJ zAv#PoW+}g6(MeOn{2nX*zFz~XVIOD|K#ZmC$a+K-FfJA_Cb%|_Yu1Jhaiiy3{ekL0 zBHg8zR<-O-$Vny+;J)4;{_F&Cbax@8#C}gk|KsNX1sbO6A8I&_+=L7UW587r0($+5ps@>*c?0zxA33Wg>CPZ=LsV^Sct^b@7IoDm>=&toE5Y9+w@RE7xrJcHHHm4$YS@8$QG4Q>5i(#wr(E z|6(MNNjN1C7zxs0`MoO$5VXV9&L~-JEKr!Qtq^xYdV;4sNeAWA724!0j8&wD_R><=LxUJHBL== zO|wc3B0dNc=hsp1ztyjP=nxORa=KUirlJcIY<~J!AQW-rV(K%%j=L3S|H(#p$=mUB zwY)ISENBHuq09|VAm6Ow! zE{eC&_y008O?2FK++orIu~qA$0Du@nQItOpjZX6jGy%#Can|gM&#$z56METR-o{DG zPB^oHH(D6R`aXi<*jNg}9yUt}`}4QcDs8z6%0{loqhW6~a5z@s>U8Ga^1OJy>4%BH6nhkpZU1e z|2BLLIeo+Zo%Lin1Rg(Rrb^7qz}!j57t)le_;~le+x*+r;Oy_SGn>yj_)gj#uaS=b zU2gyg7`=rfH36Cgq?Ap>F`tlfMu`VRc)-YK5=^P$unb1(e<~&}V$_^D8nYzIOrpkw z#wy3HxhccY6oM0}pERgYRnU%xc~3G&o~Yqoe!gpf@BO{idsVy%dM@?RUrGQJPR>i= zHF9M!99!dY%w{PDt?Z0)L*uZ;j0JX{+v+?Ixl;~xtd|!c=W)n}O2oV^*gKVURi)C3 zn5jXiIAGM@@gUVKaY;qL<%{Z6e4(PKofA}Qqz%Bg)V*s;+$;iK)KSys1acW2F+Poq z<%oz5>PYfnrrh-E+8C|j9R2O{d!T>x^X|k-vTuaWQF7=e6)j)O>_sKG5-T;LL}_2O0~B ziQ$;!c=Dmsp?Wn-ObC=sqK!QMivO($5_%P!XDXnU+6YnG*DOhY<>Mrs>1B=%3p>a= zHkKpe9-pfXH+ntz@89cx-8cX!fL(z02&W^TFf}s*$|XqAPvY(aj@>n6NK6^4X)|*0 zGo^HXd}6})!`pl7a}#`xgWo~WtbgN~Y0}6QKl4sq;Kv^D2jiC_B`Tb}`I9`U4=j61bGA|VXfTsX5MYkyW^tG^JJF_?y554%b7VLF)v4e zq~DW!^~fwd@tbN#3v#lWeIiIc7>fri4gW$-pEJJlXUH-MvkF&ei%4`@#<72oc|-A* zj38N49xJW<>C-_!;ln~fENvu}3)^a>elr55CRkh%V1Jz;uod51np8mgNpbRFV^@Fp zmtwQEjV9-s=T0pl=P$0u2g<*Ew=u|}WqI=UKYlKOc*mBjs@_s>{0o zp)4X7^3&i19wkS!->>gc6cldsNdTH&UIX4cO1651O2*C0B26B^5-ubJw1mR zBlc~J`2~yEp@NFXLC1X~(!wqjM@}sC#!s(xf;MStxLF;JJoGVqj#TUXn9o zK4(-xHtustb5a6i2?1^~;;d?Qj+)bxQ0u%anR%F-NqQ8Qh_| z-3bG=KvRezwdLH;9%(1Q+9kMoJ(mBXYo0PTycmaC)&%nFL%kLRb)WY?IFhMu7UQod zkf76%s1XmyEhf{Dc`e^YXP9NH17QC1hN(VR%&&sxrH28UasP$2@MhcjI=M#owx7IS z=m*ktI4$iXRVFbqmn5h^!{^_%$Y&23#S0@v_i0^!|9$d&0^1sG5CTCmVkg5% zZ60B062cfYvyc;Q3@hJsGn7ZP$z35Ef%;Su=^X z<;dj}WSsPl>VY4YS*uvTZSU#J{4%GrYG#wm5jLtO#NcTVlOL5(`cY7ky#p|03B=a{bL#1`D zyCcTsYH&oec3bdYBiinqj7$+bw7A}UyD^`013Irha^*Q zg5Ll5S+G{vm>#PwnK>2^2T);yGSO;G#=+|$77s7!8zJo8oV%lOQ}pVGg3Y~v@h}i7 z))e7Cip~KmEUS~&I@Icj>WqRZ8GNWf`;{1{8f$YfV@XTd%SW~Gc?{~ngvxf3DjMd) z{7H@#_p7Z?rp__ceb=PPeU8R0##bjhD^T#@*(M~ClIJzciU?j}Ybl$KJ` zYg|UnI*#lF$Ep!(xS8Z z*704f79@o@q$nKEkS;Cfd`F1WD<6UYK>KqK^Z)qSC&7D&G+EWd`X}K2!Z^fX=-40Y z2x0x_z35JZZqwc!*&r&NQo*a7tf@E&mPGaMedGglnADVwBh#%Gxd~++ph7Sm?7SH-p0znuOKQs31{kg z;2k--SqTxL0LSgjin@p4m}#zTYOV}eipwQ@sh4|6bxvTW(buSsm&>p~{7CjOf7y#LWRO0-B*dmT%DvfKtl-LNb{SSj@Pf? zi^P*8T^H}e+RF@!NZ%>{l61A=u2=c|r<7=i$$cc~q zF_zfs-Cd!+9?>@^-}g)UXJi?2B)QAO_lEZceUFO4>OXGD+1o4T9=Q!u)u`ycgj&_r zpR!jOBg@{*NjH*;8**OGJmz-*L^*&01b94r&Qp*2U;fT{0{&Aw1g`f3aZ9(&w1>bh zh<>DAi|EHJnT%8T_rlOAb&lcjXhObg%W=q|QaLP#s$Jv_XBYQ=}g#$`;@-NXM9}xN=tMc zuByr~4}R?ww(uqGc?O6k5cBB8(dB7U41MD9m~~mh>>v_-34?6Hp15sKciH+%9Lnj{ zWD(kQ56m72ixIZJpHYo@$MC(ZR2q4^+~#WpD_Pb??Oz>li%O^bboj}&|7S}VXX)u! z)m5JYQ{E|&_8AxQquDjo*Y1&{rAvgH>r-4efsp*)l9obtr;UAI?$!$btqpz&c{{)_ zd-_LG+QwK#D~&ACPwK;5?U$#^uQs)!U2{YuoYQ*bEbzg~02BbjBReh#IkbU0%3@|gE*-{@) zkHS?|isk;4tmJ)v7kzbFkCOtR$l|80Kq4}vSRF()CMR&ya1$BDaEH~DSyurZqfVN@ z@w&z?@nOUf=vu+v)YYlwWEDMcO2$lM5>|VZm1||wYdetsUrw&7-V8D5 zO0THYg&~JBfGVZK;4tr**93XINr0+7C-rR!A7qJMLby4LT_bl#eiD-0@`mdBg*b&h zUB27(&iV z-i%i2w3f-_jn>oJLf)=gR)Cld-m4NAxS2eBGng> zYBZOK_TW_5y;0K!tM(rGWuU8XpV{3tc)feu+SHlmoL1&LPxSSSc0a&<8_bq;^GjvwPa2Bzfr95V)`O#W`ux-+q zlkbCzx&2hv<@buV1-AR}U(vJxlVK>75Kp!Ye>|o!xtV;Sl_BO?4I^(Y6c+D9YewEg z10Hw{(P2~uSGHRjtv4Dwkk*M=ldd>q1Jww$uJ~mc=xuv@vhmHh^jaQ}9}r3);7PCX zczbEr(L6)!4}$`X(i&o4`*$Dp4$U1j zk!wAET#rU(whcOKXzrPEzra>=TCG zSmAZZz?$Gy9A5eKa-{g`%PFCphNFIdkGjoQc*ZqCn-8xoQ4obl{>f`5k zs&#=LDgeR6?D(Q$0MTN)hxp<$YNRa2ffQl}yvpUZxKz))Tb(+2!o1iys>7WGB+Ne* zjz>KxSzC+MS*#{^mY__r=ZksF$quCwW@jRj>0qr!upDiL`NFQ1Zsj%?)I z*7Z0j4OWNL!>^y8a&Y27E@jB;O;ggImjfV5c$QXI!r~ynjBTu%zy7)Psu;RqALb{hq{7_U9 zB*{BU%KGNTz1@1ty*mH}L{v@-yU(OS@v3xIP2$>c(;;&JpiN9YPvHrojehmdXnkBk zlZfW=B~$|g1|8)z&b9-JvH_^dT8d_8E?R`}XBW8HcOq5>kD$4V!x~{pCc6BrJa!kcK))f-t=_f zEM({IHgDcJnUSYD+aE82*_6aiKW;=XZOB57Dl+Z)6JG@y=rZK4y7`*XUQZ?vDs4N9 zc#gh%rZQC#N}a%PD2F5MK%J=R{$QEXINoB@hCXoB{AHwS8GdWzUQi-i6idazGg_z; z0N`2=JvQ%>d&NbCkJk}SZ&6MGegkGjY79Urf^oUNw`YeA`}Gxkq^9(@=7u4?LwJi@i=p zRU9;i6DUPzwcu2~EF+Ki1kCVGGQ@hM=k-l@J4jl1F*O=bv|YfTO9)rZr+X1Q#v;P0 zjcbxAnOK;r_-!!_u34f@HIVR?55MB;va>(!S+cdi7z^ic6qmt7@j==S)@;~}S=KMYjNsl{Bm zOX>7k(ca$s1`4Flei3#9wBpWb`t`&Nya4rU4a~%E!HQIJ!n-DF?01g0)q1(0-I&}C zanJ~3qcoi)7*zY2|yesjxFdbwh`*e7N3K*K+hZnetoC%Mf17Lj%?0AREZ@<$=_ z^!Y8bMGMPH&LtB?pGe*~3#hxsRUi^bN(&pRwR6p+AyPma>t=T_$xvTDbA~l22oU1*#=L-}YQQ^__OHmS& z>kIkW3G&f1Zf~qnahJuF$E+3Gcip```Ho6RZfCn0Zy81h6oO7qJ?=4JOi0S8u%%;6 zWh;Jn2TZ4tM&$M9jOa%$OxZ!_>y+EfeM`60!h4d{cVl^rhv6cGKixikb_IZ7eX?AE z`FMe!CD~jj{+d4VMyX{J0z}yJ99Q&Wc^f)xFvHgD6(UDlvJBzHZc6iG2{F!MEUVS* zS7OO^Wp+K(-?muBv){{v8z*MK3Rd9@`2LJ$q(0fB)VG@aD$WUU2H+S$zx-GAuL{qlFuz{$z&>p$WbvnsmEH&<3p zxkE+9q~3OHqpi_!q+hxq#xH^1&}e-qhT4+9w-Df6yynt4@y(&TY^Sw$YXS+M%VtfS zNRltlf>qqgv7E)BAffi6no? zXYW-2v>n3$_%0p_U4PsG3x%AMXpzCCReGv%dp@Tom?YJ1E-Akl*Tt{D1Xl3zQ#IC&u zu?TXsgnH}ll9qGJ{&~yc1Pc9)~&kMaBwIA;IZYd97O!j>Ism90o2Sdzc6$P zTA%bv4_FSCk8jucmrU{Ou9so9JY|;^3)E~qIFn>NiBcY>K&fddxjLx!Mg^qmJVuaY zO`ICsp!i+hH41Q%X~Bt^)!9~^gNDIl!7C$A;bp4XWh%$p$~-2md_B6#pl{!TnKeqH z2TWeJ0^>*-Fbq%uD)k5iKYwn*7I_nYOu{!>xsMgDvDb)z3l&3?O6(0GxvMRF8EjKe zZ3q$%k;@ntQWxY6oF1-88jYz|&{z|AOfKxwYY|=A|7V}u6kp9uGSpyyFK{3IHgT9LmlLO1PG7*0%bG6ptG~dysd+n(EChJnFyf`d zlqPDfy%}NFmxQ%1&E~om6)Y#(LmT#4?MWGCk?R!72i2|~>3*ttlM?TmDH%9ZAluWl zCi5h}Q`jzRkm^mm#MlYHT*>b(JBRd}gqC0Jv0rCv7SFA+9z8IB@e?6$0)QO(Cg$OiLr~9riZYWF7tS;?-R}9yJ~y767V!;3E3&KYrE|@Widms`yxq z%&KMQ9pXYE4`Zwa+g3+x3eK?l9q3BgJ4!avibTsbo(Bq}pAHNYn3z3r;5`1St0h{v zls;&l6-(#C^?}MPK3O_l`338al3&UO?g1kW4;25rN@aQMqA*wcMDDNNJrtlc4FX8S zCh%Mn8YYb7lZ@OS=!f<}V(#CJ#ko{sE`oO|5<$DQay)n#{2PkRBkHXAS6 zMV?G}C^mI!nYU?Xw=H5_`lf1x=$r+Uc)G`+fL>9dijCPp_Q(kevL*`ce3Z(7lrg`E z__P16BsAb&F%nofQ&e|ZU4fSe1>wq4lK4J)XW## zH-bW>a&+CBP!qs6F}L=ZiO!dhoB^O2P$(4HFU+(N7Z(A~J&Q7Vgl88EgsPcj zM8jzP6zSncoLO56N9a3L8Fdy2u@BU!7)yHK>jju=VnuMbJ#6d+95Mc3J|yH0HVGBV zj&yH-Yo30v< zb-3XTVEtEJA!$!6vHoMqw)FgWIb;?td!?*6KT{a-SuzT0++J8oUA|nIv1S9my9I6;}XwYN5^d$MhJ70#v@pEB_N?q*^A8IqR`O*${QA!V zMQVLdSgcq+3qmuh4;jWx3A5Oo?F4y>AP~{0(C_t^Fbu%+;z% zhiS+wYFKQx_`GyULG4RA5;vZ47f^}_pW#zB!Ni%c8=1C*#l_;kpE^6G-M@@I@mjF= z5O7?fOfNacN1_0LR~)Yx#ThpQs87iQ^FP@}aW_!~3$4bdidIvoaA%5m>_CI&mBzOK z$)^%C3z3kX-qZ`OS8PiG@(d)h%C#v>j41j(<=RNU*`ffro1KF%?foqPMp$kt9i&Xf zM+2t;W{mj76imbr;X1kkP|{j}#`a{{=jM(0XB9@*8b=X^_#?MkdkvY~Vb}ZnfjPHv z)Yo4(On4pWE4EjICTBgFj&U7R`CyICh}suUIwSH+Z`H39+;ZRW=l-hTe#c~W!4+Q3 zYtENjbuHUx0_P_J$9k(>IXhPQx##XZqMVLUp`qj{TIXmYl&so?;L`>|4wJYV8|qzx zGbOoKADL^rRR2lyUV1~X5w7)ikX@bm-AXWqqw@V}=@h1CW8|*r`v3PohXi;~+jVO} z__hVtY!PxSpJC*wUfM&6Bza=5p~UJ-c9d8(GS>LV`$$(H>oN(ao}V;R<3@p$qf19Z zwWX+x7RFoXh+1|)NBqpQM3#1?QjBF`@bOH-CD2LB3_Q4Bp#x6Pody zVS4HuPF7vc6J|O}f)N<3@>+}kAYJ!Sl|@t(zM*zKFLz=#If2{bY>pTr`lk+Ga&^3u z2>-lH&@Q&}-`#>P^5Im4d-~^12Zdj^U|qZSdg!2QZkC2$w)Pv*LTdCIu9} zSkc!68s{aiRkF=Y3CAd_#?OGM5M0`TsRx{T3LvhwDq;!2LD6PN6q|si4)>8=Y4!E- z@#ngM<^F#mlJ7bz@QCIysiiF@<~4hdwccS<=z+!C#|VEA(c0$XXg5ivg0 zUi5bN^MmdnmxEDCnjc}PB@Y0~8?%`WplGN4Y&E3tI$9ok{{jHuhyXIEB&H}N#$tJw zNj@vnQT3lm>WIui9zlW$gqc(dc_-L^$E+G_9;D*{UWIF zqQY&o>aj7b_ju!af0bsXn_6(r$B*8)3Ddl$SNOds^MgNv1dmgt%ZEu%UVc|RNK;cy zzl@$=uUu3CdrdzExt8W1anfl?d2gz5=x;_O&impwp)Bfn1Zji1i;v|`$D_ZnY zKKFWA<=0{+(HAS7PwVtH0pTNPBna!%gVV=F@IyfAIU6d*u!NR1$5wDNGWJpqG-9?) z00Hb8P3LxFI0hS(vJy3TQ`bvQ@9G;Cg=ywIq$J5sAA2i7D zdfYy$)ILoorjkHWq(mrAS0hk3ZS9ucvv3wT6pYC;Yr{DYL*^Xt;>UTMwX3g+{c^eS z`nE;8{a)YFhEf>ivXY$hI3mBeEA6w5iOEVsB+m>%0f%>eKM@X5*Y$+fCNHB}lndia zXpUIVa=)=xfqV#w%O`^B0Pp(b+a%wARhep))QJx7HRb0sQbVlhJw=M&hB)zfxwsV- zRT}e=mnfBA!AyJPH#X-x)!*C#NhnYh7(oEhKrB8J4likDGq98OS>=EHe8I;%wKY~1 z(Y-_-fRi641VAdDAX2M0N0d`N|0b}*`0#;`Xr=01HtEpMRfI?Q8)?cvvsn~lj8 zz|lHV&5iz47v)`SlL#5TR^>)%i+{@R>e_C!H6~amdoio~V2|2O%pG2j_vff%uzcw} zH&ej)T~K%U>Kbi7N7?Ue!$+2aoO4yneC6+Hm5PnG&jJ`QXG8fv0!=$Imk@DyWkhBZ z^d@IauV9FK%kfBjtYbEoP%#CiIIT)$4sCAK3TKD@Y}Yd~*z`ez0I3kq?hB@DvOG`* z9Z#(9?&)TltGm0qJ2u@+n{K8}%*M>m=llB) z-jDlu-g92B^DMF?D6u1YX;|O9^x%&qRbaVM6?|Hp7y=`RiJql-%)++q1QqOYXv>juF3p*8?VhD%FW@Y6+{QQJR zJTUxU|Aif5wykMII{sz2?xiUmY6wLQ&s%?-D@^rBqr?H@J9C?s>waZ!Kj{%v%8kz0 zm!mFCQxRFDYlJmP6D64exlB5NlH{LT`4d^58`aaV?dPLyx-_AhQ{3PJ*uGa|#cR&d znFIhJDlXPp*p1ka(H6p%EFLB~u^6qTJ0)L)4&Rk&O2V*Uq=Z4!{eIan|0K8!b+&e4 zQnKF$~qpJ>i1UJ{G^Z(bt82vmZTBsRYQGOZeZsg7x9dz z;?GL1f&U>}+3emug^ak5x$M(c(y1q(W|F+a zh~^)YAj-wsMqb4+vQ?TcCON6TDkE4O!=t^JXb@mNw+d5lk7T!XxY~#kCKCOKXx`qM zKkV&rQwiVw`uSoLHI-kQ=WT1z9?*a&imy;0f~Pd;#L6fcAau4E+CsIvUq*1rPFRc3 z-B7P4*IVU#ELl@IwAL&6TYjbh&~{7)Q}JL)IT2Z@R3+FBEm}by0rVH7m$tDfDYJu@)eS%tAstMl!Pr zsU5QC1#A@NNF=gxggCjTMH%J_`!y%;pER0I?avKuAqgRK!YzDi^0?vd?&La$2@djC znfe_}t22L6XYMvW^DobjWZ?+w6am1hDYC0Jm>{G%YO13(EB-9FA4@j1iHIMnRGJU~ zQSOSU=^c`8{6qAOb!!<9ay+^)&PN_DqLu8=%3o(+#=|! zEp{8$iQQTaAB?SFm-6R$Y$Yf4^j7QkEOcg%>r+wQEZRaS3a`?M2n`SKr^Pv zGd19tv)Gu!lGgJTix^f2azR;J^#@a)xk5pu1{#A*jjziXIl)vkgqHFIW=^q3ibxWo z<2XsC^4W*u%IxJ??F3Q(h}!%rn3;6Q6Cr3O zQlmd{o+H=tf<~6~W8!Z*=wO3Gya9ft) za0=8&a$5FD!>Zp?Y#p^c%mHQB5BR)myC_aGKL}{|7qY#4SLDNqwajL4C># zN<%@^LKU2fL`hP*EYWHa8BG$<*-$!j4)`WRNh~S5)DAJ;&^8>cY6cyd)}{@bzZ^1u zKB?q+9O$8XQR=MR3FSAE#5NifS?+vcf(BFhYmq^z)F1q;l62_6+I7??V)BkxCf^8~ z?a(n|b5sB1wz$2sVK)uq^zo@-ob*r{BZ&|fVbeTL@9=>S0y9kM94vdZ={2cC_`w_H zdFM5!1}`RwwBUDnU{c9ggg3V!G-5^+9Eu5CU`9i9iv@xL#}Fx7$Tm#95wkzI&^Dpa zP~(LJKcr?Pleuq@&5SsX5+Fzw!C>d?i<)Axv@AJRO+*=eE40`BT28~)LXn`Pf`NCU zH}nu2GMT7o?5|y}Jj3zWl#;}Z^rA}fYvE$xJCv?87POW7#9|i;-h4T*zd^HJHX;sp zAE6(_yCZeG)zp^tLeFIgeF?{@tqb|JVD!Z|GTh-TU^ezbePua>P!zy$tY>k)o6i5= z`Evk#4Gud0&<6= z?BxmtCR+Tx_ob^9Yp`hD_kh_vPo(=euJl(u+aEIi9c7n6i^cGei#;5lE$&>VTqg`) zrj-p{@R`+8Jm!@(RhrlrC2Y}E&0#zV;$a7*5t$fjC_fC*aMY3o|6B#00py~k4GC>T z2RRl|;akbjLc%d;#cf#b5Rr|Gf`bZ8RBQuxH0s#Fy!5Ypykwy_i<1@5clfT9Fi6>o z$1Vv_+=_sQ_j^4ZmR9AS2V9tmWSPMjEi zMM1WJm?0ULEG56zmMN;F>fy|o>VqMDcPi^q-d9tXzt-`td68~U*oeE>NOtiE^J$!V z7CJ(UO7z9=eWQrSaIQrV?n{#vf7mZZ2)J;hgwfNchA*T5fs;HrRd0z+zAeDf72`v%} zrBcN!gwT5X1Ji&%6FoKO!V#2B%vPLkaTFzZv`c?P;U|p&dL{2vZ*D4ig*aIoYpV@3 z{PEzA?nfTv*17o2mh|$^3BJsjDBMXkYgnuzpfL;jVuUOO^iUTsHGG}p(_!B{ehd*A zz5Kjt)E56Ccf&=>UgkF3tGw2sDSmLs>GP4YiS_CB&~jW24@h<(gsx@n5R$R_y73Dx z=|B7|MIbsDs>j&!rfW)&Zke9C02G2oENDCzL*2$jTH#h1D5^tH`y^ zfy00>eJq67m0i3+L`&3|Lg}_kZ;Hz4(654wI);)&CHWJ2xL}V)rU#Nq{lRYmjtz7b z*Vk8*$qw5gT+ghlZ3%gzNp+SeHHz8FCI5(o!PL;mS4=r1YH!k9%w5j9a*2d@JSc{u zYKQM>^(!P|niGp)6#!IxYc1eC9Utp76g5mpVpp4d;d7JtrGiCj)vbj{+Ip&|wkE~k zu0)9%M&>|Vh_kn1A_OgAAu$uMB#2!-ndZHIW8}c<;g{lS&9%~B)<@PYKiyV3+GLns zZ^$ZeiwMm1jtn?=_KT8OO2ffrE`iJvB@PWe_hku`0Z;}e_%ccSlnm#A1K@*145eYH zc)KMAJMWK`pWzIfS_oOPS~bjZTzu(dpYp4OF>qfSp4v9sgTc|3+}BP5isVM3TKd9K zf4~2B*ZC3OJ+ioeN-p4hfB$EGzrwL>As@TWnb-gni2Bc+?I72Wi|Lo_8S# z!hJ|q05&iP>AYr8$^X+NO?J~Tp7(?XLFE)`uSK8%#?Z6|-@MHDYwyHs*WA3N#7Sdr zGIaL-Bm&NZL+v@;LvvZ=Nj>lr=E^R5o@?NpMFD!_l31x^J`5&d>8rZI@IaKHcr6$J zkHSBHIsY{gfd(zF$6>AA{m79($*l?OVsZdD9U>m+l8dx;>T}VcifLM&hu%4iSz+^} z>dJ9W{HhPTmcN7o8PMD*xkcxA)oIPXaUnVoZ#1Q0>Zxa`X_O~bF19{0gx2;fB)d1d z336cB2bN?x_Bhq1%7xXW7+L=Fr$&>X*@y4{&w!CMAq4HF28I`w*_LD7(=ryW=uY>m z9-T)mBoPLd>hV|L%8}0fWMJ5xv?0P}s>Qdf^wwOh`LRJ_^r+#$>7k+$JK_F!i|3w$ zT553IHBHx$mBlZhkLC1fUa#WlN7@;ElUe}XUI-VM(cUa2j-p} ztp`c0fUe`NjkI)a}HbFANLzW4U_w=<^<1oHbxt-#xcP}5Q zjw>(*e`}pj9M?^Da}G!uuxOpUUma%zmY@RBsJdLSmYP(>0Y5H;3{Z52(-2JL%#pZ> zMFDfiv{bl~EJhz0jN&8*h|b%8mem-*V{q(gyYhoM>IGxpCWahh_8Z?}C3g@KP}RLh z8+%c~ibXMz9m?FGcQiaI$vq&(jlvcH&C2q>C?%)|r+rJu5gIKaTYrlT6V9NO3=ct< z9K`wB1DfQ56hMBco_=+^L^*Hv@}0d*SLJ?LQ>^pASPSF}EVL>=z60%rB?Iuo;NL$0 z3M~MrCICp2S>Bn?I?Qh|QSTbvL{pXI8>ND)%}N|y^n8b4v>2!Ytucg7J}dsk$RAt0 zRG*M_+<2B}P}OKIyf`V^-M49Q1muFo#U-ozcre27e9!AbOi@o#&gln}*7Jj^9;_Ma-akleR| zGiHi~ILqMfbmZM){?e1$Hd96QDs!Xb{zkl{ph&H1Y;o7|1E*rlC|xys?Fowh0WCC5 z_oe^tuiYTT2_22M{>ntVp|d*E0|!Ewp(YEvZ*WCQ&6|I)lD6_HGo9q>rvbtQinEQK zc!^~HAJv_Eze^}FG5t$fC~)+R|O$8`OvJsWl_4KO=+ zZ%j1u+pA^TYa;#|<6#zo-H3^2s4x}&TT!$deGP$7yfSF>y4kuM+sx6!TWaY@5OTZ_ zEFH&shZVFy@sUJayr)oZS;I6&(W_FJxf%akuB?*;p*tC1kC;%DnF%?HMD|ZA>RcU8 zJ8TUD0a-`%qU<swjn)sJ|V50gK|W&xq~?I zi%5V0_4kw`9ra`ri4f7!1R@3)>{)q?9=!swBo!FYFyD6OXfFy>VTX%r1|Wr@Zq2&3 z%*{$*@vl*t_dAO+G@feO14|<&D3-i-Es3_N*HpB!?V8WJ1?(gYrfiSQl@)@aFa%~>Cj-lZ z?mEWaf6yQ4)6%V~X*F4^PD&*)MF|KczoWsS=A5#rm_e|qw)gV{Bq~Xqn$c9yv6C-f zaY@feE(=`GJrmemhNsq?rrq<+w}(YCk80jCe!%){AxM)r44c^q)>?N2d^VZ>+m+t8 z61}PVKmK$k0&&Mgi;G|GMqTphuW5uGfn~5^T;s}wa>|8ESeA}CO*x#=`b2FJ6AJgz zj8Yv|dJ4}+{=*FM&*xulKa=+JxkkY;!)Rh&Y7!b_S-3?ZgE$3BKP-+x|dgNjEqHtp1PO{0x>3fbfSE`6WFsYW=-4c{9&1h z2=-R(hZDl+CPNGYiz2aufx7H(l8B%fcVql^#d|p3-#wpFh9I74mRw)CBOL#>O~!ja=Eq&DnzfjdzFmdYhH+QV^t( zL^~y55|HS2*s(adl&Q@i6SGqmTSVa=an8>&9$~)I;I%?6W02t{-Nsf> z6h;}uWxKHF!BqhDFYTrXjZ+VoPQ_&|5gnbNDwb0{iW2X%FVj2yI2IBT6ax?)t*twg_@v@g%|TDkd`BB7(-xTIWPDo+d1 z(}UlJBg*FH;yPmMWm)1PLh!J9apwG@qc2H++OC zY%s)p*qLeT^^?X3>F1U?xO2Ehs<*M?O@AF0VyPY>$r*wr;U)m_HDJ)2m{SO~IzSj+ zb+vS+-j)P$S8g+{w63S&22;gAcdAljEGyv>C(ilVHf@ve^Sxc1oqy+Qz)()OyPZwK zYhHcnLXotgoXC~P_}0UlYDs>b!DB32g?)VZm#@d{ zX|omW?kidE(D~A(kXc*L*TIeUc46|g;CQLv3U)!4t9v*O@t`Pp2mqQm&iQ*!9Q%eX z>Qs=NnMJgKgmX+T-1L}GFXo2QX-33lAFV_+G;i#c)S^~%SZ3;EasyFRWRJm(Sk^7pZ-v@q#=fUunEi1a7e`pi%@%4`~5Z0yADBe?{hlA0J z1{J;~V$MFk`|tibLP9jvTXkdR1#2D1zsI~FCerlMb!6WR_QGWjh#=JAu~M(P`gMR` zSU|y1#s;o3{XG()RlfEBC!1>llsZ<-tHVM^v{Y1ZkK75K?!mpYLm`zhB}SfA|Vx=m?2tl)zQuPci?- zgvgPE%njj|_4=a7NJ+FCR!fd4ySD-!05KcTyjEgaLEd(Z&wf2wTIJF(6hP2gVNz*B z6{%DLQ0l#0s)MEf$gOl&$^eF^Xw&KQkjg;$afd(s=7ntkPrb?|;rgzo{Alj^!Nqk2 zoI%PA4-(bD{4dOpT5;kK|LZ5QU@!nu6mQRAX0p3C0>k3PBi%(a^(F$7l9xA1Fwj{x`woidoCN$HC02`Si zRDFuGK|FVs%zuJ8qP}cXqtT)p?9c`Lskq5~>&l%xF4<`DogRnc^r$CsbVro4F*FcA2$b=`MaKDSUL-cpg}&XTk2Dh9rW&?R@}`b1edkQ@55Qe}pU zXpck_8$}e669BBNFbh;FQv#L!IEj@aQ4?7xE-HbD;aI9_wnYrnqfQvLy;IiF12jWT z2hBoF{cA&MsN`-sq}rPYS_Tdp&}8H4d;i6Yx~sUMw^PoObih8fRrBh2U*RfOX#JEC zAKRvhJnkf6x*2@;>aeMGbMvKr)^bz)@mjj&X~5I+p3f!;@kyOp1VV%apo9k?($9}% zD_CTZGrT9#QMotPb7O#P?G!B{&p4zJtK}~x_T&D2CiXFYqzf4wvEi!9HIY5RwZ2-) zjKGr@wnx=0uMN6a(=Dz~`rT+3q)Gf^y_vL9rWC77u@B<|rUToe3*W7ZQ?4u~C<4$A=Yps5T|-D3 zT(kq|hz9&>(agLOlc=Ucm#}ZASUu)UyH9VBJZ79sd*{e%KNrPVLuR+O7x8dD`sL^9 zj?b35AU@3^0;U!684=Zs*O$J4-w&8Cr3>?`Z3;@Hq-77&KUDEH-8wT*td9h{_ZG?w z9AZ0)wAHDXpR%GQ-|!>31i*JT(mKbM*v&kje6gfm!WpsGjb-nSrmtgW2~W_K4Zx5| zz%C3g{h3q$tQHjv=vQShpd=#;v9K(}H)9`?53c8-P_2hw{~H(csbVD@tY_&XyXKWl0v^5g^%jh9cyF=hO{lhEE{;z&jnf2 zA0Mwe?P|_rt;o#P|MigkHj)>c*t}@?MQ#5yFG&OGpHKYRzpFTD;OJ2e40ii(y9T5Y z7WHGGfZEXeb!l}>)iT8pLhztiw-seT*$TuFaFo1S9Md>%xvJbfZpT>yMit*WVcoWV zU5E>%diwWm6nW)K*SfM+&^I6EMGxxLkeC`>eYEPj6RY&4F7KlF&G_pW-|u@Aruz{h zJSi|6?Y^1JSlIhjB8kO&sXHT{@9#M!sgX1m1uM*GUO$c`276D#0{|iV4gGeAfZ{0r zh9WBNdW|kE$*BxEDQ6sS$J>ZPU4vQzDgG^Pu5J{^I%Oq0{Vieol=S0zrLiqkLK3H! z(IrUV8?`GagV$>#&63E!x`b+Zjx4ipwS1GhsJ5BrSN^!%r-6+(#Xm{xhe9=KOUF@v ze^4eQnsmLqJ@5Ij3_fx6Lmq*AV7LDN?-F*gfEzCY01|-dW{jL*8Z^cRI83b|0-0l`6Q0sd`4X ztmyLH)`z;jYJdI@KZ5{ZtBIDMf;4+ZEjp$t{SwZfVEqe-@1SBMvv5YX$?I}O2$56i zly_<#w8OJ!AzHS&U?`dk=>#6rlzepd-%U#dNO;#2arL~3eQ$o*=$)!A0@?2m&W%5m z!4?4Un@rj%F;z5rFf%eZmQ`BnCZoxk069;Pep6eaKCN22K?mr!X2$exS+qRl%OWQ| zl^A({Z;XP~X8rGJ9d4OAd+({=Olkhz!fN8Lepkh}+f&#(euM@gv*%R3cB6h?ZLO&( zJYQ(#H@2Ii2NPF)`aah+6_^iP|7sSzc0Z?gITpZoY|s0QuGGUSWG%vogeVID!}tCc zDg9-0+Bs`tW||#6=RO?dZt2Ke#F!|pr!I<3G>X3A%*2Df+vyjjK!ay z<(BQG%DKN6g}zL6d2%?2-L!Jz6FQrQh7AjA>BF@b%N55@JxRVyMJJ_)_-$KzSliRpUm?$7M6}*`rxk^Qn`d?VATi9;e%y&3 zu1H3kAvRX4kW4-9BP=Z>f$b(!bvpIE=&DkRKlzC%RhRiWW zd>tQ6eb@JS4mI_ZLA)dk%{bCt4s1_HheL+J!sK#!e6j^Mdp>;mB zj^&p%x+e;HFdrx5wb)*AaV8;@;S*)hUoN|JCn_)#IdqK?K*@;4!TBpO6w*ry0I;X2D5Oai zj@xu&A{)vdJ(<_xnpho5=af1*voL#)z7|>Ai~!Ey*N1CtWoE2&@Xe(YxLkKR$c>VA z`KdMyH{QEuoUGRw0YDy!2leurWy~79;jPgXp$Fm22Trk>9iCEbg)YV2X3O|b5q_0W zX&t|!7ejZE4##Y}>p`T>mW2)oMf>fM*sL z>TR?1?D{-<;eo%azuK#i0>v_iskku5B+ZBj4Cgz1jiVWlMiOCXS!*&G`l zm39aM_p|?XVG4p2!-G)AS(dJ|Q4BvMqo9xJNl`1w-6l-AFq*Ig6(-Tw@2%qq;L`f~ zrN;j@6q>MpZB<`?XGRusQl*Y`#`4jejLmF!t`ZCf;4@rsC)$M{!Jwp0HZ_k*n1zRq zQ6y!C6BkwcVExSc3&3d7ER`x)mr})|$vs%DQLiKDs&zQaf0`J3Tk#Fcfw=LEDk999 z50F$$Du28H?NZGmIMBx5s-6$-N_usw<%EB5y~H8XZZYXK1!zlOv2Pd|KmH-pwaFc6 zSJ%iM`boGpN+c{mi|X+oev(6gC5B5=Q0e6KnCcf(`UN!>OZC{s@6jr?H5}>Ks)Pki z!DF=qppbsJNGt+(4dS1m*vwikDvcft)31^pC1I#VC9Af4%dX9`G1?4$Mu2T)KqGHc zqGkhQ&@z&6VUxyvA<6T}NckAv0*wN5oULVyo5qc%@ss@6ilQR(9^3_OZ!t|_vXjqDh$uOp-9XOe)zy z(2{cfxl;0d>S=VF?~ECZG;h}4#s|`wW{|~osfc~YXOs=kP+Ocivdi%$0UjAD(?dyf zqa)}e;+(_d3l0rJx=-`m{r+441TE*lQfB}AXX$#c7es;&o&-ZHR7fBg32&$AP9Lc@*;<@{xx>P&Dx+s-s^&EFNo zse8HY`M(c8O_#`sC>(F7qqP3Rk2e6A`8NNsNiL*LO}#h$5vZDb@TQ+%kyB@7a!JM3 zp+blDz2||dB7E3lz5r;2!>6V>usSvGx_w2eW`lbh80 zz7`AJ1__`5fCCT^r-ML)Vr?eshy?+24@X+#EMY3PSk$9Bqv9{ad0}|64Ay%0ws%I+ zPvl>}s0hKE^B1i@596nAd;D;Ea$l{^9NsMjA)@lcSuy{}?qna#EXAJbzIpyS z%;~UyAsNjtyzBT`+Q!EI65o9heMcpA3NtROb}d0Ezg=2n=z~1Byqya&z?SX#lZS@a9Yh5{d*en@GdUdqV&K%n z`y6x4{h`65Kmz+AGz;pR^mW&=>lfl6mwFnv#KA-l?x~V@QAWX+sX=6w95gA|sLr#3v2W{ESI1(_cyP_EVsUQGro_9a zD1IbuO&12R^JTTQM+^tOcimoJd&7@~DF8{qM8}@r^j3FBP}%ZWQ6n$FFs{@G&JM@^ zAtJtiN_E?_&#@~A&CUXWhN0NN>>=JUH9i$a+fg;m$zWuggQ}K0)<&%R&YEt$yYxIQ zbMXCKL!Sy6C^OJ6DOu)tkQVKk)b#*~SvNcQ){gtv>*KKeGv-%?%c`BL_m|JF*8p%c zC=A~{vDSS3`oQ$+p?|H37!^bdMi7X^ z0X8MjHfZnx!q`Ee9074Zd@5kzo_Wv+99N`kOFWCM1%v=ov?MD0 zta33X*xmfyQ*?sSlE*G^sg;JzmCV4Y_n)YufbB`M1a;i;+3AJnS(btLjCa|j9glI~ z*YB1~ng?64ax<66YQN$w#f-0?H|+I|Yj~E0+w+;Re>u9bH>bixetV8)E?3CS{`dv} zny0{_P$gCEX-&72Vle4Ap`r7 z)5vTc@(&^KQ3{0n7o3?*)_HR0Siy#$3KLzb9QCR^o0~fx8&sz+`SFgMj?xTr15~K& z6xBKVM!lIO`7I<3bmhq38~JMtcY-007yK21UEb{Phe~ z$na-nlFf|!GR!S8cOSv~B>6oQIRj++s9CwNnj8Tc>B8OJ6;3b{?>j zF0RA$PG2uk0$$=R2sB%g2yMgTavS&NQTx}t^4u~#m?$Q@oDBeCC;7IbTRnKA7)rX6L)j3=vSNZLTvl# ztBSm}wG+>m?%USbKy}-L=@!=NhCB-$QR-%oe_jGXR)?D{=x`WM>1QVi{f@k-nWFtB zR+hk!uwcwF)L;mX*$iufE}qh&ayz(i`F@ z$s0!>7U3mDi78_ex-yzY5Lj-NXUL66%2?eld1my()3gOq7^RXrUz7k!OPqX()fr~Q+l7hwyhI?mKGH#sy zxsamL(dFATDLmdo=WibXq3l1Zovo5E?5>QJS@t!lgEZ7-E#6BAh{6_xTn>rexf>6$ zgg+}=S!FLu1?)W4g|PXQ5PeSq66%15ZzI{~mh_TCK*5OLyT~^v=ky^8102L1i$-{JS*zO{t3t{Tt;q@X^RTPY724CvN4sWa6D z$fO*j1{t6FMNUc$ZTf89new~}HJwNXPHBYE=&0|Ol{x+6arZCZ?NJ6RCh>n68@~fF zsYGUm^ncmHZCD&Zl>Q)X@$xKugCyKrHQ5LLk&_to8$h%_``$puSx+1;1VwR0LrDP! z7ldTkzIKn4tvsrcBzGA)h$t2*9eKtcsk&82LwxQ!tG-s9Y$e2^St9Yt*c`R#GuhSR zj9t8EL#hF&@Z^QFYJQ*iv@EksuM^yv$<-fOH1o0>B)ps~2<##S5lNlS#WwXj%UhQtk}F>|XO)_sqYC7GKS zRM$S#t}2d+SkY>kO)HddI12yk5aGbx;z0Z|i1NMl+x=y&n^jErVVMen^TZ%@^ra!o zWwvuo>PMWrD|h!_hUv$tsF;t`tjHC;f1huZXtoC85Rigb;VlK6B%%x^hPM)x9Um!$ z(xzNvycgUgI$N^0Qi%fHHMSb7FenR3>IiTKn;yZ;+Bjtmbfa|a)t}(k3*MNTkDfAJ(SE{lo<$% z+X8s*C8(6F4M>b|as8%fC>vt$*@dJU=pBeirAMSI>{O!bLTPblI0^%@{RT8ob1&s| zJC2Q3czRY@_g^^_y2K(i;rcFkIjwwh)hSG_vu56D3ObHIcCBVyE_aI|-l|-&bs13M*d*Jba7@34%dij0lEpf^TP!bflV|5N`>+`<-Haza*&6!nev!)Y zl+~i1V^aK5n}%FN5jX-THk$eipZ1vpEI|ec|IV(Dqw( ztXTYt3l;Xe$-b59L}#L2JD1LSO#Oo3BllQwu{35Jt2*5C7DcDNb|DtyDL{Cj!KqsI z@%Dq$o|coEKHKrPnPwIrmH<0JX#QAxu@j|z8E%jI581Qqye3HxJNAqu-DMAt1GeiW zMPmwgHwtokm9gcH|eHXPZ}Yje)}YJJ&qR;Y&ifysA&im_ zioY;8lA0QocJpUf*%%g%*L*caPLy68US|s=R)21je1R_vexKw&w2Vu!?%73}tgNIA z0Sz%~`v!!R`Nh_8#66WF)l?)d+Ru!3mup|elVnMVXBY6tM-laPJW7bliu8m;CJ086 za+b=IkG9c&yWtO<-rSKD*fq`Ppb&tO3M4*{+x*Gf*6?U&YnE4hXZ#nUv+?O)wf9x* zHBx)hNB`^x4 zmjNea%=luIx(#yA{#nP6nE9=7iMLa1E*1An^LN=UN*Cxq`~(7kSSEV**y7${(`aWl zmdDs-0=jRyGuTr-vqyLWYR__}=`8t0N_FJ`iVZsm2viT2nYD@KM88OLi4?^(mvw%p zl{skQ$)4Wa{xz0mpm)_Tx0$WCY{J++r@Uu5iT0cE%%;BA!#bMoxmm|uB|oH{L`!4q zjV}|veTE6lmVrXrT>Bg@mL>Eygj3qEWE53(7xU7yZ!2fME&Tl3k=*P59=)eu_OAgt zbBLU)OHdXN5kv#fiG;f+2r&bT$?JrkBUjwG{x~1i@<(W8*s-Si`K4EEEV9Z$FYReO zwBy^cEh1|?srR3T=XD_(C!jQGlfiiAtnrY2dr{ak(Uw9?k7Y*HxnSC6T!QhRq%7v} zf0AVak6b(8+mYZSZ?HC^#5TMpVF5K~;(F5b1=8>mk)^I4Mw!NSaVk`+0XZMdK%}$6TYlL-*~k;!8fk5^4%-e0rOT_7f9Txh^kzGt zwy9JXvxc1TJ9~%X8yvGMo~`$&Y68U!Rhyl9>%)w=Z)ui|AQCOsG?UgnmOK=X`1kFX zIUCo!)GY`_{pKM08 zlx?jp+eUqZNiif=o-(EEV1lX=q}S?C*jaO23u)3CJ54!I7QJ*UzYp}gG#FsC0;(Wd za#W-@HydYQo(aUa*AtJY7Xzx*F9%Fe>lCA>2W5P0=-KHBD;3UmuArr`Wkl(Uqis6m zjv@GW+ztVNKmQs|SM)21ft)}@K1}c_66C(u@0jK zQiajex8~mtkJZ-c%s8o|`OzY9SU$?VNebYrP-w^oDQEZ5RbKhg!xv>&WEj1S;gLBN z+=a8`af(_AEY0<)1{3$dG?7Y1E1wD8(WR%FXe++!Pv$Eb~u({vltpDx00hzQg{JGMg>g{FgW!J0Ec;x>R72s+AK8)wjYd`gqe2)!bfb% z1i^FNzt$Zq?9%BoDUuposK{keV`iUq5O7WWX|gHZT}lG5JERIA%wZ+6_hpp|40eP4 zO!wVZ;pjwVMXR*FMGk3(e<2{z)!jq2DMk?>i|Nf+P4BTd~J7I%e(-s-W|FHR&@E=CkSnA^tC*FMG$KwR5>P|Jt*e{&4 zIvq$zcsia=g}sCqt|SGC40TrMOhjfw$^K9fRq=mZ3ghhtI7d}m9382jtf&m0hE$j? znVH~Qp@?d=S>)+SE5~B?5as3wJO(Oz5<~4XZ-lrckT>usXG5`S{5Cz|?9u_OKC?Zx@HjIiNUcByJC`}a%aQW+g){0(VV$nsC zqOSb4N3zrN#U{LYmy~h+?}InZ`p$OM4Ed(uU217}PgS-e9?USYnF$7csKr6uh`?+A z@gDXl8t$+%|4&5ZpTDJK72iw?hVa92yPL#4FQ2j#uyts@l+`JZhS#ctk^|r{G*;GR*Tgk}BhSw-F^|*Be>r2Hbnaia`~p8Nj7rTZ9W8uN zQ4T*44p0a?W~LGoaZZ)Am~g=A@ujwgjzYf4z&QCW^P+!AO_7?gNKO;fF3?rQb zW}ZS_v$IPsY(ktW5BpkSOlV-zc~e;Y_*_nZRb|i~>IS&|=Xgd@0EUUj`;IIAf6(31 zkc_1sWeNo$-tg`v#jFUA)hT5LcFV0TG;9FxW2AcdIcuMi_uI1{LM`fq7j z(}w#dk&GoXsFibtH_z4fbsr8F0H%rTI<~vEq5GxqxV(K)ytj2~j{;h1Qt{lPyDlMf zDK=yDTDTYh^h6mfQ4|cbnZxMfAUN@D1b}Fd!seHY!%9h92DfTiv}hVO=X{+QV1~se zIVk8|$YZ=`v3&U~cav;%kR484_0k8C02%L*4{Dig9$Q-2Q`dcHZ4B6X2}YAvgFSgA zo%0m0cYO2gCrryUnKObK(~5+Mj4I9FYCjfNH$*#h#s2=G&T)tNPe`!d$&!%=2pv(! z_zXKbZpCk99N6oK2p|Leav4#EFx zxH`qm%WfmFK52T~h;RC)UuFM35TC)s5f(q!5@(Gu;^uxNANUfZ--T~hC8uO2x*$Wk zLN!>f|07nGz6H&)KM95{f#+*o;YJ07##K5UTZ{E*HOOlXDl68%5HP<52Ez>`j`tEf z1B#ATG)IX^;&BJ2v=%m8f%qLBq zQf4zyle(QYY}R2dBg^3jOcG~eW{blfCm5@}2o9pTqu+kJ_wl|OsTSXj2 z_6Mld(qXf=ksbkFo9$k&n^_-w@7ErO+p2rMP-M{+HpdMij}O2|&~_4(e;mNHe;mdL zq4QyJWKK;MC?+9a)X8N1v{y}14gKU*Hpkpl(Ml#(Je7A&?{3A`TT!xE+Mc4ParSCpG=} zp|EGEA%PaX)ecS@^6jd2pR9j(?{VyKb%{Pl!s#eX)puJ<6Bf=smzEB3K40017`;#? zGmR!t@hs`e&aC6zu`4w{Bu4U({T94>v8`GY5zkZZ<>$63UV6u>+?1ABf6r?GK2Htp zpTH{))k7wMJRzxPWZ+_M8arKJ;har`^x4ym(cpD7L+Zx$$?ta>?C3d6?JaEVl_=EK^OWSZS~li>SO7i zG>6|K>$?hA{@8HVg>x(yp+fY2lOW4VE!=qqCoka=zUVjpt`=2szj$5POk}q$${+H} zB@;%AhLLLtmg8H1-;(Sgxuw(dLzF8rv(?BryVC8dJDcRqy(|Z)Gwg0!l6m?o4~Dst zp8Nd!PU7yMF^b%(P=PzyQCTlf<5)?e89X-MluyBueyN+%4xNxPFMztlP|CZo6!16U zb>N4)%`~WI+gm>Lm(_KLnk=5V?OkBW!IN%wS6KWGG&32`i46+_1A+jCL-_3gD3L9G z9iJGC^-mpzjg0NBCjj0XZte2YJVPulX9Ve8#YRZbT~2 z&eqLC%GX4OhX8extI;y3C=yc0mMmYMIoClv<~rsPGh<`N^>@j_j}NoLi8pB*Kc_xx z6M25>AtX?Hcrle@|Mz8;o0GM)Z!mbU_<;5E3uFSP!j>+Cn(8+QiZ{T(U6QYgN6@Qn zuNf)Ar4%2fRT(wbx?$3Ovv@gVS(=)0Zznvh{kHRRGO%;wDOhxHn-YR2!w>@SjI%uV z&LOxs`YpiP|9q=^JPban1a&7<8fEhy$6~k$SI^`N2S`|Go1FIYD3RW=XHPWVkD;`P z1L$hP!WQR-ku-6Pyi^|}%Jz?}Tk9sQRALpEmE#h0+sZSKXlIlxlEF0UD%t{VX;q%rC*2_9w5m&!L3^#f8GQ zh^}!~+Seg@a^8R0Gg4yIT&V9oc7qotSKL0^-O;=xLl3H3wd9J`R}MW$?1Cq%;%6-c@Ke*WkxSTlyh zG(PjAW&rK*6G2psap=S#RbOUWAt!_8O%f^RhDoA_*U9##McYlY*3U5%wjc-?5a-VE zVO7Nvp-{m%i_OMCDY(BzYlNC@><_!nSJ*qTTM0zipuIJ#39zL(9^p**a`?_Z38r1v zN$paGa^vgk@H|T~29r3huL3lHU{ruknTntM-TnqomY9N2vROhP##i~N5KBX?RdFuH zJk4tuBXm9vtdo|&pIuVl8N+PSYR`7OmrvqHc7dQ-={2lBNZtu9xN4I_-eoh+(dwj?r@7n8JlJl7<>$(CM>H@c z2bEgyLZjw*o4gx+ck1`#Yu6LcH8dn!wBtNR`gP&j>Zsg-cD+dP4BR$?U>hKgjf z2hTN~P2DA7QS~Z(9 zlLtflbNlLL`~TAehQ1Y&RxC026?U@HMR*eW8Bt%P7MT_))Q)nH-1pH(dRo zwINHZo{B<;iS6`6N9|vC#Wt?!l#z9wD-~Xk*qfRzEvr#a6!)`SHRkCGEnA1}5QL=E zs8;Acv;$2!!yH`md}}I<+8B`LdnYsX+;BRXNqvr78qJTWr{fGj1O>r<2?6lQ2QjoV znZ-0kyPmG$Au-5F@lnyCA`(h+VmJ~O;n<(+7T0R+YRDxcN|Mn#;^r<2I46#sabq_U z_~*dCYX8G7nfO+-V#=O<0cz|bOn!93pxmaM8P~9hUsSJ>%3~W+!j3A4cODd3|7`fK z%|EWdGF|>X^>&={78&jF?c8Qp*C#7FTcXUn6HO*hRiPVJ0%T(h!d6aF;>xVU6rj`d zB1nr>mi4dX6y&1`6j3FZ5IT^hAshdTrz_CSYV>3C7z0M28J-tI$(GMAnes8$1vsZN zR$utx>P$6bDW8P7FYUTQcahvKwR3@&v#n7yFzjn@E~aPrm}h61->YZlG@mO$C(S)9 z1%SY$GnyXDh{a5?WoWV`-SO^vD7j$L6x^{H|A~7K@dT#s*ZOQR2zb!3k806LMTaP#~UBkmC00&IcD>VoW5{pYwPD zlnp5#&^I=zOu7ijm)aJ5()G89^}(G;l6RlQ_?(baWEN4f+^{&UFjh^ZE-0AH(@wdR z{dz>P^@fks;^JMnDfn*YX&ou7=4_IC?6eyq{@^dIJ8$oE(2bEbvCpv-U9*&uAcw+2 zg3PIoGE)e@%D}*?I!mr%`o|#VFKaPEol{>FdPc+_<-sk*hJKmPyrSa&5GOy(EPc