فهرست منبع

升级vitepress用法,使用vitepress编译包。新增部分内容。

jerry 1 سال پیش
والد
کامیت
ca7fa43f2f
100فایلهای تغییر یافته به همراه12954 افزوده شده و 573 حذف شده
  1. 0 2
      .gitignore
  2. 5 0
      .vscode/settings.json
  3. 44 3
      check-build-vitepress.ts
  4. 52 0
      check-rebuild-sqlite3.ts
  5. 4 0
      docs/.vitepress/menuConfig.ts
  6. 4 2
      docs/.vitepress/theme/components/ExcalidrawView.vue
  7. 144 56
      docs/.vitepress/theme/components/NormalTable.vue
  8. 99 97
      docs/Hardware/Gate/aGate_1.0.md
  9. 121 119
      docs/Hardware/Gate/aGate_1.3.1.md
  10. 121 119
      docs/Hardware/Gate/aGate_1.3.md
  11. 5 0
      docs/Hardware/Other/GeneratorModule.md
  12. 5 0
      docs/Hardware/Other/MeterKit.md
  13. 5 0
      docs/Hardware/Other/aPbox_1.0.md
  14. 11 0
      docs/Hardware/Other/aPbox_2.0.md
  15. 28 6
      docs/Hardware/Power/aPower_2.md
  16. 7 0
      docs/Hardware/Power/aPower_S.md
  17. BIN
      docs/Hardware/Power/assets/aPower_2/aPower 2 Datasheet (SKU_ APR-10K15V2-US)_20250331.pdf
  18. 66 0
      docs/Software/EnergyStatistics.md
  19. 448 12
      docs/Software/ScriptingForSchedulingConfiguration.md
  20. 1187 0
      docs/Software/assets/EnergyStatistics/aGate1.0_1.1_GenCtrlPartial.excalidraw
  21. 1264 0
      docs/Software/assets/EnergyStatistics/aGate1.0_1.1_GridMeterPartial.excalidraw
  22. 1352 0
      docs/Software/assets/EnergyStatistics/aGate1.0_1.1_PVMeterPartial.excalidraw
  23. 4591 0
      docs/Software/assets/EnergyStatistics/aGate1.0_1.1_SystemFrameworkDiagram.excalidraw
  24. 233 0
      docs/Software/assets/ScriptingForSchedulingConfiguration/SchedulingLogic.svg
  25. 31 32
      docs/System/assets/SystemDistribution/aGate1.0-WholeHomeBackup.excalidraw
  26. 6 121
      docs/System/assets/SystemDistribution/aGate1.2_1.3-WholeHomeBackup+V2L.excalidraw
  27. 3115 0
      library.excalidrawlib
  28. 6 4
      package.json
  29. 0 0
      packages/src/vitepress/.gitattributes
  30. 0 0
      packages/src/vitepress/.github/FUNDING.yml
  31. 0 0
      packages/src/vitepress/.github/ISSUE_TEMPLATE/bug_report.yml
  32. 0 0
      packages/src/vitepress/.github/ISSUE_TEMPLATE/feature_request.yml
  33. 0 0
      packages/src/vitepress/.github/commit-convention.md
  34. 0 0
      packages/src/vitepress/.github/contributing.md
  35. 0 0
      packages/src/vitepress/.github/pull_request_template.md
  36. 0 0
      packages/src/vitepress/.github/workflows/cr-comment.yml
  37. 0 0
      packages/src/vitepress/.github/workflows/cr.yml
  38. 0 0
      packages/src/vitepress/.github/workflows/lock-threads.yml
  39. 0 0
      packages/src/vitepress/.github/workflows/release-tag.yml
  40. 0 0
      packages/src/vitepress/.github/workflows/stale.yml
  41. 0 0
      packages/src/vitepress/.github/workflows/test.yml
  42. 0 0
      packages/src/vitepress/.gitignore
  43. 0 0
      packages/src/vitepress/.npmrc
  44. 0 0
      packages/src/vitepress/.prettierignore
  45. 0 0
      packages/src/vitepress/.prettierrc.yml
  46. 0 0
      packages/src/vitepress/CHANGELOG.md
  47. 0 0
      packages/src/vitepress/LICENSE
  48. 0 0
      packages/src/vitepress/README.md
  49. 0 0
      packages/src/vitepress/__tests__/e2e/.vitepress/config.ts
  50. 0 0
      packages/src/vitepress/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue
  51. 0 0
      packages/src/vitepress/__tests__/e2e/.vitepress/theme/components/NavVersion.vue
  52. 0 0
      packages/src/vitepress/__tests__/e2e/.vitepress/theme/index.ts
  53. 0 0
      packages/src/vitepress/__tests__/e2e/__snapshots__/home.test.ts.snap
  54. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/basic.data.mts
  55. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/content/bar.md
  56. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/content/foo.md
  57. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/contentLoader.data.ts
  58. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/data.md
  59. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/data.test.ts
  60. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/data/a.json
  61. 0 0
      packages/src/vitepress/__tests__/e2e/data-loading/data/b.json
  62. 0 0
      packages/src/vitepress/__tests__/e2e/dynamic-routes/[id].md
  63. 0 0
      packages/src/vitepress/__tests__/e2e/dynamic-routes/[id].paths.ts
  64. 0 0
      packages/src/vitepress/__tests__/e2e/dynamic-routes/dynamic-routes.test.ts
  65. 0 0
      packages/src/vitepress/__tests__/e2e/dynamic-routes/paths.ts
  66. 0 0
      packages/src/vitepress/__tests__/e2e/frontmatter/multiple-levels-outline.md
  67. 0 0
      packages/src/vitepress/__tests__/e2e/frontmatter/multiple-levels-outline.test.ts
  68. 0 0
      packages/src/vitepress/__tests__/e2e/home.md
  69. 0 0
      packages/src/vitepress/__tests__/e2e/home.test.ts
  70. 0 0
      packages/src/vitepress/__tests__/e2e/index.md
  71. 0 0
      packages/src/vitepress/__tests__/e2e/local-search/excluded.md
  72. 0 0
      packages/src/vitepress/__tests__/e2e/local-search/frontmatter-excluded.md
  73. 0 0
      packages/src/vitepress/__tests__/e2e/local-search/index.md
  74. 0 0
      packages/src/vitepress/__tests__/e2e/local-search/local-search.test.ts
  75. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/bar.md
  76. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/foo.md
  77. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/header-include.md
  78. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/index.md
  79. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/markdown-extensions.test.ts
  80. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/nested-include.md
  81. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/region-include.md
  82. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/subfolder/inside-subfolder.md
  83. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/subfolder/subsub/subsub.md
  84. 0 0
      packages/src/vitepress/__tests__/e2e/markdown-extensions/subfolder/subsub/subsubsub/subsubsub.md
  85. 0 0
      packages/src/vitepress/__tests__/e2e/multi-sidebar/index.md
  86. 0 0
      packages/src/vitepress/__tests__/e2e/multi-sidebar/index.test.ts
  87. 0 0
      packages/src/vitepress/__tests__/e2e/package.json
  88. 0 0
      packages/src/vitepress/__tests__/e2e/public/pwa_dark.svg
  89. 0 0
      packages/src/vitepress/__tests__/e2e/public/pwa_light.svg
  90. 0 0
      packages/src/vitepress/__tests__/e2e/public/vitepress.png
  91. 0 0
      packages/src/vitepress/__tests__/e2e/public/vitepress.svg
  92. 0 0
      packages/src/vitepress/__tests__/e2e/shims.ts
  93. 0 0
      packages/src/vitepress/__tests__/e2e/text-literals/index.md
  94. 0 0
      packages/src/vitepress/__tests__/e2e/vitest.config.ts
  95. 0 0
      packages/src/vitepress/__tests__/e2e/vitestGlobalSetup.ts
  96. 0 0
      packages/src/vitepress/__tests__/e2e/vitestSetup.ts
  97. 0 0
      packages/src/vitepress/__tests__/init/init.test.ts
  98. 0 0
      packages/src/vitepress/__tests__/init/package.json
  99. 0 0
      packages/src/vitepress/__tests__/init/vitest.config.ts
  100. 0 0
      packages/src/vitepress/__tests__/tsconfig.json

+ 0 - 2
.gitignore

@@ -1,4 +1,3 @@
-.vscode
 node_modules
 cache
 dist
@@ -14,7 +13,6 @@ temp
 .idea
 .temp
 .vite_opt_cache
-.vscode
 dist
 cache
 temp

+ 5 - 0
.vscode/settings.json

@@ -0,0 +1,5 @@
+{
+  "editor.tabSize": 2,
+  "editor.insertSpaces": true,
+  "excalidraw.workspaceLibraryPath": "./library.excalidrawlib"
+}

+ 44 - 3
check-build-vitepress.ts

@@ -3,16 +3,31 @@
 import fs from 'fs';
 import path from 'path';
 import { fileURLToPath } from 'url';
-import { execSync } from 'child_process';
+import { execSync, ExecSyncOptions } from 'child_process';
 
 const __filename = fileURLToPath(import.meta.url);
 const __dirname = path.dirname(__filename);
 
 const pkgName = 'vitepress'; // 本地包名
 const workspaceRoot = path.resolve(__dirname, '.');
-const pkgPath = path.resolve(workspaceRoot, 'packages', pkgName);
+const pkgPath = path.resolve(workspaceRoot, 'packages/src', pkgName);
+const nodePath = path.resolve(pkgPath, 'node_modules');
 const distPath = path.resolve(pkgPath, 'dist');
 const srcPath = path.resolve(pkgPath, 'src');
+const tgzPath = path.resolve(workspaceRoot, 'packages/pkg', pkgName);
+
+const pkgOptions: ExecSyncOptions = {
+  cwd: pkgPath,
+  stdio: 'inherit',
+  env: {
+    ...process.env,
+    NODE_PATH: pkgPath + '/node_modules:' + process.env.NODE_PATH
+  }
+}
+
+const rootOptions: ExecSyncOptions = {
+  stdio: 'inherit'
+}
 
 // 遍历目录文件的修改时间
 function getAllTsFileMtimeMs(dirPath) {
@@ -35,6 +50,16 @@ function getAllTsFileMtimeMs(dirPath) {
   return results;
 }
 
+// 检查 node_modules 是否存在
+function hasNodeModules(): boolean {
+  return fs.existsSync(nodePath);
+}
+
+function installModules() {
+  console.log(`[vitepress] 安装modules...`);
+  execSync(`pnpm install`, pkgOptions);
+}
+
 // 检查 dist 是否存在
 function hasBuilt(): boolean {
   return fs.existsSync(distPath);
@@ -56,11 +81,27 @@ function isSourceNewerThanDist(): boolean {
 
 function buildPackage() {
   console.log(`[vitepress] 正在构建本地包 "${pkgName}"...`);
-  execSync(`pnpm --filter ${pkgName} build`, { stdio: 'inherit' });
+  // workspace用法
+  // execSync(`pnpm --filter ${pkgName} build`, { stdio: 'inherit' });
+  // 不使用workspace
+  // 进入子包目录,执行 build 脚本
+  // console.log(pkgOptions);
+  execSync(`pnpm run build`, pkgOptions);
+  execSync(`pnpm pack --pack-destination ${tgzPath} --json`, pkgOptions);
+  try {
+    execSync(`pnpm remove vitepress`, rootOptions);
+  } catch (e) {
+    console.log(e);
+  }
+  execSync(`pnpm add ./packages/pkg/vitepress/*.tgz`, rootOptions);
 }
 
 // 主流程
 (function main() {
+  if (!hasNodeModules()) {
+    installModules();
+  }
+
   if (!hasBuilt() || isSourceNewerThanDist()) {
     buildPackage();
   } else {

+ 52 - 0
check-rebuild-sqlite3.ts

@@ -0,0 +1,52 @@
+#!/usr/bin/env ts-node
+
+import fs from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+import { execSync, ExecSyncOptions } from 'child_process';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const workspaceRoot = path.resolve(__dirname, '.');
+
+const rootOutputOptions: ExecSyncOptions = {
+  encoding: 'utf8'
+}
+
+// 获取sqlite3 module list
+function getModuleList() {
+  const output = execSync(`find node_modules/.pnpm -path '*/build' -prune -o -type d -name 'sqlite3' -print`, rootOutputOptions) as string;
+  return output.split('\n').map(s => s.trim()).filter(s => s)
+}
+
+// 检查 build 是否存在
+function hasBuilt(modPath: string): boolean {
+  const buildPath = path.resolve(workspaceRoot, modPath, 'build')
+  console.log({buildPath});
+  return fs.existsSync(buildPath);
+}
+
+function buildPackage(modPath: string) {
+  const realPath = path.resolve(workspaceRoot, modPath)
+  console.log(`[splite3] 正在构建包...${realPath}`);
+  const pkgOptions: ExecSyncOptions = {
+    cwd: realPath,
+    stdio: 'inherit'
+  }
+  // 进入子包目录,执行 build 脚本
+  execSync(`pnpm run rebuild`, pkgOptions);
+}
+
+// 主流程
+(function main() {
+  const moduleList = getModuleList()
+  if (moduleList.length === 0) return
+  console.log(`[splite3] 获取路径:\n${moduleList}`);
+
+  moduleList.forEach(modPath => {
+    if (!hasBuilt(modPath)) {
+      buildPackage(modPath)
+    }
+  })
+})();

+ 4 - 0
docs/.vitepress/menuConfig.ts

@@ -126,6 +126,10 @@ const menu : Page[] = [
       {
         title: '调度配置脚本化',
         path: '/ScriptingForSchedulingConfiguration.md'
+      },
+      {
+        title: '能量统计',
+        path: '/EnergyStatistics.md'
       }
     ]
   },

+ 4 - 2
docs/.vitepress/theme/components/ExcalidrawView.vue

@@ -55,7 +55,9 @@ const getExcalidraw = async (path: string): Promise<ExportedDataState | undefine
 }
 
 const drawCanvas = async (data: ExportedDataState, width: number, height: number): Promise<HTMLCanvasElement> => {
-  const maxWidthOrHeight = width > height ? height : width
+  // const maxWidthOrHeight = width > height ? height : width
+  // 改为只限制宽度,因为渲染前父窗口高度可能为0,导致maxWidthOrHeight不生效
+  const maxWidthOrHeight = width
   const canvas = await exportToCanvas({
     ...data,
     maxWidthOrHeight,// 绘制的最大高度或宽度,设置maxWidthOrHeight后getDimensions则不生效
@@ -72,6 +74,7 @@ const drawCanvas = async (data: ExportedDataState, width: number, height: number
 }
 
 onMounted(async () => {
+  console.log("excalidrawJson: ", props.filePath)
   excalidrawJson = await getExcalidraw(props.filePath)
   if (excalidrawJson && canvasContainer.value) {
     let excalidrawCanvas = await drawCanvas(excalidrawJson, canvasContainer.value.clientWidth, canvasContainer.value.clientHeight)
@@ -96,7 +99,6 @@ onMounted(async () => {
 
 <style scoped>
 .excalidraw-wrapper {
-  height: 600px;
   width: 100%;
   border: 1px solid #ddd;
 }

+ 144 - 56
docs/.vitepress/theme/components/NormalTable.vue

@@ -1,34 +1,73 @@
 <template>
   <n-data-table class="normal-table"
-    :columns="columns"
+    :columns="columns as DataTableColumns"
     :data="tableData"
-    :single-line="true"
+    :single-line="false"
   />
 </template>
 
 <script setup lang="ts">
-import { NDataTable, DataTableColumn } from 'naive-ui'
+import { h } from 'vue'
+import { NDataTable, DataTableColumn, DataTableColumns, DataTableColumnGroup, DataTableBaseColumn, DataTableSelectionColumn, DataTableExpandColumn } from 'naive-ui'
 
-interface ColumnConfig {
+interface ChildColumnConfig {
   title: string;
-  children?: ColumnConfig[];
+  key?: string;
+  children?: ChildTableConfig;
   align?: 'left' | 'right' | 'center';      // 列文本对齐方式,默认left
   titleAlign?: 'left' | 'right' | 'center'; // 列标题对齐方式,默认同文本
   minWidth?: number | string;
   maxWidth?: number | string;
   width?: number | string;
+  vertical?: boolean;   // 控制标题文件的显示方向为纵向
 }
 
+interface ColumnConfig extends ChildColumnConfig {
+  // 类型选择,不填写默认为普通列
+  // selection: 选项列,用于勾选数据行
+  // expand: 可展开列,用于展开行
+  type?: 'selection' | 'expand';
+
+  // selection参数
+  selectionMultiple?: boolean;  // 默认true,false-单选,true-多选
+}
+
+type ChildTableConfig = (string | ChildColumnConfig)[]
 type TableConfig = (string | ColumnConfig)[]
 
+// type TableRowData = Record<string, unknown>;
+type TableRowData = CellDataType;
+// type TableColumn = DataTableColumn<TableRowData>;
+// type TableColumns = DataTableColumns<TableRowData>;
+type TableBaseColumn = DataTableBaseColumn<TableRowData>;
+// type TableColumnGroup = DataTableColumnGroup<TableRowData>;
+type TableSelectionColumn = DataTableSelectionColumn<TableRowData>;
+type TableExpandColumn = DataTableExpandColumn<TableRowData>;
+
+// 规避naive-ui库bug,children类型定义错误
+interface DataTableColumnGroupEx<T = TableRowData> extends Omit<DataTableColumnGroup<T>, 'children'> {
+  children: ChildTableColumns
+}
+type DataTableColumnEx<T = TableRowData> = Exclude<DataTableColumn<T>, DataTableColumnGroup<T>> | DataTableColumnGroupEx<T>;
+type TableColumnGroup = DataTableColumnGroupEx<TableRowData>;
+type TableColumn = DataTableColumnEx<TableRowData>;
+type TableColumns = Array<DataTableColumnEx<TableRowData>>;
+
+type ChildTableColumn = DataTableBaseColumn<TableRowData> | DataTableColumnGroupEx<TableRowData>;
+type ChildTableColumns = Array<(DataTableBaseColumn<TableRowData> | DataTableColumnGroupEx<TableRowData>)>;
+
 interface CellDataExt {
   text: string;
   colspan?: number | undefined; // 向右合并 N 个单元格
   rowspan?: number | undefined; // 向下合并 N 个单元格
 }
 
-interface CellDataType {
-  [title: string]: string | CellDataExt
+type CellDataType = {
+  [title: string]: string | CellDataExt,
+} & {
+  // expand参数
+  _expandable?: boolean;
+  _expandString?: string;
 }
 
 interface Props {
@@ -37,11 +76,11 @@ interface Props {
 }
 
 const props = withDefaults(defineProps<Props>(), {
-  config: () => ({}),
+  config: () => [],
   data: () => []
 })
 
-const handleRowSpan = (rowData: DataTableColumn, rowIndex: number, key: string): number => {
+const handleRowSpan = (rowData: TableRowData, rowIndex: number, key: string): number => {
   const data = props.data[rowIndex]
   if (!data) return 1
   const keyValue = data[key]
@@ -50,7 +89,7 @@ const handleRowSpan = (rowData: DataTableColumn, rowIndex: number, key: string):
   return keyValue.rowspan ?? 1 
 }
 
-const handleColSpan = (rowData: DataTableColumn, rowIndex: number, key: string): number => {
+const handleColSpan = (rowData: TableRowData, rowIndex: number, key: string): number => {
   const data = props.data[rowIndex]
   if (!data) return 1
   const keyValue = data[key]
@@ -59,63 +98,112 @@ const handleColSpan = (rowData: DataTableColumn, rowIndex: number, key: string):
   return keyValue.colspan ?? 1 
 }
 
-function traversalChildren(child: ColumnConfig[]) {
+function createStringColumn(column: string, parentKey?: string): TableBaseColumn {
+  const key = parentKey ? parentKey + `.${column}` : column
+  const columnObj: TableBaseColumn = {
+    title: column,
+    key,
+    rowSpan: (rowData, rowIndex) => {
+      return handleRowSpan(rowData, rowIndex, key)
+    },
+    colSpan: (rowData, rowIndex) => {
+      return handleColSpan(rowData, rowIndex, key)
+    }
+  }
+  return columnObj
+}
+
+// 标题纵向渲染
+const verticalTitle = (text: string) => () =>
+  h('div', {
+    style: {
+      writingMode: 'vertical-rl',
+      transform: 'rotate(180deg)',
+      whiteSpace: 'nowrap',
+      textAlign: 'center'
+    }
+  }, text)
+
+function createBaseColumn(column: ChildColumnConfig, parentKey?: string): TableBaseColumn | TableColumnGroup {
+  const columnKey = column.key ? column.key : column.title
+  const key = parentKey ? parentKey + `.${columnKey}` : columnKey
+  const title = column.vertical ? verticalTitle(column.title) : column.title
+  const columnObj: TableBaseColumn | TableColumnGroup = {
+    title,
+    key,
+    align: column.align,
+    titleAlign: column.titleAlign,
+    minWidth: column.minWidth,
+    maxWidth: column.maxWidth,
+    width: column.width,
+    ...(() => {
+      if (column.children === undefined) {
+        return {
+          rowSpan: (rowData, rowIndex) => {
+            return handleRowSpan(rowData, rowIndex, key)
+          },
+          colSpan: (rowData, rowIndex) => {
+            return handleColSpan(rowData, rowIndex, key)
+          }
+        }
+      } else {
+        const children = traversalChildren(column.children, key)
+        return children ? { children } : {}
+      }
+    })()
+  }
+  return columnObj
+}
+
+function createSelectionColumn(column: ColumnConfig): TableSelectionColumn {
+  const columnObj: TableSelectionColumn = {
+    type: 'selection',
+    multiple: column.selectionMultiple
+  }
+  return columnObj
+}
+
+function createExpandColumn(column: ColumnConfig): TableExpandColumn {
+  const columnObj: TableExpandColumn = {
+    type: 'expand',
+    expandable: (rowData: TableRowData) => {
+      return rowData._expandable ? rowData._expandable : false
+    },
+    renderExpand: (rowData: TableRowData, rowIndex: number) => {
+      if (rowData._expandable === undefined || rowData._expandable === false) return undefined
+      return rowData._expandString
+    }
+  }
+  return columnObj
+}
+
+function traversalChildren(child: ChildTableConfig | undefined, parentKey?: string): ChildTableColumns | undefined {
+  if (child === undefined) return undefined
   return child.map(item => {
-    let obj: DataTableColumn = {}
-    obj.title = item.title
-    obj.key = item.title
-    obj.align = item.align
-    obj.titleAlign = item.titleAlign
-    obj.minWidth = item.minWidth
-    obj.maxWidth = item.maxWidth
-    obj.width = item.width
-    if (item.children) {
-      obj.children = traversalChildren(item.children)
+    let obj: TableColumn | undefined = undefined
+    if (typeof item === 'string') {
+      obj = { ...createStringColumn(item, parentKey) }
     } else {
-      obj.rowSpan = (rowData, rowIndex) => {
-        return handleRowSpan(rowData, rowIndex, item.title)
-      }
-      obj.colSpan = (rowData, rowIndex) => {
-        return handleColSpan(rowData, rowIndex, item.title)
-      }
+      obj = { ...createBaseColumn(item, parentKey) }
     }
     return obj
-  })
+  }).filter(item => item !== undefined)
 }
 
-function createColumns(config: TableConfig) {
+function createColumns(config: TableConfig): TableColumns {
   return config.map(column => {
-    let obj: DataTableColumn = {}
+    let obj: TableColumn | undefined = undefined
     if (typeof column === 'string') {
-      obj.title = column
-      obj.key = column
-      obj.rowSpan = (rowData, rowIndex) => {
-        return handleRowSpan(rowData, rowIndex, column)
-      }
-      obj.colSpan = (rowData, rowIndex) => {
-        return handleColSpan(rowData, rowIndex, column)
-      }
+      obj = { ...createStringColumn(column) }
+    } else if (column.type === 'selection') {
+      obj = { ...createSelectionColumn(column) }
+    } else if (column.type === 'expand') {
+      obj = { ...createExpandColumn(column) }
     } else {
-      obj.title = column.title
-      obj.key = column.title
-      obj.align = column.align
-      obj.titleAlign = column.titleAlign
-      obj.minWidth = column.minWidth
-      obj.maxWidth = column.maxWidth
-      obj.width = column.width
-      if (column.children) {
-        obj.children = traversalChildren(column.children)
-      } else {
-        obj.rowSpan = (rowData, rowIndex) => {
-          return handleRowSpan(rowData, rowIndex, column.title)
-        }
-        obj.colSpan = (rowData, rowIndex) => {
-          return handleColSpan(rowData, rowIndex, column.title)
-        }
-      }
+      obj = { ...createBaseColumn(column) }
     }
     return obj
-  })
+  }).filter(item => item !== undefined)
 }
 
 function createData(data: CellDataType[]) {

+ 99 - 97
docs/Hardware/Gate/aGate_1.0.md

@@ -10,106 +10,108 @@ editLink: false
 ![aGate1.0-EMS接口原理图](./assets/aGate_1.0/aGate1.0-EMS接口原理图.png)
 
 **接口说明表**
-<NormalTable
-:config = "[
-  '端口', 
-  '应用', 
-  {
-    title: '出厂自带',
-    align: 'center',
-    width: '60px'
-  }, 
-  '备注'
-]"
-:data="[
-  {
-    端口: 'CT1',
-    应用: 'Secondary solar meter (NEM CT)',
-    出厂自带: '❌',
-    备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
-  },
-  {
-    端口: 'CT2',
-    应用: 'Null',
-    出厂自带: '❌',
-    备注: ''
-  },
-  {
-    端口: 'CT3',
-    应用: 'Null',
-    出厂自带: '❌',
-    备注: ''
-  },
-  {
-    端口: {
-      text: 'Gen CT',
-      rowspan: 2 // 合并下方单元格
+<ClientOnly>
+  <NormalTable
+  :config = "[
+    '端口', 
+    '应用', 
+    {
+      title: '出厂自带',
+      align: 'center',
+      width: '60px'
+    }, 
+    '备注'
+  ]"
+  :data="[
+    {
+      端口: 'CT1',
+      应用: 'Secondary solar meter (NEM CT)',
+      出厂自带: '❌',
+      备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
     },
-    应用: 'Generator CT',
-    出厂自带: '✔️',
-    备注: '测量发电机输入功率'
-  },
-  {
-    // 端口上方已合并
-    应用: 'Partial backup Grid CT',
-    出厂自带: '❌',
-    备注: '部分备电场景的市电CT'
-  },
-  {
-    端口: {
-      text: 'RS485-A1&B1',
-      rowspan: 2 // 合并下方单元格
+    {
+      端口: 'CT2',
+      应用: 'Null',
+      出厂自带: '❌',
+      备注: ''
     },
-    应用: 'aPbox 1 Meter',
-    出厂自带: '❌',
-    备注: '测量aPbox1 PV输入功率'
-  },
-  {
-    // 端口上方已合并
-    应用: 'Meter Kit',
-    出厂自带: '❌',
-    备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
-  },
-  {
-    端口: 'RS485-A2&B2',
-    应用: 'aPbox 2 Meter',
-    出厂自带: '❌',
-    备注: '测量aPbox2 PV输入功率'
-  },
-  {
-    端口: {
-      text: 'RS485-A3&B3',
-      rowspan: 2 // 合并下方单元格
+    {
+      端口: 'CT3',
+      应用: 'Null',
+      出厂自带: '❌',
+      备注: ''
     },
-    应用: {
-      text: 'PV Meter',
-      rowspan: 2 // 合并下方单元格
+    {
+      端口: {
+        text: 'Gen CT',
+        rowspan: 2 // 合并下方单元格
+      },
+      应用: 'Generator CT',
+      出厂自带: '✔️',
+      备注: '测量发电机输入功率'
     },
-    出厂自带: '✔️',
-    备注: '测量aGate PV输入功率'
-  },
-  {
-    // 端口上方已合并
-    // 应用上方已合并
-    出厂自带: '❌',
-    备注: 'Split CT 并联到PV Meter CT接口'
-  },
-  {
-    端口: {
-      text: 'RS485-A4&B4',
-      rowspan: 2 // 合并下方单元格
+    {
+      // 端口上方已合并
+      应用: 'Partial backup Grid CT',
+      出厂自带: '❌',
+      备注: '部分备电场景的市电CT'
     },
-    应用: {
-      text: 'Grid Meter',
-      rowspan: 2 // 合并下方单元格
+    {
+      端口: {
+        text: 'RS485-A1&B1',
+        rowspan: 2 // 合并下方单元格
+      },
+      应用: 'aPbox 1 Meter',
+      出厂自带: '❌',
+      备注: '测量aPbox1 PV输入功率'
     },
-    出厂自带: '✔️',
-    备注: '测量aGate市电输入/输出功率'
-  },
-  {
-    // 端口上方已合并
-    // 应用上方已合并
-    出厂自带: '❌',
-    备注: 'Split CT 并联到Grid Meter CT接口'
-  }
-]" />
+    {
+      // 端口上方已合并
+      应用: 'Meter Kit',
+      出厂自带: '❌',
+      备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
+    },
+    {
+      端口: 'RS485-A2&B2',
+      应用: 'aPbox 2 Meter',
+      出厂自带: '❌',
+      备注: '测量aPbox2 PV输入功率'
+    },
+    {
+      端口: {
+        text: 'RS485-A3&B3',
+        rowspan: 2 // 合并下方单元格
+      },
+      应用: {
+        text: 'PV Meter',
+        rowspan: 2 // 合并下方单元格
+      },
+      出厂自带: '✔️',
+      备注: '测量aGate PV输入功率'
+    },
+    {
+      // 端口上方已合并
+      // 应用上方已合并
+      出厂自带: '❌',
+      备注: 'Split CT 并联到PV Meter CT接口'
+    },
+    {
+      端口: {
+        text: 'RS485-A4&B4',
+        rowspan: 2 // 合并下方单元格
+      },
+      应用: {
+        text: 'Grid Meter',
+        rowspan: 2 // 合并下方单元格
+      },
+      出厂自带: '✔️',
+      备注: '测量aGate市电输入/输出功率'
+    },
+    {
+      // 端口上方已合并
+      // 应用上方已合并
+      出厂自带: '❌',
+      备注: 'Split CT 并联到Grid Meter CT接口'
+    }
+  ]" />
+</ClientOnly>

+ 121 - 119
docs/Hardware/Gate/aGate_1.3.1.md

@@ -123,122 +123,124 @@ EMS可能未实现aPower空开电流限制功能,待确认。
 ![aGate1.3.1-EMS接口原理图](./assets/aGate_1.3.1/aGate1.3.1-EMS接口原理图.png)
 
 **接口说明表**
-<NormalTable
-:config = "[
-  '端口', 
-  '应用', 
-  {
-    title: '出厂自带',
-    align: 'center',
-    width: '60px'
-  }, 
-  '备注'
-]"
-:data="[
-  {
-    端口: 'PV-CT',
-    应用: 'PV CT',
-    出厂自带: '✔️',
-    备注: '测量aGate PV输入功率'
-  },
-  {
-    端口: 'Grid-CT-L2',
-    应用: 'Grid CT L2',
-    出厂自带: '✔️',
-    备注: '测量aGate市电L2输入/输出功率'
-  },
-  {
-    端口: 'Grid-CT-L1',
-    应用: 'Grid CT L1',
-    出厂自带: '✔️',
-    备注: '测量aGate市电L1输入/输出功率'
-  },
-  {
-    端口: 'CT1',
-    应用: 'Secondary solar meter (NEM CT)',
-    出厂自带: '❌',
-    备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
-  },
-  {
-    端口: 'CT2',
-    应用: 'EX PV CT',
-    出厂自带: '❌',
-    备注: 'Split CT,独立采样,默认功率累加到PV CT,可进行功能定制'
-  },
-  {
-    端口: 'CT3',
-    应用: 'EX Grid CT L2',
-    出厂自带: '❌',
-    备注: 'Split CT,独立采样,默认功率累加到Grid CT L2,可进行功能定制'
-  },
-  {
-    端口: 'CT4',
-    应用: 'EX Grid CT L1',
-    出厂自带: '❌',
-    备注: 'Split CT,独立采样,默认功率累加到Grid CT L1,可进行功能定制'
-  },
-  {
-    端口: {
-      text: 'Gen CT',
-      rowspan: 2
-    },
-    应用: 'Generator CT',
-    出厂自带: '❌',
-    备注: '1、测量发电机输入功率\n2、紧急电源输入(V2L),车辆给家庭负载供电和充电'
-  },
-  {
-    应用: 'Partial backup Grid CT',
-    出厂自带: '❌',
-    备注: '部分备电场景的市电CT'
-  },
-  {
-    端口: 'SMT-CT 120V-L1',
-    应用: 'Smart Circuit 1 CT',
-    出厂自带: '✔️',
-    备注: '测量智能负载1输入/输出功率'
-  },
-  {
-    端口: 'SMT-CT 120V-L2',
-    应用: 'Smart Circuit 2 CT',
-    出厂自带: '✔️',
-    备注: '测量智能负载2输入/输出功率'
-  },
-  {
-    端口: 'SMT-CT 240V-L2',
-    应用: 'Smart Circuit 3 CT',
-    出厂自带: '✔️',
-    备注: '测量智能负载3输入/输出功率(EV charging,etc.)'
-  },
-  {
-    端口: {
-      text: 'RS485-A1&B1',
-      rowspan: 2
-    },
-    应用: 'aPbox 1 Meter',
-    出厂自带: '❌',
-    备注: '测量aPbox1 PV输入功率'
-  },
-  {
-    应用: 'Meter Kit',
-    出厂自带: '❌',
-    备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
-  },
-  {
-    端口: 'RS485-A2&B2',
-    应用: 'aPbox 2 Meter',
-    出厂自带: '❌',
-    备注: '测量aPbox2 PV输入功率'
-  },
-  {
-    端口: 'RS485-A3&B3',
-    应用: 'Null',
-    出厂自带: '❌',
-    备注: ''
-  },
-  {
-    端口: 'RS485-A4&B4',
-    应用: 'Null',
-    出厂自带: '❌',
-    备注: ''
-  }
-]" />
+<ClientOnly>
+  <NormalTable
+  :config = "[
+    '端口', 
+    '应用', 
+    {
+      title: '出厂自带',
+      align: 'center',
+      width: '60px'
+    }, 
+    '备注'
+  ]"
+  :data="[
+    {
+      端口: 'PV-CT',
+      应用: 'PV CT',
+      出厂自带: '✔️',
+      备注: '测量aGate PV输入功率'
+    },
+    {
+      端口: 'Grid-CT-L2',
+      应用: 'Grid CT L2',
+      出厂自带: '✔️',
+      备注: '测量aGate市电L2输入/输出功率'
+    },
+    {
+      端口: 'Grid-CT-L1',
+      应用: 'Grid CT L1',
+      出厂自带: '✔️',
+      备注: '测量aGate市电L1输入/输出功率'
+    },
+    {
+      端口: 'CT1',
+      应用: 'Secondary solar meter (NEM CT)',
+      出厂自带: '❌',
+      备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
+    },
+    {
+      端口: 'CT2',
+      应用: 'EX PV CT',
+      出厂自带: '❌',
+      备注: 'Split CT,独立采样,默认功率累加到PV CT,可进行功能定制'
+    },
+    {
+      端口: 'CT3',
+      应用: 'EX Grid CT L2',
+      出厂自带: '❌',
+      备注: 'Split CT,独立采样,默认功率累加到Grid CT L2,可进行功能定制'
+    },
+    {
+      端口: 'CT4',
+      应用: 'EX Grid CT L1',
+      出厂自带: '❌',
+      备注: 'Split CT,独立采样,默认功率累加到Grid CT L1,可进行功能定制'
+    },
+    {
+      端口: {
+        text: 'Gen CT',
+        rowspan: 2
+      },
+      应用: 'Generator CT',
+      出厂自带: '❌',
+      备注: '1、测量发电机输入功率\n2、紧急电源输入(V2L),车辆给家庭负载供电和充电'
+    },
+    {
+      应用: 'Partial backup Grid CT',
+      出厂自带: '❌',
+      备注: '部分备电场景的市电CT'
+    },
+    {
+      端口: 'SMT-CT 120V-L1',
+      应用: 'Smart Circuit 1 CT',
+      出厂自带: '✔️',
+      备注: '测量智能负载1输入/输出功率'
+    },
+    {
+      端口: 'SMT-CT 120V-L2',
+      应用: 'Smart Circuit 2 CT',
+      出厂自带: '✔️',
+      备注: '测量智能负载2输入/输出功率'
+    },
+    {
+      端口: 'SMT-CT 240V-L2',
+      应用: 'Smart Circuit 3 CT',
+      出厂自带: '✔️',
+      备注: '测量智能负载3输入/输出功率(EV charging,etc.)'
+    },
+    {
+      端口: {
+        text: 'RS485-A1&B1',
+        rowspan: 2
+      },
+      应用: 'aPbox 1 Meter',
+      出厂自带: '❌',
+      备注: '测量aPbox1 PV输入功率'
+    },
+    {
+      应用: 'Meter Kit',
+      出厂自带: '❌',
+      备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
+    },
+    {
+      端口: 'RS485-A2&B2',
+      应用: 'aPbox 2 Meter',
+      出厂自带: '❌',
+      备注: '测量aPbox2 PV输入功率'
+    },
+    {
+      端口: 'RS485-A3&B3',
+      应用: 'Null',
+      出厂自带: '❌',
+      备注: ''
+    },
+    {
+      端口: 'RS485-A4&B4',
+      应用: 'Null',
+      出厂自带: '❌',
+      备注: ''
+    }
+  ]" />
+</ClientOnly>

+ 121 - 119
docs/Hardware/Gate/aGate_1.3.md

@@ -13,122 +13,124 @@ editLink: false
 ![aGate1.3-EMS接口原理图](./assets/aGate_1.3/aGate1.3-EMS接口原理图.png)
 
 **接口说明表**
-<NormalTable
-:config = "[
-  '端口', 
-  '应用', 
-  {
-    title: '出厂自带',
-    align: 'center',
-    width: '60px'
-  }, 
-  '备注'
-]"
-:data="[
-  {
-    端口: 'PV-CT',
-    应用: 'PV CT',
-    出厂自带: '✔️',
-    备注: '测量aGate PV输入功率'
-  },
-  {
-    端口: 'Grid-CT-L2',
-    应用: 'Grid CT L2',
-    出厂自带: '✔️',
-    备注: '测量aGate市电L2输入/输出功率'
-  },
-  {
-    端口: 'Grid-CT-L1',
-    应用: 'Grid CT L1',
-    出厂自带: '✔️',
-    备注: '测量aGate市电L1输入/输出功率'
-  },
-  {
-    端口: 'CT1',
-    应用: 'Secondary solar meter (NEM CT)',
-    出厂自带: '❌',
-    备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
-  },
-  {
-    端口: 'CT2',
-    应用: 'EX PV CT',
-    出厂自带: '❌',
-    备注: 'Split CT,硬件与PV-CT并联,功率累加到PV CT'
-  },
-  {
-    端口: 'CT3',
-    应用: 'EX Grid CT L2',
-    出厂自带: '❌',
-    备注: 'Split CT,硬件与Grid-CT-L2并联,功率累加到Grid CT L2'
-  },
-  {
-    端口: 'CT4',
-    应用: 'EX Grid CT L1',
-    出厂自带: '❌',
-    备注: 'Split CT,硬件与Grid-CT-L1并联,功率累加到Grid CT L1'
-  },
-  {
-    端口: {
-      text: 'Gen CT',
-      rowspan: 2
-    },
-    应用: 'Generator CT',
-    出厂自带: '❌',
-    备注: '1、测量发电机输入功率\n2、紧急电源输入(V2L),车辆给家庭负载供电和充电'
-  },
-  {
-    应用: 'Partial backup Grid CT',
-    出厂自带: '❌',
-    备注: '部分备电场景的市电CT'
-  },
-  {
-    端口: 'SMT-CT 120V-L1',
-    应用: 'Smart Circuit 1 CT',
-    出厂自带: '✔️',
-    备注: '测量智能负载1输入/输出功率'
-  },
-  {
-    端口: 'SMT-CT 120V-L2',
-    应用: 'Smart Circuit 2 CT',
-    出厂自带: '✔️',
-    备注: '测量智能负载2输入/输出功率'
-  },
-  {
-    端口: 'SMT-CT 240V-L2',
-    应用: 'Smart Circuit 3 CT',
-    出厂自带: '✔️',
-    备注: '测量智能负载3输入/输出功率(EV charging,etc.)'
-  },
-  {
-    端口: {
-      text: 'RS485-A1&B1',
-      rowspan: 2
-    },
-    应用: 'aPbox 1 Meter',
-    出厂自带: '❌',
-    备注: '测量aPbox1 PV输入功率'
-  },
-  {
-    应用: 'Meter Kit',
-    出厂自带: '❌',
-    备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
-  },
-  {
-    端口: 'RS485-A2&B2',
-    应用: 'aPbox 2 Meter',
-    出厂自带: '❌',
-    备注: '测量aPbox2 PV输入功率'
-  },
-  {
-    端口: 'RS485-A3&B3',
-    应用: 'Null',
-    出厂自带: '❌',
-    备注: ''
-  },
-  {
-    端口: 'RS485-A4&B4',
-    应用: 'Null',
-    出厂自带: '❌',
-    备注: ''
-  }
-]" />
+<ClientOnly>
+  <NormalTable
+  :config = "[
+    '端口', 
+    '应用', 
+    {
+      title: '出厂自带',
+      align: 'center',
+      width: '60px'
+    }, 
+    '备注'
+  ]"
+  :data="[
+    {
+      端口: 'PV-CT',
+      应用: 'PV CT',
+      出厂自带: '✔️',
+      备注: '测量aGate PV输入功率'
+    },
+    {
+      端口: 'Grid-CT-L2',
+      应用: 'Grid CT L2',
+      出厂自带: '✔️',
+      备注: '测量aGate市电L2输入/输出功率'
+    },
+    {
+      端口: 'Grid-CT-L1',
+      应用: 'Grid CT L1',
+      出厂自带: '✔️',
+      备注: '测量aGate市电L1输入/输出功率'
+    },
+    {
+      端口: 'CT1',
+      应用: 'Secondary solar meter (NEM CT)',
+      出厂自带: '❌',
+      备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
+    },
+    {
+      端口: 'CT2',
+      应用: 'EX PV CT',
+      出厂自带: '❌',
+      备注: 'Split CT,硬件与PV-CT并联,功率累加到PV CT'
+    },
+    {
+      端口: 'CT3',
+      应用: 'EX Grid CT L2',
+      出厂自带: '❌',
+      备注: 'Split CT,硬件与Grid-CT-L2并联,功率累加到Grid CT L2'
+    },
+    {
+      端口: 'CT4',
+      应用: 'EX Grid CT L1',
+      出厂自带: '❌',
+      备注: 'Split CT,硬件与Grid-CT-L1并联,功率累加到Grid CT L1'
+    },
+    {
+      端口: {
+        text: 'Gen CT',
+        rowspan: 2
+      },
+      应用: 'Generator CT',
+      出厂自带: '❌',
+      备注: '1、测量发电机输入功率\n2、紧急电源输入(V2L),车辆给家庭负载供电和充电'
+    },
+    {
+      应用: 'Partial backup Grid CT',
+      出厂自带: '❌',
+      备注: '部分备电场景的市电CT'
+    },
+    {
+      端口: 'SMT-CT 120V-L1',
+      应用: 'Smart Circuit 1 CT',
+      出厂自带: '✔️',
+      备注: '测量智能负载1输入/输出功率'
+    },
+    {
+      端口: 'SMT-CT 120V-L2',
+      应用: 'Smart Circuit 2 CT',
+      出厂自带: '✔️',
+      备注: '测量智能负载2输入/输出功率'
+    },
+    {
+      端口: 'SMT-CT 240V-L2',
+      应用: 'Smart Circuit 3 CT',
+      出厂自带: '✔️',
+      备注: '测量智能负载3输入/输出功率(EV charging,etc.)'
+    },
+    {
+      端口: {
+        text: 'RS485-A1&B1',
+        rowspan: 2
+      },
+      应用: 'aPbox 1 Meter',
+      出厂自带: '❌',
+      备注: '测量aPbox1 PV输入功率'
+    },
+    {
+      应用: 'Meter Kit',
+      出厂自带: '❌',
+      备注: '测量NEM PV输入功率(NEM PV不限制馈网),只能接到Grid CT & EX Grid CT的市电侧'
+    },
+    {
+      端口: 'RS485-A2&B2',
+      应用: 'aPbox 2 Meter',
+      出厂自带: '❌',
+      备注: '测量aPbox2 PV输入功率'
+    },
+    {
+      端口: 'RS485-A3&B3',
+      应用: 'Null',
+      出厂自带: '❌',
+      备注: ''
+    },
+    {
+      端口: 'RS485-A4&B4',
+      应用: 'Null',
+      出厂自带: '❌',
+      备注: ''
+    }
+  ]" />
+</ClientOnly>

+ 5 - 0
docs/Hardware/Other/GeneratorModule.md

@@ -0,0 +1,5 @@
+---
+title: 油机模块
+editLink: false
+---
+# 油机模块

+ 5 - 0
docs/Hardware/Other/MeterKit.md

@@ -0,0 +1,5 @@
+---
+title: Meter Kit
+editLink: false
+---
+# Meter Kit

+ 5 - 0
docs/Hardware/Other/aPbox_1.0.md

@@ -0,0 +1,5 @@
+---
+title: aPbox 1.0
+editLink: false
+---
+# aPbox 1.0

+ 11 - 0
docs/Hardware/Other/aPbox_2.0.md

@@ -0,0 +1,11 @@
+---
+title: aPbox 2.0
+editLink: false
+---
+# aPbox 2.0
+
+:::info
+对外名称aHub
+:::
+
+

+ 28 - 6
docs/Hardware/Power/aPower_2.md

@@ -4,10 +4,32 @@ editLink: false
 ---
 # aPower 2
 
+**数据手册**
+
+更新于2025-03-31
+
+<iframe
+  src="./assets/aPower_2/aPower 2 Datasheet (SKU_ APR-10K15V2-US)_20250331.pdf"
+  width="100%"
+  height="800px"
+  style="border: none;"
+></iframe>
+
 **功率等级**
- | 功率等级(kva) | 功率等级(kw) |
- | ------- | ------ |
- | 11.5kva | 10kw |
- | 11kva | 9.6kw |
- | 8.74kva | 7.68kw |
- | 5.8kva | 5kw |
+
+发布时的旧表:
+ | 功率等级(kva) | 功率等级(kw) | 电流等级(A) | 无功等级(kVar) | 功率因数(PF) |
+ | ------- | ------ | ------ | ------ | ------ |
+ | 11.5kva | 10kw | 48A | 5.6kVar | -0.87~0.87 |
+ | 9.6kva | 8.4kw | 40A | 4.7kVar | -0.87~0.87 |
+ | 7.7kva | 6.7kw | 32A | 3.8kVar | -0.87~0.87 |
+ | 5.8kva | 5kw | 24A | 3kVar | -0.87~0.87 |
+ | 2.9Kva | 2.5kw | 12A | 1.5kVar | -0.87~0.87 |
+
+最终的新表:
+ | 功率等级(kva) | 功率等级(kw) | 电流等级(A) | 无功等级(kVar) | 功率因数(PF) |
+ | ------- | ------ | ------ | ------ | ------ |
+ | 11.5kva | 10kw | 48A | 5.6kVar | -0.87~0.87 |
+ | 9.6kva | 9.6kw | 40A | 9.6kVar | -1.0~1.0 |
+ | 7.6kva | 7.6kw | 32A | 7.6kVar | -1.0~1.0 |
+ | 5kva | 5kw | 21A | 5kVar | -1.0~1.0 |

+ 7 - 0
docs/Hardware/Power/aPower_S.md

@@ -4,4 +4,11 @@ editLink: false
 ---
 # aPower S
 
+**功率等级**
 
+ | 功率等级(kva) | 功率等级(kw) | 电流等级(A) | 无功等级(kVar) | 功率因数(PF) |
+ | ------- | ------ | ------ | ------ | ------ |
+ | 11.5kva | 10kw | 48A | 5.6kVar | -0.87~0.87 |
+ | 9.6kva | 9.6kw | 40A | 9.6kVar | -1.0~1.0 |
+ | 7.6kva | 7.6kw | 32A | 7.6kVar | -1.0~1.0 |
+ | 5kva | 5kw | 21A | 5kVar | -1.0~1.0 |

BIN
docs/Hardware/Power/assets/aPower_2/aPower 2 Datasheet (SKU_ APR-10K15V2-US)_20250331.pdf


+ 66 - 0
docs/Software/EnergyStatistics.md

@@ -0,0 +1,66 @@
+---
+title: 能量统计
+editLink: false
+---
+
+# 能量统计
+
+## 能量采集类型介绍
+
+FranklinWH的系统中,目前用于采集的设备分为两大类:智能电表采集和EMS直接采集。
+
+:::info
+aGate 1.0/1.1系统的智能电表采用第三方外购电表,aGate 1.2系统的智能电表为公司自研智能电表。
+:::
+
+### 智能电表采集
+
+智能电表采集部分包括电表控制器、电压采样(供电)、电流采样(CT)三个主要部分组成。
+
+**电压采样**:由电压采样线直接连接到电路铜排上,用于实时采集电路电压,兼顾电表辅源供电的作用。
+
+**电流采样**:由市电铜排穿过两个电流采样CT,CT通过电磁感应实时检测所通过的电流大小。
+
+**电表控制器**:负责通过电压和电流数据计算出电路的实时功率值,并将不同方向(Import/Export)的电路功率值进行积分运行得到Import/Export的总能量,电表的能量数值是永久累加值,它不会按月或按天累加,所以EMS不能使用其原始值,需要建立映射关系,计算出每日的能量差值 **ΔE**。
+
+智能电表采集,EMS-ARM通过RS485与电表控制器取得通讯,EMS-ARM会周期性请求、获取电表的全部数据,数据读取间隔20ms。
+
+### EMS直接采集
+
+EMS直接采集由EMS-DSP
+
+## aGate 1.0/1.1能量采集系统
+
+### 系统框架
+
+<ClientOnly>
+  <ExcalidrawView filePath="/Software/assets/EnergyStatistics/aGate1.0_1.1_SystemFrameworkDiagram.excalidraw" />
+</ClientOnly>
+
+### 市电采集
+
+市电采集使用的智能电表采集,Grid meter用于采集市电实时功率和统计Import/Export总能量。局部放大框图如下:
+
+<ClientOnly>
+  <ExcalidrawView filePath="/Software/assets/EnergyStatistics/aGate1.0_1.1_GridMeterPartial.excalidraw" />
+</ClientOnly>
+
+:::warning
+市电继电器由EMS控制,主要用于断开家庭电路与市电的连接,市电电表的电压采样线位于继电器的市电端,当市电停电或市电电压过低(相电压<88V)时,电表控制器会因为无法提供辅源而停止工作。
+:::
+
+### PV采集
+
+PV采集使用的智能电表采集,PV meter用于采集光伏实时功率和统计Import总能量。局部放大框图如下:
+
+<ClientOnly>
+  <ExcalidrawView filePath="/Software/assets/EnergyStatistics/aGate1.0_1.1_PVMeterPartial.excalidraw" />
+</ClientOnly>
+
+### 发电机采集
+
+发电机采样EMS直接采集,EMS-DSP直接采集Gen CT的电流数据,电压数据通过EMS-DSP的Gen电压采集线获取。(采集线连接位置,请参考对应设备的硬件介绍)局部放大框图如下:
+
+<ClientOnly>
+  <ExcalidrawView filePath="/Software/assets/EnergyStatistics/aGate1.0_1.1_GenCtrlPartial.excalidraw" />
+</ClientOnly>

+ 448 - 12
docs/Software/ScriptingForSchedulingConfiguration.md

@@ -4,6 +4,8 @@ editLink: false
 ---
 # 调度配置脚本化
 
+待与Cola Ji核对。
+
 为适应用户多变的调度需求,在EMS中实现了一套调度配置解析功能,通过云后台下发设备调度配置脚本给EMS,实现EMS的实时调度定制化功能。
 
 ## 配置协议
@@ -169,7 +171,7 @@ sequenceDiagram
           off_grid: number,             // 主动断开市电继电器,可选,0:不控制(默认);1:断开;2:闭合(预留)
           solar_cutoff: number          // 主动断开光伏继电器,可选,0:不控制(默认);1:断开;2:闭合(预留)
 
-          // 注:以上涉及到的所有功率值设置均以单台aPower为基准,计算总功率需乘以台数N。单位均为kw。
+          // 注:以上涉及到的所有功率值设置均以单台aPower为基准,计算总功率需乘以台数N。单位均为w。 ???此处是w还是kw,还是每个不同
         },
         ...
       ]
@@ -199,6 +201,23 @@ $$ P_{apower-dsch} = \min(\verb|discharge_power|, P_{apower-dsch-max}) $$
 
 当$P_{PV} > \verb|grid_feed_max|$是,设备会切断部分或全部光伏继电器,以削减光伏输出功率。
 
+### EMS基础工作模式介绍
+
+基础工作模式:
+- 光伏剩余馈网(PL-TG-BN):光伏优先供载,然后馈网,电池不充电不放电
+- 光伏剩余充电(PL-TC-BN):光伏优先供载,剩余充电;电池不放电
+- 光伏优先供载(PL-TC-BY):光伏优先供载,剩余充电;光伏不足以供载时,由电池提供
+- 光伏优先供载1(PL-TG-BY):光伏优先供载,剩余馈网;光伏不足以供载时,由电池提供
+- 光伏优先充电(PC-TL-BN):光伏优先用于充电,剩余供载,电池不放电
+- 固定功率充电(PC-GC-BN):使用固定功率充电,光伏优先充电,不足部分电网补充;光伏有余电供载,然后馈网;电池不放电(参数:充电功率)
+- 电池优先供载(PG-BY):电池优先供载,到达预留电量时,不充电不放电(光伏全部馈网)
+- 固定功率放电(PL-PG-BY):电池使用固定功率放电(光伏先供载,多余馈网)
+- 电池比例供载(PL-GL-BY):电池按照负载的比例供电(参数:比例)
+
+字符标识说明:
+- P:光伏 L:负载 T:光伏剩余的电量 G:馈网 B:电池 C:充电 N:电池不放电 Y:电池可以放电
+- 基础标识分成三个字段,例如:PL-TG-BN,表示光伏优先供载,然后馈网,电池不放电
+
 ### 调度优先级配置说明
 
 调度配置中,包含两个调度优先级的配置,**光伏供电优先级(solar_priority)**和**负载取电优先级(load_priority)**。
@@ -213,17 +232,189 @@ $$ P_{apower-dsch} = \min(\verb|discharge_power|, P_{apower-dsch-max}) $$
 
 #### 优先级组合说明
 
-:::info
-以下优先级配置组合代表所有可配置的情景,不在此列表中的配置均不支持。
+**优先级配置表**
+<ClientOnly>
+  <NormalTable :config="[
+    {
+      title: '光伏供电优先级',
+      key: 'PvPriority',
+      children: [
+        {
+          title: 'Grid',
+          align: 'center',
+          vertical: true
+        },
+        {
+          title: 'Load',
+          align: 'center',
+          vertical: true
+        },
+        {
+          title: 'aPower',
+          align: 'center',
+          vertical: true
+        }
+      ]
+    },
+    {
+      title: '负载取电优先级',
+      key: 'LoadPriority',
+      children: [
+        {
+          title: 'Grid',
+          align: 'center',
+          vertical: true
+        },
+        {
+          title: 'PV',
+          align: 'center',
+          vertical: true
+        },
+        {
+          title: 'aPower',
+          align: 'center',
+          vertical: true
+        }
+      ]
+    },
+    '说明'
+  ]"
+  :data="[
+    {
+      'PvPriority.Grid': {
+        text: 'a',
+        rowspan: 4
+      },
+      'PvPriority.Load': {
+        text: 'z',
+        rowspan: 4
+      },
+      'PvPriority.aPower': {
+        text: 'x',
+        rowspan: 4
+      },
+      'LoadPriority.Grid': 'a',
+      'LoadPriority.PV': 'z',
+      'LoadPriority.aPower': 'x',
+      '说明': '- 光伏优先供载,不足FHP补充,再不足市电补充。\n- 光伏剩余FHP充电。'
+    },
+    {
+      'LoadPriority.Grid': 'x',
+      'LoadPriority.PV': 'z',
+      'LoadPriority.aPower': 'a',
+      '说明': '- 光伏优先供载,不足市电补充,再不足FHP(到达市电取电限额)。\n- 光伏剩余FHP充电。'
+    },
+    {
+      'LoadPriority.Grid': '=',
+      'LoadPriority.PV': 'z',
+      'LoadPriority.aPower': '=',
+      '说明': '- 光伏优先供载,不足市电补充,FHP不放电(是否不符合配置?)。\n- 光伏剩余FHP充电。'
+    },
+    {
+      'LoadPriority.Grid': 'o',
+      'LoadPriority.PV': 'o',
+      'LoadPriority.aPower': 'o',
+      '说明': '- 光伏优先供载,不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充放电。'
+    },
+    {
+      'PvPriority.Grid': {
+        text: 'o',
+        rowspan: 4
+      },
+      'PvPriority.Load': {
+        text: 'z',
+        rowspan: 4
+      },
+      'PvPriority.aPower': {
+        text: 'o',
+        rowspan: 4
+      },
+      'LoadPriority.Grid': 'a',
+      'LoadPriority.PV': 'z',
+      'LoadPriority.aPower': 'x',
+      '说明': '- 光伏优先供载,不足FHP补充,再不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充电。'
+    },
+    {
+      'LoadPriority.Grid': 'o',
+      'LoadPriority.PV': 'z',
+      'LoadPriority.aPower': 'o',
+      '说明': '- 光伏优先供载,不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充放电。'
+    },
+    {
+      'LoadPriority.Grid': 'a',
+      'LoadPriority.PV': 'x',
+      'LoadPriority.aPower': 'z',
+      '说明': '设置电网放电(为何设置电网充电?)\n- FHP优先供载,不足光伏补充,在不足市电不足。\n- 剩余光伏倒送市电。'
+    },
+    {
+      'LoadPriority.Grid': 'o',
+      'LoadPriority.PV': 'o',
+      'LoadPriority.aPower': 'z',
+      '说明': '设置电网放电(为何设置电网充电?)\n- 光伏优先供载,不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充放电。'
+    },
+    {
+      'LoadPriority.Grid': 'o',
+      'LoadPriority.PV': 'o',
+      'LoadPriority.aPower': 'o',
+      '说明': '- 光伏优先供载,不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充放电。'
+    },
+    {
+      'PvPriority.Grid': 'a',
+      'PvPriority.Load': 'x',
+      'PvPriority.aPower': 'z',
+      'LoadPriority.Grid': 'x',
+      'LoadPriority.PV': 'x',
+      'LoadPriority.aPower': 'x',
+      '说明': '设置电网充电(为何设置电网充电?)\n- 光伏优先给FHP充电,剩余供载,再剩余倒送电网。\n- 光伏无剩余,电网供载。'
+    },
+    {
+      'PvPriority.Grid': 'o',
+      'PvPriority.Load': 'o',
+      'PvPriority.aPower': 'z',
+      'LoadPriority.Grid': 'x',
+      'LoadPriority.PV': 'x',
+      'LoadPriority.aPower': 'x',
+      '说明': '设置电网充电(为何设置电网充电?)\n- 光伏优先供载,不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充放电。'
+    },
+    {
+      'PvPriority.Grid': 'o',
+      'PvPriority.Load': 'o',
+      'PvPriority.aPower': 'o',
+      'LoadPriority.Grid': 'x',
+      'LoadPriority.PV': 'x',
+      'LoadPriority.aPower': 'x',
+      '说明': '- 光伏优先供载,不足市电补充。\n- 光伏剩余倒送电网。\n- FHP不充放电。'
+    },
+  ]"
+  />
+</ClientOnly>
+
+:::info 注
+x: 代表任意数值 \
+y: 代表非0任意数值 \
+z: 代表优先级最高数值 \
+a: 代表优先级最低数值 \
+=: 代表与其他=的优先级数值相同 \
+o: 代表other,未说明的其他情况,其他优先配置 \
+null: 无意义数值,即无论是几都没有意义
+:::
+
+:::warning
+以上配置表已覆盖所有优先级配置的可能性,但有些配置执行情况可能与优先级表层逻辑相违背或不合理,但这是目前代码实际设计逻辑,待优化。。。
 :::
 
+**优先级控制逻辑图**
+
+![优先级调度逻辑图](./assets/ScriptingForSchedulingConfiguration/SchedulingLogic.svg)
+
+#### 常用优先级组合
 ##### P[1,2,0] - L[1,3,2]
 
 光伏优先级:[1,2,0],负载优先级:[1,3,2]
 
 * 光伏优先供载,剩余倒送电网
 * 光伏供载不足,由aPower支持,再不足市电支持
-* aPower不会充电
+* aPower不充电
 
 ```mermaid
 ---
@@ -234,51 +425,296 @@ config:
 sankey-beta
 
 %% source,target,value
-Electricity grid imports,Home loads,10
-Electricity grid imports,aPower charge,0
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
 PV,Home loads,60
-PV,aPower charge,0
-PV,Electricity grid exports,20
-aPower discharge,Home loads,30
-aPower discharge,Electricity grid exports,0
+PV,Surplus,20
+Surplus,Electricity grid exports,20
+aPower discharge,Priority supplement,30
+Priority supplement,Home loads,30
+Electricity grid imports,Supplement,10
+Supplement,Home loads,10
 ```
 
 ##### P[1,2,0] - L[1,2,3]
 
 光伏优先级:[1,2,0],负载优先级:[1,2,3]
 
+* aPower优先供载,光伏能量倒送电网
+* aPower供载不足,由光伏支持,再不足市电支持
+* aPower不充电
+
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,Priority supplement,40
+Priority supplement,Home loads,40
+PV,Surplus,60
+Surplus,Electricity grid exports,60
+aPower discharge,Home loads,100
+Electricity grid imports,Supplement,10
+Supplement,Home loads,10
+```
+
 ##### P[1,2,0] - L[1,2,0]
 
 光伏优先级:[1,2,0],负载优先级:[1,2,0]
 
-##### P[1,2,0] - L[1,2,1]
+* 光伏优先供载,剩余倒送电网
+* 光伏供载不足,由市电支持
+* aPower待机
 
-光伏优先级:[1,2,0],负载优先级:[1,2,1]
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,Home loads,60
+PV,Surplus,20
+Surplus,Electricity grid exports,20
+Electricity grid imports,Supplement,20
+Supplement,Home loads,20
+```
+
+##### P[1,2,0] - L[1,3,1]
+
+光伏优先级:[1,2,0],负载优先级:[1,3,1] ??? 这里能写成[1,2,1]吗?
+
+* 光伏优先供载,剩余倒送电网
+* 光伏供载不足,由市电和aPower按1:1支持
+* aPower不充电
+
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,Home loads,60
+PV,Surplus,20
+Surplus,Electricity grid exports,20
+aPower discharge,Supplement,15
+Electricity grid imports,Supplement,15
+Supplement,Home loads,30
+```
 
 ##### P[1,3,2] - L[1,2,0]
 
 光伏优先级:[1,3,2],负载优先级:[1,2,0]
 
+* 光伏优先供载,剩余给aPower充电,再剩余倒送电网
+* 光伏供载不足,由市电支持
+* aPower不放电
+
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,Home loads,60
+PV,Surplus,20
+PV,More surplus,10
+Surplus,aPower charge,20
+More surplus,Electricity grid exports,10
+Electricity grid imports,Supplement,30
+Supplement,Home loads,30
+```
+
 ##### P[1,3,2] - L[1,3,2]
 
 光伏优先级:[1,3,2],负载优先级:[1,3,2]
 
+* 光伏优先供载,剩余给aPower充电,再剩余倒送电网
+* 光伏供载不足,由aPower支持,再不足由市电支持
+
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,Home loads,60
+PV,Surplus,20
+PV,More surplus,10
+Surplus,aPower charge,20
+More surplus,Electricity grid exports,10
+aPower discharge,Priority supplement,30
+Priority supplement,Home loads,30
+Electricity grid imports,Supplement,10
+Supplement,Home loads,10
+```
+
 ##### P[1,3,2] - L[2,3,1]
 
 光伏优先级:[1,3,2],负载优先级:[2,3,1]
 
+* 光伏优先供载,剩余给aPower充电,再剩余倒送电网
+* 光伏供载不足,由市电支持,再不足由aPower支持(可能是限制市电取电功率等情况,如诶限制则等同于L[1,2,0])
+
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,Home loads,60
+PV,Surplus,20
+PV,More surplus,10
+Surplus,aPower charge,20
+More surplus,Electricity grid exports,10
+Electricity grid imports,Priority supplement,30
+Priority supplement,Home loads,30
+aPower discharge,Supplement,10
+Supplement,Home loads,10
+```
+
 ##### P[1,2,3] - L[1,2,0]
 
 光伏优先级:[1,2,3],负载优先级:[1,2,0]
 
+* 光伏优先给aPower充电,剩余供载,再剩余倒送电网
+* 光伏供载不足,由支持市电
+* aPower不放电
+
+```mermaid
+---
+config:
+  sankey: 
+    showValues: false
+---
+sankey-beta
+
+%% source,target,value
+%% 剩余 -> Surplus
+%% 更多剩余 -> More surplus
+%% 优先补充 -> Priority supplement
+%% 补充 -> Supplement
+
+PV,aPower charge,60
+PV,Surplus,20
+PV,More surplus,10
+Surplus,Home loads,20
+More surplus,Electricity grid exports,10
+Electricity grid imports,Supplement,30
+Supplement,Home loads,30
+```
+
 ##### P[1,2,2] - L[1,2,2]
 
 光伏优先级:[1,2,2],负载优先级:[1,2,2]
 
+???这是什么样的场景?
+
 ## 常规调度配置
 
 常规调度配置,只提供时间段策略的JSON配置。
 
 ### 自发自用
 
+标准自发自用模版使用[P\[1,3,2\] - L\[1,3,2\]](#p-1-3-2-l-1-3-2)优先级组合配置。
+
+```JSON
+// Time period schedule
+{
+  start_time: "xx:xx",
+  end_time: "xx:xx",
+  flag: x,
+  name: "xx-peak",
+  describe: "Self-consumption",
+  solar_priority: [1,3,2],
+  load_priority: [1,3,2],
+  ...
+}
+```
+
 ### 仅备电
+
+标准仅备电模版通过设置不限制电网充电和设置aPower固定采用最大功率充电,实现仅备电调度,强制给aPower充满,且持续保持aPower处于满电状态。
+
+```JSON
+// Time period schedule
+{
+  start_time: "xx:xx",
+  end_time: "xx:xx",
+  flag: x,
+  name: "xx-peak",
+  describe: "Emergency backup",
+  grid_charge_max: -1, // 设置不限制电网充电
+  charge_power: 8000, // 8Kw,当前单台aPower最大充电功率
+  ...
+}
+```
+
+### 强制aPower放电
+
+强制aPower放电模版通过设置不限制aPower倒送电网和设置aPower固定采用最大功率放电,实现电池馈网调度(赚钱馈网收益),强制给aPower放电至用户设定的预留SOC。
+
+```JSON
+// Time period schedule
+{
+  start_time: "xx:xx",
+  end_time: "xx:xx",
+  flag: x,
+  name: "xx-peak",
+  describe: "Emergency backup",
+  grid_discharge_max: -1, // 设置不限制aPower馈网
+  discharge_power: 10000, // 10Kw,当前单台aPower最大放电功率
+  ...
+}
+```

+ 1187 - 0
docs/Software/assets/EnergyStatistics/aGate1.0_1.1_GenCtrlPartial.excalidraw

@@ -0,0 +1,1187 @@
+{
+  "type": "excalidraw",
+  "version": 2,
+  "source": "https://excalidraw.com",
+  "elements": [
+    {
+      "id": "JMf6ZwHGRxgDF6mEavGoy",
+      "type": "rectangle",
+      "x": 541.7222496886317,
+      "y": -18.120011669356984,
+      "width": 496.88890245225696,
+      "height": 440.8889092339409,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0p",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1842959779,
+      "version": 61,
+      "versionNonce": 1301032141,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "AnRPNblwPuL4F-s8Tqnj8"
+        }
+      ],
+      "updated": 1749088534205,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "AnRPNblwPuL4F-s8Tqnj8",
+      "type": "text",
+      "x": 714.016752794643,
+      "y": -13.120011669356984,
+      "width": 152.29989624023438,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0pV",
+      "roundness": null,
+      "seed": 1251069037,
+      "version": 51,
+      "versionNonce": 240067971,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102060000,
+      "link": null,
+      "locked": false,
+      "text": "Gen Ctrl partial",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "JMf6ZwHGRxgDF6mEavGoy",
+      "originalText": "Gen Ctrl partial",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "WyugzqCzYpkBhP7uCb__U",
+      "type": "line",
+      "x": 1164.833415053215,
+      "y": 113.43557101293473,
+      "width": 432.0000542534723,
+      "height": 1.7777506510416856,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0t",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 467243149,
+      "version": 106,
+      "versionNonce": 233417325,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088551287,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -432.0000542534723,
+          -1.7777506510416856
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "-6GMMQPXL_2264scPBixP",
+      "type": "line",
+      "x": 675.9444583474858,
+      "y": 109.88003580243125,
+      "width": 260.4444376627604,
+      "height": 0.8888753255208712,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0u",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1501811917,
+      "version": 88,
+      "versionNonce": 1435553731,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749093233626,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -260.4444376627604,
+          -0.8888753255208712
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "OGClmmmL1FCiJBCFs-GgJ",
+      "type": "line",
+      "x": 677.7222089985275,
+      "y": 109.88003580243125,
+      "width": 46.2222629123263,
+      "height": 24.88886515299481,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0v",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 951563117,
+      "version": 25,
+      "versionNonce": 1113385315,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088565770,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          46.2222629123263,
+          -24.88886515299481
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "vBHYll7NzJ7xU8Q6WvdDN",
+      "type": "text",
+      "x": 667.277737427347,
+      "y": 52.54668721030883,
+      "width": 90.0599365234375,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0z",
+      "roundness": null,
+      "seed": 1270859437,
+      "version": 63,
+      "versionNonce": 566510349,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102041151,
+      "link": null,
+      "locked": false,
+      "text": "Gen relay",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "left",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Gen relay",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "RAFXz3CyUjUGXjp9IwRRs",
+      "type": "line",
+      "x": 705.2778188075553,
+      "y": 98.32448702855973,
+      "width": 0.8888753255208712,
+      "height": 36.44443088107636,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b10",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1292417539,
+      "version": 22,
+      "versionNonce": 495870413,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088617348,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          0.8888753255208712,
+          36.44443088107636
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "DTBTlsFvS-Cw7ra_bv8z3",
+      "type": "rectangle",
+      "x": 688.3889163552983,
+      "y": 137.43557779461875,
+      "width": 35.55555555555554,
+      "height": 15.999993218315979,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b11",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1782613283,
+      "version": 27,
+      "versionNonce": 61791597,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088624803,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "gutPGtkEVkrcVTi_6jhr3",
+      "type": "ellipse",
+      "x": 795.055583021965,
+      "y": 106.32446668350761,
+      "width": 8.8888888888888,
+      "height": 8.888888888888914,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b15",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1795890285,
+      "version": 26,
+      "versionNonce": 474209101,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088708935,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "B0iUaaHrfKkkT30fqZjgL",
+      "type": "ellipse",
+      "x": 903.5000003396733,
+      "y": 101.88002223906321,
+      "width": 17.77777777777783,
+      "height": 21.333346896701357,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b16",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1564054435,
+      "version": 23,
+      "versionNonce": 50359853,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088728035,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "tpj-mJt33rJPT5Q-IsTDy",
+      "type": "text",
+      "x": 626.8332658561663,
+      "y": 201.93559813967073,
+      "width": 69.66392517089844,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b17",
+      "roundness": null,
+      "seed": 2083062669,
+      "version": 156,
+      "versionNonce": 1425598189,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102189350,
+      "link": null,
+      "locked": false,
+      "text": "relay ctrl",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "left",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "relay ctrl",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "nZ0v6xMUxm7Cu8NUv7_fU",
+      "type": "line",
+      "x": 802.1666534429719,
+      "y": 117.88001545737913,
+      "width": 1.7734199527883854,
+      "height": 181.3333129880444,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b18",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1760397763,
+      "version": 125,
+      "versionNonce": 375145101,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102145818,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -0.5649841530920161,
+          106.14632955397724
+        ],
+        [
+          -1.7734199527883854,
+          181.3333129880444
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "Tg-8ONkTnqA2fzawqlLmR",
+      "type": "text",
+      "x": 806.6662982522708,
+      "y": 187.82440564835133,
+      "width": 57.13594055175781,
+      "height": 60,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b19",
+      "roundness": null,
+      "seed": 827597869,
+      "version": 438,
+      "versionNonce": 1364783779,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102149617,
+      "link": null,
+      "locked": false,
+      "text": "power\n&\nvoltage",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "power\n&\nvoltage",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "2gotP7B6p6mHVq4K8f-v6",
+      "type": "line",
+      "x": 913.2777645540831,
+      "y": 128.5466889057299,
+      "width": 1.7778184678818434,
+      "height": 170.66667344835068,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1A",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 103671139,
+      "version": 142,
+      "versionNonce": 485367501,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102163167,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          1.7778184678818434,
+          170.66667344835068
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "Q3kCcf2-klIpG0CYsgl4q",
+      "type": "text",
+      "x": 875.9877865267393,
+      "y": 78.93563543893296,
+      "width": 74.5799560546875,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1B",
+      "roundness": null,
+      "seed": 1767092429,
+      "version": 57,
+      "versionNonce": 435255715,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102048949,
+      "link": null,
+      "locked": false,
+      "text": "Gen CT",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Gen CT",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "tFv3__IrPgZ12GdhW5Jvw",
+      "type": "text",
+      "x": 918.168480259107,
+      "y": 202.38000189401112,
+      "width": 55.55195617675781,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1C",
+      "roundness": null,
+      "seed": 1393655021,
+      "version": 80,
+      "versionNonce": 1479874125,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102166500,
+      "link": null,
+      "locked": false,
+      "text": "current",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "current",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "nJYguqwZU9fHjBDNbHd5g",
+      "type": "rectangle",
+      "x": 551.4999969488315,
+      "y": 298.32441921171926,
+      "width": 481.7778184678819,
+      "height": 117.33337402343753,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1D",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 3848771,
+      "version": 325,
+      "versionNonce": 1956416195,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "OfO8n33q-M4Tur42qE-SS"
+        }
+      ],
+      "updated": 1749102172996,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "OfO8n33q-M4Tur42qE-SS",
+      "type": "text",
+      "x": 775.6289116759365,
+      "y": 346.991106223438,
+      "width": 33.519989013671875,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1E",
+      "roundness": null,
+      "seed": 1344360045,
+      "version": 250,
+      "versionNonce": 425244397,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102172996,
+      "link": null,
+      "locked": false,
+      "text": "EMS",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "nJYguqwZU9fHjBDNbHd5g",
+      "originalText": "EMS",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "GD5oxBz1vSzoxUtvMA-G8",
+      "type": "rectangle",
+      "x": 1167.9445126009582,
+      "y": 71.46331488229234,
+      "width": 121,
+      "height": 80,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1R",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 2047792685,
+      "version": 222,
+      "versionNonce": 1568411693,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "y_Yh2x99cZx2_ghvSv77u",
+      "type": "rectangle",
+      "x": 1163.9445126009582,
+      "y": 152.46331488229234,
+      "width": 128,
+      "height": 13,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1S",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 663586957,
+      "version": 288,
+      "versionNonce": 1564705421,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "0FrkHOrlxCAM8xraNYT2S",
+      "type": "rectangle",
+      "x": 1182.9445126009582,
+      "y": 93.46331488229234,
+      "width": 35,
+      "height": 43,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1T",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1799810797,
+      "version": 203,
+      "versionNonce": 741189869,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "g3ANkmq7FDUXEn6vDiXJS",
+      "type": "line",
+      "x": 1206.6556686225335,
+      "y": 115.14950314820973,
+      "width": 20.96582407769565,
+      "height": 31.545007306275117,
+      "angle": 0,
+      "strokeColor": "#000",
+      "backgroundColor": "#ff00",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "8oJvrN5BowCn3EGMn6jnU"
+      ],
+      "seed": 331647309,
+      "version": 1028,
+      "versionNonce": 1002701645,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          3.8266896363502756,
+          -4.495535539415729
+        ],
+        [
+          -6.523740307649444,
+          -7.099835732189148
+        ],
+        [
+          -4.940052282859354,
+          -15.458691919054852
+        ],
+        [
+          -17.139134441345377,
+          -2.3859528962241803
+        ],
+        [
+          -9.003242999093644,
+          -0.21577089436751182
+        ],
+        [
+          -13.368501070636167,
+          16.086315387220267
+        ],
+        [
+          -3.642735264157652,
+          4.561339750972302
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b1U",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "xBwQBG8stlMAdv3aLtJuH",
+      "type": "line",
+      "x": 1202.8190451526648,
+      "y": 112.8249823871133,
+      "width": 1.5570763555064515,
+      "height": 2.7249486827974203,
+      "angle": 0,
+      "strokeColor": "#3d71b7",
+      "backgroundColor": "#ff00",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "8oJvrN5BowCn3EGMn6jnU"
+      ],
+      "seed": 1650448301,
+      "version": 667,
+      "versionNonce": 274731437,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -1.5570763555064515,
+          2.7249486827974203
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b1V",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "shyzvY63bg3sCHY51LcyF",
+      "type": "line",
+      "x": 1233.9445126009582,
+      "y": 88.46331488229234,
+      "width": 38,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1W",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 826432013,
+      "version": 431,
+      "versionNonce": 1730892813,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          38,
+          1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "7pzt75UxplliHR2m0AYNw",
+      "type": "line",
+      "x": 1234.9445126009582,
+      "y": 101.46331488229234,
+      "width": 36,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1X",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1499828333,
+      "version": 192,
+      "versionNonce": 471812717,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          36,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "RTprl4PGI6tpFTKgeawas",
+      "type": "line",
+      "x": 1233.9445126009582,
+      "y": 112.46331488229234,
+      "width": 36,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1Y",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1486027469,
+      "version": 181,
+      "versionNonce": 1342534861,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          36,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "NBfIekyaP6m4zj_C1VGKg",
+      "type": "line",
+      "x": 1235.9445126009582,
+      "y": 125.46331488229234,
+      "width": 34,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1Z",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 929306925,
+      "version": 185,
+      "versionNonce": 1316442925,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          34,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "pTSMhRXovX5sK29BZNktL",
+      "type": "text",
+      "x": 1182.014550442755,
+      "y": 165.96331488229234,
+      "width": 97.85992431640625,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1a",
+      "roundness": null,
+      "seed": 792882061,
+      "version": 466,
+      "versionNonce": 870213005,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749102013151,
+      "link": null,
+      "locked": false,
+      "text": "Generator",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Generator",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "mnHTgVAHvjIYRf5qyzkvH",
+      "type": "line",
+      "x": 704.3888756651942,
+      "y": 153.43555405872468,
+      "width": 1.777818467881957,
+      "height": 143.1111314561632,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1b",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1013276163,
+      "version": 67,
+      "versionNonce": 614562925,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749102187090,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          1.777818467881957,
+          143.1111314561632
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    }
+  ],
+  "appState": {
+    "gridSize": 20,
+    "gridStep": 5,
+    "gridModeEnabled": false,
+    "viewBackgroundColor": "#ffffff",
+    "lockedMultiSelections": {}
+  },
+  "files": {}
+}

+ 1264 - 0
docs/Software/assets/EnergyStatistics/aGate1.0_1.1_GridMeterPartial.excalidraw

@@ -0,0 +1,1264 @@
+{
+  "type": "excalidraw",
+  "version": 2,
+  "source": "https://excalidraw.com",
+  "elements": [
+    {
+      "id": "zi42LDy10Ab1BdeXTrkGi",
+      "type": "line",
+      "x": 1200.3333604600693,
+      "y": 60.22223578559036,
+      "width": 21,
+      "height": 81,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aG",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1382873974,
+      "version": 140,
+      "versionNonce": 1330017261,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749088541536,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -21,
+          81
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "5wFOPOfOXb2xGPhjDsaxs",
+      "type": "line",
+      "x": 1201.3333604600693,
+      "y": 60.22223578559036,
+      "width": 24,
+      "height": 84,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aH",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 510787818,
+      "version": 158,
+      "versionNonce": 931884621,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749088541536,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          24,
+          84
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "CKfs8QHl-fVHjdEYWccgQ",
+      "type": "line",
+      "x": 1179.3333604600693,
+      "y": 88.22223578559036,
+      "width": 47,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aI",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1452025450,
+      "version": 118,
+      "versionNonce": 369237165,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749088541536,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          47,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "zNQ9A_7HmddRe7lEd_w_8",
+      "type": "line",
+      "x": 1188.3333604600693,
+      "y": 59.22223578559036,
+      "width": 35,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aJ",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 369030518,
+      "version": 114,
+      "versionNonce": 575930125,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749088541536,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          35,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "2i4ifSy_71WRf_AJ5ggYo",
+      "type": "line",
+      "x": 1168.3333604600693,
+      "y": 113.22223578559036,
+      "width": 68,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aK",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1575695478,
+      "version": 126,
+      "versionNonce": 1660589421,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749088541536,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          68,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "LjYGW-2Avxlk_S59cwY-m",
+      "type": "text",
+      "x": 1182.7233827379014,
+      "y": 30.722235785590357,
+      "width": 41.21995544433594,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aO",
+      "roundness": null,
+      "seed": 757824170,
+      "version": 222,
+      "versionNonce": 1396662221,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749088541536,
+      "link": null,
+      "locked": false,
+      "text": "Grid",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Grid",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "JMf6ZwHGRxgDF6mEavGoy",
+      "type": "rectangle",
+      "x": 541.7222496886317,
+      "y": -18.120011669356984,
+      "width": 496.88890245225696,
+      "height": 440.8889092339409,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0p",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1842959779,
+      "version": 61,
+      "versionNonce": 1301032141,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "AnRPNblwPuL4F-s8Tqnj8"
+        }
+      ],
+      "updated": 1749088534205,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "AnRPNblwPuL4F-s8Tqnj8",
+      "type": "text",
+      "x": 703.0067659172016,
+      "y": -13.120011669356984,
+      "width": 174.3198699951172,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0pV",
+      "roundness": null,
+      "seed": 1251069037,
+      "version": 37,
+      "versionNonce": 1516702509,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088534205,
+      "link": null,
+      "locked": false,
+      "text": "Grid meter partial",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "JMf6ZwHGRxgDF6mEavGoy",
+      "originalText": "Grid meter partial",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "Qmm_R66oL881A7ITuxkra",
+      "type": "rectangle",
+      "x": 895.499918959465,
+      "y": 295.657793235157,
+      "width": 136.0000271267362,
+      "height": 117.33337402343739,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0r",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 836882595,
+      "version": 58,
+      "versionNonce": 1578444771,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "qNvsIsqYz0gwxBg6N_NhN"
+        },
+        {
+          "id": "kqQKrk2zgYjo9CpIPaTJ1",
+          "type": "arrow"
+        },
+        {
+          "id": "6AQi5w040cau6uhC-iVKa",
+          "type": "arrow"
+        }
+      ],
+      "updated": 1749089071235,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "qNvsIsqYz0gwxBg6N_NhN",
+      "type": "text",
+      "x": 916.3099605990051,
+      "y": 329.3244802468757,
+      "width": 94.37994384765625,
+      "height": 50,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0s",
+      "roundness": null,
+      "seed": 5445453,
+      "version": 36,
+      "versionNonce": 1475247203,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088495304,
+      "link": null,
+      "locked": false,
+      "text": "Meter\nController",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "Qmm_R66oL881A7ITuxkra",
+      "originalText": "Meter\nController",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "WyugzqCzYpkBhP7uCb__U",
+      "type": "line",
+      "x": 1164.833415053215,
+      "y": 113.43557101293473,
+      "width": 432.0000542534723,
+      "height": 1.7777506510416856,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0t",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 467243149,
+      "version": 106,
+      "versionNonce": 233417325,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088551287,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -432.0000542534723,
+          -1.7777506510416856
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "-6GMMQPXL_2264scPBixP",
+      "type": "line",
+      "x": 675.9444583474858,
+      "y": 109.88003580243125,
+      "width": 175.11111789279505,
+      "height": 0.8888753255208144,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0u",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1501811917,
+      "version": 43,
+      "versionNonce": 1502696099,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088556038,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -175.11111789279505,
+          0.8888753255208144
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "OGClmmmL1FCiJBCFs-GgJ",
+      "type": "line",
+      "x": 677.7222089985275,
+      "y": 109.88003580243125,
+      "width": 46.2222629123263,
+      "height": 24.88886515299481,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0v",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 951563117,
+      "version": 25,
+      "versionNonce": 1113385315,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088565770,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          46.2222629123263,
+          -24.88886515299481
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "vBHYll7NzJ7xU8Q6WvdDN",
+      "type": "text",
+      "x": 667.277737427347,
+      "y": 52.54668721030883,
+      "width": 94.419921875,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0z",
+      "roundness": null,
+      "seed": 1270859437,
+      "version": 52,
+      "versionNonce": 1160859331,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088605986,
+      "link": null,
+      "locked": false,
+      "text": "Grid relay",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "left",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Grid relay",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "RAFXz3CyUjUGXjp9IwRRs",
+      "type": "line",
+      "x": 705.2778188075553,
+      "y": 98.32448702855973,
+      "width": 0.8888753255208712,
+      "height": 36.44443088107636,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b10",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1292417539,
+      "version": 22,
+      "versionNonce": 495870413,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088617348,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          0.8888753255208712,
+          36.44443088107636
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "DTBTlsFvS-Cw7ra_bv8z3",
+      "type": "rectangle",
+      "x": 688.3889163552983,
+      "y": 137.43557779461875,
+      "width": 35.55555555555554,
+      "height": 15.999993218315979,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b11",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1782613283,
+      "version": 27,
+      "versionNonce": 61791597,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088624803,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "TzYyNRazVuvKaHXYuNBFf",
+      "type": "line",
+      "x": 705.2778188075553,
+      "y": 154.3244802468757,
+      "width": 240.88890923394098,
+      "height": 176.88886854383682,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b13",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 52147907,
+      "version": 278,
+      "versionNonce": 533850317,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749090579825,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -70.22223578559021,
+          123.55556911892361
+        ],
+        [
+          -240.88890923394098,
+          176.88886854383682
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "gutPGtkEVkrcVTi_6jhr3",
+      "type": "ellipse",
+      "x": 795.055583021965,
+      "y": 106.32446668350761,
+      "width": 8.8888888888888,
+      "height": 8.888888888888914,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b15",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1795890285,
+      "version": 26,
+      "versionNonce": 474209101,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088708935,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "B0iUaaHrfKkkT30fqZjgL",
+      "type": "ellipse",
+      "x": 903.5000003396733,
+      "y": 101.88002223906321,
+      "width": 17.77777777777783,
+      "height": 21.333346896701357,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b16",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1564054435,
+      "version": 23,
+      "versionNonce": 50359853,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088728035,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "tpj-mJt33rJPT5Q-IsTDy",
+      "type": "text",
+      "x": 606.3888621018261,
+      "y": 256.1578067985249,
+      "width": 69.66392517089844,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b17",
+      "roundness": null,
+      "seed": 2083062669,
+      "version": 129,
+      "versionNonce": 681518669,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749090583175,
+      "link": null,
+      "locked": false,
+      "text": "relay ctrl",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "left",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "relay ctrl",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "nZ0v6xMUxm7Cu8NUv7_fU",
+      "type": "line",
+      "x": 802.1666534429719,
+      "y": 117.88001545737913,
+      "width": 100.44447157118066,
+      "height": 182.2222222222222,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b18",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1760397763,
+      "version": 60,
+      "versionNonce": 272732483,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088775108,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          32.000054253472285,
+          106.66666666666669
+        ],
+        [
+          100.44447157118066,
+          182.2222222222222
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "Tg-8ONkTnqA2fzawqlLmR",
+      "type": "text",
+      "x": 838.6662846889028,
+      "y": 234.04663465225758,
+      "width": 57.13594055175781,
+      "height": 60,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b19",
+      "roundness": null,
+      "seed": 827597869,
+      "version": 412,
+      "versionNonce": 542626339,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088864501,
+      "link": null,
+      "locked": false,
+      "text": "power\n&\nvoltage",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "power\n&\nvoltage",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "2gotP7B6p6mHVq4K8f-v6",
+      "type": "line",
+      "x": 917.7222089985275,
+      "y": 121.43558457630277,
+      "width": 55.111151801215215,
+      "height": 171.55554877387155,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1A",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 103671139,
+      "version": 55,
+      "versionNonce": 1904543341,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088875268,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          55.111151801215215,
+          171.55554877387155
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "Q3kCcf2-klIpG0CYsgl4q",
+      "type": "text",
+      "x": 898.4177715731261,
+      "y": 78.93563543893296,
+      "width": 29.719985961914062,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1B",
+      "roundness": null,
+      "seed": 1767092429,
+      "version": 53,
+      "versionNonce": 1374494275,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088888834,
+      "link": null,
+      "locked": false,
+      "text": "CT",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "CT",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "tFv3__IrPgZ12GdhW5Jvw",
+      "type": "text",
+      "x": 937.7240086879265,
+      "y": 249.49114013185834,
+      "width": 55.55195617675781,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1C",
+      "roundness": null,
+      "seed": 1393655021,
+      "version": 62,
+      "versionNonce": 314143459,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088920151,
+      "link": null,
+      "locked": false,
+      "text": "current",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "current",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "nJYguqwZU9fHjBDNbHd5g",
+      "type": "rectangle",
+      "x": 262.6110911057324,
+      "y": 193.43553710451445,
+      "width": 195.55555555555554,
+      "height": 220.44447157118051,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1D",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 3848771,
+      "version": 126,
+      "versionNonce": 914914115,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "OfO8n33q-M4Tur42qE-SS"
+        },
+        {
+          "id": "kqQKrk2zgYjo9CpIPaTJ1",
+          "type": "arrow"
+        },
+        {
+          "id": "6AQi5w040cau6uhC-iVKa",
+          "type": "arrow"
+        }
+      ],
+      "updated": 1749089096633,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "OfO8n33q-M4Tur42qE-SS",
+      "type": "text",
+      "x": 343.6288743766742,
+      "y": 293.6577728901047,
+      "width": 33.519989013671875,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1E",
+      "roundness": null,
+      "seed": 1344360045,
+      "version": 53,
+      "versionNonce": 1056840419,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749089096633,
+      "link": null,
+      "locked": false,
+      "text": "EMS",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "nJYguqwZU9fHjBDNbHd5g",
+      "originalText": "EMS",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "_mtq7fvyltJ0oe7akXgc1",
+      "type": "text",
+      "x": 657.3078209776942,
+      "y": 347.38013752769155,
+      "width": 63.93994140625,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1G",
+      "roundness": null,
+      "seed": 2084249229,
+      "version": 132,
+      "versionNonce": 836987043,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749089076785,
+      "link": null,
+      "locked": false,
+      "text": "RS485",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "RS485",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "kqQKrk2zgYjo9CpIPaTJ1",
+      "type": "arrow",
+      "x": 894.0145499756543,
+      "y": 393.9169534309764,
+      "width": 430.128721351191,
+      "height": 2.451402091340128,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1I",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 144619747,
+      "version": 144,
+      "versionNonce": 470499779,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749089096983,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -430.128721351191,
+          -2.451402091340128
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": {
+        "elementId": "Qmm_R66oL881A7ITuxkra",
+        "focus": -0.677139679232587,
+        "gap": 2.8940303853809235
+      },
+      "endBinding": {
+        "elementId": "nJYguqwZU9fHjBDNbHd5g",
+        "focus": 0.7871867169314786,
+        "gap": 8.69294029695917
+      },
+      "startArrowhead": null,
+      "endArrowhead": "arrow",
+      "elbowed": false
+    },
+    {
+      "id": "6AQi5w040cau6uhC-iVKa",
+      "type": "arrow",
+      "x": 459.3477423609175,
+      "y": 371.256217783768,
+      "width": 435.3957646102253,
+      "height": 3.7579971973733564,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1J",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 701104365,
+      "version": 139,
+      "versionNonce": 627315043,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749089096983,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          435.3957646102253,
+          3.7579971973733564
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": {
+        "elementId": "nJYguqwZU9fHjBDNbHd5g",
+        "focus": 0.6007403183223794,
+        "gap": 1.777784559461793
+      },
+      "endBinding": {
+        "elementId": "Qmm_R66oL881A7ITuxkra",
+        "focus": -0.3591604606687336,
+        "gap": 1
+      },
+      "startArrowhead": null,
+      "endArrowhead": "arrow",
+      "elbowed": false
+    }
+  ],
+  "appState": {
+    "gridSize": 20,
+    "gridStep": 5,
+    "gridModeEnabled": false,
+    "viewBackgroundColor": "#ffffff",
+    "lockedMultiSelections": {}
+  },
+  "files": {}
+}

+ 1352 - 0
docs/Software/assets/EnergyStatistics/aGate1.0_1.1_PVMeterPartial.excalidraw

@@ -0,0 +1,1352 @@
+{
+  "type": "excalidraw",
+  "version": 2,
+  "source": "https://excalidraw.com",
+  "elements": [
+    {
+      "id": "LjYGW-2Avxlk_S59cwY-m",
+      "type": "text",
+      "x": 398.433380126953,
+      "y": -29.72220187717008,
+      "width": 25.79998779296875,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aO",
+      "roundness": null,
+      "seed": 757824170,
+      "version": 307,
+      "versionNonce": 960417379,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749093238959,
+      "link": null,
+      "locked": false,
+      "text": "PV",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "PV",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "JMf6ZwHGRxgDF6mEavGoy",
+      "type": "rectangle",
+      "x": 541.7222496886317,
+      "y": -18.120011669356984,
+      "width": 496.88890245225696,
+      "height": 440.8889092339409,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0p",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1842959779,
+      "version": 61,
+      "versionNonce": 1301032141,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "AnRPNblwPuL4F-s8Tqnj8"
+        }
+      ],
+      "updated": 1749088534205,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "AnRPNblwPuL4F-s8Tqnj8",
+      "type": "text",
+      "x": 710.7167497428852,
+      "y": -13.120011669356984,
+      "width": 158.89990234375,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0pV",
+      "roundness": null,
+      "seed": 1251069037,
+      "version": 43,
+      "versionNonce": 929076995,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749093245615,
+      "link": null,
+      "locked": false,
+      "text": "PV meter partial",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "JMf6ZwHGRxgDF6mEavGoy",
+      "originalText": "PV meter partial",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "Qmm_R66oL881A7ITuxkra",
+      "type": "rectangle",
+      "x": 895.499918959465,
+      "y": 295.657793235157,
+      "width": 136.0000271267362,
+      "height": 117.33337402343739,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0r",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 836882595,
+      "version": 58,
+      "versionNonce": 1578444771,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "qNvsIsqYz0gwxBg6N_NhN"
+        },
+        {
+          "id": "kqQKrk2zgYjo9CpIPaTJ1",
+          "type": "arrow"
+        },
+        {
+          "id": "6AQi5w040cau6uhC-iVKa",
+          "type": "arrow"
+        }
+      ],
+      "updated": 1749089071235,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "qNvsIsqYz0gwxBg6N_NhN",
+      "type": "text",
+      "x": 916.3099605990051,
+      "y": 329.3244802468757,
+      "width": 94.37994384765625,
+      "height": 50,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0s",
+      "roundness": null,
+      "seed": 5445453,
+      "version": 36,
+      "versionNonce": 1475247203,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088495304,
+      "link": null,
+      "locked": false,
+      "text": "Meter\nController",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "Qmm_R66oL881A7ITuxkra",
+      "originalText": "Meter\nController",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "WyugzqCzYpkBhP7uCb__U",
+      "type": "line",
+      "x": 1164.833415053215,
+      "y": 113.43557101293473,
+      "width": 432.0000542534723,
+      "height": 1.7777506510416856,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0t",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 467243149,
+      "version": 106,
+      "versionNonce": 233417325,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088551287,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -432.0000542534723,
+          -1.7777506510416856
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "-6GMMQPXL_2264scPBixP",
+      "type": "line",
+      "x": 675.9444583474858,
+      "y": 109.88003580243125,
+      "width": 260.4444376627604,
+      "height": 0.8888753255208712,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0u",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1501811917,
+      "version": 88,
+      "versionNonce": 1435553731,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749093233626,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -260.4444376627604,
+          -0.8888753255208712
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "OGClmmmL1FCiJBCFs-GgJ",
+      "type": "line",
+      "x": 677.7222089985275,
+      "y": 109.88003580243125,
+      "width": 46.2222629123263,
+      "height": 24.88886515299481,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0v",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 951563117,
+      "version": 25,
+      "versionNonce": 1113385315,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088565770,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          46.2222629123263,
+          -24.88886515299481
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "vBHYll7NzJ7xU8Q6WvdDN",
+      "type": "text",
+      "x": 667.277737427347,
+      "y": 52.54668721030883,
+      "width": 78.99995422363281,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0z",
+      "roundness": null,
+      "seed": 1270859437,
+      "version": 58,
+      "versionNonce": 1099911597,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749093257726,
+      "link": null,
+      "locked": false,
+      "text": "PV relay",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "left",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "PV relay",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "RAFXz3CyUjUGXjp9IwRRs",
+      "type": "line",
+      "x": 705.2778188075553,
+      "y": 98.32448702855973,
+      "width": 0.8888753255208712,
+      "height": 36.44443088107636,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b10",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1292417539,
+      "version": 22,
+      "versionNonce": 495870413,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088617348,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          0.8888753255208712,
+          36.44443088107636
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "DTBTlsFvS-Cw7ra_bv8z3",
+      "type": "rectangle",
+      "x": 688.3889163552983,
+      "y": 137.43557779461875,
+      "width": 35.55555555555554,
+      "height": 15.999993218315979,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b11",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1782613283,
+      "version": 27,
+      "versionNonce": 61791597,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088624803,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "TzYyNRazVuvKaHXYuNBFf",
+      "type": "line",
+      "x": 705.2778188075553,
+      "y": 154.3244802468757,
+      "width": 240.88890923394098,
+      "height": 176.88886854383682,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b13",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 52147907,
+      "version": 278,
+      "versionNonce": 533850317,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749090579825,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -70.22223578559021,
+          123.55556911892361
+        ],
+        [
+          -240.88890923394098,
+          176.88886854383682
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "gutPGtkEVkrcVTi_6jhr3",
+      "type": "ellipse",
+      "x": 795.055583021965,
+      "y": 106.32446668350761,
+      "width": 8.8888888888888,
+      "height": 8.888888888888914,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b15",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1795890285,
+      "version": 26,
+      "versionNonce": 474209101,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088708935,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "B0iUaaHrfKkkT30fqZjgL",
+      "type": "ellipse",
+      "x": 903.5000003396733,
+      "y": 101.88002223906321,
+      "width": 17.77777777777783,
+      "height": 21.333346896701357,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b16",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1564054435,
+      "version": 23,
+      "versionNonce": 50359853,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088728035,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "tpj-mJt33rJPT5Q-IsTDy",
+      "type": "text",
+      "x": 606.3888621018261,
+      "y": 256.1578067985249,
+      "width": 69.66392517089844,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 4,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b17",
+      "roundness": null,
+      "seed": 2083062669,
+      "version": 129,
+      "versionNonce": 681518669,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749090583175,
+      "link": null,
+      "locked": false,
+      "text": "relay ctrl",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "left",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "relay ctrl",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "nZ0v6xMUxm7Cu8NUv7_fU",
+      "type": "line",
+      "x": 802.1666534429719,
+      "y": 117.88001545737913,
+      "width": 100.44447157118066,
+      "height": 182.2222222222222,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b18",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1760397763,
+      "version": 60,
+      "versionNonce": 272732483,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088775108,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          32.000054253472285,
+          106.66666666666669
+        ],
+        [
+          100.44447157118066,
+          182.2222222222222
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "Tg-8ONkTnqA2fzawqlLmR",
+      "type": "text",
+      "x": 838.6662846889028,
+      "y": 234.04663465225758,
+      "width": 57.13594055175781,
+      "height": 60,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b19",
+      "roundness": null,
+      "seed": 827597869,
+      "version": 412,
+      "versionNonce": 542626339,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088864501,
+      "link": null,
+      "locked": false,
+      "text": "power\n&\nvoltage",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "power\n&\nvoltage",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "2gotP7B6p6mHVq4K8f-v6",
+      "type": "line",
+      "x": 917.7222089985275,
+      "y": 121.43558457630277,
+      "width": 55.111151801215215,
+      "height": 171.55554877387155,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1A",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 103671139,
+      "version": 55,
+      "versionNonce": 1904543341,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088875268,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          55.111151801215215,
+          171.55554877387155
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "Q3kCcf2-klIpG0CYsgl4q",
+      "type": "text",
+      "x": 898.4177715731261,
+      "y": 78.93563543893296,
+      "width": 29.719985961914062,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1B",
+      "roundness": null,
+      "seed": 1767092429,
+      "version": 53,
+      "versionNonce": 1374494275,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088888834,
+      "link": null,
+      "locked": false,
+      "text": "CT",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "CT",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "tFv3__IrPgZ12GdhW5Jvw",
+      "type": "text",
+      "x": 937.7240086879265,
+      "y": 249.49114013185834,
+      "width": 55.55195617675781,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1C",
+      "roundness": null,
+      "seed": 1393655021,
+      "version": 62,
+      "versionNonce": 314143459,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749088920151,
+      "link": null,
+      "locked": false,
+      "text": "current",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "current",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "nJYguqwZU9fHjBDNbHd5g",
+      "type": "rectangle",
+      "x": 262.6110911057324,
+      "y": 193.43553710451445,
+      "width": 195.55555555555554,
+      "height": 220.44447157118051,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1D",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 3848771,
+      "version": 126,
+      "versionNonce": 914914115,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "OfO8n33q-M4Tur42qE-SS"
+        },
+        {
+          "id": "kqQKrk2zgYjo9CpIPaTJ1",
+          "type": "arrow"
+        },
+        {
+          "id": "6AQi5w040cau6uhC-iVKa",
+          "type": "arrow"
+        }
+      ],
+      "updated": 1749089096633,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "OfO8n33q-M4Tur42qE-SS",
+      "type": "text",
+      "x": 343.6288743766742,
+      "y": 293.6577728901047,
+      "width": 33.519989013671875,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1E",
+      "roundness": null,
+      "seed": 1344360045,
+      "version": 53,
+      "versionNonce": 1056840419,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749089096633,
+      "link": null,
+      "locked": false,
+      "text": "EMS",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "nJYguqwZU9fHjBDNbHd5g",
+      "originalText": "EMS",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "_mtq7fvyltJ0oe7akXgc1",
+      "type": "text",
+      "x": 657.3078209776942,
+      "y": 347.38013752769155,
+      "width": 63.93994140625,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1G",
+      "roundness": null,
+      "seed": 2084249229,
+      "version": 132,
+      "versionNonce": 836987043,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749089076785,
+      "link": null,
+      "locked": false,
+      "text": "RS485",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "RS485",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "kqQKrk2zgYjo9CpIPaTJ1",
+      "type": "arrow",
+      "x": 894.0145499756543,
+      "y": 393.9169534309764,
+      "width": 430.128721351191,
+      "height": 2.451402091340128,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1I",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 144619747,
+      "version": 144,
+      "versionNonce": 470499779,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749089096983,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -430.128721351191,
+          -2.451402091340128
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": {
+        "elementId": "Qmm_R66oL881A7ITuxkra",
+        "focus": -0.677139679232587,
+        "gap": 2.8940303853809235
+      },
+      "endBinding": {
+        "elementId": "nJYguqwZU9fHjBDNbHd5g",
+        "focus": 0.7871867169314786,
+        "gap": 8.69294029695917
+      },
+      "startArrowhead": null,
+      "endArrowhead": "arrow",
+      "elbowed": false
+    },
+    {
+      "id": "6AQi5w040cau6uhC-iVKa",
+      "type": "arrow",
+      "x": 459.3477423609175,
+      "y": 371.256217783768,
+      "width": 435.3957646102253,
+      "height": 3.7579971973733564,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dashed",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b1J",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 701104365,
+      "version": 139,
+      "versionNonce": 627315043,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749089096983,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          435.3957646102253,
+          3.7579971973733564
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": {
+        "elementId": "nJYguqwZU9fHjBDNbHd5g",
+        "focus": 0.6007403183223794,
+        "gap": 1.777784559461793
+      },
+      "endBinding": {
+        "elementId": "Qmm_R66oL881A7ITuxkra",
+        "focus": -0.3591604606687336,
+        "gap": 1
+      },
+      "startArrowhead": null,
+      "endArrowhead": "arrow",
+      "elbowed": false
+    },
+    {
+      "id": "Qkalgc2oDNnDeEi_rRO07",
+      "type": "diamond",
+      "x": 349.4604935457107,
+      "y": -17.721828516634368,
+      "width": 121.68723624442197,
+      "height": 114.94612613020695,
+      "angle": 5.4116709586624125,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "seed": 1857563533,
+      "version": 362,
+      "versionNonce": 1258787917,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749093236692,
+      "index": "b1K",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "ElK6hO-ITT2hD40P4vDfa",
+      "type": "line",
+      "x": 430.981282385435,
+      "y": -3.4366871622695143,
+      "width": 4.273638022789879,
+      "height": 80.90438877626109,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "seed": 1529164269,
+      "version": 300,
+      "versionNonce": 1930003117,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749093236692,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          4.273638022789879,
+          80.90438877626109
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b1L",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 439,
+      "versionNonce": 1971234061,
+      "isDeleted": false,
+      "id": "KRgtPEtvVMHAnA5qCV7aV",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 411.1604439693932,
+      "y": -1.1525013225026477,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 4.273638022789879,
+      "height": 107.72515153997611,
+      "seed": 350383181,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "boundElements": [],
+      "updated": 1749093236692,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          4.273638022789879,
+          107.72515153997611
+        ]
+      ],
+      "index": "b1M",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 380,
+      "versionNonce": 98597741,
+      "isDeleted": false,
+      "id": "z5lymJ3t0GZwVI2chT6DL",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 388.90805288521227,
+      "y": -0.12093352389824386,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 4.273638022789879,
+      "height": 84.14645900044648,
+      "seed": 1808358061,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "boundElements": [],
+      "updated": 1749093236692,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          4.273638022789879,
+          84.14645900044648
+        ]
+      ],
+      "index": "b1N",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "W1L2wnRInNAjs1rkpaNae",
+      "type": "line",
+      "x": 369.8240486110307,
+      "y": 42.983863774929446,
+      "width": 82.8201575450979,
+      "height": 8.399909217207497,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "seed": 2021883149,
+      "version": 318,
+      "versionNonce": 746096077,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749093236692,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          82.8201575450979,
+          -8.399909217207497
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b1O",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 369,
+      "versionNonce": 744506413,
+      "isDeleted": false,
+      "id": "0Uu2UdHm1-mkyrKuFoe3h",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 371.1503500663791,
+      "y": 64.72047095980832,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 82.8201575450979,
+      "height": 8.399909217207497,
+      "seed": 42619757,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "boundElements": [],
+      "updated": 1749093236692,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          82.8201575450979,
+          -8.399909217207497
+        ]
+      ],
+      "index": "b1P",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 420,
+      "versionNonce": 696333965,
+      "isDeleted": false,
+      "id": "fTm2V95JYUtCKI-GAW1Ms",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 368.2030134989379,
+      "y": 23.45775901563147,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 82.8201575450979,
+      "height": 8.399909217207497,
+      "seed": 640114125,
+      "groupIds": [
+        "G3FFeY0JeZ9i8KK0iz42a"
+      ],
+      "boundElements": [],
+      "updated": 1749093236692,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          82.8201575450979,
+          -8.399909217207497
+        ]
+      ],
+      "index": "b1Q",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    }
+  ],
+  "appState": {
+    "gridSize": 20,
+    "gridStep": 5,
+    "gridModeEnabled": false,
+    "viewBackgroundColor": "#ffffff",
+    "lockedMultiSelections": {}
+  },
+  "files": {}
+}

+ 4591 - 0
docs/Software/assets/EnergyStatistics/aGate1.0_1.1_SystemFrameworkDiagram.excalidraw

@@ -0,0 +1,4591 @@
+{
+  "type": "excalidraw",
+  "version": 2,
+  "source": "https://excalidraw.com",
+  "elements": [
+    {
+      "id": "Tu6AOyC27ZoEpgG22Cfr_",
+      "type": "rectangle",
+      "x": 778.9999389648438,
+      "y": 342.1999816894531,
+      "width": 249.60009765624994,
+      "height": 391.1999664306641,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "a1",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1612427498,
+      "version": 275,
+      "versionNonce": 2068194038,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "halkxnQ8NSwxvXnZVDmew"
+        }
+      ],
+      "updated": 1748419961440,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "halkxnQ8NSwxvXnZVDmew",
+      "type": "text",
+      "x": 839.0400314331055,
+      "y": 347.1999816894531,
+      "width": 129.51991271972656,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "a2",
+      "roundness": null,
+      "seed": 224316906,
+      "version": 263,
+      "versionNonce": 177254563,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749030863512,
+      "link": null,
+      "locked": false,
+      "text": "aGate 1.0/1.1",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "Tu6AOyC27ZoEpgG22Cfr_",
+      "originalText": "aGate 1.0/1.1",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "2_lgca9R9tj9By79Y2NfX",
+      "type": "diamond",
+      "x": 540.9469934136675,
+      "y": 235.2782185423847,
+      "width": 154.50597655157134,
+      "height": 145.94680606349797,
+      "angle": 5.4116709586624125,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "seed": 1007110442,
+      "version": 327,
+      "versionNonce": 1549037418,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323023516,
+      "index": "a3",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "408wVJLk9WtSUWeN3JgCT",
+      "type": "line",
+      "x": 644.4537331315189,
+      "y": 253.41602644444026,
+      "width": 5.426227404925095,
+      "height": 102.72409811392365,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "seed": 2002293738,
+      "version": 265,
+      "versionNonce": 1470558762,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323023516,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          102.72409811392365
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "a4",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 404,
+      "versionNonce": 857414890,
+      "isDeleted": false,
+      "id": "U3rmpDUASVaMyrzmWeGTP",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 619.2872646500573,
+      "y": 256.3162514367276,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 5.426227404925095,
+      "height": 136.77835286207326,
+      "seed": 934446762,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "boundElements": [],
+      "updated": 1748323023516,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          136.77835286207326
+        ]
+      ],
+      "index": "a5",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 345,
+      "versionNonce": 1278996394,
+      "isDeleted": false,
+      "id": "NQDeOl6qmKbDMocLKMjV5",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 591.0334598864827,
+      "y": 257.6260304655026,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 5.426227404925095,
+      "height": 106.84054649007366,
+      "seed": 633348458,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "boundElements": [],
+      "updated": 1748323023516,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          106.84054649007366
+        ]
+      ],
+      "index": "a6",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "bSiNfRAp6-hS0wM2LXSUL",
+      "type": "line",
+      "x": 566.8025478541456,
+      "y": 312.35608273931445,
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "seed": 483157034,
+      "version": 283,
+      "versionNonce": 389311082,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323023516,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "a7",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 334,
+      "versionNonce": 1255116074,
+      "isDeleted": false,
+      "id": "J9q28yLhALJM8CAzuOrIb",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 568.4865494625706,
+      "y": 339.95499798850153,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "seed": 1455574762,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "boundElements": [],
+      "updated": 1748323023516,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "index": "a8",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 385,
+      "versionNonce": 209213418,
+      "isDeleted": false,
+      "id": "kB6ghLcGQSksreNuuqxV-",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 564.7443236660706,
+      "y": 287.56383683750227,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "seed": 405594538,
+      "groupIds": [
+        "kDns3kbB0EMwqQ27sQw2g"
+      ],
+      "boundElements": [],
+      "updated": 1748323023516,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "index": "a9",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "ujrBPLOCUNQI5q3fJBUdR",
+      "type": "text",
+      "x": 602.8999938964844,
+      "y": 223.8000030517578,
+      "width": 25.79998779296875,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aB",
+      "roundness": null,
+      "seed": 1413470518,
+      "version": 114,
+      "versionNonce": 1827550710,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323026366,
+      "link": null,
+      "locked": false,
+      "text": "PV",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "PV",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "pYwxSGKL1SmBGqxIf9woa",
+      "type": "line",
+      "x": 625.8000183105469,
+      "y": 393.40000915527344,
+      "width": 173.20004272460938,
+      "height": 42.80000305175781,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aC",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1788269738,
+      "version": 271,
+      "versionNonce": 249285226,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323057733,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          173.20004272460938,
+          42.80000305175781
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "q6GvjpQ_9rOV1iuAxBb2h",
+      "type": "ellipse",
+      "x": 800.6000366210938,
+      "y": 414.20001220703125,
+      "width": 45,
+      "height": 49,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aD",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1212429290,
+      "version": 132,
+      "versionNonce": 1526667626,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "0MMapI3wIQ3fEzkaE2o53"
+        }
+      ],
+      "updated": 1748322928867,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "0MMapI3wIQ3fEzkaE2o53",
+      "type": "text",
+      "x": 815.5301380116816,
+      "y": 426.3758960679608,
+      "width": 15.319992065429688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aE",
+      "roundness": null,
+      "seed": 1616234666,
+      "version": 38,
+      "versionNonce": 1064066090,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748322928867,
+      "link": null,
+      "locked": false,
+      "text": "M",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "q6GvjpQ_9rOV1iuAxBb2h",
+      "originalText": "M",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "zi42LDy10Ab1BdeXTrkGi",
+      "type": "line",
+      "x": 1211,
+      "y": 270,
+      "width": 21,
+      "height": 81,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aG",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1382873974,
+      "version": 78,
+      "versionNonce": 1708920042,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323016082,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -21,
+          81
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "5wFOPOfOXb2xGPhjDsaxs",
+      "type": "line",
+      "x": 1212,
+      "y": 270,
+      "width": 24,
+      "height": 84,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aH",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 510787818,
+      "version": 96,
+      "versionNonce": 1499389866,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323016082,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          24,
+          84
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "CKfs8QHl-fVHjdEYWccgQ",
+      "type": "line",
+      "x": 1190,
+      "y": 298,
+      "width": 47,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aI",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1452025450,
+      "version": 56,
+      "versionNonce": 1652120170,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323016082,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          47,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "zNQ9A_7HmddRe7lEd_w_8",
+      "type": "line",
+      "x": 1199,
+      "y": 269,
+      "width": 35,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aJ",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 369030518,
+      "version": 52,
+      "versionNonce": 1073118506,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323016082,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          35,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "2i4ifSy_71WRf_AJ5ggYo",
+      "type": "line",
+      "x": 1179,
+      "y": 323,
+      "width": 68,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aK",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1575695478,
+      "version": 64,
+      "versionNonce": 524371946,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323016082,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          68,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "UWk9NTbn2Hq-XBF8FQlQM",
+      "type": "ellipse",
+      "x": 961.5,
+      "y": 416.5,
+      "width": 45,
+      "height": 49,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aL",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1260726314,
+      "version": 165,
+      "versionNonce": 1411192170,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "2klRQm9eU1El0iqh5newi"
+        }
+      ],
+      "updated": 1748322996900,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "2klRQm9eU1El0iqh5newi",
+      "type": "text",
+      "x": 976.4301013905879,
+      "y": 428.67588386092956,
+      "width": 15.319992065429688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aM",
+      "roundness": null,
+      "seed": 1164088042,
+      "version": 72,
+      "versionNonce": 1533728810,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748322996900,
+      "link": null,
+      "locked": false,
+      "text": "M",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "UWk9NTbn2Hq-XBF8FQlQM",
+      "originalText": "M",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "KMrHsmnO7OZcFf7VX28g0",
+      "type": "line",
+      "x": 1210,
+      "y": 358,
+      "width": 200,
+      "height": 82,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aN",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1891521962,
+      "version": 85,
+      "versionNonce": 1712138678,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323052384,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -200,
+          82
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "LjYGW-2Avxlk_S59cwY-m",
+      "type": "text",
+      "x": 1193.390022277832,
+      "y": 240.5,
+      "width": 41.21995544433594,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aO",
+      "roundness": null,
+      "seed": 757824170,
+      "version": 160,
+      "versionNonce": 2068535658,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323046050,
+      "link": null,
+      "locked": false,
+      "text": "Grid",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Grid",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "_xH4W2GWTbhVCLZF_fgKd",
+      "type": "rectangle",
+      "x": 514.199951171875,
+      "y": 840.400016784668,
+      "width": 94.60009765625004,
+      "height": 131.19996643066406,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aP",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1260367094,
+      "version": 675,
+      "versionNonce": 1107421418,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "l8dmRBnm2LFZLd0FJWnIr"
+        }
+      ],
+      "updated": 1748323736498,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "l8dmRBnm2LFZLd0FJWnIr",
+      "type": "text",
+      "x": 526.6400299072266,
+      "y": 893.5,
+      "width": 69.71994018554688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aQ",
+      "roundness": null,
+      "seed": 399154742,
+      "version": 621,
+      "versionNonce": 1818835882,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323736498,
+      "link": null,
+      "locked": false,
+      "text": "aPower",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "_xH4W2GWTbhVCLZF_fgKd",
+      "originalText": "aPower",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "d9yUubP6IG41F3eUY0OC_",
+      "type": "line",
+      "x": 847,
+      "y": 441,
+      "width": 114,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aR",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1915170230,
+      "version": 46,
+      "versionNonce": 894773878,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323124633,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          114,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "tvAMO_TrdaLNDCT6PlbRO",
+      "type": "line",
+      "x": 906,
+      "y": 441,
+      "width": 0,
+      "height": 360,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aS",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1730269866,
+      "version": 125,
+      "versionNonce": 970874922,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323139133,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          0,
+          360
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "xVH9XDWCN2rY1A6vFyKCU",
+      "type": "rectangle",
+      "x": 1161,
+      "y": 563,
+      "width": 121,
+      "height": 80,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aV",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 35929834,
+      "version": 170,
+      "versionNonce": 555155190,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "SBf-_a_L58g0Ze3rSZ0Hr",
+      "type": "rectangle",
+      "x": 1157,
+      "y": 644,
+      "width": 128,
+      "height": 13,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aW",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 127518966,
+      "version": 236,
+      "versionNonce": 386379830,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "wdCyKwVp934b-5QH6gSxP",
+      "type": "rectangle",
+      "x": 1176,
+      "y": 585,
+      "width": 35,
+      "height": 43,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aX",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 1698943082,
+      "version": 151,
+      "versionNonce": 105920886,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "aqyqu_tIvMYLukDobtJ6I",
+      "type": "line",
+      "x": 1199.7111560215753,
+      "y": 606.6861882659174,
+      "width": 20.96582407769565,
+      "height": 31.545007306275117,
+      "angle": 0,
+      "strokeColor": "#000",
+      "backgroundColor": "#ff00",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "L_SJehplRTI--OaP4ZaHu"
+      ],
+      "seed": 623965802,
+      "version": 976,
+      "versionNonce": 641047222,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          3.8266896363502756,
+          -4.495535539415729
+        ],
+        [
+          -6.523740307649444,
+          -7.099835732189148
+        ],
+        [
+          -4.940052282859354,
+          -15.458691919054852
+        ],
+        [
+          -17.139134441345377,
+          -2.3859528962241803
+        ],
+        [
+          -9.003242999093644,
+          -0.21577089436751182
+        ],
+        [
+          -13.368501070636167,
+          16.086315387220267
+        ],
+        [
+          -3.642735264157652,
+          4.561339750972302
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "aY",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "KEJrBi4c8sMDwfMAJJy-H",
+      "type": "line",
+      "x": 1195.8745325517066,
+      "y": 604.361667504821,
+      "width": 1.5570763555064515,
+      "height": 2.7249486827974203,
+      "angle": 0,
+      "strokeColor": "#3d71b7",
+      "backgroundColor": "#ff00",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "L_SJehplRTI--OaP4ZaHu"
+      ],
+      "seed": 22714666,
+      "version": 615,
+      "versionNonce": 2103235574,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -1.5570763555064515,
+          2.7249486827974203
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "aZ",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "JpE2At_i5MoUah94yVh1u",
+      "type": "line",
+      "x": 1227,
+      "y": 580,
+      "width": 38,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aa",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 60461110,
+      "version": 379,
+      "versionNonce": 1976231222,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          38,
+          1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "l5DEEqEewmdszLXSX_Jnl",
+      "type": "line",
+      "x": 1228,
+      "y": 593,
+      "width": 36,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ab",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1343279862,
+      "version": 140,
+      "versionNonce": 1894043254,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          36,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "AeDWG4CpxcGGzroZrcKId",
+      "type": "line",
+      "x": 1227,
+      "y": 604,
+      "width": 36,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ac",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1060396522,
+      "version": 129,
+      "versionNonce": 1534037942,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          36,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "XBhXpsDhqtcVF66ZFDOHD",
+      "type": "line",
+      "x": 1229,
+      "y": 617,
+      "width": 34,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ad",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 38422186,
+      "version": 133,
+      "versionNonce": 1099966710,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          34,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "SUs01mJ44LzXUX6DREovM",
+      "type": "text",
+      "x": 1175.0700378417969,
+      "y": 657.5,
+      "width": 97.85992431640625,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ae",
+      "roundness": null,
+      "seed": 690326454,
+      "version": 414,
+      "versionNonce": 1657510454,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419973021,
+      "link": null,
+      "locked": false,
+      "text": "Generator",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Generator",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "9h3O1C5t1N4Vi0yKOTkqg",
+      "type": "line",
+      "x": 1161,
+      "y": 605,
+      "width": 254,
+      "height": 3,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "af",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 726793270,
+      "version": 239,
+      "versionNonce": 1003487146,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419958455,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -254,
+          3
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "tqhDJKr9hD0hsKsRD34xc",
+      "type": "ellipse",
+      "x": 985.912885221154,
+      "y": 596,
+      "width": 11,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ag",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1512669930,
+      "version": 111,
+      "versionNonce": 1693887885,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031148219,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "vsF6AR44TL8PhTKYuDt2o",
+      "type": "text",
+      "x": 961.1680145263672,
+      "y": 627,
+      "width": 46.54396057128906,
+      "height": 18.4,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ah",
+      "roundness": null,
+      "seed": 755608438,
+      "version": 289,
+      "versionNonce": 879956739,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031222023,
+      "link": null,
+      "locked": false,
+      "text": "Gen CT",
+      "fontSize": 16,
+      "fontFamily": 7,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Gen CT",
+      "autoResize": true,
+      "lineHeight": 1.15
+    },
+    {
+      "id": "Sh98MQWEQ-O3NxHTmXYZB",
+      "type": "rectangle",
+      "x": 624.699951171875,
+      "y": 839.400016784668,
+      "width": 94.60009765625004,
+      "height": 131.19996643066406,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ai",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 970486710,
+      "version": 724,
+      "versionNonce": 1540896362,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "qU1xW7-40N4CBBRZL8E_m"
+        }
+      ],
+      "updated": 1748323736498,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "qU1xW7-40N4CBBRZL8E_m",
+      "type": "text",
+      "x": 637.1400299072266,
+      "y": 892.5,
+      "width": 69.71994018554688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aj",
+      "roundness": null,
+      "seed": 691834102,
+      "version": 670,
+      "versionNonce": 1629083946,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323736498,
+      "link": null,
+      "locked": false,
+      "text": "aPower",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "Sh98MQWEQ-O3NxHTmXYZB",
+      "originalText": "aPower",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "j9baEXZf99hsVUCnOHw4r",
+      "type": "rectangle",
+      "x": 732.699951171875,
+      "y": 840.400016784668,
+      "width": 94.60009765625004,
+      "height": 131.19996643066406,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ak",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 2113624618,
+      "version": 752,
+      "versionNonce": 2073633770,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "4_jSdlOE4ZFW9BNQNl3pi"
+        }
+      ],
+      "updated": 1748323736498,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "4_jSdlOE4ZFW9BNQNl3pi",
+      "type": "text",
+      "x": 745.1400299072266,
+      "y": 893.5,
+      "width": 69.71994018554688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "al",
+      "roundness": null,
+      "seed": 1654818026,
+      "version": 698,
+      "versionNonce": 90248874,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323736498,
+      "link": null,
+      "locked": false,
+      "text": "aPower",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "j9baEXZf99hsVUCnOHw4r",
+      "originalText": "aPower",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "8nYKCknREd_DXBO-EIArk",
+      "type": "line",
+      "x": 904,
+      "y": 690,
+      "width": 231,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "am",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 2034930230,
+      "version": 291,
+      "versionNonce": 280411446,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323807783,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -231,
+          1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "WG_YmdiVbxAWom3ac1qnB",
+      "type": "line",
+      "x": 557,
+      "y": 790,
+      "width": 222,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "an",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1199554678,
+      "version": 169,
+      "versionNonce": 425682218,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323775448,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          222,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "doQ3FsCn9XwZh0NxJByIc",
+      "type": "line",
+      "x": 781,
+      "y": 793,
+      "width": 0,
+      "height": 45,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ao",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 122099126,
+      "version": 125,
+      "versionNonce": 714844266,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323761729,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          0,
+          45
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "rcCGlLn6Nd_lXylxBBA09",
+      "type": "line",
+      "x": 674,
+      "y": 692,
+      "width": 2,
+      "height": 147,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ap",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1836257130,
+      "version": 139,
+      "versionNonce": 1474288298,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323811364,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -2,
+          147
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "VnRuvela0JDr-RIY57MRp",
+      "type": "line",
+      "x": 556.9977671569621,
+      "y": 792.5345249035327,
+      "width": 0,
+      "height": 45,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aq",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 27792874,
+      "version": 170,
+      "versionNonce": 1196850038,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323767361,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          0,
+          45
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "lUkepIQIH21s03MyHG1Zt",
+      "type": "rectangle",
+      "x": 1009.199951171875,
+      "y": 761.400016784668,
+      "width": 173.6000976562501,
+      "height": 218.1999664306641,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ar",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 389503158,
+      "version": 472,
+      "versionNonce": 455094454,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "lUbaTfXlBGzxedChjA5jd"
+        }
+      ],
+      "updated": 1748323867148,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "lUbaTfXlBGzxedChjA5jd",
+      "type": "text",
+      "x": 1032.190055847168,
+      "y": 766.400016784668,
+      "width": 127.61988830566406,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "as",
+      "roundness": null,
+      "seed": 594989558,
+      "version": 425,
+      "versionNonce": 1686415862,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323867148,
+      "link": null,
+      "locked": false,
+      "text": "Backup Panel",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "lUkepIQIH21s03MyHG1Zt",
+      "originalText": "Backup Panel",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "F0tebq8lJ4Aavm94vysCF",
+      "type": "line",
+      "x": 906,
+      "y": 802,
+      "width": 186,
+      "height": 1,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "at",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1255420150,
+      "version": 55,
+      "versionNonce": 125789098,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323859615,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          186,
+          -1
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "gAvD6zSoH2918TucD90L0",
+      "type": "line",
+      "x": 1093,
+      "y": 801,
+      "width": 1,
+      "height": 144,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "au",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 76489846,
+      "version": 58,
+      "versionNonce": 1162991798,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323874881,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          1,
+          144
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "RjJJSFIXjn9rKu8JbpXCL",
+      "type": "line",
+      "x": 1092,
+      "y": 833,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "av",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 313356394,
+      "version": 18,
+      "versionNonce": 1093830954,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323883048,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "3QjyB3CcZr2eHBUTa_Y-r",
+      "type": "line",
+      "x": 1139.2882402056057,
+      "y": 832.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "aw",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 347947574,
+      "version": 45,
+      "versionNonce": 1400664298,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323889432,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "3fStORuyp4nW0sXBfMsMV",
+      "type": "line",
+      "x": 1093.2882402056057,
+      "y": 861.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ax",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 642825834,
+      "version": 35,
+      "versionNonce": 489322486,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323893581,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "fSgmeAR570R0p8NAc-NGB",
+      "type": "line",
+      "x": 1139.2882402056057,
+      "y": 860.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "ay",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 748253814,
+      "version": 47,
+      "versionNonce": 1852246570,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323898948,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "1pF0VC7KMeDhj7xkqGQIV",
+      "type": "line",
+      "x": 1092.2882402056057,
+      "y": 887.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "az",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 332793770,
+      "version": 38,
+      "versionNonce": 1356164726,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323903465,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "lCtLE0AeFycBJAK50paH5",
+      "type": "line",
+      "x": 1138.2882402056057,
+      "y": 887.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b00",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 366528758,
+      "version": 39,
+      "versionNonce": 714151338,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323907515,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "bPTP6e7F5nsd21NqqpyRm",
+      "type": "line",
+      "x": 1092.2882402056057,
+      "y": 915.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b01",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1184052010,
+      "version": 39,
+      "versionNonce": 136170550,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323911414,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "d1WW5xvkElYmssQoYRa6H",
+      "type": "line",
+      "x": 1139.2882402056057,
+      "y": 915.2043172813497,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b02",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1702147766,
+      "version": 40,
+      "versionNonce": 1550450346,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323915114,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "GodgclDzm8RZalFdmhDES",
+      "type": "line",
+      "x": 905,
+      "y": 532,
+      "width": 185,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b03",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1827984246,
+      "version": 65,
+      "versionNonce": 586456810,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323934714,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -185,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "kkSZeKpvosUggZvLd3G1D",
+      "type": "line",
+      "x": 905,
+      "y": 564,
+      "width": 185,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b04",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1234514346,
+      "version": 57,
+      "versionNonce": 68905206,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323941682,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -185,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "WpCfVQ4o556HDImmYIhmv",
+      "type": "line",
+      "x": 905,
+      "y": 592,
+      "width": 188,
+      "height": 3,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b05",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 837737014,
+      "version": 57,
+      "versionNonce": 364637366,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323950948,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -188,
+          3
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "StlAsfv8fjbgDMdcFQ7T_",
+      "type": "ellipse",
+      "x": 683,
+      "y": 503,
+      "width": 67,
+      "height": 120,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "dotted",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b06",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1704533098,
+      "version": 44,
+      "versionNonce": 265370666,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323961014,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "RYWV5U89xYNy8hNP-Ondt",
+      "type": "text",
+      "x": 631.6700592041016,
+      "y": 630.5,
+      "width": 138.65988159179688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b07",
+      "roundness": null,
+      "seed": 1514861674,
+      "version": 263,
+      "versionNonce": 553226294,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748323992514,
+      "link": null,
+      "locked": false,
+      "text": "Smart Circuits",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Smart Circuits",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "6NlESrHz9q9nEKrLzVG-r",
+      "type": "rectangle",
+      "x": 1309.1873011040734,
+      "y": 423.1000099182129,
+      "width": 173.6000976562501,
+      "height": 242.19996643066403,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b08",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 963889386,
+      "version": 957,
+      "versionNonce": 1902811830,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "6YikMKxylfhVnCEDG3TmD"
+        }
+      ],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "6YikMKxylfhVnCEDG3TmD",
+      "type": "text",
+      "x": 1339.7073969292687,
+      "y": 428.1000099182129,
+      "width": 112.55990600585938,
+      "height": 50,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b09",
+      "roundness": null,
+      "seed": 1520376746,
+      "version": 914,
+      "versionNonce": 435278838,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "text": "Non-Backup\nPanel",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "6NlESrHz9q9nEKrLzVG-r",
+      "originalText": "Non-Backup Panel",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "-DQP_AOqNphl8xJsL6-aY",
+      "type": "line",
+      "x": 1392.9873499321984,
+      "y": 486.6999931335449,
+      "width": 1,
+      "height": 144,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0A",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1213339242,
+      "version": 493,
+      "versionNonce": 935322934,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          1,
+          144
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "jS3wcW_wypcFNJUTzMOE0",
+      "type": "line",
+      "x": 1391.9873499321984,
+      "y": 518.6999931335449,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0B",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1666693418,
+      "version": 453,
+      "versionNonce": 741985910,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "LpmJ93Qgto6M_h4opz6b3",
+      "type": "line",
+      "x": 1439.275590137804,
+      "y": 517.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0C",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 991626218,
+      "version": 480,
+      "versionNonce": 1680117686,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "htWeq_jAFXgYSz_z2NKyE",
+      "type": "line",
+      "x": 1393.275590137804,
+      "y": 546.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0D",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 967243434,
+      "version": 470,
+      "versionNonce": 1805986038,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "H5Up2RXseKAawCrHqaVGO",
+      "type": "line",
+      "x": 1439.275590137804,
+      "y": 545.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0E",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1336316266,
+      "version": 482,
+      "versionNonce": 37788214,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "p0HcMdcBLcwTex_6rodHb",
+      "type": "line",
+      "x": 1392.275590137804,
+      "y": 572.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0F",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 543478826,
+      "version": 473,
+      "versionNonce": 786162550,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "2afGoNAw2Ug1qnqp4v_Ij",
+      "type": "line",
+      "x": 1438.275590137804,
+      "y": 572.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0G",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 768392938,
+      "version": 474,
+      "versionNonce": 1404830902,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "7cXUUSJb0fHOl0UYPFggk",
+      "type": "line",
+      "x": 1392.275590137804,
+      "y": 600.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0H",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 74011050,
+      "version": 474,
+      "versionNonce": 1116077558,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "gaUaoREwydqYbGPFXB1Rv",
+      "type": "line",
+      "x": 1439.275590137804,
+      "y": 600.9043104148946,
+      "width": 43,
+      "height": 0,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0I",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1734708330,
+      "version": 475,
+      "versionNonce": 1346293558,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -43,
+          0
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "-B0VF-hxPrfhGkHYGML29",
+      "type": "line",
+      "x": 1390.9873499321984,
+      "y": 486.1999931335449,
+      "width": 447,
+      "height": 5,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0J",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 2089578282,
+      "version": 283,
+      "versionNonce": 1766553718,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -447,
+          5
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "1D5oUA2IK3caOLmvYVwdq",
+      "type": "line",
+      "x": 943.9873499321984,
+      "y": 489.1999931335449,
+      "width": 1,
+      "height": 47,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0K",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 2018048490,
+      "version": 240,
+      "versionNonce": 628160950,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          1,
+          -47
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "uDw1_mgtEU2YmsPz95Nmo",
+      "type": "arrow",
+      "x": 1066.9873499321984,
+      "y": 463.1999931335449,
+      "width": 38,
+      "height": 23,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0L",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1235627178,
+      "version": 240,
+      "versionNonce": 1540641526,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -38,
+          23
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": "arrow",
+      "elbowed": false
+    },
+    {
+      "id": "UkA-KTt38tZHPtfps1GOD",
+      "type": "text",
+      "x": 1047.7073969292687,
+      "y": 443.1999931335449,
+      "width": 130.55990600585938,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0M",
+      "roundness": null,
+      "seed": 1179584362,
+      "version": 250,
+      "versionNonce": 922387510,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1748419984104,
+      "link": null,
+      "locked": false,
+      "text": "Non-Backup port",
+      "fontSize": 16,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Non-Backup port",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "xEhilfu5TZBdZIefbl7Au",
+      "type": "text",
+      "x": 941.7867549207898,
+      "y": 397.5431213104007,
+      "width": 73.07191467285156,
+      "height": 18.4,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0N",
+      "roundness": null,
+      "seed": 745285357,
+      "version": 329,
+      "versionNonce": 1499250829,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031202939,
+      "link": null,
+      "locked": false,
+      "text": "Grid meter",
+      "fontSize": 16,
+      "fontFamily": 7,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "Grid meter",
+      "autoResize": true,
+      "lineHeight": 1.15
+    },
+    {
+      "id": "hL4QYB94nrXX7FQbz6uuo",
+      "type": "text",
+      "x": 788.1670486421067,
+      "y": 395.179397381537,
+      "width": 62.527923583984375,
+      "height": 18.4,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0O",
+      "roundness": null,
+      "seed": 540339661,
+      "version": 355,
+      "versionNonce": 1790036077,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031216106,
+      "link": null,
+      "locked": false,
+      "text": "PV meter",
+      "fontSize": 16,
+      "fontFamily": 7,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "PV meter",
+      "autoResize": true,
+      "lineHeight": 1.15
+    },
+    {
+      "id": "LAN_3kU4GMZ5JfNJYlqWE",
+      "type": "diamond",
+      "x": 1316.7767317984988,
+      "y": 709.8939967373609,
+      "width": 154.50597655157134,
+      "height": 145.94680606349797,
+      "angle": 5.4116709586624125,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "seed": 72285443,
+      "version": 394,
+      "versionNonce": 1608301347,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749030903058,
+      "index": "b0P",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "fjHEsgMS6H8iab0xGestH",
+      "type": "line",
+      "x": 1420.2834715163501,
+      "y": 728.0318046394165,
+      "width": 5.426227404925095,
+      "height": 102.72409811392365,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "seed": 470705315,
+      "version": 332,
+      "versionNonce": 1467965123,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749030903058,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          102.72409811392365
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b0Q",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 471,
+      "versionNonce": 1984728675,
+      "isDeleted": false,
+      "id": "hguUsDu2wXk65TpIvazGo",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 1395.1170030348883,
+      "y": 730.9320296317038,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 5.426227404925095,
+      "height": 136.77835286207326,
+      "seed": 1119868995,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "boundElements": [],
+      "updated": 1749030903058,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          136.77835286207326
+        ]
+      ],
+      "index": "b0R",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 412,
+      "versionNonce": 252889603,
+      "isDeleted": false,
+      "id": "KqWSVHC_zLrzmpJJhxqhS",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 1366.8631982713139,
+      "y": 732.2418086604788,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 5.426227404925095,
+      "height": 106.84054649007366,
+      "seed": 1715591139,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "boundElements": [],
+      "updated": 1749030903058,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          106.84054649007366
+        ]
+      ],
+      "index": "b0S",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "lr4KSulldiaGgyEsOtsLM",
+      "type": "line",
+      "x": 1342.6322862389768,
+      "y": 786.9718609342906,
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "seed": 883090307,
+      "version": 350,
+      "versionNonce": 382767523,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749030903058,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b0T",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 401,
+      "versionNonce": 1588880707,
+      "isDeleted": false,
+      "id": "bwcmOHf4qBTAjLU3WfEmM",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 1344.3162878474016,
+      "y": 814.5707761834776,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "seed": 371292963,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "boundElements": [],
+      "updated": 1749030903058,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "index": "b0U",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 452,
+      "versionNonce": 236766435,
+      "isDeleted": false,
+      "id": "2AzFV_K4MWjWa7_Qalamw",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 1340.5740620509016,
+      "y": 762.1796150324785,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "seed": 1730944707,
+      "groupIds": [
+        "lqjSQ5CUKWdyDikNmMLmt"
+      ],
+      "boundElements": [],
+      "updated": 1749030903058,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "index": "b0V",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "_JgdmxlYeuJIUeSDj8KXo",
+      "type": "text",
+      "x": 1378.7297322813154,
+      "y": 698.415781246734,
+      "width": 25.79998779296875,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0W",
+      "roundness": null,
+      "seed": 1918979683,
+      "version": 181,
+      "versionNonce": 1553477763,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749030903058,
+      "link": null,
+      "locked": false,
+      "text": "PV",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "PV",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "65v-qhitDZU7YVoFXJEoB",
+      "type": "rectangle",
+      "x": 1226.227011188193,
+      "y": 834.3141133552564,
+      "width": 94.60009765625004,
+      "height": 131.19996643066406,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0X",
+      "roundness": {
+        "type": 3
+      },
+      "seed": 183916291,
+      "version": 822,
+      "versionNonce": 1859881293,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "U0I4oUOxifb6ufMGrNE3N"
+        }
+      ],
+      "updated": 1749031047790,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "U0I4oUOxifb6ufMGrNE3N",
+      "type": "text",
+      "x": 1243.527075275107,
+      "y": 839.3141133552564,
+      "width": 59.999969482421875,
+      "height": 50,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0Y",
+      "roundness": null,
+      "seed": 1220181667,
+      "version": 782,
+      "versionNonce": 1117181869,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031047790,
+      "link": null,
+      "locked": false,
+      "text": "aPbox\n1.0",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": "65v-qhitDZU7YVoFXJEoB",
+      "originalText": "aPbox 1.0",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "u0loMmzSDBrilU3ALmq15",
+      "type": "line",
+      "x": 1401.332941140873,
+      "y": 867.9627655868056,
+      "width": 102.24474668885046,
+      "height": 49.29656807777815,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0Z",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1796024141,
+      "version": 162,
+      "versionNonce": 1567337261,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749031056423,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          -102.24474668885046,
+          49.29656807777815
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "RUnf11XVbiOc0D6eBvDhp",
+      "type": "line",
+      "x": 1139.330843046329,
+      "y": 916.3462743217349,
+      "width": 112.2866234189014,
+      "height": 0.00017412169472663663,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0a",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 2115660333,
+      "version": 100,
+      "versionNonce": 326272717,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749031052473,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          112.2866234189014,
+          0.00017412169472663663
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "RICy2wDPB9rdKxt6O0538",
+      "type": "ellipse",
+      "x": 1251.9398755887942,
+      "y": 891.8464136190908,
+      "width": 45,
+      "height": 49,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0b",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 678050477,
+      "version": 224,
+      "versionNonce": 1922652685,
+      "isDeleted": false,
+      "boundElements": [
+        {
+          "type": "text",
+          "id": "Orfec10OANBmFl1TQhnWV"
+        }
+      ],
+      "updated": 1749031047790,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "Orfec10OANBmFl1TQhnWV",
+      "type": "text",
+      "x": 1266.869976979382,
+      "y": 904.0222974800204,
+      "width": 15.319992065429688,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0c",
+      "roundness": null,
+      "seed": 772300045,
+      "version": 130,
+      "versionNonce": 1474072685,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031047790,
+      "link": null,
+      "locked": false,
+      "text": "M",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "middle",
+      "containerId": "RICy2wDPB9rdKxt6O0538",
+      "originalText": "M",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "5GdtuuuhPm73aPgAowdZ-",
+      "type": "diamond",
+      "x": 905.9721835468218,
+      "y": 123.81276972565922,
+      "width": 154.50597655157134,
+      "height": 145.94680606349797,
+      "angle": 5.4116709586624125,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "seed": 1830230403,
+      "version": 402,
+      "versionNonce": 1935044515,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031133174,
+      "index": "b0d",
+      "frameId": null,
+      "roundness": null,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "PVa0HOtZmtETc_xKPg5_z",
+      "type": "line",
+      "x": 1009.4789232646732,
+      "y": 141.95057762771478,
+      "width": 5.426227404925095,
+      "height": 102.72409811392365,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "seed": 1587474723,
+      "version": 340,
+      "versionNonce": 718177091,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031133174,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          102.72409811392365
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b0e",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 479,
+      "versionNonce": 1296245475,
+      "isDeleted": false,
+      "id": "Xm6XOPNa8clBoRo-DZUod",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 984.3124547832116,
+      "y": 144.85080262000213,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 5.426227404925095,
+      "height": 136.77835286207326,
+      "seed": 1821037763,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "boundElements": [],
+      "updated": 1749031133174,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          136.77835286207326
+        ]
+      ],
+      "index": "b0f",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 420,
+      "versionNonce": 1665322627,
+      "isDeleted": false,
+      "id": "8KdJrLJRzaR9OFH1Vkyei",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 956.058650019637,
+      "y": 146.1605816487771,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 5.426227404925095,
+      "height": 106.84054649007366,
+      "seed": 108610659,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "boundElements": [],
+      "updated": 1749031133174,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          5.426227404925095,
+          106.84054649007366
+        ]
+      ],
+      "index": "b0g",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "KZnVQjLwGcuf-cSYF7KM4",
+      "type": "line",
+      "x": 931.8277379872999,
+      "y": 200.89063392258896,
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "angle": 0,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "seed": 607698947,
+      "version": 358,
+      "versionNonce": 1603012131,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031133174,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "index": "b0h",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 409,
+      "versionNonce": 1494043075,
+      "isDeleted": false,
+      "id": "7kQvwHWW5nUsy3MIXA6-E",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 933.5117395957249,
+      "y": 228.48954917177605,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "seed": 1070057379,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "boundElements": [],
+      "updated": 1749031133174,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "index": "b0i",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "type": "line",
+      "version": 460,
+      "versionNonce": 82123107,
+      "isDeleted": false,
+      "id": "sbYcA94Sab8STOrabynpN",
+      "fillStyle": "solid",
+      "strokeWidth": 1,
+      "strokeStyle": "solid",
+      "roughness": 0,
+      "opacity": 100,
+      "angle": 0,
+      "x": 929.7695137992249,
+      "y": 176.09838802077678,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "width": 105.15654488164863,
+      "height": 10.665343520024937,
+      "seed": 257219395,
+      "groupIds": [
+        "WU1w7X3QMVnfIbLccV9wz"
+      ],
+      "boundElements": [],
+      "updated": 1749031133174,
+      "startBinding": null,
+      "endBinding": null,
+      "lastCommittedPoint": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.15654488164863,
+          -10.665343520024937
+        ]
+      ],
+      "index": "b0j",
+      "frameId": null,
+      "roundness": {
+        "type": 2
+      },
+      "link": null,
+      "locked": false,
+      "polygon": false
+    },
+    {
+      "id": "rFjyqSnCDUzWbnoAOacgp",
+      "type": "text",
+      "x": 942.8751886072754,
+      "y": 112.33455423503233,
+      "width": 75.89997863769531,
+      "height": 25,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0k",
+      "roundness": null,
+      "seed": 2134801123,
+      "version": 193,
+      "versionNonce": 1659824877,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031138503,
+      "link": null,
+      "locked": false,
+      "text": "NEM PV",
+      "fontSize": 20,
+      "fontFamily": 5,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "NEM PV",
+      "autoResize": true,
+      "lineHeight": 1.25
+    },
+    {
+      "id": "E9i6IWzGLnDEV3cN1FoKM",
+      "type": "line",
+      "x": 989.6154380193641,
+      "y": 280.96854888093304,
+      "width": 105.8962875734669,
+      "height": 121.4156497521372,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0l",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 1446070691,
+      "version": 37,
+      "versionNonce": 420461773,
+      "isDeleted": false,
+      "boundElements": null,
+      "updated": 1749031145756,
+      "link": null,
+      "locked": false,
+      "points": [
+        [
+          0,
+          0
+        ],
+        [
+          105.8962875734669,
+          121.4156497521372
+        ]
+      ],
+      "lastCommittedPoint": null,
+      "startBinding": null,
+      "endBinding": null,
+      "startArrowhead": null,
+      "endArrowhead": null,
+      "polygon": false
+    },
+    {
+      "id": "pnMEnfkm3GBTQm75ptJJi",
+      "type": "ellipse",
+      "x": 1059.8860257540005,
+      "y": 358.60688826094537,
+      "width": 11,
+      "height": 20,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0m",
+      "roundness": {
+        "type": 2
+      },
+      "seed": 148252931,
+      "version": 154,
+      "versionNonce": 402845197,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031151339,
+      "link": null,
+      "locked": false
+    },
+    {
+      "id": "fNiRGnq_V9cmujJXpMXMW",
+      "type": "text",
+      "x": 1054.454747938915,
+      "y": 336.69725988551875,
+      "width": 52.783966064453125,
+      "height": 18.4,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0n",
+      "roundness": null,
+      "seed": 1998126989,
+      "version": 356,
+      "versionNonce": 695830957,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031192555,
+      "link": null,
+      "locked": false,
+      "text": "NEM CT",
+      "fontSize": 16,
+      "fontFamily": 7,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "NEM CT",
+      "autoResize": true,
+      "lineHeight": 1.15
+    },
+    {
+      "id": "edOBxDZ3TasDi3Cvg3Ycd",
+      "type": "text",
+      "x": 1243.17598344548,
+      "y": 940.9236543425376,
+      "width": 62.527923583984375,
+      "height": 18.4,
+      "angle": 0,
+      "strokeColor": "#1e1e1e",
+      "backgroundColor": "transparent",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "strokeStyle": "solid",
+      "roughness": 1,
+      "opacity": 100,
+      "groupIds": [],
+      "frameId": null,
+      "index": "b0o",
+      "roundness": null,
+      "seed": 1778615949,
+      "version": 319,
+      "versionNonce": 1297319203,
+      "isDeleted": false,
+      "boundElements": [],
+      "updated": 1749031244326,
+      "link": null,
+      "locked": false,
+      "text": "PV meter",
+      "fontSize": 16,
+      "fontFamily": 7,
+      "textAlign": "center",
+      "verticalAlign": "top",
+      "containerId": null,
+      "originalText": "PV meter",
+      "autoResize": true,
+      "lineHeight": 1.15
+    }
+  ],
+  "appState": {
+    "gridSize": 20,
+    "gridStep": 5,
+    "gridModeEnabled": false,
+    "viewBackgroundColor": "#ffffff",
+    "lockedMultiSelections": {}
+  },
+  "files": {}
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 233 - 0
docs/Software/assets/ScriptingForSchedulingConfiguration/SchedulingLogic.svg


+ 31 - 32
docs/System/assets/SystemDistribution/aGate1.0-WholeHomeBackup.excalidraw

@@ -1,7 +1,7 @@
 {
   "type": "excalidraw",
   "version": 2,
-  "source": "https://excalidraw.com",
+  "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor",
   "elements": [
     {
       "id": "Tu6AOyC27ZoEpgG22Cfr_",
@@ -566,7 +566,7 @@
       "version": 78,
       "versionNonce": 1708920042,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323016082,
       "link": null,
       "locked": false,
@@ -611,7 +611,7 @@
       "version": 96,
       "versionNonce": 1499389866,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323016082,
       "link": null,
       "locked": false,
@@ -656,7 +656,7 @@
       "version": 56,
       "versionNonce": 1652120170,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323016082,
       "link": null,
       "locked": false,
@@ -701,7 +701,7 @@
       "version": 52,
       "versionNonce": 1073118506,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323016082,
       "link": null,
       "locked": false,
@@ -746,7 +746,7 @@
       "version": 64,
       "versionNonce": 524371946,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323016082,
       "link": null,
       "locked": false,
@@ -863,7 +863,7 @@
       "version": 85,
       "versionNonce": 1712138678,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323052384,
       "link": null,
       "locked": false,
@@ -1017,7 +1017,7 @@
       "version": 46,
       "versionNonce": 894773878,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323124633,
       "link": null,
       "locked": false,
@@ -1062,7 +1062,7 @@
       "version": 125,
       "versionNonce": 970874922,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323139133,
       "link": null,
       "locked": false,
@@ -1107,7 +1107,7 @@
       "version": 57,
       "versionNonce": 170733494,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323471182,
       "link": null,
       "locked": false
@@ -1137,7 +1137,7 @@
       "version": 38,
       "versionNonce": 859404470,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323478799,
       "link": null,
       "locked": false
@@ -1167,7 +1167,7 @@
       "version": 38,
       "versionNonce": 1680825514,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323488415,
       "link": null,
       "locked": false
@@ -1178,7 +1178,7 @@
       "x": 1199.7111560215753,
       "y": 501.6861882659174,
       "width": 20.96582407769565,
-      "height": 31.54500730627512,
+      "height": 31.545007306275117,
       "angle": 0,
       "strokeColor": "#000",
       "backgroundColor": "#ff00",
@@ -1311,7 +1311,7 @@
       "version": 266,
       "versionNonce": 121469366,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323569148,
       "link": null,
       "locked": false,
@@ -1356,7 +1356,7 @@
       "version": 27,
       "versionNonce": 1981043498,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323574815,
       "link": null,
       "locked": false,
@@ -1401,7 +1401,7 @@
       "version": 16,
       "versionNonce": 703091690,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323580365,
       "link": null,
       "locked": false,
@@ -1446,7 +1446,7 @@
       "version": 20,
       "versionNonce": 4773802,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323587116,
       "link": null,
       "locked": false,
@@ -1528,7 +1528,7 @@
       "version": 80,
       "versionNonce": 92638774,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323619448,
       "link": null,
       "locked": false,
@@ -1573,7 +1573,7 @@
       "version": 24,
       "versionNonce": 2071442410,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323625698,
       "link": null,
       "locked": false
@@ -1784,7 +1784,7 @@
       "version": 291,
       "versionNonce": 280411446,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323807783,
       "link": null,
       "locked": false,
@@ -1829,7 +1829,7 @@
       "version": 169,
       "versionNonce": 425682218,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323775448,
       "link": null,
       "locked": false,
@@ -1874,7 +1874,7 @@
       "version": 125,
       "versionNonce": 714844266,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323761729,
       "link": null,
       "locked": false,
@@ -1919,7 +1919,7 @@
       "version": 139,
       "versionNonce": 1474288298,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323811364,
       "link": null,
       "locked": false,
@@ -2081,7 +2081,7 @@
       "version": 55,
       "versionNonce": 125789098,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323859615,
       "link": null,
       "locked": false,
@@ -2126,7 +2126,7 @@
       "version": 58,
       "versionNonce": 1162991798,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323874881,
       "link": null,
       "locked": false,
@@ -2171,7 +2171,7 @@
       "version": 18,
       "versionNonce": 1093830954,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323883048,
       "link": null,
       "locked": false,
@@ -2531,7 +2531,7 @@
       "version": 65,
       "versionNonce": 586456810,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323934714,
       "link": null,
       "locked": false,
@@ -2576,7 +2576,7 @@
       "version": 57,
       "versionNonce": 68905206,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323941682,
       "link": null,
       "locked": false,
@@ -2621,7 +2621,7 @@
       "version": 57,
       "versionNonce": 364637366,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323950948,
       "link": null,
       "locked": false,
@@ -2666,7 +2666,7 @@
       "version": 44,
       "versionNonce": 265370666,
       "isDeleted": false,
-      "boundElements": null,
+      "boundElements": [],
       "updated": 1748323961014,
       "link": null,
       "locked": false
@@ -2713,8 +2713,7 @@
     "gridSize": 20,
     "gridStep": 5,
     "gridModeEnabled": false,
-    "viewBackgroundColor": "#ffffff",
-    "lockedMultiSelections": {}
+    "viewBackgroundColor": "#ffffff"
   },
   "files": {}
 }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 6 - 121
docs/System/assets/SystemDistribution/aGate1.2_1.3-WholeHomeBackup+V2L.excalidraw


+ 3115 - 0
library.excalidrawlib

@@ -0,0 +1,3115 @@
+{
+  "type": "excalidrawlib",
+  "version": 2,
+  "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor",
+  "libraryItems": [
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "jToVGeTisd4X92XFZqBoP",
+          "x": 44.747101071820026,
+          "y": -0.6052414864296054,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 10.399555008158492,
+          "height": 6.800680247506359,
+          "angle": 0,
+          "seed": 1886862447,
+          "version": 324,
+          "versionNonce": 324485509,
+          "isDeleted": false,
+          "groupIds": [
+            "In8Wz9efbZ7ZHgO3pr9RQ"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              8.82386449111737,
+              0
+            ],
+            [
+              8.82386449111737,
+              0
+            ],
+            [
+              9.937878840735646,
+              0.4604980540907079
+            ],
+            [
+              10.399555008158492,
+              1.5756905170411233
+            ],
+            [
+              10.399555008158492,
+              4.72707155112337
+            ],
+            [
+              10.399555008158492,
+              4.72707155112337
+            ],
+            [
+              9.961909948398345,
+              5.986050943026572
+            ],
+            [
+              8.902647814812964,
+              6.800680247506359
+            ]
+          ],
+          "index": "a0",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "wVlAXxxvVo-U4F8t-dJ_s",
+          "x": -20.4864887379954,
+          "y": 41.93840547907189,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 12.605524136328986,
+          "height": 11.029833619287865,
+          "angle": 0,
+          "seed": 1660700161,
+          "version": 324,
+          "versionNonce": 811518181,
+          "isDeleted": false,
+          "groupIds": [
+            "6xnvDazQfHtnFHZhul2ir"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              7.8784525852056175
+            ],
+            [
+              0,
+              7.8784525852056175
+            ],
+            [
+              -0.9221727188179774,
+              10.106475273659866
+            ],
+            [
+              -3.1513810340822466,
+              11.029833619287865
+            ],
+            [
+              -9.45414310224674,
+              11.029833619287865
+            ],
+            [
+              -9.45414310224674,
+              11.029833619287865
+            ],
+            [
+              -11.683351417511009,
+              10.106475273659866
+            ],
+            [
+              -12.605524136328986,
+              7.8784525852056175
+            ],
+            [
+              -12.605524136328986,
+              0
+            ]
+          ],
+          "index": "a1",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "Locb_RBep6lma5gBtWH1V",
+          "x": 51.99527504589629,
+          "y": 40.362714962030765,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 12.605524136328986,
+          "height": 12.605524136328986,
+          "angle": 0,
+          "seed": 240375439,
+          "version": 324,
+          "versionNonce": 96363589,
+          "isDeleted": false,
+          "groupIds": [
+            "76W3rwUF5JvFZ0noub5Gg"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              9.45414310224674
+            ],
+            [
+              0,
+              9.45414310224674
+            ],
+            [
+              -0.9221742215135541,
+              11.682165790700987
+            ],
+            [
+              -3.1513810340822466,
+              12.605524136328986
+            ],
+            [
+              -9.45414310224674,
+              12.605524136328986
+            ],
+            [
+              -9.45414310224674,
+              12.605524136328986
+            ],
+            [
+              -11.683349914815432,
+              11.682165790700987
+            ],
+            [
+              -12.605524136328986,
+              9.45414310224674
+            ],
+            [
+              -12.605524136328986,
+              0
+            ]
+          ],
+          "index": "a2",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "wIZHEYHlY0TJWd4IUBgBN",
+          "x": -25.84383589485698,
+          "y": -0.6052414864296054,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 10.399558013549644,
+          "height": 6.800680247506359,
+          "angle": 0,
+          "seed": 308665825,
+          "version": 324,
+          "versionNonce": 2001965989,
+          "isDeleted": false,
+          "groupIds": [
+            "5nCoQXtN1G8xNMl-NOPS2"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -8.823867496508521,
+              0
+            ],
+            [
+              -8.823867496508521,
+              0
+            ],
+            [
+              -9.937880719105115,
+              0.4604980540907079
+            ],
+            [
+              -10.399558013549644,
+              1.5756905170411233
+            ],
+            [
+              -10.399558013549644,
+              4.72707155112337
+            ],
+            [
+              -10.399558013549644,
+              4.72707155112337
+            ],
+            [
+              -9.961909948398342,
+              5.986050943026572
+            ],
+            [
+              -8.902651947225797,
+              6.800680247506359
+            ]
+          ],
+          "index": "a3",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "qA_BAAtyES8Cb2hcQeu4H",
+          "x": -28.021440141321555,
+          "y": 10.437199748746842,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 23.386397163250336,
+          "height": 29.626133173536587,
+          "angle": 0,
+          "seed": 366488751,
+          "version": 324,
+          "versionNonce": 290182917,
+          "isDeleted": false,
+          "groupIds": [
+            "2aLBzbs1pSrdV23AC75BV"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              4.708163132681665,
+              -21.240310453811617
+            ],
+            [
+              4.708163132681665,
+              -21.240310453811617
+            ],
+            [
+              5.730096805446067,
+              -23.889535707025683
+            ],
+            [
+              7.445136791401961,
+              -26.076102029909737
+            ],
+            [
+              9.720335104791348,
+              -27.667056928619054
+            ],
+            [
+              12.422742257160651,
+              -28.529453920091203
+            ],
+            [
+              17.053698393806684,
+              -29.13333618072014
+            ],
+            [
+              23.386397163250336,
+              -29.626133173536587
+            ]
+          ],
+          "index": "a4",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "wOLdXXdyH3mEozKxyE4zt",
+          "x": 25.104537700724435,
+          "y": -19.09754398790117,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 21.81701195684908,
+          "height": 29.53789338657678,
+          "angle": 0,
+          "seed": 1955690945,
+          "version": 324,
+          "versionNonce": 2116333157,
+          "isDeleted": false,
+          "groupIds": [
+            "yGC4iqKysteiLZjFOWaay"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              0
+            ],
+            [
+              5.343561427640877,
+              0.4636462013239091
+            ],
+            [
+              9.394269699688424,
+              1.0052898165567952
+            ],
+            [
+              12.097120147252856,
+              1.8676868080289446
+            ],
+            [
+              14.373060792257137,
+              3.4586417067382578
+            ],
+            [
+              16.08824353429282,
+              5.645208029622313
+            ],
+            [
+              17.10885032686299,
+              8.294433282836378
+            ],
+            [
+              21.81701195684908,
+              29.53789338657678
+            ]
+          ],
+          "index": "a5",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "ZAkJX92bxah9o8CLtIY53",
+          "x": 51.99527504589629,
+          "y": 40.362714962030765,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 91.39004998838516,
+          "height": 6.302762068164493,
+          "angle": 0,
+          "seed": 1923923663,
+          "version": 325,
+          "versionNonce": 1017878981,
+          "isDeleted": false,
+          "groupIds": [
+            "8T4sOXXujbcZYwiYTK8Jm"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -85.08728792022065,
+              0
+            ],
+            [
+              -85.08728792022065,
+              0
+            ],
+            [
+              -87.31649623548492,
+              -0.9233583456279991
+            ],
+            [
+              -88.2386689543029,
+              -3.1513810340822466
+            ],
+            [
+              -88.2386689543029,
+              -6.302762068164493
+            ],
+            [
+              3.151381034082246,
+              -6.302762068164493
+            ],
+            [
+              3.151381034082246,
+              -3.1513810340822466
+            ],
+            [
+              3.151381034082246,
+              -3.1513810340822466
+            ],
+            [
+              2.229206812568692,
+              -0.9233583456279991
+            ],
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              0
+            ]
+          ],
+          "index": "a6",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "CJWIReS6ag0t-_3FX_BfA",
+          "x": -36.24339390840663,
+          "y": 26.181500308660645,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 91.39004998838516,
+          "height": 17.332595687452358,
+          "angle": 0,
+          "seed": 1788778913,
+          "version": 324,
+          "versionNonce": 368974117,
+          "isDeleted": false,
+          "groupIds": [
+            "I0X6vLAgFpXhCu13uw9IW"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              -7.8784525852056175
+            ],
+            [
+              0,
+              -7.8784525852056175
+            ],
+            [
+              0.5523717346288916,
+              -10.942965793389586
+            ],
+            [
+              2.3018373492254605,
+              -13.261703208418481
+            ],
+            [
+              5.386922459854547,
+              -14.938591256377364
+            ],
+            [
+              9.946152682580996,
+              -16.077562374133592
+            ],
+            [
+              16.118052506447956,
+              -16.78251894464299
+            ],
+            [
+              24.04114867454196,
+              -17.157399415555243
+            ],
+            [
+              33.853964173210585,
+              -17.306118191390784
+            ],
+            [
+              45.69502499419258,
+              -17.332595687452358
+            ],
+            [
+              57.53608581517456,
+              -17.305991964962338
+            ],
+            [
+              67.34890431923434,
+              -17.156954617664535
+            ],
+            [
+              75.27199898463276,
+              -16.78168945668465
+            ],
+            [
+              81.4439003111953,
+              -16.076378250019143
+            ],
+            [
+              86.0031267771828,
+              -14.937208776446791
+            ],
+            [
+              89.08821489320306,
+              -13.260374825528672
+            ],
+            [
+              90.83767712673456,
+              -10.942058165261255
+            ],
+            [
+              91.39004998838516,
+              -7.8784525852056175
+            ],
+            [
+              91.39004998838516,
+              -0.9832317481863133
+            ]
+          ],
+          "index": "a7",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "KeSswS9tnh4NdUYFhT1qz",
+          "x": 55.14665607997853,
+          "y": 18.303047723455023,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 18.90828620449348,
+          "height": 9.45414310224674,
+          "angle": 0,
+          "seed": 124390639,
+          "version": 324,
+          "versionNonce": 1401531525,
+          "isDeleted": false,
+          "groupIds": [
+            "nvfy8E3Op_qLjy7u_xKlK"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              9.45414310224674
+            ],
+            [
+              -18.90828620449348,
+              9.45414310224674
+            ],
+            [
+              -18.90828620449348,
+              3.1513810340822466
+            ],
+            [
+              -18.90828620449348,
+              3.1513810340822466
+            ],
+            [
+              -17.986111982979924,
+              0.9221682107312473
+            ],
+            [
+              -15.756905170411232,
+              0
+            ],
+            [
+              -6.302762068164493,
+              0
+            ]
+          ],
+          "index": "a8",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "SCfCdzZgenPO7GLhUZJxB",
+          "x": -29.94063184024214,
+          "y": 18.303047723455023,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 18.90828620449348,
+          "height": 9.45414310224674,
+          "angle": 0,
+          "seed": 96255361,
+          "version": 325,
+          "versionNonce": 889967589,
+          "isDeleted": false,
+          "groupIds": [
+            "rtWicHa0PwkYy4bfYn0ei"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              9.454143102246737,
+              0
+            ],
+            [
+              9.454143102246737,
+              0
+            ],
+            [
+              11.683351417511007,
+              0.9221682107312473
+            ],
+            [
+              12.605524136328984,
+              3.1513810340822466
+            ],
+            [
+              12.605524136328984,
+              9.45414310224674
+            ],
+            [
+              -6.302762068164492,
+              9.45414310224674
+            ],
+            [
+              -6.302762068164492,
+              0
+            ]
+          ],
+          "index": "a9",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "FmOs2nVS5v-YHSBkGyV3Z",
+          "x": -11.032345635748658,
+          "y": 27.757190825701784,
+          "strokeColor": "#263238",
+          "backgroundColor": "none",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "strokeSharpness": "sharp",
+          "roughness": 0,
+          "opacity": 100,
+          "width": 40.967953443069206,
+          "height": 9.45414310224674,
+          "angle": 0,
+          "seed": 1335400207,
+          "version": 324,
+          "versionNonce": 647106373,
+          "isDeleted": false,
+          "groupIds": [
+            "NQpwLdTW-n7QAlWoFiKL1"
+          ],
+          "boundElementIds": null,
+          "type": "line",
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              -3.1513810340822466
+            ],
+            [
+              0,
+              -3.1513810340822466
+            ],
+            [
+              0.4973261172846432,
+              -5.598628974831125
+            ],
+            [
+              1.8514351553668587,
+              -7.602707946879881
+            ],
+            [
+              3.8555171328067677,
+              -8.956816984962096
+            ],
+            [
+              6.302762068164493,
+              -9.45414310224674
+            ],
+            [
+              34.665191374904715,
+              -9.45414310224674
+            ],
+            [
+              34.665191374904715,
+              -9.45414310224674
+            ],
+            [
+              37.11243330487128,
+              -8.956816984962096
+            ],
+            [
+              39.11651828770235,
+              -7.602707946879881
+            ],
+            [
+              40.47062732578456,
+              -5.598628974831125
+            ],
+            [
+              40.967953443069206,
+              -3.1513810340822466
+            ],
+            [
+              40.967953443069206,
+              0
+            ]
+          ],
+          "index": "aA",
+          "frameId": null,
+          "roundness": null,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "link": null,
+          "locked": false,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "2VUWpN66i2wQKQCjDOB8F",
+          "type": "line",
+          "x": 22.33401268908038,
+          "y": -27.67994144547152,
+          "width": 33.518770820567866,
+          "height": 50.432068232272776,
+          "angle": 0,
+          "strokeColor": "#000",
+          "backgroundColor": "#ff00",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "mUp3q98hYZMU4AQa1oVJa"
+          ],
+          "seed": 1147616069,
+          "version": 1425,
+          "versionNonce": 913956517,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              6.117857921870189,
+              -7.187164449295308
+            ],
+            [
+              -10.429723890396982,
+              -11.35074709627549
+            ],
+            [
+              -7.89782837522431,
+              -24.714332701656176
+            ],
+            [
+              -27.40091289869768,
+              -3.8145034519434153
+            ],
+            [
+              -14.393788558473407,
+              -0.344960213881967
+            ],
+            [
+              -21.372674021331385,
+              25.717735530616604
+            ],
+            [
+              -5.823763856208082,
+              7.2923678640534915
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "index": "aF",
+          "frameId": null,
+          "roundness": null,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "Fu0GLH3dvAjh5FWGKkc1R",
+          "type": "line",
+          "x": 16.200273212168895,
+          "y": -31.39623126885761,
+          "width": 2.4893505410011114,
+          "height": 4.356467461427532,
+          "angle": 0,
+          "strokeColor": "#3d71b7",
+          "backgroundColor": "#ff00",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "mUp3q98hYZMU4AQa1oVJa"
+          ],
+          "seed": 952732325,
+          "version": 1063,
+          "versionNonce": 1265680901,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1749607234926,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -2.4893505410011114,
+              4.356467461427532
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "index": "aG",
+          "frameId": null,
+          "roundness": null,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "AljwAY-KeFipt2_r3q9yH",
+          "type": "rectangle",
+          "x": -54.176279094876236,
+          "y": 54.31330836740632,
+          "width": 128,
+          "height": 13,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aM",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 2108005317,
+          "version": 249,
+          "versionNonce": 1675050155,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1749607199409,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "uGXoFAcHhda_ogUKEkxeq",
+          "type": "text",
+          "x": -5.526269939602798,
+          "y": 67.81330836740632,
+          "width": 36.699981689453125,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aN",
+          "roundness": null,
+          "seed": 1818745637,
+          "version": 427,
+          "versionNonce": 583036747,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1749607199409,
+          "link": null,
+          "locked": false,
+          "text": "V2L",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "top",
+          "containerId": null,
+          "originalText": "V2L",
+          "autoResize": true,
+          "lineHeight": 1.25
+        }
+      ],
+      "id": "rOkNCKaFfHI5mFCREmBqc",
+      "created": 1749607243976
+    },
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "_xH4W2GWTbhVCLZF_fgKd",
+          "type": "rectangle",
+          "x": 514.199951171875,
+          "y": 840.400016784668,
+          "width": 94.60009765625004,
+          "height": 131.19996643066406,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aP",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 1260367094,
+          "version": 675,
+          "versionNonce": 1107421418,
+          "isDeleted": false,
+          "boundElements": [
+            {
+              "type": "text",
+              "id": "l8dmRBnm2LFZLd0FJWnIr"
+            }
+          ],
+          "updated": 1748323736498,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "l8dmRBnm2LFZLd0FJWnIr",
+          "type": "text",
+          "x": 526.6400299072266,
+          "y": 893.5,
+          "width": 69.71994018554688,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aQ",
+          "roundness": null,
+          "seed": 399154742,
+          "version": 621,
+          "versionNonce": 1818835882,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323736498,
+          "link": null,
+          "locked": false,
+          "text": "aPower",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "middle",
+          "containerId": "_xH4W2GWTbhVCLZF_fgKd",
+          "originalText": "aPower",
+          "autoResize": true,
+          "lineHeight": 1.25
+        },
+        {
+          "id": "Sh98MQWEQ-O3NxHTmXYZB",
+          "type": "rectangle",
+          "x": 624.699951171875,
+          "y": 839.400016784668,
+          "width": 94.60009765625004,
+          "height": 131.19996643066406,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ai",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 970486710,
+          "version": 724,
+          "versionNonce": 1540896362,
+          "isDeleted": false,
+          "boundElements": [
+            {
+              "type": "text",
+              "id": "qU1xW7-40N4CBBRZL8E_m"
+            }
+          ],
+          "updated": 1748323736498,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "qU1xW7-40N4CBBRZL8E_m",
+          "type": "text",
+          "x": 637.1400299072266,
+          "y": 892.5,
+          "width": 69.71994018554688,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aj",
+          "roundness": null,
+          "seed": 691834102,
+          "version": 670,
+          "versionNonce": 1629083946,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323736498,
+          "link": null,
+          "locked": false,
+          "text": "aPower",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "middle",
+          "containerId": "Sh98MQWEQ-O3NxHTmXYZB",
+          "originalText": "aPower",
+          "autoResize": true,
+          "lineHeight": 1.25
+        },
+        {
+          "id": "j9baEXZf99hsVUCnOHw4r",
+          "type": "rectangle",
+          "x": 732.699951171875,
+          "y": 840.400016784668,
+          "width": 94.60009765625004,
+          "height": 131.19996643066406,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ak",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 2113624618,
+          "version": 752,
+          "versionNonce": 2073633770,
+          "isDeleted": false,
+          "boundElements": [
+            {
+              "type": "text",
+              "id": "4_jSdlOE4ZFW9BNQNl3pi"
+            }
+          ],
+          "updated": 1748323736498,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "4_jSdlOE4ZFW9BNQNl3pi",
+          "type": "text",
+          "x": 745.1400299072266,
+          "y": 893.5,
+          "width": 69.71994018554688,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "al",
+          "roundness": null,
+          "seed": 1654818026,
+          "version": 698,
+          "versionNonce": 90248874,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323736498,
+          "link": null,
+          "locked": false,
+          "text": "aPower",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "middle",
+          "containerId": "j9baEXZf99hsVUCnOHw4r",
+          "originalText": "aPower",
+          "autoResize": true,
+          "lineHeight": 1.25
+        },
+        {
+          "id": "WG_YmdiVbxAWom3ac1qnB",
+          "type": "line",
+          "x": 557,
+          "y": 790,
+          "width": 222,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "an",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1199554678,
+          "version": 169,
+          "versionNonce": 425682218,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323775448,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              222,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "doQ3FsCn9XwZh0NxJByIc",
+          "type": "line",
+          "x": 781,
+          "y": 793,
+          "width": 0,
+          "height": 45,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ao",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 122099126,
+          "version": 125,
+          "versionNonce": 714844266,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323761729,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              45
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "rcCGlLn6Nd_lXylxBBA09",
+          "type": "line",
+          "x": 674,
+          "y": 692,
+          "width": 2,
+          "height": 147,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ap",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1836257130,
+          "version": 139,
+          "versionNonce": 1474288298,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323811364,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -2,
+              147
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "VnRuvela0JDr-RIY57MRp",
+          "type": "line",
+          "x": 556.9977671569621,
+          "y": 792.5345249035327,
+          "width": 0,
+          "height": 45,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aq",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 27792874,
+          "version": 170,
+          "versionNonce": 1196850038,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323767361,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              0,
+              45
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        }
+      ],
+      "id": "7vy7L6vOLcgxWMdAn-0rL",
+      "created": 1749539261368
+    },
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "lUkepIQIH21s03MyHG1Zt",
+          "type": "rectangle",
+          "x": 1009.199951171875,
+          "y": 761.400016784668,
+          "width": 173.6000976562501,
+          "height": 218.1999664306641,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ar",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 389503158,
+          "version": 472,
+          "versionNonce": 455094454,
+          "isDeleted": false,
+          "boundElements": [
+            {
+              "type": "text",
+              "id": "lUbaTfXlBGzxedChjA5jd"
+            }
+          ],
+          "updated": 1748323867148,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "lUbaTfXlBGzxedChjA5jd",
+          "type": "text",
+          "x": 1032.190055847168,
+          "y": 766.400016784668,
+          "width": 127.61988830566406,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "as",
+          "roundness": null,
+          "seed": 594989558,
+          "version": 425,
+          "versionNonce": 1686415862,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323867148,
+          "link": null,
+          "locked": false,
+          "text": "Backup Panel",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "top",
+          "containerId": "lUkepIQIH21s03MyHG1Zt",
+          "originalText": "Backup Panel",
+          "autoResize": true,
+          "lineHeight": 1.25
+        },
+        {
+          "id": "gAvD6zSoH2918TucD90L0",
+          "type": "line",
+          "x": 1093,
+          "y": 801,
+          "width": 1,
+          "height": 144,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "au",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 76489846,
+          "version": 58,
+          "versionNonce": 1162991798,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323874881,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              1,
+              144
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "RjJJSFIXjn9rKu8JbpXCL",
+          "type": "line",
+          "x": 1092,
+          "y": 833,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "av",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 313356394,
+          "version": 18,
+          "versionNonce": 1093830954,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323883048,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "3QjyB3CcZr2eHBUTa_Y-r",
+          "type": "line",
+          "x": 1139.2882402056057,
+          "y": 832.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aw",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 347947574,
+          "version": 45,
+          "versionNonce": 1400664298,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323889432,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "3fStORuyp4nW0sXBfMsMV",
+          "type": "line",
+          "x": 1093.2882402056057,
+          "y": 861.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ax",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 642825834,
+          "version": 35,
+          "versionNonce": 489322486,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323893581,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "fSgmeAR570R0p8NAc-NGB",
+          "type": "line",
+          "x": 1139.2882402056057,
+          "y": 860.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ay",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 748253814,
+          "version": 47,
+          "versionNonce": 1852246570,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323898948,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "1pF0VC7KMeDhj7xkqGQIV",
+          "type": "line",
+          "x": 1092.2882402056057,
+          "y": 887.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "az",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 332793770,
+          "version": 38,
+          "versionNonce": 1356164726,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323903465,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "lCtLE0AeFycBJAK50paH5",
+          "type": "line",
+          "x": 1138.2882402056057,
+          "y": 887.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "b00",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 366528758,
+          "version": 39,
+          "versionNonce": 714151338,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323907515,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "bPTP6e7F5nsd21NqqpyRm",
+          "type": "line",
+          "x": 1092.2882402056057,
+          "y": 915.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "b01",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1184052010,
+          "version": 39,
+          "versionNonce": 136170550,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323911414,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "d1WW5xvkElYmssQoYRa6H",
+          "type": "line",
+          "x": 1139.2882402056057,
+          "y": 915.2043172813497,
+          "width": 43,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "b02",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1702147766,
+          "version": 40,
+          "versionNonce": 1550450346,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323915114,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -43,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        }
+      ],
+      "id": "Z1rb7RZN0sgy2dRYxcQra",
+      "created": 1749539222435
+    },
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "q6GvjpQ_9rOV1iuAxBb2h",
+          "type": "ellipse",
+          "x": 800.6000366210938,
+          "y": 414.20001220703125,
+          "width": 45,
+          "height": 49,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aD",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1212429290,
+          "version": 132,
+          "versionNonce": 1526667626,
+          "isDeleted": false,
+          "boundElements": [
+            {
+              "type": "text",
+              "id": "0MMapI3wIQ3fEzkaE2o53"
+            }
+          ],
+          "updated": 1748322928867,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "0MMapI3wIQ3fEzkaE2o53",
+          "type": "text",
+          "x": 815.5301380116816,
+          "y": 426.3758960679608,
+          "width": 15.319992065429688,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aE",
+          "roundness": null,
+          "seed": 1616234666,
+          "version": 38,
+          "versionNonce": 1064066090,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748322928867,
+          "link": null,
+          "locked": false,
+          "text": "M",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "middle",
+          "containerId": "q6GvjpQ_9rOV1iuAxBb2h",
+          "originalText": "M",
+          "autoResize": true,
+          "lineHeight": 1.25
+        }
+      ],
+      "id": "YqqLH-NH5vW1undSMv6Rv",
+      "created": 1749539213986
+    },
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "2_lgca9R9tj9By79Y2NfX",
+          "type": "diamond",
+          "x": 540.9469934136675,
+          "y": 235.2782185423847,
+          "width": 154.50597655157134,
+          "height": 145.94680606349797,
+          "angle": 5.4116709586624125,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "seed": 1007110442,
+          "version": 327,
+          "versionNonce": 1549037418,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323023516,
+          "index": "a3",
+          "frameId": null,
+          "roundness": null,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "408wVJLk9WtSUWeN3JgCT",
+          "type": "line",
+          "x": 644.4537331315189,
+          "y": 253.41602644444026,
+          "width": 5.426227404925095,
+          "height": 102.72409811392365,
+          "angle": 0,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "seed": 2002293738,
+          "version": 265,
+          "versionNonce": 1470558762,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323023516,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              5.426227404925095,
+              102.72409811392365
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "index": "a4",
+          "frameId": null,
+          "roundness": {
+            "type": 2
+          },
+          "link": null,
+          "locked": false
+        },
+        {
+          "type": "line",
+          "version": 404,
+          "versionNonce": 857414890,
+          "isDeleted": false,
+          "id": "U3rmpDUASVaMyrzmWeGTP",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "angle": 0,
+          "x": 619.2872646500573,
+          "y": 256.3162514367276,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "width": 5.426227404925095,
+          "height": 136.77835286207326,
+          "seed": 934446762,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "boundElements": [],
+          "updated": 1748323023516,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              5.426227404925095,
+              136.77835286207326
+            ]
+          ],
+          "index": "a5",
+          "frameId": null,
+          "roundness": {
+            "type": 2
+          },
+          "link": null,
+          "locked": false
+        },
+        {
+          "type": "line",
+          "version": 345,
+          "versionNonce": 1278996394,
+          "isDeleted": false,
+          "id": "NQDeOl6qmKbDMocLKMjV5",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "angle": 0,
+          "x": 591.0334598864827,
+          "y": 257.6260304655026,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "width": 5.426227404925095,
+          "height": 106.84054649007366,
+          "seed": 633348458,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "boundElements": [],
+          "updated": 1748323023516,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              5.426227404925095,
+              106.84054649007366
+            ]
+          ],
+          "index": "a6",
+          "frameId": null,
+          "roundness": {
+            "type": 2
+          },
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "bSiNfRAp6-hS0wM2LXSUL",
+          "type": "line",
+          "x": 566.8025478541456,
+          "y": 312.35608273931445,
+          "width": 105.15654488164863,
+          "height": 10.665343520024937,
+          "angle": 0,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "seed": 483157034,
+          "version": 283,
+          "versionNonce": 389311082,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323023516,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              105.15654488164863,
+              -10.665343520024937
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "index": "a7",
+          "frameId": null,
+          "roundness": {
+            "type": 2
+          },
+          "link": null,
+          "locked": false
+        },
+        {
+          "type": "line",
+          "version": 334,
+          "versionNonce": 1255116074,
+          "isDeleted": false,
+          "id": "J9q28yLhALJM8CAzuOrIb",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "angle": 0,
+          "x": 568.4865494625706,
+          "y": 339.95499798850153,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "width": 105.15654488164863,
+          "height": 10.665343520024937,
+          "seed": 1455574762,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "boundElements": [],
+          "updated": 1748323023516,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              105.15654488164863,
+              -10.665343520024937
+            ]
+          ],
+          "index": "a8",
+          "frameId": null,
+          "roundness": {
+            "type": 2
+          },
+          "link": null,
+          "locked": false
+        },
+        {
+          "type": "line",
+          "version": 385,
+          "versionNonce": 209213418,
+          "isDeleted": false,
+          "id": "kB6ghLcGQSksreNuuqxV-",
+          "fillStyle": "solid",
+          "strokeWidth": 1,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "angle": 0,
+          "x": 564.7443236660706,
+          "y": 287.56383683750227,
+          "strokeColor": "#000000",
+          "backgroundColor": "transparent",
+          "width": 105.15654488164863,
+          "height": 10.665343520024937,
+          "seed": 405594538,
+          "groupIds": [
+            "kDns3kbB0EMwqQ27sQw2g"
+          ],
+          "boundElements": [],
+          "updated": 1748323023516,
+          "startBinding": null,
+          "endBinding": null,
+          "lastCommittedPoint": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              105.15654488164863,
+              -10.665343520024937
+            ]
+          ],
+          "index": "a9",
+          "frameId": null,
+          "roundness": {
+            "type": 2
+          },
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "ujrBPLOCUNQI5q3fJBUdR",
+          "type": "text",
+          "x": 602.8999938964844,
+          "y": 223.8000030517578,
+          "width": 25.79998779296875,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aB",
+          "roundness": null,
+          "seed": 1413470518,
+          "version": 114,
+          "versionNonce": 1827550710,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323026366,
+          "link": null,
+          "locked": false,
+          "text": "PV",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "top",
+          "containerId": null,
+          "originalText": "PV",
+          "autoResize": true,
+          "lineHeight": 1.25
+        }
+      ],
+      "id": "J3T1mVvz4He56GOaqjg85",
+      "created": 1749539208384
+    },
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "zi42LDy10Ab1BdeXTrkGi",
+          "type": "line",
+          "x": 1211,
+          "y": 270,
+          "width": 21,
+          "height": 81,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aG",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1382873974,
+          "version": 78,
+          "versionNonce": 1708920042,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323016082,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -21,
+              81
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "5wFOPOfOXb2xGPhjDsaxs",
+          "type": "line",
+          "x": 1212,
+          "y": 270,
+          "width": 24,
+          "height": 84,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aH",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 510787818,
+          "version": 96,
+          "versionNonce": 1499389866,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323016082,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              24,
+              84
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "CKfs8QHl-fVHjdEYWccgQ",
+          "type": "line",
+          "x": 1190,
+          "y": 298,
+          "width": 47,
+          "height": 1,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aI",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1452025450,
+          "version": 56,
+          "versionNonce": 1652120170,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323016082,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              47,
+              -1
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "zNQ9A_7HmddRe7lEd_w_8",
+          "type": "line",
+          "x": 1199,
+          "y": 269,
+          "width": 35,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aJ",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 369030518,
+          "version": 52,
+          "versionNonce": 1073118506,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323016082,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              35,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "2i4ifSy_71WRf_AJ5ggYo",
+          "type": "line",
+          "x": 1179,
+          "y": 323,
+          "width": 68,
+          "height": 1,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aK",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1575695478,
+          "version": 64,
+          "versionNonce": 524371946,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323016082,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              68,
+              -1
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "LjYGW-2Avxlk_S59cwY-m",
+          "type": "text",
+          "x": 1193.390022277832,
+          "y": 240.5,
+          "width": 41.21995544433594,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aO",
+          "roundness": null,
+          "seed": 757824170,
+          "version": 160,
+          "versionNonce": 2068535658,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323046050,
+          "link": null,
+          "locked": false,
+          "text": "Grid",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "top",
+          "containerId": null,
+          "originalText": "Grid",
+          "autoResize": true,
+          "lineHeight": 1.25
+        }
+      ],
+      "id": "qEPtQz6jm3iDwnji9F99z",
+      "created": 1749539203741
+    },
+    {
+      "status": "unpublished",
+      "elements": [
+        {
+          "id": "xVH9XDWCN2rY1A6vFyKCU",
+          "type": "rectangle",
+          "x": 1161,
+          "y": 458,
+          "width": 121,
+          "height": 80,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aV",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 35929834,
+          "version": 57,
+          "versionNonce": 170733494,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323471182,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "SBf-_a_L58g0Ze3rSZ0Hr",
+          "type": "rectangle",
+          "x": 1157,
+          "y": 539,
+          "width": 128,
+          "height": 13,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aW",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 127518966,
+          "version": 38,
+          "versionNonce": 859404470,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323478799,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "wdCyKwVp934b-5QH6gSxP",
+          "type": "rectangle",
+          "x": 1176,
+          "y": 480,
+          "width": 35,
+          "height": 43,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aX",
+          "roundness": {
+            "type": 3
+          },
+          "seed": 1698943082,
+          "version": 38,
+          "versionNonce": 1680825514,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323488415,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "aqyqu_tIvMYLukDobtJ6I",
+          "type": "line",
+          "x": 1199.7111560215753,
+          "y": 501.6861882659174,
+          "width": 20.96582407769565,
+          "height": 31.545007306275117,
+          "angle": 0,
+          "strokeColor": "#000",
+          "backgroundColor": "#ff00",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "L_SJehplRTI--OaP4ZaHu"
+          ],
+          "seed": 623965802,
+          "version": 863,
+          "versionNonce": 829561642,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323546415,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              3.8266896363502756,
+              -4.495535539415729
+            ],
+            [
+              -6.523740307649444,
+              -7.099835732189148
+            ],
+            [
+              -4.940052282859354,
+              -15.458691919054852
+            ],
+            [
+              -17.139134441345377,
+              -2.3859528962241803
+            ],
+            [
+              -9.003242999093644,
+              -0.21577089436751182
+            ],
+            [
+              -13.368501070636167,
+              16.086315387220267
+            ],
+            [
+              -3.642735264157652,
+              4.561339750972302
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "index": "aY",
+          "frameId": null,
+          "roundness": null,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "KEJrBi4c8sMDwfMAJJy-H",
+          "type": "line",
+          "x": 1195.8745325517066,
+          "y": 499.36166750482096,
+          "width": 1.5570763555064515,
+          "height": 2.7249486827974203,
+          "angle": 0,
+          "strokeColor": "#3d71b7",
+          "backgroundColor": "#ff00",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 0,
+          "opacity": 100,
+          "groupIds": [
+            "L_SJehplRTI--OaP4ZaHu"
+          ],
+          "seed": 22714666,
+          "version": 502,
+          "versionNonce": 1536763370,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323546415,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              -1.5570763555064515,
+              2.7249486827974203
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null,
+          "index": "aZ",
+          "frameId": null,
+          "roundness": null,
+          "link": null,
+          "locked": false
+        },
+        {
+          "id": "JpE2At_i5MoUah94yVh1u",
+          "type": "line",
+          "x": 1227,
+          "y": 475,
+          "width": 38,
+          "height": 1,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "aa",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 60461110,
+          "version": 266,
+          "versionNonce": 121469366,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323569148,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              38,
+              1
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "l5DEEqEewmdszLXSX_Jnl",
+          "type": "line",
+          "x": 1228,
+          "y": 488,
+          "width": 36,
+          "height": 1,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ab",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1343279862,
+          "version": 27,
+          "versionNonce": 1981043498,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323574815,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              36,
+              -1
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "AeDWG4CpxcGGzroZrcKId",
+          "type": "line",
+          "x": 1227,
+          "y": 499,
+          "width": 36,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ac",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 1060396522,
+          "version": 16,
+          "versionNonce": 703091690,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323580365,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              36,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "XBhXpsDhqtcVF66ZFDOHD",
+          "type": "line",
+          "x": 1229,
+          "y": 512,
+          "width": 34,
+          "height": 0,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ad",
+          "roundness": {
+            "type": 2
+          },
+          "seed": 38422186,
+          "version": 20,
+          "versionNonce": 4773802,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323587116,
+          "link": null,
+          "locked": false,
+          "points": [
+            [
+              0,
+              0
+            ],
+            [
+              34,
+              0
+            ]
+          ],
+          "lastCommittedPoint": null,
+          "startBinding": null,
+          "endBinding": null,
+          "startArrowhead": null,
+          "endArrowhead": null
+        },
+        {
+          "id": "SUs01mJ44LzXUX6DREovM",
+          "type": "text",
+          "x": 1175.0700378417969,
+          "y": 552.5,
+          "width": 97.85992431640625,
+          "height": 25,
+          "angle": 0,
+          "strokeColor": "#1e1e1e",
+          "backgroundColor": "transparent",
+          "fillStyle": "solid",
+          "strokeWidth": 2,
+          "strokeStyle": "solid",
+          "roughness": 1,
+          "opacity": 100,
+          "groupIds": [],
+          "frameId": null,
+          "index": "ae",
+          "roundness": null,
+          "seed": 690326454,
+          "version": 213,
+          "versionNonce": 1187410358,
+          "isDeleted": false,
+          "boundElements": [],
+          "updated": 1748323607049,
+          "link": null,
+          "locked": false,
+          "text": "Generator",
+          "fontSize": 20,
+          "fontFamily": 5,
+          "textAlign": "center",
+          "verticalAlign": "top",
+          "containerId": null,
+          "originalText": "Generator",
+          "autoResize": true,
+          "lineHeight": 1.25
+        }
+      ],
+      "id": "BUZXawxbfqjojdZFVrsj0",
+      "created": 1749539198904
+    }
+  ]
+}

+ 6 - 4
package.json

@@ -8,10 +8,12 @@
     "test": "echo \"Error: no test specified\" && exit 1",
     "dev": "run-p docs:dev wl:run",
     "predev": "pnpm run pdf:encrypt",
-    "docs:dev": "pnpm run build:vitepress && vitepress dev docs",
-    "docs:build": "pnpm run build:vitepress && node packages/vitepress/bin/vitepress.js build docs",
-    "docs:preview": "pnpm run build:vitepress && node packages/vitepress/bin/vitepress.js preview docs",
+    "docs:dev": "pnpm run build:module && vitepress dev docs",
+    "docs:build": "pnpm run build:module && node vitepress build docs",
+    "docs:preview": "pnpm run build:module && node vitepress preview docs",
+    "build:module": "pnpm run build:vitepress && pnpm run build:sqlite3",
     "build:vitepress": "tsx ./check-build-vitepress.ts",
+    "build:sqlite3": "tsx ./check-rebuild-sqlite3.ts",
     "pdf:encrypt": "tsx ./docs/.vitepress/script/encrypt_pdf.ts",
     "pdf:decrypt": "tsx ./docs/.vitepress/script/decrypt_pdf.ts",
     "wl:run": "dotenv -e .env.waline -- node node_modules/@waline/vercel/vanilla.js"
@@ -65,7 +67,7 @@
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "veaury": "^2.6.2",
-    "vitepress": "link:packages/vitepress",
+    "vitepress": "file:packages/pkg/vitepress/vitepress-2.0.0-alpha.5.tgz",
     "vitepress-plugin-mermaid": "^2.0.17",
     "vue": "^3.5.13",
     "vue-demi": "^0.14.10"

+ 0 - 0
packages/vitepress/.gitattributes → packages/src/vitepress/.gitattributes


+ 0 - 0
packages/vitepress/.github/FUNDING.yml → packages/src/vitepress/.github/FUNDING.yml


+ 0 - 0
packages/vitepress/.github/ISSUE_TEMPLATE/bug_report.yml → packages/src/vitepress/.github/ISSUE_TEMPLATE/bug_report.yml


+ 0 - 0
packages/vitepress/.github/ISSUE_TEMPLATE/feature_request.yml → packages/src/vitepress/.github/ISSUE_TEMPLATE/feature_request.yml


+ 0 - 0
packages/vitepress/.github/commit-convention.md → packages/src/vitepress/.github/commit-convention.md


+ 0 - 0
packages/vitepress/.github/contributing.md → packages/src/vitepress/.github/contributing.md


+ 0 - 0
packages/vitepress/.github/pull_request_template.md → packages/src/vitepress/.github/pull_request_template.md


+ 0 - 0
packages/vitepress/.github/workflows/cr-comment.yml → packages/src/vitepress/.github/workflows/cr-comment.yml


+ 0 - 0
packages/vitepress/.github/workflows/cr.yml → packages/src/vitepress/.github/workflows/cr.yml


+ 0 - 0
packages/vitepress/.github/workflows/lock-threads.yml → packages/src/vitepress/.github/workflows/lock-threads.yml


+ 0 - 0
packages/vitepress/.github/workflows/release-tag.yml → packages/src/vitepress/.github/workflows/release-tag.yml


+ 0 - 0
packages/vitepress/.github/workflows/stale.yml → packages/src/vitepress/.github/workflows/stale.yml


+ 0 - 0
packages/vitepress/.github/workflows/test.yml → packages/src/vitepress/.github/workflows/test.yml


+ 0 - 0
packages/vitepress/.gitignore → packages/src/vitepress/.gitignore


+ 0 - 0
packages/vitepress/.npmrc → packages/src/vitepress/.npmrc


+ 0 - 0
packages/vitepress/.prettierignore → packages/src/vitepress/.prettierignore


+ 0 - 0
packages/vitepress/.prettierrc.yml → packages/src/vitepress/.prettierrc.yml


+ 0 - 0
packages/vitepress/CHANGELOG.md → packages/src/vitepress/CHANGELOG.md


+ 0 - 0
packages/vitepress/LICENSE → packages/src/vitepress/LICENSE


+ 0 - 0
packages/vitepress/README.md → packages/src/vitepress/README.md


+ 0 - 0
packages/vitepress/__tests__/e2e/.vitepress/config.ts → packages/src/vitepress/__tests__/e2e/.vitepress/config.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue → packages/src/vitepress/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue


+ 0 - 0
packages/vitepress/__tests__/e2e/.vitepress/theme/components/NavVersion.vue → packages/src/vitepress/__tests__/e2e/.vitepress/theme/components/NavVersion.vue


+ 0 - 0
packages/vitepress/__tests__/e2e/.vitepress/theme/index.ts → packages/src/vitepress/__tests__/e2e/.vitepress/theme/index.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/__snapshots__/home.test.ts.snap → packages/src/vitepress/__tests__/e2e/__snapshots__/home.test.ts.snap


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/basic.data.mts → packages/src/vitepress/__tests__/e2e/data-loading/basic.data.mts


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/content/bar.md → packages/src/vitepress/__tests__/e2e/data-loading/content/bar.md


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/content/foo.md → packages/src/vitepress/__tests__/e2e/data-loading/content/foo.md


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/contentLoader.data.ts → packages/src/vitepress/__tests__/e2e/data-loading/contentLoader.data.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/data.md → packages/src/vitepress/__tests__/e2e/data-loading/data.md


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/data.test.ts → packages/src/vitepress/__tests__/e2e/data-loading/data.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/data/a.json → packages/src/vitepress/__tests__/e2e/data-loading/data/a.json


+ 0 - 0
packages/vitepress/__tests__/e2e/data-loading/data/b.json → packages/src/vitepress/__tests__/e2e/data-loading/data/b.json


+ 0 - 0
packages/vitepress/__tests__/e2e/dynamic-routes/[id].md → packages/src/vitepress/__tests__/e2e/dynamic-routes/[id].md


+ 0 - 0
packages/vitepress/__tests__/e2e/dynamic-routes/[id].paths.ts → packages/src/vitepress/__tests__/e2e/dynamic-routes/[id].paths.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/dynamic-routes/dynamic-routes.test.ts → packages/src/vitepress/__tests__/e2e/dynamic-routes/dynamic-routes.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/dynamic-routes/paths.ts → packages/src/vitepress/__tests__/e2e/dynamic-routes/paths.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/frontmatter/multiple-levels-outline.md → packages/src/vitepress/__tests__/e2e/frontmatter/multiple-levels-outline.md


+ 0 - 0
packages/vitepress/__tests__/e2e/frontmatter/multiple-levels-outline.test.ts → packages/src/vitepress/__tests__/e2e/frontmatter/multiple-levels-outline.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/home.md → packages/src/vitepress/__tests__/e2e/home.md


+ 0 - 0
packages/vitepress/__tests__/e2e/home.test.ts → packages/src/vitepress/__tests__/e2e/home.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/index.md → packages/src/vitepress/__tests__/e2e/index.md


+ 0 - 0
packages/vitepress/__tests__/e2e/local-search/excluded.md → packages/src/vitepress/__tests__/e2e/local-search/excluded.md


+ 0 - 0
packages/vitepress/__tests__/e2e/local-search/frontmatter-excluded.md → packages/src/vitepress/__tests__/e2e/local-search/frontmatter-excluded.md


+ 0 - 0
packages/vitepress/__tests__/e2e/local-search/index.md → packages/src/vitepress/__tests__/e2e/local-search/index.md


+ 0 - 0
packages/vitepress/__tests__/e2e/local-search/local-search.test.ts → packages/src/vitepress/__tests__/e2e/local-search/local-search.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/bar.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/bar.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/foo.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/foo.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/header-include.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/header-include.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/index.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/index.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/markdown-extensions.test.ts → packages/src/vitepress/__tests__/e2e/markdown-extensions/markdown-extensions.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/nested-include.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/nested-include.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/region-include.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/region-include.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/subfolder/inside-subfolder.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/subfolder/inside-subfolder.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/subfolder/subsub/subsub.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/subfolder/subsub/subsub.md


+ 0 - 0
packages/vitepress/__tests__/e2e/markdown-extensions/subfolder/subsub/subsubsub/subsubsub.md → packages/src/vitepress/__tests__/e2e/markdown-extensions/subfolder/subsub/subsubsub/subsubsub.md


+ 0 - 0
packages/vitepress/__tests__/e2e/multi-sidebar/index.md → packages/src/vitepress/__tests__/e2e/multi-sidebar/index.md


+ 0 - 0
packages/vitepress/__tests__/e2e/multi-sidebar/index.test.ts → packages/src/vitepress/__tests__/e2e/multi-sidebar/index.test.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/package.json → packages/src/vitepress/__tests__/e2e/package.json


+ 0 - 0
packages/vitepress/__tests__/e2e/public/pwa_dark.svg → packages/src/vitepress/__tests__/e2e/public/pwa_dark.svg


+ 0 - 0
packages/vitepress/__tests__/e2e/public/pwa_light.svg → packages/src/vitepress/__tests__/e2e/public/pwa_light.svg


+ 0 - 0
packages/vitepress/__tests__/e2e/public/vitepress.png → packages/src/vitepress/__tests__/e2e/public/vitepress.png


+ 0 - 0
packages/vitepress/__tests__/e2e/public/vitepress.svg → packages/src/vitepress/__tests__/e2e/public/vitepress.svg


+ 0 - 0
packages/vitepress/__tests__/e2e/shims.ts → packages/src/vitepress/__tests__/e2e/shims.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/text-literals/index.md → packages/src/vitepress/__tests__/e2e/text-literals/index.md


+ 0 - 0
packages/vitepress/__tests__/e2e/vitest.config.ts → packages/src/vitepress/__tests__/e2e/vitest.config.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/vitestGlobalSetup.ts → packages/src/vitepress/__tests__/e2e/vitestGlobalSetup.ts


+ 0 - 0
packages/vitepress/__tests__/e2e/vitestSetup.ts → packages/src/vitepress/__tests__/e2e/vitestSetup.ts


+ 0 - 0
packages/vitepress/__tests__/init/init.test.ts → packages/src/vitepress/__tests__/init/init.test.ts


+ 0 - 0
packages/vitepress/__tests__/init/package.json → packages/src/vitepress/__tests__/init/package.json


+ 0 - 0
packages/vitepress/__tests__/init/vitest.config.ts → packages/src/vitepress/__tests__/init/vitest.config.ts


+ 0 - 0
packages/vitepress/__tests__/tsconfig.json → packages/src/vitepress/__tests__/tsconfig.json


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است