<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.6.6 Chrome/144.0.7559.236 Electron/40.8.4 Safari/537.36" version="29.6.6" pages="10">
  <diagram name="显示指定层级菜单项流程" id="etDREPkzm4HehLh3Wzss">
    <mxGraphModel dx="752" dy="817" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="Dq_V7AeBsTtqcCJDGkD4-1" parent="1" style="swimlane;childLayout=stackLayout;horizontal=1;fillColor=none;horizontalStack=1;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;strokeColor=none;stackBorder=10;stackSpacing=-12;resizable=1;align=center;points=[];whiteSpace=wrap;html=1;" value="显示指定层级菜单项" vertex="1">
          <mxGeometry height="100" width="610" x="100" y="560" as="geometry" />
        </mxCell>
        <mxCell id="Dq_V7AeBsTtqcCJDGkD4-2" parent="Dq_V7AeBsTtqcCJDGkD4-1" style="shape=step;perimeter=stepPerimeter;fixedSize=1;points=[];whiteSpace=wrap;html=1;" value="绘制该层级边框" vertex="1">
          <mxGeometry height="57" width="160" x="10" y="33" as="geometry" />
        </mxCell>
        <mxCell id="Dq_V7AeBsTtqcCJDGkD4-3" parent="Dq_V7AeBsTtqcCJDGkD4-1" style="shape=step;perimeter=stepPerimeter;fixedSize=1;points=[];whiteSpace=wrap;html=1;" value="获取该层级选中菜单项" vertex="1">
          <mxGeometry height="57" width="182" x="158" y="33" as="geometry" />
        </mxCell>
        <mxCell id="Dq_V7AeBsTtqcCJDGkD4-4" parent="Dq_V7AeBsTtqcCJDGkD4-1" style="shape=step;perimeter=stepPerimeter;fixedSize=1;points=[];whiteSpace=wrap;html=1;" value="绘制该层级下菜单项" vertex="1">
          <mxGeometry height="57" width="162" x="328" y="33" as="geometry" />
        </mxCell>
        <mxCell id="Dq_V7AeBsTtqcCJDGkD4-5" parent="Dq_V7AeBsTtqcCJDGkD4-1" style="shape=step;perimeter=stepPerimeter;fixedSize=1;points=[];whiteSpace=wrap;html=1;" value="反显选中项" vertex="1">
          <mxGeometry height="57" width="122" x="478" y="33" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="39Z0d1SsfJPrEY7NQ2dw" name="MVP 事件处理流程">
    <mxGraphModel dx="1090" dy="1185" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-1" edge="1" parent="1" source="CHJpIxpMOG3BUcIp9TBN-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="CHJpIxpMOG3BUcIp9TBN-3" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;外部事件&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="354" y="490" as="geometry" />
        </mxCell>
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-3" parent="1" style="whiteSpace=wrap;html=1;rounded=0;" value="Presenter 协同层" vertex="1">
          <mxGeometry height="60" width="120" x="354" y="570" as="geometry" />
        </mxCell>
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-4" parent="1" style="whiteSpace=wrap;html=1;rounded=0;" value="View 视图层" vertex="1">
          <mxGeometry height="60" width="120" x="284" y="680" as="geometry" />
        </mxCell>
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-5" parent="1" style="whiteSpace=wrap;html=1;rounded=0;" value="Model 模型层&amp;nbsp;" vertex="1">
          <mxGeometry height="60" width="120" x="424" y="680" as="geometry" />
        </mxCell>
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-6" edge="1" parent="1" source="CHJpIxpMOG3BUcIp9TBN-5" style="endArrow=classic;html=1;rounded=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;jumpStyle=arc;startArrow=classic;startFill=1;" target="CHJpIxpMOG3BUcIp9TBN-3" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="594" y="630" as="sourcePoint" />
            <mxPoint x="644" y="580" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="CHJpIxpMOG3BUcIp9TBN-7" edge="1" parent="1" source="CHJpIxpMOG3BUcIp9TBN-3" style="endArrow=classic;html=1;rounded=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="CHJpIxpMOG3BUcIp9TBN-4" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="374" y="670" as="sourcePoint" />
            <mxPoint x="484" y="660" as="targetPoint" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="X0IBgYVqs8-xy_G4TQXO" name="MVP 架构示意图">
    <mxGraphModel dx="1090" dy="1185" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-14" connectable="0" parent="1" style="group" value="" vertex="1">
          <mxGeometry height="300" width="600" x="100" y="300" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-1" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;MVP 架构示意图&lt;/b&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="50" width="600" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-2" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1">
          <mxGeometry height="240" width="180" y="60" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-3" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1">
          <mxGeometry height="240" width="185" x="207.5" y="60" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-4" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1">
          <mxGeometry height="240" width="185" x="415" y="60" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-5" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;View (视图层)&lt;/b&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="40" width="160" x="10" y="70" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-6" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;b style=&quot;font-size: 16px;&quot;&gt;Presenter (协调层)&lt;/b&gt;" vertex="1">
          <mxGeometry height="40" width="160" x="220" y="70" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-7" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;b style=&quot;font-size: 16px;&quot;&gt;Model (数据层)&lt;/b&gt;" vertex="1">
          <mxGeometry height="40" width="160" x="430" y="70" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-8" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;负责显示内容&lt;/b&gt;&lt;/span&gt;" vertex="1">
          <mxGeometry height="40" width="160" x="10" y="250" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-9" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;负责流程协调&lt;/b&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="40" width="160" x="220" y="250" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-10" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="rounded=1;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;负责数据和规则&lt;/b&gt;&lt;/font&gt;" vertex="1">
          <mxGeometry height="40" width="160" x="430" y="250" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-11" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;" value="&lt;b&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;LCD 显示&lt;/font&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;LED 指示&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;按键输入&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="60" width="80" x="20" y="150" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-12" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;" value="&lt;b&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;接收外部事件&lt;/font&gt;&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;调用 Model 处理&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;b&gt;更新 View 状态&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="230" y="150" as="geometry" />
        </mxCell>
        <mxCell id="wkRVSMCZ4WoaQlwrK3vp-13" parent="wkRVSMCZ4WoaQlwrK3vp-14" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;" value="&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;b&gt;菜单逻辑计算&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;div&gt;&lt;b&gt;&lt;font style=&quot;font-size: 14px;&quot;&gt;参数边界检查&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;b&gt;传感器数据获取&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 14px;&quot;&gt;&lt;b&gt;数据存储读写&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="440" y="150" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="HxDEZlLnL0qG7Ur4KydZ" name="页面管理器架构设计">
    <mxGraphModel dx="1363" dy="1481" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="LuWILqjna9OgU5SQR-9t-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 29px;&quot;&gt;页面管理器（&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;Page Manager&lt;/span&gt;）&lt;/font&gt;&lt;div&gt;&lt;span style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="240" width="500" x="130" y="290" as="geometry" />
        </mxCell>
        <mxCell id="LuWILqjna9OgU5SQR-9t-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;页面栈 （Page Stack）&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="130" width="500" x="130" y="400" as="geometry" />
        </mxCell>
        <mxCell id="LuWILqjna9OgU5SQR-9t-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;font-size: 23px;&quot;&gt;栈顶页面&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="240" x="140" y="460" as="geometry" />
        </mxCell>
        <mxCell id="LuWILqjna9OgU5SQR-9t-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;font-size: 23px;&quot;&gt;后台页面1&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="240" x="380" y="460" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="R1sptnBL6Yvgqzv1JQT0" name="菜单页面架构设计">
    <mxGraphModel dx="1090" dy="1185" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_v9aWsQiSdQDmT4Fcf7S-1" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 29px;&quot;&gt;菜单页面&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 29px;&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="130" width="500" x="164" y="480" as="geometry" />
        </mxCell>
        <mxCell id="_v9aWsQiSdQDmT4Fcf7S-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;font style=&quot;font-size: 23px;&quot;&gt;page&lt;/font&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="174" y="540" as="geometry" />
        </mxCell>
        <mxCell id="_v9aWsQiSdQDmT4Fcf7S-3" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;font-size: 23px;&quot;&gt;model&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="294" y="540" as="geometry" />
        </mxCell>
        <mxCell id="_v9aWsQiSdQDmT4Fcf7S-4" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;font-size: 23px;&quot;&gt;view&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="414" y="540" as="geometry" />
        </mxCell>
        <mxCell id="_v9aWsQiSdQDmT4Fcf7S-5" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="&lt;span style=&quot;font-size: 23px;&quot;&gt;presenter&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="534" y="540" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="ae4TW034q6_u2rk01mG-" name="菜单树构建逻辑">
    <mxGraphModel dx="1224" dy="1192" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="uTcgnOhw-1hiChn4308x-321" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="主菜单(class=0)" vertex="1">
          <mxGeometry height="54" width="171" x="36" y="20" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-322" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="参数设置(class=1)" vertex="1">
          <mxGeometry height="54" width="187" x="260" y="140" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-323" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="信息查看(class=1)" vertex="1">
          <mxGeometry height="54" width="187" x="250" y="276" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-324" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="关于系统(class=1)" vertex="1">
          <mxGeometry height="54" width="187" x="250" y="430" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-325" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="定值设置(class=2)" vertex="1">
          <mxGeometry height="54" width="187" x="520" y="107" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-326" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="开关设置(class=2)" vertex="1">
          <mxGeometry height="54" width="187" x="520" y="207" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-327" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="运行信息(class=2)" vertex="1">
          <mxGeometry height="54" width="187" x="520" y="294" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-328" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-321" style="startArrow=none;endArrow=block;entryX=0.64;entryY=0;rounded=0;edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="uTcgnOhw-1hiChn4308x-322" value="lower">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="380" y="47" />
            </Array>
            <mxPoint x="240" y="40" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-329" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-322" style="startArrow=none;endArrow=block;exitX=0.667;exitY=1.037;entryX=0.72;entryY=0;rounded=0;exitDx=0;exitDy=0;exitPerimeter=0;" target="uTcgnOhw-1hiChn4308x-323" value="behind">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-330" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-323" style="startArrow=none;endArrow=block;exitX=0.75;exitY=1;entryX=0.75;entryY=0;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="uTcgnOhw-1hiChn4308x-324" value="behind">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-331" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-324" style="startArrow=none;endArrow=block;exitX=0.75;exitY=1;entryX=-0.001;entryY=0.171;rounded=0;edgeStyle=orthogonalEdgeStyle;exitDx=0;exitDy=0;entryDx=0;entryDy=0;entryPerimeter=0;" target="uTcgnOhw-1hiChn4308x-322" value="behind 回环">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="390" y="520" />
              <mxPoint x="110" y="520" />
              <mxPoint x="110" y="149" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-332" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-322" style="startArrow=none;endArrow=block;exitX=0;exitY=0.75;entryX=0.25;entryY=1;rounded=0;edgeStyle=orthogonalEdgeStyle;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" target="uTcgnOhw-1hiChn4308x-324" value="before 回环">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="180" y="180" />
              <mxPoint x="180" y="500" />
              <mxPoint x="297" y="500" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-333" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-323" style="startArrow=none;endArrow=block;exitX=0.269;exitY=0.012;entryX=0.33;entryY=1;rounded=0;exitDx=0;exitDy=0;exitPerimeter=0;" value="before">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="321.79" y="276" as="sourcePoint" />
            <mxPoint x="300.00000000000006" y="194" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-334" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-324" style="startArrow=none;endArrow=block;exitX=0.4;exitY=0;entryX=0.399;entryY=0.986;rounded=0;entryDx=0;entryDy=0;entryPerimeter=0;" target="uTcgnOhw-1hiChn4308x-323" value="before">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-335" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-322" style="startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;entryDx=0;entryDy=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" target="uTcgnOhw-1hiChn4308x-325" value="lower">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-336" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-325" style="startArrow=none;endArrow=block;exitX=0.912;exitY=0.975;entryX=0.91;entryY=0;rounded=0;edgeStyle=orthogonalEdgeStyle;exitDx=0;exitDy=0;exitPerimeter=0;" target="uTcgnOhw-1hiChn4308x-326" value="behind">
          <mxGeometry relative="1" x="0.1907" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-337" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-326" style="startArrow=none;endArrow=block;exitX=0.332;exitY=-0.003;entryX=0.33;entryY=1;rounded=0;exitDx=0;exitDy=0;exitPerimeter=0;" target="uTcgnOhw-1hiChn4308x-325" value="behind 回环">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-338" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-325" style="startArrow=none;endArrow=block;exitX=0.669;exitY=0.986;rounded=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.673;entryY=-0.017;entryDx=0;entryDy=0;entryPerimeter=0;" target="uTcgnOhw-1hiChn4308x-326" value="before 回环">
          <mxGeometry relative="1" x="0.1635" y="-6" as="geometry">
            <mxPoint as="offset" />
            <mxPoint x="647" y="167" as="sourcePoint" />
            <mxPoint x="645" y="187" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-339" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-326" style="startArrow=none;endArrow=block;exitX=0.133;exitY=-0.013;entryX=0.13;entryY=1;rounded=0;exitDx=0;exitDy=0;exitPerimeter=0;" target="uTcgnOhw-1hiChn4308x-325" value="before">
          <mxGeometry relative="1" x="0.0153" y="9" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-340" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-323" style="startArrow=none;endArrow=block;exitX=0.999;exitY=0.807;entryX=0;entryY=0.5;rounded=0;edgeStyle=orthogonalEdgeStyle;entryDx=0;entryDy=0;exitDx=0;exitDy=0;exitPerimeter=0;" target="uTcgnOhw-1hiChn4308x-327" value="lower">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-341" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-322" style="startArrow=none;endArrow=block;exitX=0.21;exitY=0;entryX=0.5;entryY=1;rounded=0;edgeStyle=orthogonalEdgeStyle;" target="uTcgnOhw-1hiChn4308x-321" value="higher">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-342" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-323" style="startArrow=none;endArrow=block;exitX=0;exitY=0.5;entryX=0.26;entryY=1;rounded=0;edgeStyle=orthogonalEdgeStyle;exitDx=0;exitDy=0;" target="uTcgnOhw-1hiChn4308x-321" value="higher">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="80" y="303" />
              <mxPoint x="80" y="276" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-343" edge="1" parent="1" style="startArrow=none;endArrow=block;entryX=0;entryY=0.83;rounded=0;edgeStyle=orthogonalEdgeStyle;" value="higher">
          <mxGeometry relative="1" x="0.4125" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="250" y="460" />
              <mxPoint x="20" y="460" />
              <mxPoint x="20" y="40" />
            </Array>
            <mxPoint x="250" y="460" as="sourcePoint" />
            <mxPoint x="36" y="40.019999999999996" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-344" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-325" style="startArrow=none;endArrow=block;exitX=0.5;exitY=0;entryX=0.905;entryY=0.019;rounded=0;edgeStyle=orthogonalEdgeStyle;entryDx=0;entryDy=0;entryPerimeter=0;exitDx=0;exitDy=0;" target="uTcgnOhw-1hiChn4308x-322" value="higher">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="614" y="80" />
              <mxPoint x="429" y="80" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-345" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-326" style="startArrow=none;endArrow=block;exitX=0;exitY=0.5;rounded=0;edgeStyle=orthogonalEdgeStyle;exitDx=0;exitDy=0;" value="higher">
          <mxGeometry relative="1" x="-0.3947" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="420" y="234" />
            </Array>
            <mxPoint x="420" y="194" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-346" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-327" style="startArrow=none;endArrow=block;exitX=0.43;exitY=0;entryX=1.005;entryY=0.163;rounded=0;edgeStyle=orthogonalEdgeStyle;entryDx=0;entryDy=0;entryPerimeter=0;" target="uTcgnOhw-1hiChn4308x-323" value="higher">
          <mxGeometry relative="1" x="0.4124" y="-3" as="geometry">
            <mxPoint as="offset" />
            <Array as="points">
              <mxPoint x="600" y="285" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-347" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-327" style="endArrow=classic;html=1;rounded=0;exitX=0.677;exitY=0.972;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.709;entryY=0.015;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;" target="uTcgnOhw-1hiChn4308x-327" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <Array as="points">
              <mxPoint x="710" y="380" />
              <mxPoint x="730" y="330" />
              <mxPoint x="730" y="300" />
              <mxPoint x="720" y="260" />
            </Array>
            <mxPoint x="657" y="460" as="sourcePoint" />
            <mxPoint x="707" y="410" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-348" connectable="0" parent="uTcgnOhw-1hiChn4308x-347" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="before" vertex="1">
          <mxGeometry relative="1" x="-0.0353" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-351" edge="1" parent="1" source="uTcgnOhw-1hiChn4308x-327" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="uTcgnOhw-1hiChn4308x-327" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <Array as="points">
              <mxPoint x="750" y="230" />
              <mxPoint x="750" y="400" />
              <mxPoint x="590" y="390" />
            </Array>
            <mxPoint x="570" y="484" as="sourcePoint" />
            <mxPoint x="620" y="434" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="uTcgnOhw-1hiChn4308x-352" connectable="0" parent="uTcgnOhw-1hiChn4308x-351" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="behind" vertex="1">
          <mxGeometry relative="1" x="0.0226" y="-5" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="5RVJ2jwpCgCB7Hji9JxO" name="菜单树判断逻辑">
    <mxGraphModel dx="2720" dy="2649" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-1" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="byCurClass &lt; byNextClass" vertex="1">
          <mxGeometry height="54" width="241" x="250" y="380" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-2" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="进入子菜单" vertex="1">
          <mxGeometry height="54" width="140" x="510" y="380" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-3" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="current.lower = next" vertex="1">
          <mxGeometry height="54" width="190" x="670" y="380" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-4" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="next.higher = current" vertex="1">
          <mxGeometry height="54" width="209" x="891" y="380" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-5" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="byCurClass == byNextClass" vertex="1">
          <mxGeometry height="54" width="240" x="250" y="484" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-6" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="同层兄弟" vertex="1">
          <mxGeometry height="54" width="140" x="511" y="484" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-7" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="current.behind = next" vertex="1">
          <mxGeometry height="54" width="190" x="670" y="484" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-8" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="next.before = current" vertex="1">
          <mxGeometry height="54" width="210" x="890" y="484" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-9" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="next.higher = current.higher" vertex="1">
          <mxGeometry height="78" width="260" x="1140" y="472" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-10" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="byCurClass &gt; byNextClass" vertex="1">
          <mxGeometry height="54" width="241" x="250" y="591" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-11" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="从深层回退" vertex="1">
          <mxGeometry height="54" width="140" x="510" y="591" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-12" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="next.before = ptLast[nextClass]" vertex="1">
          <mxGeometry height="54" width="190" x="670" y="591" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-27" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="HZ-q9eH6YA3dt1o5nvaf-26" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-13" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="ptLast[nextClass].behind=next" vertex="1">
          <mxGeometry height="54" width="190" x="1140" y="591" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-14" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-1" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-2" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-15" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-2" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-3" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-16" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-3" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-4" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-17" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-5" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-6" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-18" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-6" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-7" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-19" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-7" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-8" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-20" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-8" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-9" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-21" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-10" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-11" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-22" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-11" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;" target="HZ-q9eH6YA3dt1o5nvaf-12" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-23" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-12" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;rounded=0;exitDx=0;exitDy=0;" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
            <mxPoint x="890" y="618" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-25" edge="1" parent="1" source="HZ-q9eH6YA3dt1o5nvaf-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="HZ-q9eH6YA3dt1o5nvaf-13" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-24" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="next.behind=ptLast[nextClass].higher" vertex="1">
          <mxGeometry height="54" width="209" x="891" y="591" as="geometry" />
        </mxCell>
        <mxCell id="HZ-q9eH6YA3dt1o5nvaf-26" parent="1" style="whiteSpace=wrap;html=1;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);strokeWidth=2;" value="形成回环" vertex="1">
          <mxGeometry height="55" width="69" x="1351" y="591" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="zG06bic9s9vmrHAmIL5z" name="模型层初始化顺序">
    <mxGraphModel dx="628" dy="611" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="4pC_cjyCFYns3d6entyY-21" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="4pC_cjyCFYns3d6entyY-3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-1" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);rounded=1;" value="开始" vertex="1">
          <mxGeometry height="24" width="210" x="320" y="120" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-3" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="计算菜单个数 maxItem " vertex="1">
          <mxGeometry height="30" width="210" x="320" y="171" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-5" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="统计 0 级菜单数量 by0LevelNum " vertex="1">
          <mxGeometry height="30" width="210" x="320" y="225" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-6" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="构建菜单树链路" vertex="1">
          <mxGeometry height="30" width="210" x="320" y="279" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-7" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="补充带子菜单项的右侧箭头》" vertex="1">
          <mxGeometry height="40" width="210" x="320" y="328" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-8" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="计算各节点 wPos 与 wNum" vertex="1">
          <mxGeometry height="30" width="210" x="320" y="387" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-9" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="计算整棵菜单树的显示位置" vertex="1">
          <mxGeometry height="30" width="210" x="320" y="441" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-10" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);rounded=1;" value="函数结束" vertex="1">
          <mxGeometry height="20" width="210" x="320" y="500" as="geometry" />
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-13" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-3" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;entryDx=0;entryDy=0;" target="4pC_cjyCFYns3d6entyY-5" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
            <mxPoint x="426" y="470" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-15" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-5" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="4pC_cjyCFYns3d6entyY-6" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-16" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-6" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="4pC_cjyCFYns3d6entyY-7" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-17" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-7" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="4pC_cjyCFYns3d6entyY-8" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-18" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-8" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="4pC_cjyCFYns3d6entyY-9" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4pC_cjyCFYns3d6entyY-19" edge="1" parent="1" source="4pC_cjyCFYns3d6entyY-9" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="4pC_cjyCFYns3d6entyY-10" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="GAiekOzPbh1v7V_syctI" name="按键处理逻辑">
    <mxGraphModel dx="1440" dy="2571" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="stTsyAOdvTomNQkrpvn1-84" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="开始" vertex="1">
          <mxGeometry height="54" width="92" x="1003" y="-180" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-85" parent="1" style="rhombus;strokeWidth=2;whiteSpace=wrap;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="按下哪个键?" vertex="1">
          <mxGeometry height="140" width="140" x="979" y="-76" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-86" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="KEY_U" vertex="1">
          <mxGeometry height="54" width="106" x="840" y="-80" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-87" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="KEY_D" vertex="1">
          <mxGeometry height="54" width="105" x="840" y="-10" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-88" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="KEY_L" vertex="1">
          <mxGeometry height="54" width="103" x="840" y="64" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-89" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="KEY_R / KEY_ENT" vertex="1">
          <mxGeometry height="54" width="186" x="1080" y="70" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-90" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="KEY_ESC" vertex="1">
          <mxGeometry height="54" width="121" x="1153" y="-26" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-91" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="其他按键" vertex="1">
          <mxGeometry height="48" width="124" x="1150" y="-110" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-92" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="焦点移动到上一项" vertex="1">
          <mxGeometry height="54" width="126" x="690" y="-80" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-93" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="焦点移动到下一项" vertex="1">
          <mxGeometry height="54" width="126" x="690" y="-10" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-94" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="先退回上一级" vertex="1">
          <mxGeometry height="54" width="126" x="690" y="64" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-95" parent="1" style="rhombus;strokeWidth=2;whiteSpace=wrap;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="是否退回到 0 级菜单?" vertex="1">
          <mxGeometry height="100" width="190" x="650" y="150" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-96" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="重新定位到某个 0 级入口的子菜单" vertex="1">
          <mxGeometry height="54" width="210" x="700" y="300" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-97" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="停留在上一级菜单项" vertex="1">
          <mxGeometry height="56" width="204" x="856" y="150" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-98" parent="1" style="rhombus;strokeWidth=2;whiteSpace=wrap;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="当前项有子菜单?" vertex="1">
          <mxGeometry height="100" width="172" x="1087" y="150" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-99" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="进入子菜单" vertex="1">
          <mxGeometry height="54" width="140" x="930" y="300" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-100" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="若有回调则执行回调" vertex="1">
          <mxGeometry height="54" width="130" x="1080" y="300" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-101" parent="1" style="rhombus;strokeWidth=2;whiteSpace=wrap;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="当前是否在 1 级菜单?" vertex="1">
          <mxGeometry height="130" width="206" x="1290" y="28" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-102" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="快速回到初始菜单状态" vertex="1">
          <mxGeometry height="54" width="141" x="1220" y="300" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-103" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="退回上一级" vertex="1">
          <mxGeometry height="54" width="80" x="1370" y="300" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-104" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="不处理" vertex="1">
          <mxGeometry height="50" width="108" x="1310" y="-112" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-106" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-84" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-85" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-107" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-85" style="startArrow=none;endArrow=block;exitX=0;exitY=0.5;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" target="stTsyAOdvTomNQkrpvn1-86" value="">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="820" y="-30" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-108" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-85" style="startArrow=none;endArrow=block;exitX=0;exitY=0.57;entryX=1;entryY=0.5;rounded=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-87" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-109" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-85" style="startArrow=none;endArrow=block;exitX=0;exitY=0.71;entryX=1;entryY=0.5;rounded=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-88" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-110" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-85" style="startArrow=none;endArrow=block;exitX=1;exitY=0.69;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-89" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-111" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-85" style="startArrow=none;endArrow=block;exitX=1;exitY=0.56;entryX=0;entryY=0.5;rounded=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-90" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-112" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-85" style="startArrow=none;endArrow=block;exitX=1;exitY=0.54;entryX=0;entryY=0.5;rounded=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-91" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-113" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-86" style="curved=1;startArrow=none;endArrow=block;exitX=0;exitY=0.5;entryX=1;entryY=0.5;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-92" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-114" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-87" style="curved=1;startArrow=none;endArrow=block;exitX=0;exitY=0.5;entryX=1;entryY=0.5;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-93" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-115" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-88" style="curved=1;startArrow=none;endArrow=block;exitX=0;exitY=0.5;entryX=1;entryY=0.5;rounded=0;entryDx=0;entryDy=0;exitDx=0;exitDy=0;" target="stTsyAOdvTomNQkrpvn1-94" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-116" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-94" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-95" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-117" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-95" style="startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;exitDx=0;exitDy=0;" target="stTsyAOdvTomNQkrpvn1-96" value="是">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-118" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-95" style="startArrow=none;endArrow=block;exitX=0.743;exitY=0.238;entryX=0;entryY=0.5;rounded=0;entryDx=0;entryDy=0;exitDx=0;exitDy=0;exitPerimeter=0;" target="stTsyAOdvTomNQkrpvn1-97" value="否">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-119" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-89" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-98" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-120" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-98" style="startArrow=none;endArrow=block;exitX=0.1;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-99" value="是">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-121" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-98" style="startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;exitDx=0;exitDy=0;" target="stTsyAOdvTomNQkrpvn1-100" value="否">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-122" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-90" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.301;entryY=0.223;rounded=0;entryDx=0;entryDy=0;entryPerimeter=0;" target="stTsyAOdvTomNQkrpvn1-101" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-123" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-101" style="startArrow=none;endArrow=block;exitX=0.09;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-102" value="是">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-124" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-101" style="startArrow=none;endArrow=block;exitX=0.91;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="stTsyAOdvTomNQkrpvn1-103" value="否">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stTsyAOdvTomNQkrpvn1-125" edge="1" parent="1" source="stTsyAOdvTomNQkrpvn1-91" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="stTsyAOdvTomNQkrpvn1-104" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram id="dIhOnUq7jFqkhXTXlf7A" name="系统架构">
    <mxGraphModel dx="237" dy="1037" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="SKzmmjIQc6qRBKoh8kct-1" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=15;" value="🏗️ 底层基础设施 (Infrastructure)&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="150" width="640" x="900" y="849" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-2" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#d5e8d4;strokeColor=#82b366;" value="🔧 驱动抽象层 (Driver Abstraction)&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="152" width="640" x="900" y="686" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-3" parent="1" style="whiteSpace=wrap;strokeWidth=2;" value="⚙️ MVP 业务层 (MVP Business Layer)&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="392" width="640" x="900" y="282" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-4" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#f8cecc;strokeColor=#b85450;" value="⚙️ YC Page&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="347" width="170" x="1351" y="307" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-5" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#fff2cc;strokeColor=#d6b656;" value="ℹ️ AppInfo Page&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="347" width="190" x="1140" y="307" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-6" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#ffe6cc;strokeColor=#d79b00;" value="📋 Menu Page&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="347" width="200" x="916" y="307" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-7" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" value="🔄 多页面管理层 (Page Management)&#xa;&#xa;&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="110" width="640" x="900" y="160" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-8" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=18;" value="📱 应用层 (Application Layer)&#xa;&#xa;&#xa;" vertex="1">
          <mxGeometry height="102" width="640" x="900" y="50" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-9" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" value="main.c&#xa;系统初始化 / 主循环调度&#xa;/ 生命周期管理" vertex="1">
          <mxGeometry height="62" width="420" x="1037" y="80" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-10" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="📦 Page Manager&#xa;栈式调度&#xa;事件分发器" vertex="1">
          <mxGeometry height="63" width="185" x="983" y="197" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-11" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="🌍 Global Model&#xa;跨页面共享数据&#xa;持久化配置&#xa;观察者通知" vertex="1">
          <mxGeometry height="62" width="180" x="1305" y="197" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-12" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="Model&#xa;菜单数据与状态" vertex="1">
          <mxGeometry height="78" width="170" x="933" y="341" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-13" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="Presenter&#xa;事件处理/导航逻辑" vertex="1">
          <mxGeometry height="78" width="170" x="933" y="454" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-14" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="View&#xa;菜单渲染绘制" vertex="1">
          <mxGeometry height="78" width="170" x="933" y="564" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-15" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="Model&#xa;应用信息数据" vertex="1">
          <mxGeometry height="78" width="156" x="1161" y="341" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-16" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="Presenter&#xa;信息展示逻辑" vertex="1">
          <mxGeometry height="78" width="156" x="1156" y="454" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-17" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="View&#xa;信息页面渲染" vertex="1">
          <mxGeometry height="78" width="156" x="1156" y="564" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-18" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="Model&#xa;YC 配置数据" vertex="1">
          <mxGeometry height="78" width="148" x="1363" y="341" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-19" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="Presenter&#xa;YC 控制逻辑" vertex="1">
          <mxGeometry height="78" width="148" x="1363" y="454" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-20" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=light-dark(#eeeeee,#1f2020);strokeColor=light-dark(#999999,#cccccc);fontColor=light-dark(#333333,#cccccc);" value="View&#xa;YC 页面渲染" vertex="1">
          <mxGeometry height="78" width="148" x="1363" y="564" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-21" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;flipH=1;legacyAnchorPoints=0;" value="🖥️ LCD 驱动&#xa;显存操作&#xa;图形/文字绘制" vertex="1">
          <mxGeometry height="100" width="160" x="1153" y="726" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-22" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#fa6800;strokeColor=#C73500;fontColor=#000000;flipH=1;legacyAnchorPoints=0;" value="⌨️ 按键驱动&#xa;输入抽象&#xa;本地/远程注入" vertex="1">
          <mxGeometry height="100" width="160" x="956" y="726" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-24" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#e3c800;strokeColor=#B09500;fontColor=#000000;flipH=1;legacyAnchorPoints=0;" value="🎨 渲染端口&#xa;底层绘制接口" vertex="1">
          <mxGeometry height="100" width="160" x="1346" y="726" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-25" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#6d8764;strokeColor=#3A5431;fontColor=#ffffff;" value="🌐 TCP/Socket&#xa;网络通信封装&#xa;跨平台适配" vertex="1">
          <mxGeometry height="102" width="150" x="959" y="879" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-26" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#647687;strokeColor=#314354;fontColor=#ffffff;" value="⚡ 线程工具&#xa;线程管理&#xa;同步机制" vertex="1">
          <mxGeometry height="102" width="151" x="1141" y="879" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-27" parent="1" style="whiteSpace=wrap;strokeWidth=2;fillColor=#a0522d;strokeColor=#6D1F00;fontColor=#ffffff;" value="🔤 UTF-8 处理&#xa;编码转换&#xa;字符解析" vertex="1">
          <mxGeometry height="102" width="155" x="1351.5" y="879" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-28" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-9" style="startArrow=none;endArrow=block;exitX=0.09;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-10" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-29" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-9" style="startArrow=none;endArrow=block;exitX=0.85;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-11" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-30" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-12" style="startArrow=block;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;exitDx=0;exitDy=0;" target="SKzmmjIQc6qRBKoh8kct-13" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-31" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-13" style="curved=1;startArrow=block;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-14" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-32" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-15" style="startArrow=block;endArrow=block;exitX=0.46;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-16" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-33" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-16" style="curved=1;startArrow=block;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-17" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-34" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-18" style="startArrow=block;endArrow=block;entryX=0.5;entryY=0;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="SKzmmjIQc6qRBKoh8kct-19" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-35" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-19" style="curved=1;startArrow=block;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-20" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-36" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-22" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-25" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-37" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-25" style="curved=1;startArrow=none;endArrow=block;exitX=1;exitY=0.5;entryX=0;entryY=0.5;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-26" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-38" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-21" style="curved=1;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;" target="SKzmmjIQc6qRBKoh8kct-27" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-39" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-11" style="dashed=1;dashPattern=2 3;startArrow=none;endArrow=block;entryX=0.5;entryY=0;rounded=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="SKzmmjIQc6qRBKoh8kct-12" value="">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="1403" y="280" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-40" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-11" style="dashed=1;dashPattern=2 3;startArrow=none;endArrow=block;exitX=0.49;exitY=1;entryX=0.5;entryY=0;rounded=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-15" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-41" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-11" style="dashed=1;dashPattern=2 3;startArrow=none;endArrow=block;exitX=0.5;exitY=1;entryX=0.5;entryY=0;rounded=0;exitDx=0;exitDy=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-18" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-42" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-10" style="curved=1;startArrow=none;endArrow=block;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="SKzmmjIQc6qRBKoh8kct-6" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-43" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-10" style="curved=1;startArrow=none;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-5" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-44" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-10" style="curved=1;startArrow=none;endArrow=block;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="SKzmmjIQc6qRBKoh8kct-4" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-45" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-14" style="curved=1;startArrow=none;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-21" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-46" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-6" style="curved=1;startArrow=none;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="SKzmmjIQc6qRBKoh8kct-22" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-48" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-17" style="curved=1;startArrow=none;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-21" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
        <mxCell id="SKzmmjIQc6qRBKoh8kct-49" edge="1" parent="1" source="SKzmmjIQc6qRBKoh8kct-20" style="curved=1;startArrow=none;endArrow=block;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="SKzmmjIQc6qRBKoh8kct-21" value="">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
