The flowchart will be kept updated: - Use [drawio](https://app.diagrams.net/) to edit. 1. Open [drawio](https://app.diagrams.net/) in brower 2. Menu → File → Open from ... → Device: Select [FlowChart.html](FlowChart.html) 3. Edit flow chart 4. Export to svg: Menu → File → Export as... → SVG...
4 lines
73 KiB
XML
4 lines
73 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- Do not edit this file with editors other than draw.io -->
|
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1811px" height="1498px" viewBox="-0.5 -0.5 1811 1498" content="<mxfile host="app.diagrams.net" modified="2023-11-27T07:28:06.264Z" agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0" etag="w0989YUxOEheTOtpF59A" version="22.1.3" type="github"><diagram name="第 1 页" id="770i9bGLY1KPm9eyXDIp">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</diagram></mxfile>"><defs/><g><path d="M 730 110 L 730 153.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 730 158.88 L 726.5 151.88 L 730 153.63 L 733.5 151.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 820 100 L 840 100 L 830 100 L 850 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="640" y="90" width="180" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 100px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_dtls_listener_server</div></div></div></foreignObject><text x="730" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_dtls_listener_server</text></switch></g><path d="M 730 180 L 730 200 L 730 196 L 730 209.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 730 214.88 L 726.5 207.88 L 730 209.63 L 733.5 207.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="670" y="160" width="120" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 170px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_server_socket</div></div></div></foreignObject><text x="730" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_server_socket</text></switch></g><path d="M 730 240 L 730 260 L 730 253 L 730 266.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 730 271.88 L 726.5 264.88 L 730 266.63 L 733.5 264.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="640" y="216" width="180" height="24" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 228px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_server_input_handler</div></div></div></foreignObject><text x="730" y="232" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_server_input_handler</text></switch></g><path d="M 730 293 L 730 299 L 890 299 L 890 359.3 L 1013.63 359.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1018.88 359.25 L 1011.88 362.75 L 1013.63 359.25 L 1011.88 355.75 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="670" y="273" width="120" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 283px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_recvfrom</div></div></div></foreignObject><text x="730" y="287" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_recvfrom</text></switch></g><path d="M 740 471 L 740 515.5 L 1060 515.5 L 1060 553.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1060 558.88 L 1056.5 551.88 L 1060 553.63 L 1063.5 551.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="680" y="450" width="120" height="21" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 461px; margin-left: 681px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_udp_packet</div></div></div></foreignObject><text x="740" y="464" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_udp_packet</text></switch></g><path d="M 1060 319.25 L 1100 359.25 L 1060 399.25 L 1020 359.25 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 359px; margin-left: 1021px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">connect_cb</div></div></div></foreignObject><text x="1060" y="363" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">connect_cb</text></switch></g><rect x="1154" y="434" width="176" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 174px; height: 1px; padding-top: 444px; margin-left: 1155px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">send_socket_to_general_relay</div></div></div></foreignObject><text x="1242" y="448" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">send_socket_to_general_relay</text></switch></g><path d="M 1060 399.25 L 1060 410 L 1251 410 L 1251.73 425.14" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1251.98 430.38 L 1248.15 423.56 L 1251.73 425.14 L 1255.14 423.22 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 401px; margin-left: 1155px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">YES</div></div></div></foreignObject><text x="1155" y="404" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">YES</text></switch></g><path d="M 1060 399.25 L 1060 424.7 L 740 424.7 L 740 443.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 740 448.88 L 736.5 441.88 L 740 443.63 L 743.5 441.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 414px; margin-left: 900px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">NO</div></div></div></foreignObject><text x="900" y="418" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">NO</text></switch></g><path d="M 1060 600 L 1060 620 L 1060 615 L 1060 628.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1060 633.88 L 1056.5 626.88 L 1060 628.63 L 1063.5 626.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="930" y="560" width="260" height="40" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 580px; margin-left: 931px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">open_client_connection_session</div></div></div></foreignObject><text x="1060" y="584" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">open_client_connection_session</text></switch></g><path d="M 1060 660 L 1060 680 L 1060 663 L 1060 676.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1060 681.88 L 1056.5 674.88 L 1060 676.63 L 1063.5 674.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1000" y="635" width="120" height="25" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 648px; margin-left: 1001px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">client_input_handler</div></div></div></foreignObject><text x="1060" y="651" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">client_input_handler</text></switch></g><path d="M 1060 714 L 1060 734.5 L 940 734.5 L 940 748.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 940 753.88 L 936.5 746.88 L 940 748.63 L 943.5 746.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1060 714 L 1060 734.5 L 1170 734.5 L 1170 748.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 753.88 L 1166.5 746.88 L 1170 748.63 L 1173.5 746.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="990" y="683" width="140" height="31" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 699px; margin-left: 991px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">read_client_connection</div></div></div></foreignObject><text x="1060" y="702" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">read_client_connection</text></switch></g><path d="M 940 780 L 940 800 L 940 795 L 940 808.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 940 813.88 L 936.5 806.88 L 940 808.63 L 943.5 806.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="870" y="755" width="140" height="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 768px; margin-left: 871px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_turn_command</div></div></div></foreignObject><text x="940" y="771" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_turn_command</text></switch></g><path d="M 1517 426.13 L 1517 371" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1517 431.38 L 1513.5 424.38 L 1517 426.13 L 1520.5 424.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1517 455.5 L 1517 486.3 L 1517.4 510.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1517.48 515.88 L 1513.87 508.94 L 1517.4 510.63 L 1520.87 508.83 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1440" y="432.5" width="154" height="23" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 152px; height: 1px; padding-top: 444px; margin-left: 1441px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">relay_receive_message</div></div></div></foreignObject><text x="1517" y="448" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">relay_receive_message</text></switch></g><path d="M 1330.5 449 L 1330.5 439 L 1420.5 439 L 1420.5 428.5 L 1439.5 444 L 1420.5 459.5 L 1420.5 449 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1583.37 359.3 L 1697.5 359.3 L 1697.5 228.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1578.12 359.3 L 1585.12 355.8 L 1583.37 359.3 L 1585.12 362.8 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1517 371 L 1517 390 L 1730.5 390 L 1730.5 424.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1730.5 429.88 L 1727 422.88 L 1730.5 424.63 L 1734 422.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1457" y="347.5" width="120" height="23.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 359px; margin-left: 1458px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_relay_server</div></div></div></foreignObject><text x="1517" y="363" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_relay_server</text></switch></g><rect x="1624" y="190" width="147" height="38.25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 145px; height: 1px; padding-top: 209px; margin-left: 1625px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">run_general_relay_thread</div></div></div></foreignObject><text x="1698" y="213" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">run_general_relay_thread</text></switch></g><path d="M 1517.5 537.5 L 1517.5 580 L 1196.37 580" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1191.12 580 L 1198.12 576.5 L 1196.37 580 L 1198.12 583.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1449" y="517" width="137" height="20.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 135px; height: 1px; padding-top: 527px; margin-left: 1450px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_relay_message</div></div></div></foreignObject><text x="1518" y="531" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_relay_message</text></switch></g><rect x="1090" y="755" width="160" height="26.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 768px; margin-left: 1091px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_old_stun_command</div></div></div></foreignObject><text x="1170" y="772" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_old_stun_command</text></switch></g><path d="M 940 837.5 L 940 873.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 940 878.88 L 936.5 871.88 L 940 873.63 L 943.5 871.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="880" y="815" width="120" height="22.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 826px; margin-left: 881px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">handle_turn_allocate</div></div></div></foreignObject><text x="940" y="830" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">handle_turn_allocate</text></switch></g><path d="M 940 911.25 L 940 1009.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 940 1014.63 L 936.5 1007.63 L 940 1009.38 L 943.5 1007.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 949px; margin-left: 942px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">register_callback_on_ioa_socket</div></div></div></foreignObject><text x="942" y="952" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">register_callback_on_ioa_socket</text></switch></g><path d="M 1015 895.7 L 1173 895.7 L 1324.63 896.47" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1329.88 896.49 L 1322.86 899.96 L 1324.63 896.47 L 1322.9 892.96 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 882px; margin-left: 1172px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">create_relay_ioa_sockets</div></div></div></foreignObject><text x="1172" y="886" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">create_relay_ioa_sockets</text></switch></g><path d="M 1015 911.25 L 1060 911.3 L 1060 961.3 L 1098 961.26" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 865 895.63 L 710 895.6 L 710 936.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="865" y="880" width="150" height="31.25" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 896px; margin-left: 866px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_relay_connection</div></div></div></foreignObject><text x="940" y="899" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_relay_connection</text></switch></g><path d="M 950 1236.12 L 950 1274.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 950 1280.13 L 946.5 1273.13 L 950 1274.88 L 953.5 1273.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="890" y="1219.24" width="120" height="16.88" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1228px; margin-left: 891px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">peer_input_handler</div></div></div></foreignObject><text x="950" y="1231" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">peer_input_handler</text></switch></g><path d="M 1020 1296.3 L 1170 1296.3 L 1170 1364.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 1370.13 L 1166.5 1363.13 L 1170 1364.88 L 1173.5 1363.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="880" y="1281.25" width="140" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 1296px; margin-left: 881px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">write_client_connection</div></div></div></foreignObject><text x="950" y="1300" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">write_client_connection</text></switch></g><path d="M 1170 1406.25 L 1170 1432.1 L 1000 1432.1 L 1000 1451.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1000 1456.63 L 996.5 1449.63 L 1000 1451.38 L 1003.5 1449.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1170 1406.25 L 1170 1451.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 1456.63 L 1166.5 1449.63 L 1170 1451.38 L 1173.5 1449.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1170 1406.25 L 1170 1431.3 L 1306 1431.3 L 1306 1451.38" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1306 1456.63 L 1302.5 1449.63 L 1306 1451.38 L 1309.5 1449.63 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1075" y="1371.25" width="190" height="35" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 1389px; margin-left: 1076px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">send_data_from_ioa_socket_nbh</div></div></div></foreignObject><text x="1170" y="1392" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">send_data_from_ioa_socket_nbh</text></switch></g><rect x="940" y="1457.75" width="120" height="27.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1472px; margin-left: 941px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_send</div></div></div></foreignObject><text x="1000" y="1475" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_send</text></switch></g><path d="M 1406 971.25 L 1406 1004.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1406 1010.13 L 1402.5 1003.13 L 1406 1004.88 L 1409.5 1003.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 988px; margin-left: 1407px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">register_callback_on_ioa_socket</div></div></div></foreignObject><text x="1407" y="991" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">register_callback_on_ioa_socket</text></switch></g><rect x="1321" y="951.25" width="170" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 961px; margin-left: 1322px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tcp_peer_accept_connection</div></div></div></foreignObject><text x="1406" y="965" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tcp_peer_accept_connection</text></switch></g><path d="M 1406 908.63 L 1406 944.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1406 950.13 L 1402.5 943.13 L 1406 944.88 L 1409.5 943.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1331" y="884.25" width="150" height="24.38" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 896px; margin-left: 1332px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tcp_listener_input_handler</div></div></div></foreignObject><text x="1406" y="900" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tcp_listener_input_handler</text></switch></g><path d="M 1238 961.26 L 1321 961.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1098" y="936.25" width="140" height="50.01" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 961px; margin-left: 1099px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>create_relay_ioa_sockets</div><div>_ioa_socket::acb</div></div></div></div></foreignObject><text x="1168" y="965" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_relay_ioa_socket...</text></switch></g><path d="M 1406 1236.12 L 1406 1303.7 L 1170 1303.7 L 1170 1364.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1170 1370.13 L 1166.5 1363.13 L 1170 1364.88 L 1173.5 1363.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1338" y="1216.12" width="136" height="20" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 134px; height: 1px; padding-top: 1226px; margin-left: 1339px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tcp_peer_input_handler</div></div></div></foreignObject><text x="1406" y="1230" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tcp_peer_input_handler</text></switch></g><rect x="1110" y="1457.75" width="120" height="31" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1473px; margin-left: 1111px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">bufferevent_write</div></div></div></foreignObject><text x="1170" y="1477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">bufferevent_write</text></switch></g><rect x="1246" y="1457.75" width="120" height="31" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1473px; margin-left: 1247px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ssl_send</div></div></div></foreignObject><text x="1306" y="1477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ssl_send</text></switch></g><path d="M 940 1040.75 L 940 1063.6 L 1150 1063.6 L 1150 1079.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1150 1085.13 L 1146.5 1078.13 L 1150 1079.88 L 1153.5 1078.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="880" y="1015.75" width="120" height="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1028px; margin-left: 881px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">socket_input_handler</div></div></div></foreignObject><text x="940" y="1032" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">socket_input_handler</text></switch></g><path d="M 710 996.25 L 710 1227.7 L 890 1227.68" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="620" y="936.25" width="180" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 966px; margin-left: 621px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>register_callback_on_ioa_socket</div><div>_ioa_socket::read_cb</div></div></div></div></foreignObject><text x="710" y="970" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">register_callback_on_ioa_socke...</text></switch></g><path d="M 1150 1116.25 L 1150 1166.2 L 1406 1166.2 L 1406 1209.75" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1406 1215 L 1402.5 1208 L 1406 1209.75 L 1409.5 1208 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1157px; margin-left: 1350px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>read_cb</div></div></div></div></foreignObject><text x="1350" y="1160" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">read_cb</text></switch></g><rect x="1090" y="1086.25" width="120" height="30" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1101px; margin-left: 1091px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">socket_input_worker</div></div></div></foreignObject><text x="1150" y="1105" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">socket_input_worker</text></switch></g><path d="M 1150 1116.25 L 1150 1167.8 L 950 1167.8 L 950 1212.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 950 1218.12 L 946.5 1211.12 L 950 1212.87 L 953.5 1211.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1168px; margin-left: 1060px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">read_cb</div></div></div></foreignObject><text x="1060" y="1172" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">read_cb</text></switch></g><rect x="900" y="1111.25" width="120" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1126px; margin-left: 901px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">udp_recvfrom</div></div></div></foreignObject><text x="960" y="1130" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">udp_recvfrom</text></switch></g><path d="M 1491 961.25 L 1650 961.3 L 1650 1071.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1650 1131.25 L 1650 1226.1 L 1474 1226.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1560" y="1071.25" width="180" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 1101px; margin-left: 1561px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>register_callback_on_ioa_socket</div><div>_ioa_socket::read_cb</div></div></div></div></foreignObject><text x="1650" y="1105" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">register_callback_on_ioa_socke...</text></switch></g><path d="M 1406 1045.25 L 1406 1061.3 L 1150 1061.3 L 1150 1079.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1150 1085.13 L 1146.5 1078.13 L 1150 1079.88 L 1153.5 1078.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1315.5" y="1011.25" width="181" height="34" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 179px; height: 1px; padding-top: 1028px; margin-left: 1317px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">socket_input_handler_bev</div></div></div></foreignObject><text x="1406" y="1032" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">socket_input_handler_bev</text></switch></g><path d="M 1325 30 L 1325 81.13" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1325 86.38 L 1321.5 79.38 L 1325 81.13 L 1328.5 79.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 55px; margin-left: 1327px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">connect_cb=send_socket_to_general_relay</div></div></div></foreignObject><text x="1327" y="58" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">connect_cb=send_socket_to_general_relay</text></switch></g><rect x="1240" y="0" width="170" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 15px; margin-left: 1241px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_tcp_listener_servers</div></div></div></foreignObject><text x="1325" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_tcp_listener_servers</text></switch></g><path d="M 1252.5 100 L 1216 100 L 1216 105" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1325 112.5 L 1325 143.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1325 148.88 L 1321.5 141.88 L 1325 143.63 L 1328.5 141.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1252.5" y="87.5" width="145" height="25" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 143px; height: 1px; padding-top: 100px; margin-left: 1254px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_tls_listener_server</div></div></div></foreignObject><text x="1325" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_tls_listener_serv...</text></switch></g><path d="M 1325 248.5 L 1325 310 L 1250 310 L 1250.92 424.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1250.97 429.88 L 1247.41 422.91 L 1250.92 424.63 L 1254.41 422.85 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1265" y="216" width="120" height="32.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 232px; margin-left: 1266px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">server_input_handler</div></div></div></foreignObject><text x="1325" y="236" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">server_input_handler</text></switch></g><path d="M 1131 120 L 1131 359.3 L 1100 359.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1046" y="90" width="170" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 105px; margin-left: 1047px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">tls_listener_relay_server_type</div></div></div></foreignObject><text x="1131" y="109" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">tls_listener_relay_server_ty...</text></switch></g><path d="M 935 115 L 935 217.2 L 1060 217.2 L 1060 319.25" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="850" y="85" width="170" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 100px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">dtls_listener_relay_server_type</div></div></div></foreignObject><text x="935" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">dtls_listener_relay_server_t...</text></switch></g><path d="M 1580 30 L 1580 188.8 L 1517 188.8 L 1517 341.13" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1517 346.38 L 1513.5 339.38 L 1517 341.13 L 1520.5 339.38 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 1580 30 L 1580 110 L 1697.5 110 L 1697.5 183.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1697.5 188.88 L 1694 181.88 L 1697.5 183.63 L 1701 181.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1500" y="0" width="160" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 15px; margin-left: 1501px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_general_relay_servers</div></div></div></foreignObject><text x="1580" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_general_relay_servers</text></switch></g><rect x="1651" y="431" width="159" height="29" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 157px; height: 1px; padding-top: 446px; margin-left: 1652px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">relay_receive_auth_message</div></div></div></foreignObject><text x="1731" y="449" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">relay_receive_auth_message</text></switch></g><path d="M 137.5 30 L 137.5 100 L 633.63 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 638.88 100 L 631.88 103.5 L 633.63 100 L 631.88 96.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="0" width="275" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 273px; height: 1px; padding-top: 15px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_socket_per_endpoint_udp_listener_servers</div></div></div></foreignObject><text x="138" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_socket_per_endpoint_udp_listener_servers</text></switch></g><path d="M 435 30 L 435 100 L 633.63 100" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 638.88 100 L 631.88 103.5 L 633.63 100 L 631.88 96.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="305" y="0" width="260" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 15px; margin-left: 306px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_socket_per_thread_udp_listener_servers</div></div></div></foreignObject><text x="435" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_socket_per_thread_udp_listener_servers</text></switch></g><path d="M 730.5 30 L 730.5 60 L 730.11 83.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 730.02 88.88 L 726.64 81.82 L 730.11 83.63 L 733.63 81.94 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 52px; margin-left: 732px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">connect_cb=send_socket_to_general_relay</div></div></div></foreignObject><text x="732" y="55" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">connect_cb=send_socket_to_general_relay</text></switch></g><rect x="596" y="0" width="269" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 267px; height: 1px; padding-top: 15px; margin-left: 597px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">setup_socket_per_session_udp_listener_servers</div></div></div></foreignObject><text x="731" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">setup_socket_per_session_udp_listener_servers</text></switch></g><path d="M 1325 180 L 1325 200 L 1325 196 L 1325 209.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1325 214.88 L 1321.5 207.88 L 1325 209.63 L 1328.5 207.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1265" y="150" width="120" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 165px; margin-left: 1266px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">create_server_listener</div></div></div></foreignObject><text x="1325" y="169" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">create_server_listen...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> |