Docs(architecture): Add lua code execution to diagram

This commit is contained in:
Benedikt Peetz 2023-08-04 12:36:46 +02:00
parent ecaa98e771
commit d93b00484e
Signed by: bpeetz
GPG Key ID: A5E94010C3A642AD
2 changed files with 234 additions and 612 deletions

View File

@ -1,23 +1,51 @@
<mxfile host="Electron" modified="2023-07-26T21:54:19.816Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.6.1 Chrome/112.0.5615.204 Electron/24.6.1 Safari/537.36" etag="zGgim0xh6aVywIjIoCqx" version="21.6.1" type="device"> <mxfile host="app.diagrams.net" modified="2023-08-04T10:25:32.584Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0" etag="MddSPBE_GJy1ugcnxB6H" version="21.6.6" type="device">
<diagram name="Page-1" id="hWGGHW_Bsmf1wcgqsJl5"> <diagram name="Page-1" id="hWGGHW_Bsmf1wcgqsJl5">
<mxGraphModel dx="2049" dy="1167" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="1654" math="0" shadow="0"> <mxGraphModel dx="682" dy="366" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root> <root>
<mxCell id="0" /> <mxCell id="0" />
<mxCell id="1" parent="0" /> <mxCell id="1" parent="0" />
<mxCell id="sgZzQmQA5r4gPmcAVD2c-1" value="Main Process" style="swimlane;whiteSpace=wrap;html=1;fillStyle=solid;rounded=0;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=4;" parent="1" vertex="1"> <mxCell id="sgZzQmQA5r4gPmcAVD2c-1" value="Main Process" style="swimlane;html=1;fillStyle=solid;rounded=0;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=4;" parent="1" vertex="1">
<mxGeometry x="725" y="110" width="890" height="960" as="geometry" /> <mxGeometry x="40" y="80" width="770" height="700" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-5" value="Accounts (example)" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1">
<mxGeometry x="90" y="480" width="140" height="150" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-6" value="Account 1 (Matrix)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="erJn0JmvOIQi-aqMdXCH-5" vertex="1">
<mxGeometry y="30" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-7" value="Account 2 (Matrix)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="erJn0JmvOIQi-aqMdXCH-5" vertex="1">
<mxGeometry y="60" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-8" value="Account 3 (Signal)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="erJn0JmvOIQi-aqMdXCH-5" vertex="1">
<mxGeometry y="90" width="140" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-10" value="Account 4 (Telegram)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;" parent="erJn0JmvOIQi-aqMdXCH-5" vertex="1">
<mxGeometry y="120" width="140" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-35" target="bEImzGkf_4H7QTsFuULF-11" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-35" target="bEImzGkf_4H7QTsFuULF-11" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="343" y="370" /> <mxPoint x="342" y="370" />
<mxPoint x="445" y="370" /> <mxPoint x="385" y="370" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-35" value="Event Channel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-35" value="Event Stream" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1">
<mxGeometry x="265" y="390" width="155" height="60" as="geometry" /> <mxGeometry x="265" y="390" width="155" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-39" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="570" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-35" value="Current Account" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bEImzGkf_4H7QTsFuULF-34" vertex="1" connectable="0">
<mxGeometry x="-0.1086" y="-2" relative="1" as="geometry">
<mxPoint y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-39" value="Chat&amp;nbsp; Action Stream" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1">
<mxGeometry x="440" y="460" width="100" height="110" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-55" target="erJn0JmvOIQi-aqMdXCH-35" edge="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-55" target="erJn0JmvOIQi-aqMdXCH-35" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
@ -25,25 +53,25 @@
<mxGeometry x="40" y="390" width="120" height="60" as="geometry" /> <mxGeometry x="40" y="390" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-9" value="Main Loop&lt;br&gt;Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;startSize=40;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-9" value="Main Loop&lt;br&gt;Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;startSize=40;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1">
<mxGeometry x="40" y="200" width="810" height="160" as="geometry" /> <mxGeometry x="40" y="200" width="690" height="160" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-10" target="bEImzGkf_4H7QTsFuULF-11" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-10" target="bEImzGkf_4H7QTsFuULF-11" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-10" value="Draw UI" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-10" value="Draw UI" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" vertex="1">
<mxGeometry x="120" y="80" width="120" height="60" as="geometry" /> <mxGeometry x="125" y="80" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-11" target="bEImzGkf_4H7QTsFuULF-12" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-11" target="bEImzGkf_4H7QTsFuULF-12" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-11" value="Await Event" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-11" value="Await Event" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" vertex="1">
<mxGeometry x="345" y="80" width="120" height="60" as="geometry" /> <mxGeometry x="285" y="80" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-12" target="bEImzGkf_4H7QTsFuULF-10" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-12" target="bEImzGkf_4H7QTsFuULF-10" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="750" y="110" /> <mxPoint x="600" y="110" />
<mxPoint x="750" y="60" /> <mxPoint x="600" y="60" />
<mxPoint x="90" y="60" /> <mxPoint x="90" y="60" />
<mxPoint x="90" y="110" /> <mxPoint x="90" y="110" />
</Array> </Array>
@ -51,20 +79,74 @@
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-12" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="bEImzGkf_4H7QTsFuULF-9" source="bEImzGkf_4H7QTsFuULF-12" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<mxPoint x="650" y="-40" as="targetPoint" /> <mxPoint x="505" y="-40" as="targetPoint" />
<Array as="points">
<mxPoint x="650" y="-20" />
<mxPoint x="650" y="-20" />
</Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-12" value="Handle Event" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-12" value="Handle Event" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="bEImzGkf_4H7QTsFuULF-9" vertex="1">
<mxGeometry x="570" y="80" width="120" height="60" as="geometry" /> <mxGeometry x="445" y="80" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.096;entryY=1.001;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-6" target="erJn0JmvOIQi-aqMdXCH-35" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="280" y="520" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.366;entryY=0.993;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-7" target="erJn0JmvOIQi-aqMdXCH-35" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="322" y="550" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.612;entryY=1.017;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-8" target="erJn0JmvOIQi-aqMdXCH-35" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="360" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.873;entryY=1.033;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-10" target="erJn0JmvOIQi-aqMdXCH-35" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="400" y="610" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="sgZzQmQA5r4gPmcAVD2c-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="620" as="targetPoint" />
<mxPoint x="230" y="620" as="sourcePoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="sgZzQmQA5r4gPmcAVD2c-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="590" as="targetPoint" />
<mxPoint x="230" y="590" as="sourcePoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;startArrow=classic;startFill=1;endArrow=none;endFill=0;exitX=1.003;exitY=0.653;exitDx=0;exitDy=0;exitPerimeter=0;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="erJn0JmvOIQi-aqMdXCH-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="560" as="targetPoint" />
<mxPoint x="230" y="554.74" as="sourcePoint" />
<Array as="points">
<mxPoint x="265" y="560" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="sgZzQmQA5r4gPmcAVD2c-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="530" as="targetPoint" />
<mxPoint x="230" y="530" as="sourcePoint" />
<Array as="points" />
</mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="bEImzGkf_4H7QTsFuULF-12" target="erJn0JmvOIQi-aqMdXCH-35" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="bEImzGkf_4H7QTsFuULF-12" target="erJn0JmvOIQi-aqMdXCH-35" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="650" y="420" /> <mxPoint x="520" y="420" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
@ -73,85 +155,117 @@
<mxPoint x="11" as="offset" /> <mxPoint x="11" as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-1" value="Accounts - Vector" style="swimlane;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#2D7600;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;exitX=0.625;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="bEImzGkf_4H7QTsFuULF-12" target="erJn0JmvOIQi-aqMdXCH-39" edge="1">
<mxGeometry x="410" y="510" width="450" height="410" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-2" value="Account" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="z712foycFyuIYEkP9NH4-1" vertex="1">
<mxGeometry x="10" y="40" width="430" height="360" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.183;exitY=-0.075;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;exitPerimeter=0;" parent="z712foycFyuIYEkP9NH4-2" source="z712foycFyuIYEkP9NH4-3" target="z712foycFyuIYEkP9NH4-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-3" value="Socket Connection" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;strokeWidth=5;" parent="z712foycFyuIYEkP9NH4-2" vertex="1">
<mxGeometry x="10" y="300" width="410" height="51" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-7" value="Sync Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;" parent="z712foycFyuIYEkP9NH4-2" vertex="1">
<mxGeometry x="30" y="170" width="110" height="90" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="z712foycFyuIYEkP9NH4-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="119.99999999999977" y="-40" as="targetPoint" />
<mxPoint x="90" y="57" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-8" value="Response?" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="z712foycFyuIYEkP9NH4-7" vertex="1">
<mxGeometry x="25" y="41" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-14" value="N" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="z712foycFyuIYEkP9NH4-7" vertex="1">
<mxGeometry x="5" y="35" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-19" value="Y" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="z712foycFyuIYEkP9NH4-7" vertex="1">
<mxGeometry x="87" y="35" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="z712foycFyuIYEkP9NH4-2" source="z712foycFyuIYEkP9NH4-10" target="z712foycFyuIYEkP9NH4-35" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-10" value="Responeses Channel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" parent="z712foycFyuIYEkP9NH4-2" vertex="1">
<mxGeometry x="90" y="70" width="80" height="60" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-25" value="Backend Call - Function" style="swimlane;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="z712foycFyuIYEkP9NH4-2" vertex="1">
<mxGeometry x="210" y="70" width="170" height="190" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-34" value="Push Call" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-25" vertex="1">
<mxGeometry x="10" y="40" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-35" value="Await Response" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-25" vertex="1">
<mxGeometry x="10" y="90" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-36" value="Return Response" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-25" vertex="1">
<mxGeometry x="10" y="140" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.953;entryY=-0.069;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="z712foycFyuIYEkP9NH4-2" source="z712foycFyuIYEkP9NH4-34" target="z712foycFyuIYEkP9NH4-3" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="400" y="125" /> <mxPoint x="560" y="360" />
<mxPoint x="400" y="220" /> <mxPoint x="545" y="360" />
<mxPoint x="545" y="440" />
<mxPoint x="490" y="440" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" target="erJn0JmvOIQi-aqMdXCH-35" edge="1"> <mxCell id="yyTpLhAHu4WPmghRuIGA-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608A;strokeColor=#9673a6;" vertex="1" parent="sgZzQmQA5r4gPmcAVD2c-1">
<mxGeometry relative="1" as="geometry"> <mxGeometry x="600" y="560" width="120" height="60" as="geometry" />
<mxPoint x="470" y="776" as="sourcePoint" />
</mxGeometry>
</mxCell> </mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="bEImzGkf_4H7QTsFuULF-12" target="z712foycFyuIYEkP9NH4-25" edge="1"> <mxCell id="yyTpLhAHu4WPmghRuIGA-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="sgZzQmQA5r4gPmcAVD2c-1" source="bEImzGkf_4H7QTsFuULF-12" target="yyTpLhAHu4WPmghRuIGA-4">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="715" y="410" /> <mxPoint x="575" y="430" />
<mxPoint x="715" y="410" /> <mxPoint x="630" y="430" />
</Array>
<mxPoint x="650" y="350" as="sourcePoint" />
<mxPoint x="630" y="525" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="yyTpLhAHu4WPmghRuIGA-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.608;entryY=-0.073;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="sgZzQmQA5r4gPmcAVD2c-1" source="yyTpLhAHu4WPmghRuIGA-4" target="yyTpLhAHu4WPmghRuIGA-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="yyTpLhAHu4WPmghRuIGA-4" value="Code executor" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="sgZzQmQA5r4gPmcAVD2c-1">
<mxGeometry x="600" y="560" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="yyTpLhAHu4WPmghRuIGA-19" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="sgZzQmQA5r4gPmcAVD2c-1">
<mxGeometry x="600" y="650" width="50" height="30" as="geometry" />
</mxCell>
<mxCell id="yyTpLhAHu4WPmghRuIGA-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.67;exitY=-0.068;exitDx=0;exitDy=0;exitPerimeter=0;strokeColor=#82B366;entryX=1.002;entryY=0.17;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="sgZzQmQA5r4gPmcAVD2c-1" source="yyTpLhAHu4WPmghRuIGA-4" target="erJn0JmvOIQi-aqMdXCH-35">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="510" y="360" as="sourcePoint" />
<mxPoint x="430" y="400" as="targetPoint" />
<Array as="points">
<mxPoint x="680" y="400" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-40" value="Current&lt;br&gt;Account" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="z712foycFyuIYEkP9NH4-39" vertex="1" connectable="0"> <mxCell id="yyTpLhAHu4WPmghRuIGA-15" value="&lt;div&gt;Commands&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="yyTpLhAHu4WPmghRuIGA-13">
<mxGeometry x="-0.1741" y="1" relative="1" as="geometry"> <mxGeometry x="0.0387" y="3" relative="1" as="geometry">
<mxPoint x="-1" y="5" as="offset" /> <mxPoint as="offset" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-1" value="Trinitrix - Architecture - v2.1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;" parent="1" vertex="1"> <mxCell id="yyTpLhAHu4WPmghRuIGA-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.098;entryY=1.035;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="sgZzQmQA5r4gPmcAVD2c-1" source="yyTpLhAHu4WPmghRuIGA-18" target="yyTpLhAHu4WPmghRuIGA-4">
<mxGeometry x="1120" y="20" width="100" height="40" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="yyTpLhAHu4WPmghRuIGA-18" value="Lua" style="text;html=1;strokeColor=none;fillColor=#76608A;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="sgZzQmQA5r4gPmcAVD2c-1">
<mxGeometry x="600" y="650" width="50" height="30" as="geometry" />
</mxCell>
<mxCell id="yyTpLhAHu4WPmghRuIGA-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="sgZzQmQA5r4gPmcAVD2c-1" source="yyTpLhAHu4WPmghRuIGA-19" target="yyTpLhAHu4WPmghRuIGA-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-1" value="Trinitrix - Architecture - v2.0" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;" parent="1" vertex="1">
<mxGeometry x="375" y="20" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-3" value="Protocol Servers" style="swimlane;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
<mxGeometry x="40" y="840" width="600" height="220" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-9" value="Matrix Server&lt;br&gt;Process" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=5;startSize=40;" parent="erJn0JmvOIQi-aqMdXCH-3" vertex="1">
<mxGeometry x="40" y="60" width="100" height="140" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-12" value="Matrix Server&lt;br&gt;Process" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;startSize=40;" parent="erJn0JmvOIQi-aqMdXCH-3" vertex="1">
<mxGeometry x="180" y="60" width="100" height="140" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-14" value="Signal Server&lt;br&gt;Process" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;startSize=40;" parent="erJn0JmvOIQi-aqMdXCH-3" vertex="1">
<mxGeometry x="320" y="60" width="100" height="140" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-15" value="Telegram Server&lt;br&gt;Process" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;startSize=40;" parent="erJn0JmvOIQi-aqMdXCH-3" vertex="1">
<mxGeometry x="460" y="60" width="100" height="140" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fillColor=#008a00;strokeColor=#005700;" parent="1" source="erJn0JmvOIQi-aqMdXCH-6" target="erJn0JmvOIQi-aqMdXCH-9" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="50" y="605" />
<mxPoint x="50" y="830" />
<mxPoint x="130" y="830" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fillColor=#008a00;strokeColor=#005700;" parent="1" source="erJn0JmvOIQi-aqMdXCH-7" target="erJn0JmvOIQi-aqMdXCH-12" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="70" y="635" />
<mxPoint x="70" y="810" />
<mxPoint x="270" y="810" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;fillColor=#008a00;strokeColor=#005700;" parent="1" source="erJn0JmvOIQi-aqMdXCH-8" target="erJn0JmvOIQi-aqMdXCH-14" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="90" y="665" />
<mxPoint x="90" y="790" />
<mxPoint x="410" y="790" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fillColor=#008a00;strokeColor=#005700;" parent="1" source="erJn0JmvOIQi-aqMdXCH-10" target="erJn0JmvOIQi-aqMdXCH-15" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="110" y="695" />
<mxPoint x="110" y="770" />
<mxPoint x="550" y="770" />
</Array>
</mxGeometry>
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-65" value="Color Legend" style="shape=table;startSize=30;container=1;collapsible=0;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=0;strokeColor=default;fontSize=16;strokeWidth=1;" parent="1" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-65" value="Color Legend" style="shape=table;startSize=30;container=1;collapsible=0;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=0;strokeColor=default;fontSize=16;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="40" y="1310" width="180" height="300" as="geometry" /> <mxGeometry x="660" y="792" width="180" height="290" as="geometry" />
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-66" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-66" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1">
<mxGeometry y="30" width="180" height="30" as="geometry" /> <mxGeometry y="30" width="180" height="30" as="geometry" />
@ -213,7 +327,7 @@
<mxRectangle width="40" height="30" as="alternateBounds" /> <mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-3" value="Struct / Object" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="bEImzGkf_4H7QTsFuULF-1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-3" value="Struct / Vector" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="bEImzGkf_4H7QTsFuULF-1" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry"> <mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" /> <mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
@ -231,568 +345,72 @@
<mxRectangle width="140" height="30" as="alternateBounds" /> <mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-37" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1">
<mxGeometry y="210" width="180" height="50" as="geometry" />
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-38" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" parent="bEImzGkf_4H7QTsFuULF-37" vertex="1">
<mxGeometry width="40" height="50" as="geometry">
<mxRectangle width="40" height="50" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-39" value="API&lt;br&gt;(Bidirectional IPC)" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="bEImzGkf_4H7QTsFuULF-37" vertex="1">
<mxGeometry x="40" width="140" height="50" as="geometry">
<mxRectangle width="140" height="50" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-41" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-41" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1">
<mxGeometry y="210" width="180" height="30" as="geometry" /> <mxGeometry y="260" width="180" height="30" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-42" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" parent="bEImzGkf_4H7QTsFuULF-41" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-42" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" parent="bEImzGkf_4H7QTsFuULF-41" vertex="1">
<mxGeometry width="40" height="30" as="geometry"> <mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" /> <mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-43" value="Vector" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="bEImzGkf_4H7QTsFuULF-41" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-43" value="Stream" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="bEImzGkf_4H7QTsFuULF-41" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-4" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1">
<mxGeometry y="240" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-5" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" parent="z712foycFyuIYEkP9NH4-4" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-6" value="MPSChannel" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="z712foycFyuIYEkP9NH4-4" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-21" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" parent="erJn0JmvOIQi-aqMdXCH-65" vertex="1">
<mxGeometry y="270" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-22" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" parent="z712foycFyuIYEkP9NH4-21" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-23" value="Function" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" parent="z712foycFyuIYEkP9NH4-21" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry"> <mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" /> <mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-77" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=2;" parent="1" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-77" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="50" y="1407" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="889" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-78" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-78" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="50" y="1376" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="858" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-79" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" parent="1" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-79" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="50" y="1346" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="828" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-83" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d0cee2;strokeColor=#56517e;strokeWidth=2;" parent="1" vertex="1"> <mxCell id="erJn0JmvOIQi-aqMdXCH-83" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d0cee2;strokeColor=#56517e;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="50" y="1437" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="919" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-4" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-4" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="50" y="1467" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="949" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-8" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=2;" parent="1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-8" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="50" y="1496" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="978" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-28" value="" style="endArrow=none;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="480" y="700" as="sourcePoint" />
<mxPoint x="480" y="610" as="targetPoint" />
</mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-40" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#7FE01F;strokeColor=#2D7600;strokeWidth=2;fontColor=#ffffff;" parent="1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-40" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#7FE01F;strokeColor=#2D7600;strokeWidth=2;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="50" y="1526" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="1016" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-44" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#76608a;strokeColor=#432D57;strokeWidth=2;fontColor=#ffffff;" parent="1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-44" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#76608a;strokeColor=#432D57;strokeWidth=2;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="50" y="1555" width="20" height="20" as="geometry" /> <mxGeometry x="669" y="1052" width="20" height="20" as="geometry" />
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="bEImzGkf_4H7QTsFuULF-50" target="bEImzGkf_4H7QTsFuULF-10" edge="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="bEImzGkf_4H7QTsFuULF-50" target="bEImzGkf_4H7QTsFuULF-10" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<Array as="points"> <Array as="points">
<mxPoint x="950" y="310" /> <mxPoint x="265" y="280" />
<mxPoint x="950" y="310" /> <mxPoint x="265" y="280" />
</Array> </Array>
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-50" value="Status" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> <mxCell id="bEImzGkf_4H7QTsFuULF-50" value="Status" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="765" y="160" width="810" height="110" as="geometry" /> <mxGeometry x="80" y="130" width="690" height="110" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-24" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=2;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="50" y="1582" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-41" value="Backend Process (one per account)" style="swimlane;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=5;gradientColor=none;" parent="1" vertex="1">
<mxGeometry x="1135" y="1210" width="450" height="400" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-45" value="Main Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=5;" parent="z712foycFyuIYEkP9NH4-41" vertex="1">
<mxGeometry x="20" y="240" width="410" height="140" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-45" source="z712foycFyuIYEkP9NH4-47" target="z712foycFyuIYEkP9NH4-48" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-47" value="Await" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-45" vertex="1">
<mxGeometry x="240" y="50" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-45" source="z712foycFyuIYEkP9NH4-48" target="z712foycFyuIYEkP9NH4-47" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="30" y="75" />
<mxPoint x="30" y="120" />
<mxPoint x="380" y="120" />
<mxPoint x="380" y="75" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-48" value="Handle" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-45" vertex="1">
<mxGeometry x="50" y="50" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.665;entryY=-0.066;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="z712foycFyuIYEkP9NH4-41" source="z712foycFyuIYEkP9NH4-42" target="z712foycFyuIYEkP9NH4-47" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-42" value="Event Channel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" parent="z712foycFyuIYEkP9NH4-41" vertex="1">
<mxGeometry x="310" y="160" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.539;entryY=0.017;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="z712foycFyuIYEkP9NH4-41" source="z712foycFyuIYEkP9NH4-53" target="z712foycFyuIYEkP9NH4-42" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-53" value="Sync Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;" parent="z712foycFyuIYEkP9NH4-41" vertex="1">
<mxGeometry x="330" y="60" width="90" height="70" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-64" value="Core Call - Function" style="swimlane;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="z712foycFyuIYEkP9NH4-41" vertex="1">
<mxGeometry x="40" y="80" width="120" height="90" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-65" value="Push Call" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-64" vertex="1">
<mxGeometry x="10" y="40" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="z712foycFyuIYEkP9NH4-41" source="z712foycFyuIYEkP9NH4-48" target="z712foycFyuIYEkP9NH4-64" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="130" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.864;entryY=1.056;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="z712foycFyuIYEkP9NH4-53" target="z712foycFyuIYEkP9NH4-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-60" value="Backend&lt;br&gt;Specific&lt;br&gt;Stuff" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1315" y="1260" width="110" height="170" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="z712foycFyuIYEkP9NH4-48" target="z712foycFyuIYEkP9NH4-60" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-63" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.986;entryY=0.831;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" source="z712foycFyuIYEkP9NH4-42" target="z712foycFyuIYEkP9NH4-60" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-71" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="z712foycFyuIYEkP9NH4-65" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1245" y="1009" as="targetPoint" />
<Array as="points">
<mxPoint x="1305" y="1345" />
<mxPoint x="1305" y="1270" />
<mxPoint x="1245" y="1270" />
<mxPoint x="1245" y="1009" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-73" value="Call" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="z712foycFyuIYEkP9NH4-71" vertex="1" connectable="0">
<mxGeometry x="0.3283" y="-2" relative="1" as="geometry">
<mxPoint x="-3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.093;entryY=0.955;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="z712foycFyuIYEkP9NH4-48" target="z712foycFyuIYEkP9NH4-3" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1235" y="1420" />
<mxPoint x="1155" y="1420" />
<mxPoint x="1155" y="1256" />
<mxPoint x="1193" y="1256" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="z712foycFyuIYEkP9NH4-74" value="Response" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="z712foycFyuIYEkP9NH4-72" vertex="1" connectable="0">
<mxGeometry x="0.5367" y="-1" relative="1" as="geometry">
<mxPoint x="-2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-1" value="Main Process" style="swimlane;whiteSpace=wrap;html=1;fillStyle=solid;rounded=0;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=4;" vertex="1" parent="1">
<mxGeometry x="725" y="110" width="890" height="960" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-1" source="nlrsVmrCqaMSykwOvEwv-3" target="nlrsVmrCqaMSykwOvEwv-10">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="343" y="370" />
<mxPoint x="445" y="370" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-3" value="Event Channel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-1">
<mxGeometry x="265" y="390" width="155" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-1" source="nlrsVmrCqaMSykwOvEwv-5" target="nlrsVmrCqaMSykwOvEwv-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-5" value="Key Input Sync &lt;br&gt;Thread" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-1">
<mxGeometry x="40" y="390" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-6" value="Main Loop&lt;br&gt;Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;startSize=40;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-1">
<mxGeometry x="40" y="200" width="810" height="160" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-6" source="nlrsVmrCqaMSykwOvEwv-8" target="nlrsVmrCqaMSykwOvEwv-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-8" value="Draw UI" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-6">
<mxGeometry x="120" y="80" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-6" source="nlrsVmrCqaMSykwOvEwv-10" target="nlrsVmrCqaMSykwOvEwv-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-10" value="Await Event" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-6">
<mxGeometry x="345" y="80" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-6" source="nlrsVmrCqaMSykwOvEwv-13" target="nlrsVmrCqaMSykwOvEwv-8">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="750" y="110" />
<mxPoint x="750" y="60" />
<mxPoint x="90" y="60" />
<mxPoint x="90" y="110" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-6" source="nlrsVmrCqaMSykwOvEwv-13">
<mxGeometry relative="1" as="geometry">
<mxPoint x="650" y="-40" as="targetPoint" />
<Array as="points">
<mxPoint x="650" y="-20" />
<mxPoint x="650" y="-20" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-13" value="Handle Event" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-6">
<mxGeometry x="570" y="80" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-1" source="nlrsVmrCqaMSykwOvEwv-13" target="nlrsVmrCqaMSykwOvEwv-3">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="650" y="420" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-15" value="Commands" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="nlrsVmrCqaMSykwOvEwv-14">
<mxGeometry x="0.5636" relative="1" as="geometry">
<mxPoint x="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-16" value="Accounts - Vector" style="swimlane;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#2D7600;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-1">
<mxGeometry x="410" y="510" width="450" height="410" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-17" value="Account" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-16">
<mxGeometry x="10" y="40" width="430" height="360" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.183;exitY=-0.075;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;exitPerimeter=0;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-17" source="nlrsVmrCqaMSykwOvEwv-19" target="nlrsVmrCqaMSykwOvEwv-22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-19" value="Socket Connection" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;strokeWidth=5;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-17">
<mxGeometry x="10" y="300" width="410" height="51" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-20" value="Sync Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-17">
<mxGeometry x="30" y="170" width="110" height="90" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-20">
<mxGeometry relative="1" as="geometry">
<mxPoint x="119.99999999999977" y="-40" as="targetPoint" />
<mxPoint x="90" y="57" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-22" value="Response?" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-20">
<mxGeometry x="25" y="41" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-23" value="N" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-20">
<mxGeometry x="5" y="35" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-24" value="Y" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-20">
<mxGeometry x="87" y="35" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#f8cecc;strokeColor=#b85450;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-17" source="nlrsVmrCqaMSykwOvEwv-26" target="nlrsVmrCqaMSykwOvEwv-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-26" value="Responeses Channel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;fontColor=#ffffff;strokeColor=#432D57;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-17">
<mxGeometry x="90" y="70" width="80" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-27" value="Backend Call - Function" style="swimlane;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-17">
<mxGeometry x="210" y="70" width="170" height="190" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-28" value="Push Call" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-27">
<mxGeometry x="10" y="40" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-29" value="Await Response" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-27">
<mxGeometry x="10" y="90" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-30" value="Return Response" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-27">
<mxGeometry x="10" y="140" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.953;entryY=-0.069;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-17" source="nlrsVmrCqaMSykwOvEwv-28" target="nlrsVmrCqaMSykwOvEwv-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="400" y="125" />
<mxPoint x="400" y="220" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-1" target="nlrsVmrCqaMSykwOvEwv-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="470" y="776" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-1" source="nlrsVmrCqaMSykwOvEwv-13" target="nlrsVmrCqaMSykwOvEwv-27">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="715" y="410" />
<mxPoint x="715" y="410" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-34" value="Current&lt;br&gt;Account" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="nlrsVmrCqaMSykwOvEwv-33">
<mxGeometry x="-0.1741" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-35" value="Trinitrix - Architecture - v2.1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="1">
<mxGeometry x="1120" y="20" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-36" value="Color Legend" style="shape=table;startSize=30;container=1;collapsible=0;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=0;strokeColor=default;fontSize=16;strokeWidth=1;" vertex="1" parent="1">
<mxGeometry x="40" y="1310" width="180" height="300" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-37" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-38" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;pointerEvents=1;fontSize=16;strokeWidth=1;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-37">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-39" value="Thread / Process" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-37">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-40" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-41" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-40">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-42" value="Write" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-40">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-43" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-44" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-43">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-45" value="Read" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-43">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-46" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-47" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-46">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-48" value="Execution Flow" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-46">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-49" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="150" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-50" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-49">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-51" value="Struct / Object" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-49">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-52" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="180" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-53" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-52">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-54" value="Logical Container" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-52">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-55" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="210" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-56" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-55">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-57" value="Vector" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-55">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-58" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="240" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-59" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-58">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-60" value="MPSChannel" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-58">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-61" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-36">
<mxGeometry y="270" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-62" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;perimeterSpacing=0;fillStyle=solid;strokeWidth=2;fillColor=none;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-61">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-63" value="Function" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden;strokeColor=inherit;fontSize=16;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-61">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-64" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="50" y="1407" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-65" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="50" y="1376" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-66" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="50" y="1346" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-67" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d0cee2;strokeColor=#56517e;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="50" y="1437" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-68" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="50" y="1467" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-69" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="50" y="1496" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-70" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#7FE01F;strokeColor=#2D7600;strokeWidth=2;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="50" y="1526" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-71" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#76608a;strokeColor=#432D57;strokeWidth=2;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="50" y="1555" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f8cecc;strokeColor=#b85450;" edge="1" parent="1" source="nlrsVmrCqaMSykwOvEwv-73" target="nlrsVmrCqaMSykwOvEwv-8">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="950" y="310" />
<mxPoint x="950" y="310" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-73" value="Status" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="765" y="160" width="810" height="110" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-74" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#0050ef;strokeColor=#001DBC;strokeWidth=2;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="50" y="1582" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-75" value="Backend Process (one per account)" style="swimlane;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;strokeWidth=5;gradientColor=none;" vertex="1" parent="1">
<mxGeometry x="1135" y="1210" width="450" height="400" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-76" value="Main Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=5;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-75">
<mxGeometry x="20" y="240" width="410" height="140" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-77" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-76" source="nlrsVmrCqaMSykwOvEwv-78" target="nlrsVmrCqaMSykwOvEwv-80">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-78" value="Await" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-76">
<mxGeometry x="240" y="50" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-76" source="nlrsVmrCqaMSykwOvEwv-80" target="nlrsVmrCqaMSykwOvEwv-78">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="30" y="75" />
<mxPoint x="30" y="120" />
<mxPoint x="380" y="120" />
<mxPoint x="380" y="75" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-80" value="Handle" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-76">
<mxGeometry x="50" y="50" width="120" height="50" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-81" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.665;entryY=-0.066;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#f8cecc;strokeColor=#b85450;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-75" source="nlrsVmrCqaMSykwOvEwv-82" target="nlrsVmrCqaMSykwOvEwv-78">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-82" value="Event Channel" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#76608a;strokeColor=#432D57;fontColor=#ffffff;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-75">
<mxGeometry x="310" y="160" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-83" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.539;entryY=0.017;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-75" source="nlrsVmrCqaMSykwOvEwv-84" target="nlrsVmrCqaMSykwOvEwv-82">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-84" value="Sync Thread" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-75">
<mxGeometry x="330" y="60" width="90" height="70" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-85" value="Core Call - Function" style="swimlane;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-75">
<mxGeometry x="40" y="80" width="120" height="90" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-86" value="Push Call" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="nlrsVmrCqaMSykwOvEwv-85">
<mxGeometry x="10" y="40" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;" edge="1" parent="nlrsVmrCqaMSykwOvEwv-75" source="nlrsVmrCqaMSykwOvEwv-80" target="nlrsVmrCqaMSykwOvEwv-85">
<mxGeometry relative="1" as="geometry">
<mxPoint x="130" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.864;entryY=1.056;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;" edge="1" parent="1" source="nlrsVmrCqaMSykwOvEwv-84" target="nlrsVmrCqaMSykwOvEwv-19">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-89" value="Backend&lt;br&gt;Specific&lt;br&gt;Stuff" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="1315" y="1260" width="110" height="170" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="1" source="nlrsVmrCqaMSykwOvEwv-80" target="nlrsVmrCqaMSykwOvEwv-89">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-91" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.986;entryY=0.831;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;fillColor=#f8cecc;strokeColor=#b85450;" edge="1" parent="1" source="nlrsVmrCqaMSykwOvEwv-82" target="nlrsVmrCqaMSykwOvEwv-89">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="1" source="nlrsVmrCqaMSykwOvEwv-86">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1245" y="1009" as="targetPoint" />
<Array as="points">
<mxPoint x="1305" y="1345" />
<mxPoint x="1305" y="1270" />
<mxPoint x="1245" y="1270" />
<mxPoint x="1245" y="1009" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-93" value="Call" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="nlrsVmrCqaMSykwOvEwv-92">
<mxGeometry x="0.3283" y="-2" relative="1" as="geometry">
<mxPoint x="-3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-94" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.093;entryY=0.955;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" edge="1" parent="1" source="nlrsVmrCqaMSykwOvEwv-80" target="nlrsVmrCqaMSykwOvEwv-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1235" y="1420" />
<mxPoint x="1155" y="1420" />
<mxPoint x="1155" y="1256" />
<mxPoint x="1193" y="1256" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="nlrsVmrCqaMSykwOvEwv-95" value="Response" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="nlrsVmrCqaMSykwOvEwv-94">
<mxGeometry x="0.5367" y="-1" relative="1" as="geometry">
<mxPoint x="-2" as="offset" />
</mxGeometry>
</mxCell> </mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>

4
docs/architecture.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 51 KiB