1
0
Fork 0

Docs(Architecture): theoretically redesigned the architecture to be chat protocol independant

This commit is contained in:
antifallobst 2023-07-20 15:47:40 +02:00
parent 80b72b53c0
commit 69a15e2886
Signed by: antifallobst
GPG Key ID: 2B4F402172791BAF
2 changed files with 332 additions and 199 deletions

View File

@ -1,237 +1,370 @@
<mxfile host="app.diagrams.net" modified="2023-07-01T20:42:20.779Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0" etag="9AqWz0qh-ewpSTInHByT" version="21.5.2" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1990" dy="1197" 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">
<mxfile host="Electron" modified="2023-07-20T12:22:59.639Z" 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="_WmtPcwORnqrL-vWL4cx" version="21.6.1" type="device">
<diagram name="Page-1" id="hWGGHW_Bsmf1wcgqsJl5">
<mxGraphModel dx="1434" dy="817" 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>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="zkfFHV4jXpPFQw0GAbJ--0" value="App - Struct" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="320" y="120" width="160" height="120" as="geometry">
<mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" />
</mxGeometry>
<mxCell id="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">
<mxGeometry x="40" y="80" width="770" height="680" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--1" value="ui&#xa;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="30" width="160" height="26" as="geometry" />
<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="zkfFHV4jXpPFQw0GAbJ--2" value="accounts_manager&#xa;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="zkfFHV4jXpPFQw0GAbJ--0" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-35" value="status" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="zkfFHV4jXpPFQw0GAbJ--0">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-7" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="EYjtFuS0Bnb1uTnDH7Uf-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-78" value="&lt;div&gt;Call&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-7">
<mxGeometry x="0.0638" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--6" value="Matrix Abstraction - Module" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=3;glass=0;swimlaneLine=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="40" y="560" width="400" height="180" as="geometry">
<mxRectangle x="200" y="540" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-29" value="" style="group;strokeWidth=4;strokeColor=none;" vertex="1" connectable="0" parent="zkfFHV4jXpPFQw0GAbJ--6">
<mxGeometry y="26" width="400" height="154" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-20" value="" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=0;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;strokeColor=default;swimlaneLine=0;fillColor=none;container=0;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-29">
<mxGeometry width="200" height="38.5" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-21" value="Calls To Matrix SDK" 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;container=0;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-20">
<mxGeometry width="200" height="38.5" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-24" value="Sync Thread" 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;container=0;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-29">
<mxGeometry x="200" width="200" height="68.5" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-25" value="on_event" 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;container=0;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-24">
<mxGeometry y="30" width="200" height="38.5" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--13" target="EYjtFuS0Bnb1uTnDH7Uf-21">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="120" y="440" />
<mxPoint x="20" y="440" />
<mxPoint x="20" y="605" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-81" value="Call" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-51">
<mxGeometry x="-0.2437" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--13" value="Accounts Manager - Struct&#xa;" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="40" y="220" width="160" height="130" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--14" value="add_account" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" parent="zkfFHV4jXpPFQw0GAbJ--13" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-41" value="remove_account" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" vertex="1" parent="zkfFHV4jXpPFQw0GAbJ--13">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-42" value="get_current_account_info" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" vertex="1" parent="zkfFHV4jXpPFQw0GAbJ--13">
<mxGeometry y="78" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-43" value="switch_account" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" vertex="1" parent="zkfFHV4jXpPFQw0GAbJ--13">
<mxGeometry y="104" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="zkfFHV4jXpPFQw0GAbJ--17" value="UI - Struct" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="600" y="220" width="160" height="100" as="geometry">
<mxRectangle x="550" y="140" width="160" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-8" value="&lt;div&gt;update&lt;/div&gt;" 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;" vertex="1" parent="zkfFHV4jXpPFQw0GAbJ--17">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--1" target="zkfFHV4jXpPFQw0GAbJ--17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-86" value="&lt;div&gt;Child&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-1">
<mxGeometry x="-0.4493" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--2" target="zkfFHV4jXpPFQw0GAbJ--13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-84" value="&lt;div&gt;Child&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-2">
<mxGeometry x="-0.438" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-5" value="Trinitrix - Codebase Structure - v1.0" style="text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="364" y="20" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-6" value="Matrix SDK - External Crate" style="swimlane;whiteSpace=wrap;html=1;strokeWidth=3;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="100" y="860" width="280" height="150" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.13;entryY=0.002;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="EYjtFuS0Bnb1uTnDH7Uf-35" target="EYjtFuS0Bnb1uTnDH7Uf-45">
<mxGeometry relative="1" as="geometry">
<mxPoint x="400" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="300" y="215" />
<mxPoint x="300" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-85" value="Child" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-37">
<mxGeometry x="0.0976" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-45" value="Status - Struct" style="swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=3;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="280" y="320" width="160" height="130" as="geometry">
<mxRectangle x="340" y="380" width="170" height="26" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-46" value="rooms" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-45">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-49" value="current_room" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-45">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-56" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="860" as="sourcePoint" />
<mxPoint x="240" y="640" as="targetPoint" />
<Array as="points">
<mxPoint x="280" y="710" />
<mxPoint x="280" y="680" />
<mxPoint x="210" y="680" />
<mxPoint x="210" y="640" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-79" value="&lt;div&gt;Read&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-56">
<mxGeometry x="-0.6652" y="-3" relative="1" as="geometry">
<mxPoint x="-3" y="-3" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-90" value="Mainloop" 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;strokeWidth=3;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="590" y="585" width="140" height="120" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-91" value="Wait for KeyEvent" 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;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-90">
<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="EYjtFuS0Bnb1uTnDH7Uf-92" value="Handle Event" 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;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-90">
<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="EYjtFuS0Bnb1uTnDH7Uf-124" value="Repeat" 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;" vertex="1" parent="EYjtFuS0Bnb1uTnDH7Uf-90">
<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="EYjtFuS0Bnb1uTnDH7Uf-105" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="EYjtFuS0Bnb1uTnDH7Uf-100">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="410" as="targetPoint" />
</mxGeometry>
<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 id="EYjtFuS0Bnb1uTnDH7Uf-106" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.017;entryY=0.567;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="EYjtFuS0Bnb1uTnDH7Uf-100" target="EYjtFuS0Bnb1uTnDH7Uf-8">
<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">
<Array as="points">
<mxPoint x="540" y="370" />
<mxPoint x="540" y="263" />
<mxPoint x="342" y="370" />
<mxPoint x="385" y="370" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-118" value="Text" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-106">
<mxGeometry x="-0.072" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
<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" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-100" value="&lt;div&gt;R/W&lt;/div&gt;&lt;div&gt;Mutex&lt;br&gt;&lt;/div&gt;" style="html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="464" y="350" width="50" height="80" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-104" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="EYjtFuS0Bnb1uTnDH7Uf-25" target="EYjtFuS0Bnb1uTnDH7Uf-100">
<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">
<Array as="points">
<mxPoint x="540" y="630" />
<mxPoint x="540" y="410" />
</Array>
<mxPoint x="440" y="570" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-117" value="&lt;div&gt;Write&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-104">
<mxGeometry x="0.5275" relative="1" as="geometry">
<mxPoint as="offset" />
<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="EYjtFuS0Bnb1uTnDH7Uf-110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="464" y="370" as="targetPoint" />
<mxPoint x="440" y="370" as="sourcePoint" />
</mxGeometry>
<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="570" y="510" width="120" height="120" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-128" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="EYjtFuS0Bnb1uTnDH7Uf-120" target="EYjtFuS0Bnb1uTnDH7Uf-8">
<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" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-120" value="Mutex" style="html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="750" y="375" width="60" height="30" as="geometry" />
<mxCell id="erJn0JmvOIQi-aqMdXCH-55" value="Key Input Sync &lt;br&gt;Thread" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=4;" parent="sgZzQmQA5r4gPmcAVD2c-1" vertex="1">
<mxGeometry x="40" y="390" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="EYjtFuS0Bnb1uTnDH7Uf-92" target="EYjtFuS0Bnb1uTnDH7Uf-120">
<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="690" height="160" as="geometry" />
</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">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-123" value="Call" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-122">
<mxGeometry x="-0.8689" relative="1" as="geometry">
<mxPoint x="5" as="offset" />
</mxGeometry>
<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="125" y="80" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-125" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" target="EYjtFuS0Bnb1uTnDH7Uf-120">
<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" />
</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">
<mxGeometry x="285" y="80" width="120" height="60" as="geometry" />
</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">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="650.24" as="sourcePoint" />
<mxPoint x="780" y="420" as="targetPoint" />
<Array as="points">
<mxPoint x="440" y="640" />
<mxPoint x="550" y="640" />
<mxPoint x="550" y="565" />
<mxPoint x="780" y="565" />
<mxPoint x="600" y="110" />
<mxPoint x="600" y="60" />
<mxPoint x="90" y="60" />
<mxPoint x="90" y="110" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="EYjtFuS0Bnb1uTnDH7Uf-126" value="Call" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="EYjtFuS0Bnb1uTnDH7Uf-125">
<mxGeometry x="0.046" relative="1" as="geometry">
<mxPoint as="offset" />
<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">
<mxPoint x="505" y="-40" as="targetPoint" />
</mxGeometry>
</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">
<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 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">
<Array as="points">
<mxPoint x="520" y="420" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-48" value="Commands" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bEImzGkf_4H7QTsFuULF-46" vertex="1" connectable="0">
<mxGeometry x="0.5636" relative="1" as="geometry">
<mxPoint x="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="sgZzQmQA5r4gPmcAVD2c-1" source="bEImzGkf_4H7QTsFuULF-12" target="erJn0JmvOIQi-aqMdXCH-39" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="560" y="420" />
<mxPoint x="630" y="420" />
</Array>
</mxGeometry>
</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 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="660" y="792" width="180" height="290" as="geometry" />
</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">
<mxGeometry y="30" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-67" 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;" parent="erJn0JmvOIQi-aqMdXCH-66" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-68" 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;" parent="erJn0JmvOIQi-aqMdXCH-66" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-69" 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="60" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-70" value="" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;top=0;left=0;bottom=0;right=0;overflow=hidden;fontSize=16;fillColor=none;" parent="erJn0JmvOIQi-aqMdXCH-69" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-71" 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;" parent="erJn0JmvOIQi-aqMdXCH-69" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-72" 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="90" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-73" 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="erJn0JmvOIQi-aqMdXCH-72" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-74" 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;" parent="erJn0JmvOIQi-aqMdXCH-72" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-80" 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="120" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-81" 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="erJn0JmvOIQi-aqMdXCH-80" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="erJn0JmvOIQi-aqMdXCH-82" 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;" parent="erJn0JmvOIQi-aqMdXCH-80" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-1" 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="150" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-2" 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-1" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<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">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-5" 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="180" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-6" 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-5" vertex="1">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-7" 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;" parent="bEImzGkf_4H7QTsFuULF-5" vertex="1">
<mxGeometry x="40" width="140" height="30" as="geometry">
<mxRectangle width="140" height="30" as="alternateBounds" />
</mxGeometry>
</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">
<mxGeometry y="260" width="180" height="30" as="geometry" />
</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">
<mxGeometry width="40" height="30" as="geometry">
<mxRectangle width="40" height="30" as="alternateBounds" />
</mxGeometry>
</mxCell>
<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="erJn0JmvOIQi-aqMdXCH-77" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;strokeWidth=2;" parent="1" vertex="1">
<mxGeometry x="669" y="889" width="20" height="20" as="geometry" />
</mxCell>
<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="669" y="858" width="20" height="20" as="geometry" />
</mxCell>
<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="669" y="828" width="20" height="20" as="geometry" />
</mxCell>
<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="669" y="919" width="20" height="20" as="geometry" />
</mxCell>
<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="669" y="949" width="20" height="20" as="geometry" />
</mxCell>
<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="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 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="669" y="1016" width="20" height="20" as="geometry" />
</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">
<mxGeometry x="669" y="1052" width="20" height="20" as="geometry" />
</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">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="265" y="280" />
<mxPoint x="265" y="280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bEImzGkf_4H7QTsFuULF-50" value="Status" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="80" y="130" width="690" height="110" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>

BIN
docs/architecture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB