documentation/diagrams/accord-210219-1.excalidraw

2563 lines
63 KiB
Plaintext

{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw.com",
"elements": [
{
"type": "rectangle",
"version": 459,
"versionNonce": 1303879278,
"isDeleted": false,
"id": "iBsOeHh_qqZO_mnwZ0Rw9",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 10,
"angle": 0,
"x": -1518,
"y": 21.125,
"strokeColor": "#d9480f",
"backgroundColor": "#fd7e14",
"width": 195,
"height": 93.75000000000001,
"seed": 116865425,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "rectangle",
"version": 430,
"versionNonce": 1105872754,
"isDeleted": false,
"id": "bxlduMU9sQoQPQJK0o00c",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 10,
"angle": 0,
"x": -1661.75,
"y": 17.375,
"strokeColor": "#d9480f",
"backgroundColor": "#fd7e14",
"width": 135,
"height": 98.75,
"seed": 1610760241,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "rectangle",
"version": 386,
"versionNonce": 1582669998,
"isDeleted": false,
"id": "7sP8ouwk_qO07n-Ra15F_",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 10,
"angle": 0,
"x": -1663,
"y": 128.625,
"strokeColor": "#d9480f",
"backgroundColor": "#fd7e14",
"width": 133.75000000000006,
"height": 32.50000000000001,
"seed": 1310857759,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "rectangle",
"version": 359,
"versionNonce": 332695858,
"isDeleted": false,
"id": "QON1YXICAWxI8zSIUwisG",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 30,
"angle": 0,
"x": 234,
"y": 226,
"strokeColor": "#000000",
"backgroundColor": "#82c91e",
"width": 328,
"height": 180,
"seed": 107680127,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "rectangle",
"version": 418,
"versionNonce": 679041774,
"isDeleted": false,
"id": "oHLfHQWZbru1hnBA3oVGb",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 30,
"angle": 0,
"x": 233,
"y": -137,
"strokeColor": "#000000",
"backgroundColor": "#15aabf",
"width": 327,
"height": 136,
"seed": 542852959,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "rectangle",
"version": 554,
"versionNonce": 982553330,
"isDeleted": false,
"id": "AQNkqmwsJsXbwSLb6KjQG",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 30,
"angle": 0,
"x": 232,
"y": 7.999999999999943,
"strokeColor": "#000000",
"backgroundColor": "#fab005",
"width": 328,
"height": 205.00000000000006,
"seed": 381258207,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "text",
"version": 342,
"versionNonce": 1655426350,
"isDeleted": false,
"id": "z5GxS4ZiHT06NRXuK0rN2",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 154,
"y": -169.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 73,
"height": 32,
"seed": 1522021023,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "client A",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "rectangle",
"version": 752,
"versionNonce": 1218798770,
"isDeleted": false,
"id": "qmD4baVtl18qfKN7-xEpa",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 112,
"y": -131,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 132,
"height": 625,
"seed": 412821553,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"qx5eSUV_a-Kr2QqaYxh08",
"cWncaEPtw9ToDdtqBA_mP",
"i7kQVlx6oJJ2N_BhQygit",
"j0U-NYoT10Pwnr6RGX8yG",
"pt5o-bfysPk1LMAzVnK8m",
"TrZe1QdV-QLB2ueucIYIY",
"h25jFYabI75XJqi2waRvU",
"5MkfzaOeEWPEYTgmQeCY1",
"OkxGtdraEKp9uhgPxxA4E",
"ypv3pPUp8KLQC1e7hxJqj",
"aMZppMCDOLth5BHQF3T1Q",
"3XY2tjUiIsFbB0UqkFIdm"
]
},
{
"type": "text",
"version": 207,
"versionNonce": 173406062,
"isDeleted": false,
"id": "UIJmNrmhshUCw_6MyOZTs",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 583,
"y": -164.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 74,
"height": 32,
"seed": 1004723665,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "client B",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "rectangle",
"version": 447,
"versionNonce": 1740242546,
"isDeleted": false,
"id": "kpX3LbcK5WMV9WpB9yzf7",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 551,
"y": -133,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 152,
"height": 628,
"seed": 1485260927,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"qx5eSUV_a-Kr2QqaYxh08",
"cWncaEPtw9ToDdtqBA_mP",
"i7kQVlx6oJJ2N_BhQygit",
"j0U-NYoT10Pwnr6RGX8yG",
"pt5o-bfysPk1LMAzVnK8m",
"TrZe1QdV-QLB2ueucIYIY",
"h25jFYabI75XJqi2waRvU",
"5MkfzaOeEWPEYTgmQeCY1",
"OkxGtdraEKp9uhgPxxA4E",
"ypv3pPUp8KLQC1e7hxJqj",
"aMZppMCDOLth5BHQF3T1Q",
"3XY2tjUiIsFbB0UqkFIdm"
]
},
{
"type": "text",
"version": 482,
"versionNonce": 130079150,
"isDeleted": false,
"id": "mmm790EgwKi25IIHUU6Ru",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 312,
"y": -111.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 180,
"height": 64,
"seed": 1589549215,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"qx5eSUV_a-Kr2QqaYxh08"
],
"fontSize": 20,
"fontFamily": 1,
"text": "\n{GREET, pubkeyA}",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 789,
"versionNonce": 1955946546,
"isDeleted": false,
"id": "U7MyCa2vEM-bZHiyP63g6",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 289,
"y": 15.5,
"strokeColor": "#c92a2a",
"backgroundColor": "transparent",
"width": 216,
"height": 64,
"seed": 1981825905,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "pubkeyA ENCRYPTED\n{GREET, pubkeyB}",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 973,
"versionNonce": 1377137646,
"isDeleted": false,
"id": "MTbO0iAcWmqLEPow0A0Ov",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 263,
"y": 116.5,
"strokeColor": "#c92a2a",
"backgroundColor": "transparent",
"width": 217,
"height": 64,
"seed": 448400785,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "pubkeyB ENCRYPTED\n{AES token}",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 503,
"versionNonce": 454986226,
"isDeleted": false,
"id": "5MkfzaOeEWPEYTgmQeCY1",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 245,
"y": -44,
"strokeColor": "#000000",
"backgroundColor": "#82c91e",
"width": 305,
"height": 1,
"seed": 188913471,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "qmD4baVtl18qfKN7-xEpa",
"focus": -0.7203982029493021,
"gap": 1
},
"endBinding": {
"elementId": "kpX3LbcK5WMV9WpB9yzf7",
"focus": 0.7199778811844001,
"gap": 1
},
"points": [
[
0,
0
],
[
305,
-1
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "arrow",
"version": 509,
"versionNonce": 324847150,
"isDeleted": false,
"id": "OkxGtdraEKp9uhgPxxA4E",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 548,
"y": 93,
"strokeColor": "#c92a2a",
"backgroundColor": "#82c91e",
"width": 304,
"height": 4,
"seed": 1280732767,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "kpX3LbcK5WMV9WpB9yzf7",
"focus": 0.2760651629072681,
"gap": 3
},
"endBinding": {
"elementId": "qmD4baVtl18qfKN7-xEpa",
"focus": -0.2979509573396036,
"gap": 1
},
"points": [
[
0,
0
],
[
-304,
-4
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "arrow",
"version": 511,
"versionNonce": 1918663602,
"isDeleted": false,
"id": "ypv3pPUp8KLQC1e7hxJqj",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 246,
"y": 185,
"strokeColor": "#c92a2a",
"backgroundColor": "#82c91e",
"width": 305,
"height": 1,
"seed": 1248580241,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "qmD4baVtl18qfKN7-xEpa",
"focus": 0.010479300890661944,
"gap": 2
},
"endBinding": {
"elementId": "kpX3LbcK5WMV9WpB9yzf7",
"focus": -0.016703879139452874,
"gap": 1
},
"points": [
[
0,
0
],
[
305,
1
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "text",
"version": 637,
"versionNonce": 1283444846,
"isDeleted": false,
"id": "TYEPsBH8kmagfGmgCTZlz",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 338,
"y": 236.5,
"strokeColor": "#364fc7",
"backgroundColor": "#82c91e",
"width": 102,
"height": 32,
"seed": 155093713,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "{FRIEND}",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 557,
"versionNonce": 410400114,
"isDeleted": false,
"id": "aMZppMCDOLth5BHQF3T1Q",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 549,
"y": 268,
"strokeColor": "#364fc7",
"backgroundColor": "#82c91e",
"width": 304,
"height": 1,
"seed": 608034193,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "kpX3LbcK5WMV9WpB9yzf7",
"focus": -0.2776661223464388,
"gap": 2
},
"endBinding": {
"elementId": "qmD4baVtl18qfKN7-xEpa",
"focus": 0.27270527843813774,
"gap": 1
},
"points": [
[
0,
0
],
[
-304,
-1
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "text",
"version": 361,
"versionNonce": 2034733742,
"isDeleted": false,
"id": "emLFydH8C-yixIWzQMcdC",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 268,
"y": 311.5,
"strokeColor": "#364fc7",
"backgroundColor": "#82c91e",
"width": 102,
"height": 32,
"seed": 787642737,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "{FRIEND}",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 541,
"versionNonce": 1320335154,
"isDeleted": false,
"id": "3XY2tjUiIsFbB0UqkFIdm",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 247.99999999999997,
"y": 353,
"strokeColor": "#364fc7",
"backgroundColor": "#82c91e",
"width": 301,
"height": 1,
"seed": 2005196497,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "qmD4baVtl18qfKN7-xEpa",
"focus": 0.5476715341262212,
"gap": 3.9999999999999716
},
"endBinding": {
"elementId": "kpX3LbcK5WMV9WpB9yzf7",
"focus": -0.5513373506713184,
"gap": 2
},
"points": [
[
0,
0
],
[
301,
1
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "text",
"version": 836,
"versionNonce": 878513390,
"isDeleted": false,
"id": "LTAMbpxlNoGXalgDinjnv",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 564,
"y": 75.5,
"strokeColor": "#c92a2a",
"backgroundColor": "#82c91e",
"width": 98,
"height": 32,
"seed": 1108497266,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "RSA-OAEP",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 453,
"versionNonce": 360251634,
"isDeleted": false,
"id": "m1dHqnEE981sO4lteZH-m",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 130,
"y": -64.5,
"strokeColor": "#000000",
"backgroundColor": "#82c91e",
"width": 92,
"height": 32,
"seed": 1400971758,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "Plaintext",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 315,
"versionNonce": 1531526958,
"isDeleted": false,
"id": "oHz_bYkqQYD1Cgr_4ImN7",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 570,
"y": 340.5,
"strokeColor": "#364fc7",
"backgroundColor": "#82c91e",
"width": 38,
"height": 32,
"seed": 282779954,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "AES",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 162,
"versionNonce": 1213207218,
"isDeleted": false,
"id": "TryeMkpCehzAqrNlT9RoN",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 268,
"y": -214.5,
"strokeColor": "#000000",
"backgroundColor": "#82c91e",
"width": 268,
"height": 32,
"seed": 928852977,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "pubkey->AES token greeting",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 48,
"versionNonce": 846539118,
"isDeleted": false,
"id": "GBupDB8TweNlUSVv5bjWe",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -635,
"y": -206.5,
"strokeColor": "#000000",
"backgroundColor": "#82c91e",
"width": 202,
"height": 32,
"seed": 626925745,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "UDP NAT Traversal",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "rectangle",
"version": 321,
"versionNonce": 970910834,
"isDeleted": false,
"id": "ubeGmwQ1srGKZJX-c-MkA",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -778,
"y": -152,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 582,
"height": 256,
"seed": 1131438289,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "text",
"version": 37,
"versionNonce": 153734062,
"isDeleted": false,
"id": "TooWCMZWcd7PFcv28y3qX",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -736,
"y": -120.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 63,
"height": 32,
"seed": 1741275153,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"nXu3vfHy0PjxI5zvPEjQR"
],
"fontSize": 20,
"fontFamily": 1,
"text": "clientA",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 133,
"versionNonce": 1340902962,
"isDeleted": false,
"id": "swWXmQ4wJ-CrOXcnVsNgK",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -742,
"y": -14.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 64,
"height": 32,
"seed": 1410993873,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"vmtcqvAp9iv2l8mJbBfkz"
],
"fontSize": 20,
"fontFamily": 1,
"text": "clientB",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 115,
"versionNonce": 1569727982,
"isDeleted": false,
"id": "oUW3tKOZJbCumt_meec0p",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -404,
"y": -53.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 83,
"height": 32,
"seed": 1966543857,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"nXu3vfHy0PjxI5zvPEjQR",
"vmtcqvAp9iv2l8mJbBfkz"
],
"fontSize": 20,
"fontFamily": 1,
"text": "mediator",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 96,
"versionNonce": 526383090,
"isDeleted": false,
"id": "nXu3vfHy0PjxI5zvPEjQR",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -663,
"y": -99,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 253,
"height": 68,
"seed": 1719220671,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "TooWCMZWcd7PFcv28y3qX",
"focus": -0.23109854604200325,
"gap": 10
},
"endBinding": {
"elementId": "oUW3tKOZJbCumt_meec0p",
"focus": -0.7095342066957788,
"gap": 6
},
"points": [
[
0,
0
],
[
253,
68
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "arrow",
"version": 295,
"versionNonce": 11614254,
"isDeleted": false,
"id": "vmtcqvAp9iv2l8mJbBfkz",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -671,
"y": 13.153550321918,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 262,
"height": 44.98352286479208,
"seed": 2050883761,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "swWXmQ4wJ-CrOXcnVsNgK",
"focus": 0.8539309954751131,
"gap": 7
},
"endBinding": {
"elementId": "oUW3tKOZJbCumt_meec0p",
"focus": 0.10005033979360684,
"gap": 5
},
"points": [
[
0,
0
],
[
262,
-44.98352286479208
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "text",
"version": 346,
"versionNonce": 138422706,
"isDeleted": false,
"id": "Y2J3ZLqvwfp6dzzY10hzX",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -707,
"y": 38.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 427,
"height": 64,
"seed": 330499057,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "both clients have a reliable UDP connection\nto the mediator",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "rectangle",
"version": 122,
"versionNonce": 980812398,
"isDeleted": false,
"id": "2-chYscD9SQKoLKEayg0U",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -780,
"y": 150,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 585,
"height": 230,
"seed": 702725759,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "text",
"version": 39,
"versionNonce": 1370760050,
"isDeleted": false,
"id": "WCzp-SCyTsa4SI0A6p8me",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -354,
"y": 249.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 83,
"height": 32,
"seed": 1701781937,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"Mny3L3VSLeNImwwJm3X80",
"rcyyyUKeqcrMZ5irlTfgC",
"sdQd-trJBBMK-eLDF-KtC"
],
"fontSize": 20,
"fontFamily": 1,
"text": "mediator",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 332,
"versionNonce": 1839695022,
"isDeleted": false,
"id": "9rx1dVjyqPOn4W4q7VsJY",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -717,
"y": 316.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 418,
"height": 64,
"seed": 303842463,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "clientA asks to talk to clientB\n(mediator returns address:port to clientA)",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 37,
"versionNonce": 1174594866,
"isDeleted": false,
"id": "Rjicr83PupuPJyLVNOCSX",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -732,
"y": 168.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 63,
"height": 32,
"seed": 325174161,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"Mny3L3VSLeNImwwJm3X80",
"sdQd-trJBBMK-eLDF-KtC"
],
"fontSize": 20,
"fontFamily": 1,
"text": "clientA",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 40,
"versionNonce": 1005502190,
"isDeleted": false,
"id": "ck_DMWYvjFM2UvoCg8v1a",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -731,
"y": 276.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 64,
"height": 32,
"seed": 308619633,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"rcyyyUKeqcrMZ5irlTfgC"
],
"fontSize": 20,
"fontFamily": 1,
"text": "clientB",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 118,
"versionNonce": 1318285042,
"isDeleted": false,
"id": "Mny3L3VSLeNImwwJm3X80",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -658,
"y": 170.98655159625656,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 300,
"height": 67.01168397748802,
"seed": 527808177,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "Rjicr83PupuPJyLVNOCSX",
"focus": -0.9987212959259695,
"gap": 11
},
"endBinding": {
"elementId": "WCzp-SCyTsa4SI0A6p8me",
"focus": 0.6861242682527529,
"gap": 11.50176442625542
},
"points": [
[
0,
0
],
[
300,
67.01168397748802
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "rectangle",
"version": 206,
"versionNonce": 701804846,
"isDeleted": false,
"id": "Gz9ztk8-GIEpUkrCpbpvQ",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -782,
"y": 414,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 585,
"height": 243.00000000000006,
"seed": 1797994527,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "text",
"version": 126,
"versionNonce": 267174066,
"isDeleted": false,
"id": "3usLJN7DGoe_oofvgs3-h",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -349,
"y": 518.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 83,
"height": 32,
"seed": 1692921087,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"Mny3L3VSLeNImwwJm3X80",
"rcyyyUKeqcrMZ5irlTfgC"
],
"fontSize": 20,
"fontFamily": 1,
"text": "mediator",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 125,
"versionNonce": 1120033646,
"isDeleted": false,
"id": "ViDZArZJy-ajnS5TFVhZ7",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -727,
"y": 437.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 63,
"height": 32,
"seed": 844012447,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"Mny3L3VSLeNImwwJm3X80",
"-fPSjn_ObFDAWKG_MtRWN"
],
"fontSize": 20,
"fontFamily": 1,
"text": "clientA",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 131,
"versionNonce": 95804018,
"isDeleted": false,
"id": "WhtHrNl-HweG3QLWcuTX4",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -726,
"y": 545.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 64,
"height": 32,
"seed": 2113844351,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [
"rcyyyUKeqcrMZ5irlTfgC",
"-fPSjn_ObFDAWKG_MtRWN"
],
"fontSize": 20,
"fontFamily": 1,
"text": "clientB",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 61,
"versionNonce": 1023458734,
"isDeleted": false,
"id": "-fPSjn_ObFDAWKG_MtRWN",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -695,
"y": 479,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 1,
"height": 59,
"seed": 1111605215,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "ViDZArZJy-ajnS5TFVhZ7",
"focus": -0.0021339023739663913,
"gap": 9.5
},
"endBinding": {
"elementId": "WhtHrNl-HweG3QLWcuTX4",
"focus": 0.012342436974789917,
"gap": 7.5
},
"points": [
[
0,
0
],
[
1,
59
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "text",
"version": 270,
"versionNonce": 515226674,
"isDeleted": false,
"id": "CKDtHG90-LBcCSlfbLsYX",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -719,
"y": 581.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 467,
"height": 64,
"seed": 39767697,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "clientA uses mediator connection to send to\nclientB's address:port as given by the mediator",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 169,
"versionNonce": 498653166,
"isDeleted": false,
"id": "Tq8Nzi2ix_Zq0Td2Ndl2U",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0.21018258666216916,
"x": -611,
"y": 173.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 200,
"height": 32,
"seed": 1873245425,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "do you know clientB?",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "arrow",
"version": 181,
"versionNonce": 1490249202,
"isDeleted": false,
"id": "sdQd-trJBBMK-eLDF-KtC",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -367,
"y": 295,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 310,
"height": 87,
"seed": 235260671,
"groupIds": [],
"strokeSharpness": "round",
"boundElementIds": [],
"startBinding": {
"elementId": "WCzp-SCyTsa4SI0A6p8me",
"focus": -1.620267195612858,
"gap": 13.5
},
"endBinding": {
"elementId": "Rjicr83PupuPJyLVNOCSX",
"focus": 0.6805402246607364,
"gap": 7.5
},
"points": [
[
0,
0
],
[
-310,
-87
]
],
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"type": "text",
"version": 371,
"versionNonce": 1559472686,
"isDeleted": false,
"id": "J5v5efJsEwp0i64pTGqnp",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0.27714053574787556,
"x": -663.2539286441457,
"y": 250.56229654578607,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 282,
"height": 32,
"seed": 836388625,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "sure, clientB is address:port",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 43,
"versionNonce": 1561712562,
"isDeleted": false,
"id": "JjI_3tJcglu-OavY-1y9A",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -739,
"y": -94.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 50,
"height": 32,
"seed": 432711775,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": ":xxxx",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 119,
"versionNonce": 161100910,
"isDeleted": false,
"id": "YOlKa9kd5EVPxWyAPiAct",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -174,
"y": -124.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 203,
"height": 64,
"seed": 1802891089,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": ":xxxx\ndenotes random port",
"baseline": 55,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 25,
"versionNonce": 463737202,
"isDeleted": false,
"id": "W3Zvi1VkWYoQtL-TZlN33",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -401,
"y": -21.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 69,
"height": 32,
"seed": 1986197695,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": ":@@@@",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 53,
"versionNonce": 1836414638,
"isDeleted": false,
"id": "fm3RGJKB9jS11sTXyjoou",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -176,
"y": -46.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 182,
"height": 96,
"seed": 319285265,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": ":@@@@\ndenotes known and\nopen port",
"baseline": 87,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 25,
"versionNonce": 1740968754,
"isDeleted": false,
"id": "AZNIOMnNmieb2rDlJjzK9",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -742,
"y": 8.5,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 50,
"height": 32,
"seed": 1009326143,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": ":xxxx",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 442,
"versionNonce": 825127150,
"isDeleted": false,
"id": "MJpdCSvAqHeT17Z6EFOyj",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -190,
"y": 140,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 284,
"height": 250,
"seed": 492805375,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 16,
"fontFamily": 1,
"text": "This should probably have a\ncache for clientA, wherein\nclientA leaves a pending\nmessage of \"I wanna talk to\nclientB\". If clientB is connected\nto the mediator, then clientA\ngets an immediate response. If not,\nthe mediator will remember and\nlet clientA know whenever clientB\nconnects to the mediator.",
"baseline": 243,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 191,
"versionNonce": 333438194,
"isDeleted": false,
"id": "WSSVDcv7l4fNsRmW_Zk1C",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1421.75,
"y": -344.125,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 193,
"height": 32,
"seed": 589112593,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "Simple Reliable UDP",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 558,
"versionNonce": 5120814,
"isDeleted": false,
"id": "xZx2NBeeWJgDVwW3pNfeB",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1654.25,
"y": -301.625,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 672,
"height": 160,
"seed": 682218129,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "Designed to provide a bi-directional stream.\n\n * Sequence Number per message, per-side, per-host(address+port)\n * Ack, somehow\n",
"baseline": 151,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 203,
"versionNonce": 226193074,
"isDeleted": false,
"id": "4wSGNBH4A3GWQ1mifkfPi",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1655.5,
"y": 38.375,
"strokeColor": "#e67700",
"backgroundColor": "transparent",
"width": 118,
"height": 32,
"seed": 1784949503,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "LSEQUENCE",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 434,
"versionNonce": 759008622,
"isDeleted": false,
"id": "fPQWYSKbG8eZXN0n5AuJD",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1655.5,
"y": 128.375,
"strokeColor": "#e67700",
"backgroundColor": "transparent",
"width": 119,
"height": 32,
"seed": 570737279,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "RSEQUENCE",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 312,
"versionNonce": 2034157682,
"isDeleted": false,
"id": "OqUPnHIb9K6nxPj-VPQZ0",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1510.5,
"y": 39.625,
"strokeColor": "#e67700",
"backgroundColor": "transparent",
"width": 181,
"height": 32,
"seed": 14441759,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "PAYLOAD LENGTH",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 450,
"versionNonce": 1430630318,
"isDeleted": false,
"id": "xNBo0ssjS9C1CJYqP4pci",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 60,
"angle": 0,
"x": -1296.75,
"y": 38.375,
"strokeColor": "#862e9c",
"backgroundColor": "transparent",
"width": 164,
"height": 32,
"seed": 78086975,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "PAYLOAD CHUNK",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 2923,
"versionNonce": 1324411442,
"isDeleted": false,
"id": "GLmvV33KMl5NZ6uMpyWgz",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1942.2142857142856,
"y": 249.66071428571428,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 549,
"height": 416,
"seed": 570249759,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "LSequence is iterated with each packet sent.\n\nOn receive, send LSequence back as RSequence ACK.\nIf RSequence ACK is not received within 1 second,\nconsider it lost and add original Sequence message into\nthe RESEND QUEUE.\n\nSending can be of arbitrary length, but is sent in\n468 byte chunks. If a message is less than the\nbyte amount, it is sent as a FULLCHUNK. If the\nmessage is more, then a BEGIN type is sent,\nfollowed by 0 or more CHUNK types, and ended\nwith an END type.",
"baseline": 407,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 95,
"versionNonce": 76515822,
"isDeleted": false,
"id": "5e4_evfmGxi2x1ghPzrhR",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1406.75,
"y": 170.875,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 156,
"height": 32,
"seed": 1306578559,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "500 bytes max",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 130,
"versionNonce": 1970852850,
"isDeleted": false,
"id": "CDkLKs0FA0iSLe2CtGk-q",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1724.25,
"y": -25.375,
"strokeColor": "#000000",
"backgroundColor": "#fd7e14",
"width": 57,
"height": 32,
"seed": 287083551,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "TYPE",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 105,
"versionNonce": 1512315950,
"isDeleted": false,
"id": "63EU5oolq5tk-ZVgCkcuT",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1731.75,
"y": -56.625,
"strokeColor": "#c92a2a",
"backgroundColor": "#fd7e14",
"width": 59,
"height": 32,
"seed": 955568657,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "8 bits",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 134,
"versionNonce": 1591575986,
"isDeleted": false,
"id": "AS-zRCTxXP7CHXR_RP3yi",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1718,
"y": 132.125,
"strokeColor": "#e67700",
"backgroundColor": "#fd7e14",
"width": 43,
"height": 32,
"seed": 1537755825,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "ACK",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 112,
"versionNonce": 736913006,
"isDeleted": false,
"id": "bMu1sFTptawdoXz2oTMEk",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1735.5,
"y": 39.625,
"strokeColor": "#e67700",
"backgroundColor": "#fd7e14",
"width": 66,
"height": 32,
"seed": 1695826001,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "BEGIN",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 144,
"versionNonce": 608567154,
"isDeleted": false,
"id": "b3x6jzKSyZtlOlyewh_OL",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1736.75,
"y": 67.125,
"strokeColor": "#e67700",
"backgroundColor": "#fd7e14",
"width": 65,
"height": 32,
"seed": 1261805009,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "CHUNK",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 188,
"versionNonce": 716269742,
"isDeleted": false,
"id": "mWJ9N_Ff7VvNfOIBIi57L",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1718,
"y": 93.375,
"strokeColor": "#e67700",
"backgroundColor": "#fd7e14",
"width": 45,
"height": 32,
"seed": 1131979327,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "END",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 203,
"versionNonce": 569983282,
"isDeleted": false,
"id": "q3lSX8-5hZytMWyivwysS",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1645.5,
"y": -21.625,
"strokeColor": "#000000",
"backgroundColor": "#fd7e14",
"width": 106,
"height": 32,
"seed": 1521852159,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "SEQUENCE",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "rectangle",
"version": 537,
"versionNonce": 102507246,
"isDeleted": false,
"id": "DnVj-bxL8_mD3uiUsxzTF",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 10,
"angle": 0,
"x": -1311.75,
"y": 21.125,
"strokeColor": "#0b7285",
"backgroundColor": "#15aabf",
"width": 195,
"height": 98.75,
"seed": 371607345,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "text",
"version": 31,
"versionNonce": 324946674,
"isDeleted": false,
"id": "Wh8DP8zwnXIDu17DfrkwS",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1644.25,
"y": -49.125,
"strokeColor": "#c92a2a",
"backgroundColor": "#15aabf",
"width": 64,
"height": 32,
"seed": 1879594353,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "15 bits",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 265,
"versionNonce": 280335662,
"isDeleted": false,
"id": "VAl9rhf_PJmGIHsaXs_QE",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1470.5,
"y": -20.375,
"strokeColor": "#000000",
"backgroundColor": "#fd7e14",
"width": 61,
"height": 32,
"seed": 235874545,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "DATA",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 61,
"versionNonce": 788274354,
"isDeleted": false,
"id": "Hdd4g8e0VWUem_NWGF3rU",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1471.75,
"y": -49.125,
"strokeColor": "#c92a2a",
"backgroundColor": "#15aabf",
"width": 57,
"height": 32,
"seed": 700357471,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "9 bits",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 253,
"versionNonce": 1676066670,
"isDeleted": false,
"id": "m-IvWcrMRZNuEUuYCjDQ-",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1778,
"y": 13.375,
"strokeColor": "#e67700",
"backgroundColor": "#fd7e14",
"width": 111,
"height": 32,
"seed": 1371140113,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "FULLCHUNK",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 96,
"versionNonce": 1115272818,
"isDeleted": false,
"id": "U-rcRMhKXjaTEP3w1S4wP",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1688,
"y": -94.125,
"strokeColor": "#c92a2a",
"backgroundColor": "#15aabf",
"width": 266,
"height": 32,
"seed": 822651281,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "4 BYTE PACKET HEADER",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 233,
"versionNonce": 66625966,
"isDeleted": false,
"id": "iz8UJXq339BKE2_T7qkH4",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1318,
"y": -86.625,
"strokeColor": "#c92a2a",
"backgroundColor": "#15aabf",
"width": 294,
"height": 32,
"seed": 1563378353,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "468 BYTE PACKET PAYLOAD",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "rectangle",
"version": 512,
"versionNonce": 1318983730,
"isDeleted": false,
"id": "JW8enIwQn1ZJFkV2NCC4-",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 10,
"angle": 0,
"x": -1515.5,
"y": 129.875,
"strokeColor": "#d9480f",
"backgroundColor": "#fd7e14",
"width": 187.50000000000003,
"height": 32.50000000000001,
"seed": 1514526929,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": []
},
{
"type": "text",
"version": 509,
"versionNonce": 68434926,
"isDeleted": false,
"id": "mfVaYz9NXVOuOMiXSDOt3",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1480.5,
"y": 129.625,
"strokeColor": "#e67700",
"backgroundColor": "transparent",
"width": 94,
"height": 32,
"seed": 1577160977,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "EMPTY :(",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 42,
"versionNonce": 592462322,
"isDeleted": false,
"id": "tYuLW_5hrRh_rclbfGItj",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1303,
"y": -22.875,
"strokeColor": "#000000",
"backgroundColor": "#15aabf",
"width": 75,
"height": 32,
"seed": 1828453375,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "optional",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 3220,
"versionNonce": 709004846,
"isDeleted": false,
"id": "yWPwX5AwLetJInu74djfD",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": -1365.7142857142856,
"y": 246.91071428571433,
"strokeColor": "#000000",
"backgroundColor": "transparent",
"width": 528,
"height": 832,
"seed": 8848287,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "Packets are stored in an OUTBOUND QUEUE,\na PENDING QUEUE and a RESEND QUEUE.\n\nUntil a Message is fully consumed, it continues\nadding to the OUTBOUND QUEUE, providing the\nlength of the PENDING+RESEND does not\nexceed a particular Threshold.\n\nThreshold should likely be determined by some\nsort of metric achieved by total pack send\nrate combined with round-trip-time from the\ntarget. If the RTT is higher, then the packet\nsend rate should be reduced. If the RTT is\nstable, then send rate could be increased up\nto a percentage of decline from its stable value.\n\nProbably assume a 20 packets/second minimum? Then\nthrottle up from there providing the RTT doesn't\nincrease by any great threshold (250ms is probably\nthe upper limit?)\n\nPackets are removed from the PENDING QUEUE\nonce they receive their ACK. Packets are removed\nfrom the RESEND QUEUE once they are sent.\nPackets are moved from the OUTBOUND QUEUE\ninto the PENDING QUEUE once there is room.",
"baseline": 823,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 922,
"versionNonce": 1465604782,
"isDeleted": false,
"id": "6HtLHZJxGGcgbZzZqNEbI",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 126,
"y": 167.49999999999994,
"strokeColor": "#c92a2a",
"backgroundColor": "#82c91e",
"width": 98,
"height": 32,
"seed": 1804022719,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "RSA-OAEP",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 518,
"versionNonce": 1654615858,
"isDeleted": false,
"id": "-Uof9BU--dd_YuuVwxN-U",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 577,
"y": -63.5,
"strokeColor": "#000000",
"backgroundColor": "#82c91e",
"width": 92,
"height": 32,
"seed": 1260128511,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "Plaintext",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"type": "text",
"version": 382,
"versionNonce": 750245102,
"isDeleted": false,
"id": "f8s5uR1Pw_U8qDkdyI5xC",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"angle": 0,
"x": 177,
"y": 253.5,
"strokeColor": "#364fc7",
"backgroundColor": "#82c91e",
"width": 38,
"height": 32,
"seed": 1050019711,
"groupIds": [],
"strokeSharpness": "sharp",
"boundElementIds": [],
"fontSize": 20,
"fontFamily": 1,
"text": "AES",
"baseline": 23,
"textAlign": "left",
"verticalAlign": "top"
},
{
"id": "XVkI5j_8PWAYYuXHKASYZ",
"type": "text",
"x": 166.6666666666656,
"y": 540.2499999999998,
"width": 545,
"height": 160,
"angle": 0,
"strokeColor": "#000000",
"backgroundColor": "#ced4da",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"strokeSharpness": "sharp",
"seed": 1488843118,
"version": 329,
"versionNonce": 594719342,
"isDeleted": false,
"boundElementIds": null,
"text": "Note: It might make more sense to have the GREET\nmessage actually encrypted with client B's hub\npublic key? And client B would probably also already\nknow client A's hub public key from the mediator step...\nHmm",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "left",
"verticalAlign": "top",
"baseline": 151
}
],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
}
}