mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
3e07161121
* docs: remove connection ID from simplex-messaging.md, #8 * docs: remove alternative flow in simplex-messaging, #20 * docs: update simplex diagrams to remove connection ID * docs: remove connection ID from graph-chat * docs: update duplex connection diagram to remove connection ID, closes #8
505 lines
19 KiB
XML
505 lines
19 KiB
XML
<svg id="mermaid-1579981583566" width="918.03125" xmlns="http://www.w3.org/2000/svg" height="157.95216369628906" viewBox="0 0 918.03125 157.95216369628906"><style>
|
|
|
|
|
|
|
|
#mermaid-1579981583566 .label {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
color: #333; }
|
|
|
|
#mermaid-1579981583566 .label text {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 .node rect,
|
|
#mermaid-1579981583566 .node circle,
|
|
#mermaid-1579981583566 .node ellipse,
|
|
#mermaid-1579981583566 .node polygon,
|
|
#mermaid-1579981583566 .node path {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1px; }
|
|
|
|
#mermaid-1579981583566 .node .label {
|
|
text-align: center; }
|
|
|
|
#mermaid-1579981583566 .node.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1579981583566 .arrowheadPath {
|
|
fill: #333333; }
|
|
|
|
#mermaid-1579981583566 .edgePath .path {
|
|
stroke: #333333;
|
|
stroke-width: 1.5px; }
|
|
|
|
#mermaid-1579981583566 .edgeLabel {
|
|
background-color: #e8e8e8;
|
|
text-align: center; }
|
|
|
|
#mermaid-1579981583566 .cluster rect {
|
|
fill: #ffffde;
|
|
stroke: #aaaa33;
|
|
stroke-width: 1px; }
|
|
|
|
#mermaid-1579981583566 .cluster text {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 div.mermaidTooltip {
|
|
position: absolute;
|
|
text-align: center;
|
|
max-width: 200px;
|
|
padding: 2px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 12px;
|
|
background: #ffffde;
|
|
border: 1px solid #aaaa33;
|
|
border-radius: 2px;
|
|
pointer-events: none;
|
|
z-index: 100; }
|
|
|
|
#mermaid-1579981583566 .actor {
|
|
stroke: #CCCCFF;
|
|
fill: #ECECFF; }
|
|
|
|
#mermaid-1579981583566 text.actor {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579981583566 .actor-line {
|
|
stroke: grey; }
|
|
|
|
#mermaid-1579981583566 .messageLine0 {
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #333; }
|
|
|
|
#mermaid-1579981583566 .messageLine1 {
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #333; }
|
|
|
|
#mermaid-1579981583566 #arrowhead {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 .sequenceNumber {
|
|
fill: white; }
|
|
|
|
#mermaid-1579981583566 #sequencenumber {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 #crosshead path {
|
|
fill: #333 !important;
|
|
stroke: #333 !important; }
|
|
|
|
#mermaid-1579981583566 .messageText {
|
|
fill: #333;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579981583566 .labelBox {
|
|
stroke: #CCCCFF;
|
|
fill: #ECECFF; }
|
|
|
|
#mermaid-1579981583566 .labelText {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579981583566 .loopText {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579981583566 .loopLine {
|
|
stroke-width: 2;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #CCCCFF; }
|
|
|
|
#mermaid-1579981583566 .note {
|
|
stroke: #aaaa33;
|
|
fill: #fff5ad; }
|
|
|
|
#mermaid-1579981583566 .noteText {
|
|
fill: black;
|
|
stroke: none;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 14px; }
|
|
|
|
#mermaid-1579981583566 .activation0 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
#mermaid-1579981583566 .activation1 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
#mermaid-1579981583566 .activation2 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
|
|
#mermaid-1579981583566 .mermaid-main-font {
|
|
font-family: "trebuchet ms", verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 .section {
|
|
stroke: none;
|
|
opacity: 0.2; }
|
|
|
|
#mermaid-1579981583566 .section0 {
|
|
fill: rgba(102, 102, 255, 0.49); }
|
|
|
|
#mermaid-1579981583566 .section2 {
|
|
fill: #fff400; }
|
|
|
|
#mermaid-1579981583566 .section1,
|
|
#mermaid-1579981583566 .section3 {
|
|
fill: white;
|
|
opacity: 0.2; }
|
|
|
|
#mermaid-1579981583566 .sectionTitle0 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 .sectionTitle1 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 .sectionTitle2 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 .sectionTitle3 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579981583566 .sectionTitle {
|
|
text-anchor: start;
|
|
font-size: 11px;
|
|
text-height: 14px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
|
|
#mermaid-1579981583566 .grid .tick {
|
|
stroke: lightgrey;
|
|
opacity: 0.8;
|
|
shape-rendering: crispEdges; }
|
|
#mermaid-1579981583566 .grid .tick text {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 .grid path {
|
|
stroke-width: 0; }
|
|
|
|
|
|
#mermaid-1579981583566 .today {
|
|
fill: none;
|
|
stroke: red;
|
|
stroke-width: 2px; }
|
|
|
|
|
|
|
|
#mermaid-1579981583566 .task {
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579981583566 .taskText {
|
|
text-anchor: middle;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 .taskText:not([font-size]) {
|
|
font-size: 11px; }
|
|
|
|
#mermaid-1579981583566 .taskTextOutsideRight {
|
|
fill: black;
|
|
text-anchor: start;
|
|
font-size: 11px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 .taskTextOutsideLeft {
|
|
fill: black;
|
|
text-anchor: end;
|
|
font-size: 11px; }
|
|
|
|
|
|
#mermaid-1579981583566 .task.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1579981583566 .taskText.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
#mermaid-1579981583566 .taskTextOutsideLeft.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
#mermaid-1579981583566 .taskTextOutsideRight.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
|
|
#mermaid-1579981583566 .taskText0,
|
|
#mermaid-1579981583566 .taskText1,
|
|
#mermaid-1579981583566 .taskText2,
|
|
#mermaid-1579981583566 .taskText3 {
|
|
fill: white; }
|
|
|
|
#mermaid-1579981583566 .task0,
|
|
#mermaid-1579981583566 .task1,
|
|
#mermaid-1579981583566 .task2,
|
|
#mermaid-1579981583566 .task3 {
|
|
fill: #8a90dd;
|
|
stroke: #534fbc; }
|
|
|
|
#mermaid-1579981583566 .taskTextOutside0,
|
|
#mermaid-1579981583566 .taskTextOutside2 {
|
|
fill: black; }
|
|
|
|
#mermaid-1579981583566 .taskTextOutside1,
|
|
#mermaid-1579981583566 .taskTextOutside3 {
|
|
fill: black; }
|
|
|
|
|
|
#mermaid-1579981583566 .active0,
|
|
#mermaid-1579981583566 .active1,
|
|
#mermaid-1579981583566 .active2,
|
|
#mermaid-1579981583566 .active3 {
|
|
fill: #bfc7ff;
|
|
stroke: #534fbc; }
|
|
|
|
#mermaid-1579981583566 .activeText0,
|
|
#mermaid-1579981583566 .activeText1,
|
|
#mermaid-1579981583566 .activeText2,
|
|
#mermaid-1579981583566 .activeText3 {
|
|
fill: black !important; }
|
|
|
|
|
|
#mermaid-1579981583566 .done0,
|
|
#mermaid-1579981583566 .done1,
|
|
#mermaid-1579981583566 .done2,
|
|
#mermaid-1579981583566 .done3 {
|
|
stroke: grey;
|
|
fill: lightgrey;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579981583566 .doneText0,
|
|
#mermaid-1579981583566 .doneText1,
|
|
#mermaid-1579981583566 .doneText2,
|
|
#mermaid-1579981583566 .doneText3 {
|
|
fill: black !important; }
|
|
|
|
|
|
#mermaid-1579981583566 .crit0,
|
|
#mermaid-1579981583566 .crit1,
|
|
#mermaid-1579981583566 .crit2,
|
|
#mermaid-1579981583566 .crit3 {
|
|
stroke: #ff8888;
|
|
fill: red;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579981583566 .activeCrit0,
|
|
#mermaid-1579981583566 .activeCrit1,
|
|
#mermaid-1579981583566 .activeCrit2,
|
|
#mermaid-1579981583566 .activeCrit3 {
|
|
stroke: #ff8888;
|
|
fill: #bfc7ff;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579981583566 .doneCrit0,
|
|
#mermaid-1579981583566 .doneCrit1,
|
|
#mermaid-1579981583566 .doneCrit2,
|
|
#mermaid-1579981583566 .doneCrit3 {
|
|
stroke: #ff8888;
|
|
fill: lightgrey;
|
|
stroke-width: 2;
|
|
cursor: pointer;
|
|
shape-rendering: crispEdges; }
|
|
|
|
#mermaid-1579981583566 .milestone {
|
|
transform: rotate(45deg) scale(0.8, 0.8); }
|
|
|
|
#mermaid-1579981583566 .milestoneText {
|
|
font-style: italic; }
|
|
|
|
#mermaid-1579981583566 .doneCritText0,
|
|
#mermaid-1579981583566 .doneCritText1,
|
|
#mermaid-1579981583566 .doneCritText2,
|
|
#mermaid-1579981583566 .doneCritText3 {
|
|
fill: black !important; }
|
|
|
|
#mermaid-1579981583566 .activeCritText0,
|
|
#mermaid-1579981583566 .activeCritText1,
|
|
#mermaid-1579981583566 .activeCritText2,
|
|
#mermaid-1579981583566 .activeCritText3 {
|
|
fill: black !important; }
|
|
|
|
#mermaid-1579981583566 .titleText {
|
|
text-anchor: middle;
|
|
font-size: 18px;
|
|
fill: black;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 g.classGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 10px; }
|
|
#mermaid-1579981583566 g.classGroup text .title {
|
|
font-weight: bolder; }
|
|
|
|
#mermaid-1579981583566 g.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1579981583566 g.classGroup rect {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB; }
|
|
|
|
#mermaid-1579981583566 g.classGroup line {
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 .classLabel .box {
|
|
stroke: none;
|
|
stroke-width: 0;
|
|
fill: #ECECFF;
|
|
opacity: 0.5; }
|
|
|
|
#mermaid-1579981583566 .classLabel .label {
|
|
fill: #9370DB;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1579981583566 .relation {
|
|
stroke: #9370DB;
|
|
stroke-width: 1;
|
|
fill: none; }
|
|
|
|
#mermaid-1579981583566 .dashed-line {
|
|
stroke-dasharray: 3; }
|
|
|
|
#mermaid-1579981583566 #compositionStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #compositionEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #aggregationStart {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #aggregationEnd {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #dependencyStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #dependencyEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #extensionStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 #extensionEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 .commit-id,
|
|
#mermaid-1579981583566 .commit-msg,
|
|
#mermaid-1579981583566 .branch-label {
|
|
fill: lightgrey;
|
|
color: lightgrey;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 .pieTitleText {
|
|
text-anchor: middle;
|
|
font-size: 25px;
|
|
fill: black;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 .slice {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 g.stateGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-size: 10px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579981583566 g.stateGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1579981583566 g.stateGroup .state-title {
|
|
font-weight: bolder;
|
|
fill: black; }
|
|
|
|
#mermaid-1579981583566 g.stateGroup rect {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB; }
|
|
|
|
#mermaid-1579981583566 g.stateGroup line {
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579981583566 .transition {
|
|
stroke: #9370DB;
|
|
stroke-width: 1;
|
|
fill: none; }
|
|
|
|
#mermaid-1579981583566 .stateGroup .composit {
|
|
fill: white;
|
|
border-bottom: 1px; }
|
|
|
|
#mermaid-1579981583566 .stateGroup .alt-composit {
|
|
fill: #e0e0e0;
|
|
border-bottom: 1px; }
|
|
|
|
#mermaid-1579981583566 .state-note {
|
|
stroke: #aaaa33;
|
|
fill: #fff5ad; }
|
|
#mermaid-1579981583566 .state-note text {
|
|
fill: black;
|
|
stroke: none;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1579981583566 .stateLabel .box {
|
|
stroke: none;
|
|
stroke-width: 0;
|
|
fill: #ECECFF;
|
|
opacity: 0.5; }
|
|
|
|
#mermaid-1579981583566 .stateLabel text {
|
|
fill: black;
|
|
font-size: 10px;
|
|
font-weight: bold;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
:root {
|
|
--mermaid-font-family: '"trebuchet ms", verdana, arial';
|
|
--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive; }
|
|
|
|
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}</style><style>#mermaid-1579981583566 {
|
|
color: rgb(0, 0, 0);
|
|
font: normal normal 400 normal 16px / normal "trebuchet ms", verdana, arial;
|
|
}</style><g transform="translate(0, 0)"><g class="output"><g class="clusters"><g class="cluster" id="subGraph0" transform="translate(441.0234375,78.97608375549316)" style="opacity: 1;"><rect width="574.828125" height="141.95216751098633" x="-287.4140625" y="-70.97608375549316"></rect><g class="label" transform="translate(0, -56.97608184814453)" id="mermaid-1579981583566Text"><g transform="translate(-82.078125,-9.5)"><foreignObject width="164.15625" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">server (connection RU)</div></foreignObject></g></g></g></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M75.8125,81.65072250366211L114.7109375,81.65072250366211L153.609375,81.65072250366211L179.109375,82.15072250366211" marker-end="url(#arrowhead644)" style="fill:none"></path><defs><marker id="arrowhead644" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M345.859375,82.15072250366211L370.359375,81.65072250366211L395.359375,81.65072250366211" marker-end="url(#arrowhead645)" style="fill:none"></path><defs><marker id="arrowhead645" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M468.15625,81.65072250366211L493.15625,81.65072250366211L518.65625,82.15072250366211" marker-end="url(#arrowhead646)" style="fill:none"></path><defs><marker id="arrowhead646" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M825.3125,92.91773484360841L776.875,105.80144500732422L728.4375,105.80144500732422L695.313512735249,99.39869703316417" marker-end="url(#arrowhead647)" style="fill:none"></path><defs><marker id="arrowhead647" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M696.8471344903717,67.9699914844054L728.4375,62.15072250366211L776.875,62.15072250366211L825.3125,72.5534070674205" marker-end="url(#arrowhead648)" style="fill:none"></path><defs><marker id="arrowhead648" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(114.7109375,81.65072250366211)" style="opacity: 1;"><g transform="translate(-13.8984375,-9.5)" class="label"><foreignObject width="27.796875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">msg</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(776.875,105.80144500732422)" style="opacity: 1;"><g transform="translate(-21.4765625,-9.5)" class="label"><foreignObject width="42.953125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">1) req</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(776.875,62.15072250366211)" style="opacity: 1;"><g transform="translate(-23.4375,-9.5)" class="label"><foreignObject width="46.875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">2) msg</span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="DB" label-offset-y="9.200963741211785" transform="translate(431.7578125,81.65072250366211)" style="opacity: 1;"><path d="M 0,9.200963741211785 a 36.3984375,9.200963741211785 0,0,0 72.796875 0 a 36.3984375,9.200963741211785 0,0,0 -72.796875 0 l 0,48.20096374121179 a 36.3984375,9.200963741211785 0,0,0 72.796875 0 l 0,-48.20096374121179" transform="translate(-36.3984375,-33.30144561181768)" class="label-container"></path><g class="label" transform="translate(0,0)"><g transform="translate(-26.3984375,-9.5)"><foreignObject width="52.796875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">storage</div></foreignObject></g></g></g><g class="node" id="VS" transform="translate(261.984375,81.65072250366211)" style="opacity: 1;"><polygon points="9.75,0 157,0 166.75,-19.5 157,-39 9.75,-39 0,-19.5" transform="translate(-83.375,19.5)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-63.625,-9.5)"><foreignObject width="127.25" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">verify sender (SK)</div></foreignObject></g></g></g><g class="node" id="VR" transform="translate(610.796875,81.65072250366211)" style="opacity: 1;"><polygon points="9.75,0 175.53125,0 185.28125,-19.5 175.53125,-39 9.75,-39 0,-19.5" transform="translate(-92.640625,19.5)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-72.890625,-9.5)"><foreignObject width="145.78125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">verify recipient (RK)</div></foreignObject></g></g></g><g class="node" id="S" transform="translate(41.90625,81.65072250366211)" style="opacity: 1;"><rect rx="5" ry="5" x="-33.90625" y="-19.5" width="67.8125" height="39" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-23.90625,-9.5)"><foreignObject width="47.8125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">sender</div></foreignObject></g></g></g><g class="node" id="R" transform="translate(867.671875,81.65072250366211)" style="opacity: 1;"><rect rx="5" ry="5" x="-42.359375" y="-19.5" width="84.71875" height="39" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-32.359375,-9.5)"><foreignObject width="64.71875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">recipient</div></foreignObject></g></g></g></g></g></g></svg> |