From b03c8b46d57bd660bf0a9056e6e8d48bc6f66792 Mon Sep 17 00:00:00 2001 From: Fabian Seidl <fabian.seidl@h-da.de> Date: Wed, 10 Jul 2024 07:11:06 +0000 Subject: [PATCH] Update architecture figures See merge request danet/gosdn!929 Co-authored-by: Martin Stiemerling <martin.stiemerling@h-da.de> Co-authored-by: Malte Bauch <malte.bauch@stud.h-da.de> --- README.md | 15 ++ .../figures/goSDN-Architecture-Overall.drawio | 1 - ...SDN-Architecture-sbi-concept-detail.drawio | 1 - documentation/figures/nucleus/.gitkeep | 0 ...ted_controller_architecture_nucleus.drawio | 160 ++++++++++++++++++ ...controller_architecture_nucleus.drawio.png | Bin 0 -> 55165 bytes documentation/figures/overview/.gitkeep | 0 ...ed_controller_architecture_overview.drawio | 128 ++++++++++++++ ...ontroller_architecture_overview.drawio.png | Bin 0 -> 39400 bytes documentation/figures/plugins/.gitkeep | 0 .../plugins/plugin-device-interaction.drawio | 88 ++++++++++ .../plugin-device-interaction.drawio.png | Bin 0 -> 39845 bytes 12 files changed, 391 insertions(+), 2 deletions(-) delete mode 100644 documentation/figures/goSDN-Architecture-Overall.drawio delete mode 100644 documentation/figures/goSDN-Architecture-sbi-concept-detail.drawio create mode 100644 documentation/figures/nucleus/.gitkeep create mode 100644 documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio create mode 100644 documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio.png create mode 100644 documentation/figures/overview/.gitkeep create mode 100644 documentation/figures/overview/updated_controller_architecture_overview.drawio create mode 100644 documentation/figures/overview/updated_controller_architecture_overview.drawio.png create mode 100644 documentation/figures/plugins/.gitkeep create mode 100644 documentation/figures/plugins/plugin-device-interaction.drawio create mode 100644 documentation/figures/plugins/plugin-device-interaction.drawio.png diff --git a/README.md b/README.md index c413c1f31..907eafaa5 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,21 @@ A simple showcase how the controller can be addressed after on them. They are currently unsupported. - `controller` represents the `goSDN-controller`. +<div align="center" style="margin-bottom:3em; margin-top:4em"> + <img src="documentation/figures/overview/updated_controller_architecture_overview.drawio.png" /> + <p> Overview of the controller architecture</p> +</div> + +<div align="center" style="margin-bottom:3em; margin-top:4em"> + <img src="documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio.png" /> + <p> Detailed view of nucleus </p> +</div> + +<div align="center" style="margin-bottom:3em; margin-top:4em"> + <img src="documentation/figures/plugins/plugin-device-interaction.drawio.png" /> + <p> Detailed view of plugin mechanism</p> +</div> + --- ## Concepts diff --git a/documentation/figures/goSDN-Architecture-Overall.drawio b/documentation/figures/goSDN-Architecture-Overall.drawio deleted file mode 100644 index c5cdc0859..000000000 --- a/documentation/figures/goSDN-Architecture-Overall.drawio +++ /dev/null @@ -1 +0,0 @@ -<mxfile host="Electron" modified="2022-02-17T14:42:51.009Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="oVOpiNiALXjf1fX8wkFb" version="16.5.1" type="device"><diagram id="pwvA0ZA2h6faCE5rpLjt" name="Seite-1">7Vpbd5s4EP41fqwPd8NjTJJut23Wu845bfOmgAzayMgVIrb3168E4iaU2ElwtnuO/RI0Iw1i5ptvBoWJHa53HynYpF9JDPHEMuLdxL6cWJZpGh7/IyT7SuIHViVIKIrlpFawRP9AKTSktEAxzHsTGSGYoU1fGJEsgxHryQClZNuftiK4f9cNSOBAsIwAHkq/oZil8imsWSv/DaIkre9sekGlWYN6snySPAUx2XZE9tXEDikhrLpa70KIhfNqv1Trrp/QNhujMGPHLPj7Nt19/+E7q583/p3vpr9nn4sP0sojwIV84InlYW5vviLcrPArJrTUeD8LsdX5xLJt2zBM0BV5ifibkOXlTW3gntbimyLCsMhrBd9iZbzSSu+wfe1ySooshmLXJldvU8TgcgMiod1ykHFZytZYqjG4h3gOooekXBbK7WYkg+IhEMaqiN86bB7KXpU/Ls8ZJQ+w1sRwBYpyt5W8jr3VbLjr+NqLkDK464hkID5CsoaM7vkUqbU9CQqZFdZMjrctxswaOGkHX/U6IGGdNKbbyPMLGfwXAMHSAEGJC8ziC5FRfBRhkOcoKt0DKBuKOxFqw2k85zwY9xJx6LqOa1yNZ2oZhRgw9NhPX5275B0WBJVAryNjKZEJgqnbN5KTgkZQrusmnGpKDfLQFHdeAtnAVBnB5tFfH1T7PbJ7gYskAfcYnhO8jb3lHE5w/z3z2znndznD8UfLb/cwVZw4v91z9T6Q3AkFMYL6NbXuElHeOSKScT2PvQDhaUhhAJj/vOoHAwDdEMrSuQgGl19sNhhFoPTN03E23hrn1wbpBI2YGRwZEudUITF1LfkpmJo7je6/i8HUcaxa8KOrvdz1RvvuaAEp4k8M6f+F+NXks5UIHkv7jhlMDTtof54+qd+pBpi6IqDghb96bsTlCsOdRMh8bAy5XQSZBxA0ClhMQ4OWRvhWuJhNMZeBtYM3AEYxpWLv1BiZHcaIUlkNw/PCkIdKcCmvAfgCo0SQLyObjvSLIPYFyZGk5nvCGFnXjN9RRDzSgivmQNppBB1wcV7HKONlvD7LMZQugG8sLH+Dks81nu+bc1tTT5Qy0y0lmSh32npf58x6l4iTrWkG2ZbQh3zKM6Da+PNFbYzi5D+BwE4SzDQ5oKLrNbVp83kR5X9YNA/Db2xxu7v+8ulO8z5Ztgv3sl34JCK6Ej2ACq4D7UG/ZwQ0kueArqEDjIrINYpjcSMliKWpgnEIlrbEMOc7QFnCRw4fMQrhNcFxJTGl5Ct5bAUZ3F5xRlrWTzKbt20zbBRtJ21fdPQZQ2z/V0lDJLvSzLbCdtBhXr25Elb6tQ2Vv3hlDpM1LJv5dqE4ee1MiQr6yEPTmzGZXfKrGORpE7Qx2mNbqdDWEO7Be8L9mHfmDjqeCrhSViU/dOqvlNTB4A41Wsc/X3Z7bVtbg19adqv6czjzD5bnsZs095U1d4AltV8fr+Jq/TVsyjg5UvCheZk+k+WZLMc8S7A1Zwkzd0iWakKNRpbemSyV5D81WbqGAgHjOLIci+M0b55LcTJzbgfPDDcCw/FmQH1tdocc55tTDcudrCU0f32aa85eTk1z5jvxnGMqPOcd9w+bV/Bc4QJ/Ft1YLAcbJ7oNzD/vTM03Eude7sx0faYb0JompV7AdGbgD5jO8zTdnPV2ntNi3vpVaU5LOX2yei6JjwjKWz8gcU7VlfFh+7VYNb395s6++hc=</diagram></mxfile> \ No newline at end of file diff --git a/documentation/figures/goSDN-Architecture-sbi-concept-detail.drawio b/documentation/figures/goSDN-Architecture-sbi-concept-detail.drawio deleted file mode 100644 index ee2a511cc..000000000 --- a/documentation/figures/goSDN-Architecture-sbi-concept-detail.drawio +++ /dev/null @@ -1 +0,0 @@ -<mxfile host="Electron" modified="2022-02-17T14:38:29.165Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="cQigzejTX8Fo0TpT8GV8" version="16.5.1" type="device"><diagram id="pwvA0ZA2h6faCE5rpLjt" name="Seite-1">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</diagram></mxfile> \ No newline at end of file diff --git a/documentation/figures/nucleus/.gitkeep b/documentation/figures/nucleus/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio b/documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio new file mode 100644 index 000000000..078b06f8a --- /dev/null +++ b/documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio @@ -0,0 +1,160 @@ +<mxfile host="Electron" modified="2023-05-15T11:44:28.153Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="IH6VUpZLowaFi8LYPRhs" version="21.2.8" type="device"> + <diagram name="Seite-1" id="3lsldmp1-3ys9wngNFdt"> + <mxGraphModel dx="3354" dy="1847" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-3" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="210" y="698" width="520" height="372" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-4" value="NBI<br>(including gRPC-Interceptor (RBAC))" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="680" width="360" height="40" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-28" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="550" y="760" width="140" height="80" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-25" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-28" vertex="1"> + <mxGeometry x="20" y="20" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-26" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-28" vertex="1"> + <mxGeometry x="10" y="10" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-27" value="(Entity) <br>gRPC-Server" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-28" vertex="1"> + <mxGeometry width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-29" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.917;entryY=1.031;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-27" target="FOxSIBBW-ZSZTNfWlzPQ-4" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="450.11" y="700" as="sourcePoint" /> + <mxPoint x="449.83000000000004" y="646" as="targetPoint" /> + <Array as="points"> + <mxPoint x="610" y="740" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-33" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="250" y="950" width="140" height="80" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-30" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-33" vertex="1"> + <mxGeometry x="20" y="20" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-31" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-33" vertex="1"> + <mxGeometry x="10" y="10" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-32" value="Entity Storage <br>Access" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-33" vertex="1"> + <mxGeometry width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-34" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="250" y="760" width="140" height="80" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-35" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-34" vertex="1"> + <mxGeometry x="20" y="20" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-36" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-34" vertex="1"> + <mxGeometry x="10" y="10" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-37" value="Entity Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="FOxSIBBW-ZSZTNfWlzPQ-34" vertex="1"> + <mxGeometry width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-38" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.906;entryY=1.032;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-37" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="310" y="749" as="sourcePoint" /> + <mxPoint x="310" y="720" as="targetPoint" /> + <Array as="points"> + <mxPoint x="310" y="740" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-41" value="Event Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="319" y="870" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-42" value="Network Element<br>Watcher" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="500" y="870" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-43" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="390" y="790" as="sourcePoint" /> + <mxPoint x="550" y="790" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-44" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.417;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-32" target="FOxSIBBW-ZSZTNfWlzPQ-35" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="40" y="780" as="sourcePoint" /> + <mxPoint x="90" y="730" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-47" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=1;entryY=1;entryDx=0;entryDy=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-41" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="49" y="880" as="sourcePoint" /> + <mxPoint x="379" y="840" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-48" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-42" target="FOxSIBBW-ZSZTNfWlzPQ-35" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="130" y="870" as="sourcePoint" /> + <mxPoint x="120" y="900" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-49" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-42" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="590" y="900" as="sourcePoint" /> + <mxPoint x="590" y="840" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-50" value="SBI<br>(Transport)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="1050" width="360" height="40" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-51" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.778;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-50" target="FOxSIBBW-ZSZTNfWlzPQ-42" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="110" y="980" as="sourcePoint" /> + <mxPoint x="160" y="930" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-52" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.778;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="630" y="1049" as="sourcePoint" /> + <mxPoint x="630" y="840" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-53" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#FF0000;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="460" y="1140" as="sourcePoint" /> + <mxPoint x="460" y="1090" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-54" value="" style="fontColor=#0066CC;verticalAlign=top;verticalLabelPosition=bottom;labelPosition=center;align=center;html=1;outlineConnect=0;fillColor=#CCCCCC;strokeColor=#6881B3;gradientColor=none;gradientDirection=north;strokeWidth=2;shape=mxgraph.networks.router;" parent="1" vertex="1"> + <mxGeometry x="410" y="1141" width="100" height="30" as="geometry" /> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-55" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;dashed=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="FOxSIBBW-ZSZTNfWlzPQ-32" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="170" y="980" as="sourcePoint" /> + <mxPoint x="90" y="950" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-56" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;dashed=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="170" y="900" as="sourcePoint" /> + <mxPoint x="319" y="899.8" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-58" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#FF0000;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="459.8" y="680" as="sourcePoint" /> + <mxPoint x="459.8" y="630" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-59" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="FOxSIBBW-ZSZTNfWlzPQ-41" target="FOxSIBBW-ZSZTNfWlzPQ-42" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-20" y="850" as="sourcePoint" /> + <mxPoint x="30" y="800" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="FOxSIBBW-ZSZTNfWlzPQ-60" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;dashed=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="690" y="790" as="sourcePoint" /> + <mxPoint x="770" y="790" as="targetPoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio.png b/documentation/figures/nucleus/updated_controller_architecture_nucleus.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb5af660c774e23ee80b33acae0e27b79c759e2 GIT binary patch literal 55165 zcmeAS@N?(olHy`uVBq!ia0y~yV9H`(U{dE`V_;y=5Gg&&z`(#*9OUlAu<o49O9lpC zz7p4nlH7{4%$!sPRbyueOV!9ABfq#r)!0SV$jCJ(HMyiHKTp-jNY%(7H$NpaEi*L* zB4=b^WTI<erfXy#VrZgj>}Y7IYV2rWs%Kzn5Cu`6n4X#kHOM!=Dl;c1QPs%JRL?-w z$Uwt4F*!4@B)>RA)!0eZ$iOqNBsE9X$iO!-S=GqEKUmesAVSs1z|bJx&@|p$Q`N}8 zv7jI)H9R%RJF^62im|z#u^Gr9Z;udPA5|k~RU?C(%<NQEBLnx;<m`NqmXxBza=pxa zRU<be6Fn0>3soZn=ZvEK+*DN~H$x*6Jp(;6V>5F-BLj0)BLjq2-HZ)DQmRG<!HH>! zMVUy}fkL4ywWv5VKMxuRP=i4dsU?Z&5YedcP{ZIzgS?z%uiWg^Fi#(M*KA0TlvEa^ zLe!+BmSrZVLPU#`6LX-#h7ggY{Gyc9B8W-@kdU#fs)3`b5h(0bjh$066Vr<lb5)HD z@)C2QI)hU)OHy^A`ZJ-C<W=dEl2u$*Rha1FWf18TY?&KahHf0p(A*05qQrs>-~1GC zRHRfutT#3`H34ZcGDxX}h!|QLg56|fkX{6{2x>1#AULxM>Lj?b(#(|9VyI?_Sta@T zIVG6|sDjD)d3mYH&?EyjF|nv9zZ_LrT7C}Hdr&n6iRmyKA*O=_f-wRWBpRNXQj!62 ziG`6lLbXR~W_kw9W<xVeh)ixGOfl5M#Tkhy`Q;G(U?JpqfdnLkG<Gh^&o5EMB@I)Q zTj89V14{U?a0D9)l650pFFZ7g;Q5Xc<BT9-P?nfe3JqO|KygVWEVUNpm*%B_3j_mI zW2f?r%#zgLg2ZHy^75j@0##$DjFQ|ORbv-Ja5e|!lCspIl2mBY!s1}C5dKgDg^mHZ zymC*?&rK~Us#G;HfSPCoOLEYpYG!ExadbH%-c3OUfSi(n6z9g~Q12!}(^@**Y>-k_ zBf{~aYUBouPW<i%m9%KFZVYiGQc(Ljd8!(j<&>xzJ0%sV8kwboSQ?pm$vLGdnR)4| zMh59Y0nWOha<eEowV))w2visbIXOCOYC;Ud8cm>h7!1*50Zo{&XoB&PqRH3{ss=fl zOrT-|5=+ox5Gj^0LOQ)Dzq9}%iY1{#%eTZNSpI?frXUfKV=2r4rlwFcp&@Gy3q_=m zHH3vCa>&ABU_e6F6dGhi6*bgK!{F$|pH)F61<s-dHK0LCK_vxpIK#w{!x<JI0}{?= zLol4tN^}@^P=_<LVS!XqXt?H;WR_Hdnx&ZKI=CngPAw`+ErLW4P0Ma_)BT_hacDJ< z6yg{mnVOg42x?5K8oMOtBo-HECaW4d6_+Fym0$`ZHCs^IIH?txB@wE|E(Ut0s>V(r zUL=SIWxIfyA)uxZNWukF1cNzwB}J7GO_qk{Af+GykUm2_17lEemI@L;Xa@68bO)ps zW#*=qfV%`BBO#tkO+jn-7U!21fm>gyMzF?hNn%lYDzsq>ZDvrTx<N_|uo?%sl!J*C zrRF4-WR`&%gsMhH;JVGo09(;VOgRiHP9ddnKz?Rk38K|!Vrrmg2sIoOY#`qoK#OOX zWssnOY6KP3gqw5_`yeE!(FWBFYipXASn63A8z2BUV;LDhU0`McEp1^gfW!pU5OQ4L zSX7h<YU{!bEC7W<F(@ezA9^@_V+Jc&q0TplH4;b-CsiXih(n2Sl(93o)eLXQ<JSXK z4Q@OWQVDH}8yUcQR?sdTz7k@<TW?0Nd;^UHOBf$1yA8h98!YAE3tB`e3M%iY(FFm= zC;n7`NbK+ghUh6m%LiykgOq~uByvE*#E=WN0d2m)%D5pF(6H124QLp5a0fJWFaRl_ zA?-KNpkPUU5oo*#lseEm=#I(Bsm0(D*~oyVZ8&lh|KJXFX!`^y)IpUSN>C2EB6?_a zunnPY6MR8S{UX{B9HAquj2@7&3`#>9Rw@svLK@n>MoQC&LOQhwX?g|QfHk$6A!LXA z;4X?WM=&so;z7}$HZVi)PaDAmsNA16geJFP*LyZb%lzgh;MN7ApHBU*GlrF*#uTXe z4eQzt?!GdH^M_ks*${I$&9w|Psc2*X8m2@{T+_5<1(i7DHy(@)p~)Cpr&*Xodwhet z;DtIGsZ#SxEh*10%7&~_$OXp&dcPw)u_QTzE`!J5Q8w};#S}IyH>4s3RyrX?3Mg%& zbWEsH8$wLQ7}gzrRgNVzFG7=nIgAf0|EXW)U`&jnTS<16109uw4>94-9Z=QejbXw@ z&}p6!!4ndYDGMX;L<eX}0z6|usC5OOA2ESUbyQ@Qfb@YTEx?l^*k?#8GE2yq;xL2` z(?FsQvMLAG(;aqs2G+)aWf}Add+KKySPp^NXbjD?uuKXGb}}Y3pm~5UIR=_U=$B(a z9ZPWb0VR7l2S;ZFM}ZHCOK5_Iw#9~Df`&GApvlXE_6ge99L-8to*Ggq8a$|GWH3M} z8anX}st+hg)6jT;lpxS_4jrN#cIn&@R&K%)I;<lCOLdUkPDVKjYL{Z25H|$Lfcn!= zD=lHoZkUyjfG5LBdKTT#1VQ_R4sWxVgWEbpHCc!$xuL0i*rjMww3Y!z@}ho<Mz_*p zNEY3ga|6Lx*ZGDNCFT_u<QJ6;!L_`G23Qs?48Fy@M$qA0+Ltb%suI$b0+%izE-_6* zP;UvM&D`7q)a!y4OS%Sn1_of0Dl$tDRWOJHD(zt%Ei$@OM$qI5sT`oS@^CG~4ADlt zEotBUG=wc40mYN5k&z{=VKAg>WxCA_fiemt1AtRIh&y=l&9JM}&0vWUnm7#&Xg>{v zZs*Xf)S>-znpY%gnK?Pm`8oNJZGpyV7Rjl}kR{AT`Pr#RGH!05HL36&SHpie*#xa% zHH5E`gq5t+Z;)cxX#i^!!|a4qql3JU1+CukCEm3Byb`3;Wnf@t=IpF$>;&52l$o5E z<Cv3~4%!Y|k`LPO2NU&4OiIlO$S=+;fozsd$}cI&&s8;c%0ZJzPR#?aYj;Y7ngbU= zT7;ipT9T8Qm+B1PAPQ>cpk)YWFaWRVN6Qdq78Zt1#;V3n=|zbtnW+fx<mKn3A_==> z7NsUb-J6$R1ls%QR9pfw47P0)w78%+BN4obH@6}kv|m;)4>CVjtXGs@3h@b~ZwLwr z+U;~SL2JJl8k&IT=8O!G=Qm;fe&i*ru!0_zPU*YT5juv9FTqh|DlH|kI0L*h6+Q$D zZcBg~(y*2U*+W^7oDFRtLkF0LU4y_7HcSO=5YVB43@brlHo`iRu#^f3_rYDF8bfp8 zkWS#kKQY4!Mp)9Keggqx{fVU|=m-kXs4UFVA(5V;<r~e@Gg@sv+PsBtRWUJzryOX> zXh!?N3M`hQHynmU@}>K18K`9npZ_J?#DER+ftxANAwH-s(2yS1<r0wgB}TsvQiegB zCD2|eB#xkB(8m6-E8TU`rn@ZA8xD|=A*0~{G8pR&8!RtCGo%H2eF6!0GHj&d1e-Cv zCfI1%79Vzr*$k}}Ooz2`=4efQ3@ZmwY6j;I9A_(m<xq~XLSBmpmW7?11(5&?LC-w{ zi`Z91Ok!YAVDNNt45^5FQ_DUh#PwV4-!qX0>jgJU7^X88#~Gv_-Qjj%Lz?7~H650T z4o5e1btHzmIG)+Xb|%s=-8HuO!GHUurnfJb_+Nh=9=iV3zTo@j@;?5p(a-OMzyGrK zOTDnV-<%aQIv4~Mm|Pk-1Q?YZSQa@y_^)wg(c>02K@b-r=b-Gc(9Ip8sKa3iN5BeK zFP^hXaE%=dtx~m6L%_NwDmg3^(=;^ch8PSM6Uq95FtvfhrHi38YRQocI!X>KV0o7Y zj(`;x*<ow}MkN7FCXuX(Le85z7zBTCH~#xOwdw)m(qlb}Dj*j(UQ%>e7-n_qW}?yr z2_}IoUEO-Ft$BBajORTQ0$KD)(P7~<e*0-^OfCo1ncS8v?A42%QuQrz{@RUsAUhpO zK>l#&<W*vFSs>czweZ@)=AiBOPOXr-+sq-*7z8q1YuC+4r3nH|Q<cunIJ+XsiRDs= zk^@VOg2TdROs>})Svnf3S+Y1y-LBqwd`7C1L9j!Lk!$OUmkSGB7A)bAn8=oRZRO;k z$H)HibGTjgdL{D4Oi)9eNhIs(lev4<m<p8{7Mdls1U0k$%~Y>DzRv$0L+@<!D0h~Q zhGG_tD|4Jradk2Xo@iw_=i_YTUihF~`HIicA3g4+Pnu@7b}|ThFf(#(HK|xM)n&mR zjw?c0PhFdB)tOutq;LeRnA%fNHl0JIouM_VXv)O|B?p!}iVh2(@p)f!Vd-e#XVJJ) zv*45!$PgAruB|Q|i)Okk*aFfwt*UGehXCVJjVmu$T^cx!^fI(Y-T8CDO38s`kCMZ} zXQFXoek>ghc`O=Nikweybub8eh%<6+E!nyFsmlTxkO|G{-zISgG|mFWreOzzV23m# z*VY|B7nZs-a8$T9IGxqrvt|y5K;s>bfE7>MCWs0!DoxO163Kd5<bJx-!BSvBfHwR2 zH>!dPOmluM;RneoFo|SwPI8;v$skzJ%AlOJZbFK!O9RIb#|Edf{Oi_C<q&985m*r5 z-J~Yv$>P<+&>GcwGW~idgW!UI#UKL&%$Y>83O_r)?qCr7(8bU?E4(7oQc!_ur{IEs z)4Yn>3QR5vu`C)_E<Np=Cfr!0;IJ@^Z{AIBB?p!)C5MG>$3gNS4?lX=eoc^3>47LC zm+ATsn~IbiSc;S#7EY6P3UgrTaM;BWuwv<HSzUFerw$EHYh`RUPj_kHD0ns54kX*e z5wJqlL&_JF97UOWR_t_|^i_aS=>a<<m#O`ZO<_t7ER!4>oOC&7WvB>h7&3`usjAJ7 zRcCT(aOwpc01B_8XZhDEGr1hlW)jJYdzkvvrGev#TZ5CXdCQsx4uQrJ!36={)2*ZY zSWY!Ev_@H0r0I7u2(IX4XqA!$rRg1l3j(@l%Y&0xIE%)WJ%>)80wpm}B<FENG72g% zy;O2oI8Cp7%N&j=pyXBb;Y^$mqtbzu{=Yya1t&;WA=6|ghX7+Zhryy}T%OmQSvnfz zSv0Qvd2lKUl%SXxxwfigESl)D;0P!=%%~}w%OSwXWePT+P>~_gtZYrt-(P<-#ap9d z{#=k!a$so!6&E6TW^ODU4WdkUcmLPC5EV7$)veH#|Nc&uGJbZx{-b1F&xFmZCd>pE z51AlmsO4{&#c{%oL5VkMZS;0~*67qj=>oYv;G#hY6o*WcZn`Q>P+>Z)zy8XO!pXDF zWkgLXxs;*gz%t9Z!D+4Koro?D0ml0r3X`sFULGW@_Gi7S+vS?Y=YD}QG7lry))O2H zEnONoLKFgILz7K<-#M~$IGhBfPsxXG^aMS)8c(f|TAb+_=$;HpnavEXv!rDrxdj!N z_6ZmSnz~)CQ9M%xGE0JyYiq~Jg_$l59DhptZe0!6F1;Gs(hMpa1FTpyu6Q~8WahV7 z@ayp(&A;bXTfJJq@;6=lvikz*8uPz-8`xD{7DR8)<Fb$4U3T@qkznH*j(`=Zt~wk4 z2xRE$>SmpZf9_Yfz@x`umN!d>!zGRfr$65KUw@hHSmK{Aj~&l?evWMUD3ay6KyHO^ zhY636+Y;8SX=lOZeTM@t%dYbG>lSB;WS8{ofQ)t2UbsgfLqbH&Z_bPfS52mZ+^8Vk z`2Y9*|Ci(ES?*Sxoj!f<;(+4LG?&turkQ`9i3w_&v~mbEUQ$lD##6j(@t1W8ybP_g zOhYnLT}*hDdhg%5^r-im5TlZUG$WVk%|E|h$hOYn4^dtr{IJxo+RcH*7hJW3C?5DY zQ*R<GBiB})4Am*qnH`-{E`rKhuU3ZR&x0<`-Mv{PYo}t*W+pzC!cR`CZz+Aa7M;J+ zRV>ow?Y`gdvQA7;TwA~A&!^K@Q>Vu+n^*J6)3oA4!q)fues9y<@$FXjYHz)rF1kCP zOnP;<{C?<MtJ0wL`+lv8s`+@7(@?NOj<N6j#bA-CjUrir7ayLJ;A45WA;tHffPoXQ z?t?WeORq(`o3j<R$#a-;Y-?m@U!^{;!pZ-6{l}x?tK9qLvgTDj3;cesdcBl=-JYm| zgRGiY{#-mVOIG>7$D4)=4y|4sAnawp&b06d*XwD5S=Dd1POo~gu>A_R{+<QPW@WAN zY`L}b`MlL}RWFxbyZ8Ow-RSNe$K|SfoP1~aPg!U!Gyn8~O}p)aR_r`%v}%@xfQu`8 z@5<%|!L0oKf4B85b8L{U`|)rx$JWRF_HlE|Ze?06YFl|u*xx3QSJo=z?Viu)M6$lD zdm`}Q#~hi|Rw<u_VH$t_Nj-OXz#o0>4IiWO6}#VWjK98E-2Y0`mt*5ZW%q3}f8EL7 z|M!a8?3_i?|Gr%IziNEmW^te0uZ+@Dn#%)L>|ESz%IehcxL9F9tBLbMwU!gF@(L6L zyw+^U3+38+Gktz+?!KSTvSwv23zW{?5-7be%=YWg6UzN7wqA?!uKjdU{nc^#`X^GR ziFJy5t!3sfHGZ?LUL-5;W6v@(K9-9Cj?T9n7euYt`}5iCtc$MVSDoIjUcWEvu1|pO zm3{wyWt*PX*}Q^Xz9!(T`TZJ^tS_6EfP5wr+bZq7FwBCrj^}~H1NQK1uf!U&7Pj5m z_>X6M)|x$^POWu%`{lBKc=_GZ>3K52i__=VZkwldl<z{n-LDR(v%0!#&Kfhx%(rFM zSyRPjn%FYy9n?oxg|h7bd}y}gf16+bJNj<%m1{A@zNQ%$6m*|e^vyC@uHjg2VK==Y zr9E~@Kru&}PiUb+M<?$sCs2dthdh(a{Fl6u0v>TI4nCZjrF>ww-AhSu>GVV3LAADw zy3oC5rIuMNN-?{2_ix<kHsve0)pbYVz{i`seZ5%|n~Yndl$Qzr-7UiID^fSh7i8*+ zZieH}4bCaDrgLpI_$RbSRFh9i#=^`4B=@0*;duIahX0{^MdoN;IrPK(L)a3FjDiQR zOe_))vDC6ZExGI~erL)3y5GLOhDSvX-Y&hWaL)N~E|bOkoHog{g3z@ys_K5dRIkm* zKi((X{B5O}{*A)lzu)g)Etx(i@OIGO>Hua|^J5<^d3FXBEDPX%tbZ_i;-duz8&_Xc zh+Cw+cFUw)zu)b?>Sz6S$+vse`CE_6Ri~J}eb_D^7M;I$tC()&B_HFnOZ0XA|M`6W z>)mOQr_(dJD?ct;C)QR`SpNE&@7&^ZmRSp1#e%-yuiqb4|M%<dkiAF6qF3yz{k`hl z-QBOx$JhN#-THdn?pLqp`B*)f;Cv-AeeTj_bBa!Rp1D<izgE=cwCVMj%j-^VzgM+7 zs_bU!)kEC+bGBxm`}EjDAckxI+ika>t=k;FJ}ztXS+ii<>Tfw6zaJcI7A;uilf8cL zwp~vqd0(02t#|X6;kqZYiqBb!TI~G$?e^^_`TgQ|c5>Zs+kcQfuKMj(v;EKC>1bcz zD5&9k%z+UQ?<OA!b$vd!d|uVJo9S0$iq9@R|KrrG51$Tm|Gb^Q|7^$=j;%kR&yU}4 z5gwhp)#vHvG&85S&t~Ue6JM%a`}67aUscQf=2~S=EW2O(eI>8i4Tsu4ACG5kI;j?X zzyAMTtCveAUzuBeZ>8Oz56-O|DlD=sQXgj5{d&1|!_A7vy`l5%YQHSpc9oOq$MgC1 zVb|lTb9bxhZ@*LYYRBWgVx>u&l9E5&FFY>0OWuNA&%deSxa~6iJs+C(705kWVS7h^ z_ZuVAf(H&?j|ls}_+#-w{QKf_#^-Hb-K&0|Yx;Ciw_cFDZ0VF=?{>czagkp4+{x*m z+nzUDug67kfC{bYEC1R0*GGQyXR)wr|Hz_g5xk=H<Man>Jqj;8I1p<3<G6hN3O-q@ z6&sU}uX;K?K2EmcL1WfsU-Qt{Yq!r6GpsoIXiAMsQ-P<&5w=Sk5)WV5cwBBZ>*;T| z^VgrVc+B&4{{KJALs!IBJZ$B<uHaap5L<ANHR_E_<&%l8j*7=$(Lc#=_ru}shQoYO zS9+w){r>)Xy*}y-kGx$>Y}L!9Q388EpR@kOy7y6+_NvwE_eJfW5MT9Dwe^JPk*9jQ z-z+++8uxBS)f%6#pU&ETzY}HP(6ey9+Ce^-l6&?4|AsAO3uIr|_T|s#^V%INp3kfH zyIXcUmunG|;H*<GB<<W?*dw;8UwQSFKS{Ew;9lkP(D2yOseP|_C5>F<>we$=|1bRe z_aBe@uj?PW8Xh0}cK`o>R!!zfM>x(3*0s+SIK#}w6VR=*spA-Dh5d&E%(v?9G%>7G z^vK`wkWJSpf6qrZ*^N$5xPl*Kh}Sx|h{Pyowc0VxF1;Qb{y8&;#r*--j79NNGgq(O zcIhX-)r$q!JkqLnFkgQ4dP{<}%ZKEC+iOv#e;D`OxO8dJ@61I7KkAj^KC~vy&fRv= z+|I}D=M$@4VLz)co?p`P&C;$tF_7z=NLJz>)e7w(854_wP~JXy`?z?27Qxo9nL9XS z1lc<D_Z$$9&M_?g_w)Jc*?GG>V+)UpR;?9$w>l<mW@-rw-}kUbu3R5C9AM(!!e#1W zEpT_opHHVtyVZU%GPY~lPI0!b(0t5P#Ig0%O8=OREDx{judmltP*C_-e27y$W8=m{ zT-qyix8DikK5|^XK4$NyQ`%Xbs?#zq@2>iJ!OVq~#pC+A*wQD@u7<~7)vx0)cggl~ z;T4qTFulRnSbSP{`wMZKWgU&;N2cVi>REC1wR}N)z`fe<cds(C%PcsmU&nrJu623X z47WS!^J}jd9+z3ns<bSJ-~La5?g~Lwrx1bQ>hyV)%Vs6_S#J3dQ+hRYtHl53_WxHN zy_vau?lRXew%_k8F1u6c9(zA;_uFL~UE<g8|5tUEds(BQY@hd&=}}plvWd+b+9aAB z+7C2tXp=a8cd5X`w5S^iOdoStmUpIXYqxe0tKl?j68AZHh`)_bcGdEu6AzfyFikY+ z2>HRURPJ$Ly`cV#DEBK8cI@&i|J|MD|7>+XsJOp}THNng#U{A+(3iQ9;$ga1-1_C# z#_to*nX%}Ix6nl0Ju-!f7D6s(tKaWkesucGUu)E_eAv|fqxr+k+-)~YOn4Tpo)#c& zoaU1)EudDB>8$fml~=Ii1izB5fYMbb-iy1ce)a^cZnbsMXjvkdHMLTqMIlH*!2C{u zv+f*)j4V|SMVD(6(&kmBZT)h|J6kbhnVsU5tgr8Py<T_u(LtZuMY<e%$`$MPeDdmL zT+}L%CEzHKCJ-V};#Q!1iuGc%hu}5&N98`Ro&Gp1ap+NM;#}C~apy{~|Juc=GwR%A z1xnIh3EwyzCVa7Jh3ox;?8^!jmClM3s)`*;zgO{?SN7)Wt!5XVnD028)^X0)?54|q z&bm(1hK^^BB1(>H4#x{TZT4_ax%g$hp#C!39{CP6rwXOe|8ZZ6XIA}|nSa<o1EtOc z1>(b|4^0moSBYgkQ_YS`t8jeO%K5RuBRX|e%;GTJD}1(J0(65EP6_Nh7-gdJ`O`Yp zD+>R7j&MC<c|C1|g6zb3%jefcO+Vfj$T2NzAsb_${(Ql#2<=p*tPJkpl8#$3H6M?z zb>jWozFv{3y<?&0jHDw=U(R4#>m!gpBgrMsW&4B;*La(DM6I~`N`6_bcB|AomfF8x zuixI%s3BEmvgm#W|02%dz8Q<mcFbaW@wn`Eu6gI|h5a3y=2pF0xwiIziN!J|#S;ok zdIOxNaAh9}uoqgisw2ww>y=<DEp}-IgVmE~YPBUC&bx7HYvb2~^`>7t^;ti7`#f~I zll)4`EJ5ne^!U1q!7n-#ls4Vy5O>j>=+h!_@krEu@xL+4?%5rGZouPpaHf-P&wiGC z*REzZ_I0Zqjjx92FKR3Gnjy7TBrBr5RfGMSt72jmpT74V7j5ON6_+`5H!H|w&okKD zk->MQe`mp-X#t0KsSA4=Iq@!H)DL%Aqo5^l@?iJws1<)-$Nyh7`#i_iS6hPwrq6IX z+~2t(bY0-;7Ct8N*XtDIHvGPz;^V7ysl7wAMN{aF%aK)}aEjj=;Jk%n5nG^&$`|Qe zr!%2kAuf9qOnBGLn0M4fw?%H5YTz*$PsT)6#m*Hs1>I#9Drb7A1-0?Abli|!*k)S% zfIWDc#|?>w7fMQnGpayY!;(et)nTT3<tw)i@0}LlJU@MAs+er7t8B-IJ{ikRrR<u^ zvJ~|ai<RTfNLdxI8TNC?1buz)YCnDD_VXVtd79B`|15#Pg{IeIHoueF8s)^B#IT6r za&Clp+w{8!+2z+P=jjb-4mikEzh}zFMModyyBKfKkZa-#+-dv$PVjpBCXUUbSslk5 zGaj~bUu@GfbZKAJDz)s=tEa2guNd@pu5@)dDaC2(!@uagfKP{x(xDF4p90Ap-xP}? z=H|3YZ8-F(!iO<wuh=#Ad!^T7qcR?T&Rjk>th>i+VcQ9z0@i5}_sec1w!d5<+#;gn z-(iu+d~8MF;*ur&(pCyP48C^mQe;yMQ7lkYP;5EC|F8dqM4z6coy)ccOBcaqa{hKd zpX_qtbrOAj`+}O8`W4}<sXLrkEacDN=5&&qX!ApJ+3ttV5%TFS%AX#1GaEF|6=><L zU@Y(WurSZ~YBaw3Wmcxno-G^uxb%}axO}E38ar+cXzp;d%V9Z?=b|zvmDR9urNNrX zhd#>8xYo?zvV?axv*6UjY%DG|3ONc=6DF|hN4RX<U~y;8;x^NmtAgq-?>;oODIA(2 zd+MOymfUL=p=Imi?ABa$GT|3g<?x%lAwl-_*A4eL0~M6@&a6A1weCXvjc7~L&ZEE6 z(sN4dI&>cJPP`iTe}fv&U+4V>xm_A6*SM6{?)h{|irGa_@rnSe^A(<zpLmR(Fxy8g zXaAUbElE+{#psCG2g5`BH=5Obnwf=No@_7{xx6@odA9ll`6NLn!Q<s?Hl5PirPuMK z%Dqpas%!I&e;@nnw{UI!R?xm;wVgY!9aCff3z-_B%R3{g(}k|xbu2ijzL9&2puU<? z$I7@K<*WO}|N3}k%zs=gA-42^&qA?d@lD&6jyg6ohc9+?(M+3L8n!pU&il~K<Qdlv zpWYL8sQZGCZ`1lyEiX=(->+G$tZ=nH`#hV=bA>2_sa+hr%fdfSG7GL-wkCI<&fm3D z#g!PFgqV1eu3Y8ij%aT4<v4KtO`S^%m$c!n!`$j`nXkVp{vhDm#BemqxY(JYMSM}{ z3^SA6_1dnQ*ZwbzPdg>@i1+nb0n4p#)m@aXafQjPohV*B`_tQxOcQ(RW|)>=-GBSa zd7HP&2R>T%w0oeICvMFG!5w`GR@~Os$$kR-9cvE6xkMR+c6!M6@vZdP_A}|->ipY1 z0mjmvHCxy>^35~&+Le)ek@I5Q5B_D#4P#^fR$u()nF$IPHMDS9?x=I+*v#;>#|}DW zS2r<Vl=s=2xJ&qQu?5Svu$JRy@n>qkW=f0wc3xsy92+6F`+%_0e1RNSb)QUSrmVar zEB@`x_`PHcD1T3e=kJ5(^nD@|CK?M1f=4TkG&1xpKj?V%M(3F);*4CT`+r1T*K6f? z%@>`vBw#a3*G=#!6{BE-hw~xvOtt+S9v9hrR{Z=r`B2vJ?PeXOI#Own!ShB7frbhP zlitm;|9&nA_}srSlsl+n!>gQQK0ltZ9Xuvb?e<^>X!K0!0V88gWt&5?$yw$drmLnb z;+F{IeyrcRm1$$!=E)zLovnZBt~1cOVIZi$r0T*DKW(DIB?G?TC9TCwTw4nww%?v4 zqEvIJvoYz-jg3~j(%5+Czl98fGYI|=X8ing#_ZjPs#`>A4|GIT+!wsNXbQWtiRT*` zK?No$#+t&XI?XZZ6F%833Yh$Q@xkga%d@9G)D`@=sUWDpBq?}c#?g&h${C!g%LBSw zbTnODn9}u(wbs9Tn0GlQU=zqi^8_D=d!J`;57-N~f#saaK^Ef|Gxrr-T*DG}lU+$c zoKfeUd3M>)qd{utMY1M-&}!}Qc#w0eCrUiA_(QgopO^}h%K>Gksqs42B`+5I`ttIy zW<Y<1c<5HJd4X~&EAGC^kXoG8bRsppqrrhiYjNhX>OV=E{TW<aJuId=xu_JFrLtKZ z*nY`xuGPxI$H%s=Y;KMZp0G(kP=RTlz>2R&Ck2}NCy2+a1siy<Z%Wl?i7#$F5)0XQ zrIu{pIh(ziyEHg`+BadwnH)1Rq>kKd;S~OHG)V32u5gj8i4(Lz?md&^_SMqmYE8lK z>NJl?&}@i5#|-@mvAaqx#_OG}J@F^$CFh5x)l)%nr+s7M5>x%B2PYik{_V`tabW&+ zi_m)l0k&};8Db*il%CeQEL1zK&;7o43j5*$g-p=U>pj5-6;EX!IZ01Aq~98~Fi&ND zp(cNuP1+4*B?p#Of)6TGZ>ul);Jr}owtw??zf;YEkYNFb0v3xn)^?kW=Aa)-1GrzA zeUhI1Dd9wVm#qquOT*)-Ir1R$X64xP-m})^cPn^s0~D(V1s_z1%6wYD>-BKDlkSS! zC-QwxH7m~7{5F9@fUz%pQ>_EnevzzAe@!ahFR_t0*qGex(!jyu-taiI;6$^TMr%CR z)&+UW`wcbu+iI5Ga8`0)v4}hQjZyPY(2A4aE<e~i`BMT5dmpb5qmqCOV_*0|MgCh0 zMCvrJH0|pBb8Lx?#HX1_{GAM7PqB}B3N5C--rN1}@9))he}8S=7W_BC=EDKzRngn? z?!8T51`jW}aTM&yYMHQRfA9*|L(4^!lp2jUOG^BRii-Ne&ocWVGt=7q`};rxm$@x5 z&)6bBDOKqK2V-A&UxUvQDa~IEf?Hi=^wNw!8iXv<i`}*2<KyG2Ifd0$bPB5<%dyH; z22U{+?9t+XD3Ud?Ko^wub58Mm*4?^mL+2*bP)%;|IF^mVfsdz{S4<4kbd@()B(}17 zX<FFV?IAbLXGCS`T#8c);A63fo7$ev`CgH0YtfI@-{ZpSy;DujT0hAFO=YMFKB%~= zQqU=y?4m1lXo-Lz=bW8qR{WW!^)T8;&mdw3hd|>BP$D(8_3N1o%2LIT_|~v+guGv& zqy-Lz2#~C{@w+#R0*c#H*UefYFp;~ZgKKhs$B6}+E)5)8x*3jZ-{ezjjd#1k^(lCc zaa(?g#}E79IUF+%SAEQXdT?K1l=o`T)P_ae&x2P>*UGHFrR25n*{#E~*65om`Rv&H z>FD{%zh|r1I~Xc2I^HLH`&q($2H(w`N&yy3GV8gPD@<mTS+8-$$kJ!U8BNZu@9yr- zju4o+(1QD^V%}}TzyP=FcOIR(^~ky5acIq)l&ve?JP!5xwZJyd^6Sj2pJ$)xckI8M z?%O0Dxp5PJ-NcKI#n1p{4UK&EvCC<#!t&L5W~@r5{w#2Lq;~G?gYGkyOV$_&u~@{p zI<+_(pR$Tux`00?BhBS3+tN9eODw$oBwR#~M+xxM+35R;tbKFlzkOQ!<Eb|08m}u< zk51RTVq-t~PuVNU2TZHm10Gi$X5vh^d=6CR$Xv?M(s^9rx=^h1_fbC=N%=mHn8Ujz zpPgtjOg>hT-_0w~D8Ny$hpVy3Fn3Dfo~~H=8&yooS=&5JXZAD4Pd=a;u%?GOo@vX4 zBQhKXdrmRNJ#js45f`|^_0g1#!h*YNCtjGbM)HYy<g1JdUX~Z<H{D&7^T+F@zH-*Q z`QDm+k0h6+tTq?7{_OH0MRUnRQI3K=liu>BO0Qq?!?<<U^XEZbi!0hRZ@%K)ZzE_E z$(3o*8kJeIAm{PaDc|*5XFYchfy%%Bc=~Sf$)KpL!<KO;m+jAaJXNHAS-|H%F<ylt z=M7Y&YpeeRtx@&P&g6Ywp*s85rrz+NKQo=qelFHL8fbHPO3v5bAG)tQADk45DmpCv zv-spg&wampe@r!tGkuk>)e^L#GR+HWlk~^vYr+R7t8RJHX8!5<q{EYIzDs}9&fSxB z<$egq(tyurrii$I<O$w%_4bF;n^#U+y1k_B_K)J14uV$_rR!9C!_EHsHpX$8p4agN zyDUeJVKoDEEkN{M-u<aI8Ag##-g!HE?T<5E^tb=Jr0&m0_p2L|k30GNdbN7}6&~X= z;CTh7TlvcZp(f_C9lwyOam7Yi59%AUKVDKlCaHF{MJpyeJ|8B^dg99JaQ&?}(`LV% z|8m*vb!pw^cS|PUD!ZNgI_mSg-S1ba&#wu3zVrRQ-&f9Azh7hb_e*f-&&s`roZEN; zL1Tzg76l0n_jY9-YK!-LJk_`UuEOi>VxWeR7BmXCKfP`izscc3fgs0{N6Y!`|7^IG zzyI%+0H>7PUoV%3gNJPMc0RrJ!Qi+|@r(Uez02<uw!gZ(yua%8+U-}a$JeiotA1;` z^;XvEm8Z_Xp8EIg_WM^Jb?dKFU<;2aJgV{oZ2p_MVwd|nh1LCfWZ!&y(>=H2##`^1 zza?_EKNbHup`zK5XU)a7Dvle!iZ62HZM_<nb+`0-D7$RQgkKNa<+n&Ur{p}H8b0rc zNlo91>p|YSOWFA4)+pT5+w;N6^!c3PRbQ{i$M607?RM7dwcEo$W1&`0rv#VWJ9S=t zeofKVkH@67T|P_@@ZA0X-|wqiug9(Sv-_Fy_0wtn)vwp>UYFsq=GOM7;ioE6Z^vtY z;5u`pV^;cyr50W3GbXLQH!Xg0zqy2pcc~`N_OH(u9h{NB@8^}!@YtoSQw6guwijG< z70)&0t-YDpF8gK5GdAg*1y$ePtmLzJz;N}_rA2D9bBs#Q+kRhBeBL%3G>HD{-R}2c z5yfpQ&zIk;Tz>X>$CX}5V>iXF_ATeEUa$CiE!zL<>+Al!@^&$AHy)R>l45rhuigZ4 z+x-`n$u4L0U4vwf>U+JsmUlXTZ;g$JdF(sYsJz$bUBCU^{eEAt@mZ6}RgZhkuPAlv zT++HC7L}oRb)j>6*ky$|0=~vhyiYg$kY~!>{dQaM{kq?|vo+71GR>MAJpa7i?=?}0 zt)f@d=hrNnzDYso`<>$RD^sV(hW)?2)LZ=Pzu)gyS3aM+-6LYnt!)tJU<s=G-#!Jd zQT5($aX9zy&J%t1|Nnfh(w!w3*SpM4n^odX-It5*S7&9fTe;!Y@}LP<g|jp^e>lXw z8Z<rT{>b2N=hhsL_?nNcvueNH{Q4#R`MJ5>Ek{@7M%OLv3E%d2E7SS|J|bE34o-ih zvCZJ&Y}IQGKDJ-4Y;&D-F8y@=;+ji-EdH~u2ua^R;h)^Vwus~P*$s>gfhN)m+rFks z%$_Bh^~0$3gj9>vqU__c<#X0?H|2tcFGYI|A6%ZtyX}wJsp+RGuC9>Z_&N2>Vo*Vl z?;e@GcIy@8ej6iC{S7C+{rP-;{q5cJ>;FaSHyoAXQ_(qgG=%9|-Hh|Eb1T<}YKlFN zE4k?UYqsj8`~Uxym)^=;{?bt=--vnR%vUF(=b!!rvO)c=OTl!B&Fcy{Og>#Mn06(f zGx@s7WuL`vy;4`xdZom^CtGbY0u6I#-PuuCrR<=)@Z0<P|Iu%EKA-pMFu#3B1>4z= zGE?XK8y*#@Dqp#Bw^3Eu`@P>+?frIZ_11S1A2=1S1WB$B`j9R?e__C8M@@IR`+ZCc z+m5dN{bsYjwD!if<ZF@XYqKrI&OLfBvEbRPY`wh!WlN`qU5dVY_PNB99HCR|_I|rn zr7n_la6wyU(|Nn!KI;Wf&i?n~aevtFO&!PgyuCGL`_t=c^UroZn4`8ev9&Twv0?h_ z8yl0qD*dQBdCWiALA?8C;kTRi|3329zR2BM_^^pv?}B^A72z!T+AkBM>V7``ddsZl zris(qPsPS(JFC*>RX#IIzI9YQevMn7%u2T&2|;EZ-rNmOudBs#J)Y`oFV%D{g>Clp zv)i(`Orw{~I`jN?pu&|6p?@zp^Upov)S<_rKF7S|+s*WB!LlzG-B<7ZelPl=VzctY z=tr^TcbAskDReLW`}O+j*z&tuzZPHN-q^~>!<p?IAa*~+FkxoP+gB1CivP}NJ_OA- z+r__V5%#-qb3*!s1&*)w|Np!GR_gTFEfbi{R<GZ;>sI~$zgHvE=PunZo6KmC<68A{ z>GYDl5$;WnlHU>!zJtw*sQJuTu<d?bb?Gt5^cVRz1X|nW>vqiRyOFWDx1{=Q=T$Y$ z+~70Q;%C>ql{MjPY`dG~(K&y`W2Ule7gd<J^>!=(%~F3`8r5|6nE&jYTbUc{|Gti| z+WsuL-*(#WxH;`?8_gg07;js-`d9Issckd4ihbCPlK&i?ae1+O|DCdy6$d~@Yxabj z{r%8cz4-arZMpDZGYCl7RdiZ+drtDhHtD<-%jT9v*)H9ABdPmkW&p=>?R7hx_`Ue; zek>3(z7fZFk*)FTuh;8euYLKfc#ZMlmG^JRwmQB!BJ3Z+@pX3Yt7VQpo{M<@JdoBr zqR28Ma(Ua@_p|eMt+aZ-=ku4QXr7V|2D#!hhFPaHmtQGO-f*}nwqwWp{r}_Yo#hM? z8pK*}EN!hjVCPe<v-ynCF1?(i@9*y3E>?S^uK&b?gY5Eaw%tsV*1eZt{_Caj%}?2r z*Izpju6g0ZTKV?kZQ_C-Z-!r+YsZv!>eQDdQ5$al$mG#bIMv6?2$~%b^R~MTnh@99 z|EH)FH0AK|qRaaYPoA7m?hoO&{W9U-rI}8f;7P0I)3q0sn{#J7ofTWD_W5U-2v3lJ z*VX95>vukrVm0M&G_LxRp?mDiwr}Bam9F|f%!B6$Ft~9%H2!Q^X8iDfczo?vyJimV z3Vxdp4z*%|rA}X7pVD4`CFw&mzukpL+?V-wzuh)lY+?p~v#ijkxplu@S|zb9Z2LT+ zKx|@UcN@oj&>a44=OqFc?ULnBB{i5Z@mO!YSN+~r_f$cE>OcN7XO-^v+y9H;wunDD z?f#mdTC7n^-}Wr~nY78~>#Y2rQ*F(f&R+9Rc6fc({Qi~ewvHQq`pob=F#YJ<vRf<9 zT6F8Lk%%sE@z4V6O_E)o^ZViC{om%9-!9X<k~1;OXnwwXX8x<q*OY2*G#}mCamZ9C zD`GKQU>k=_nPsBGp;_BrZOxu>?nqO#kG+y(gW@l?i*1b}udfU6uJ#cqnxWMiusUW= zcZT$<MhEAXcc=CDU)e9ckj+}**D7-_g-L9Q5py@h<-J@wJ#W(9V@Gp-o}IM5aP=8S zmOqLI^qK!{(B1V+=kbJI`5P`miXjERnT3=l-B{Tz@~C)AdtFP;bsc4+nC<O?d_iX0 zuWorREs`~FzRYd*#gWE2EmCqqHX<I8tx}5$BkCJpZnJ*BCwTsa*tr|l<*r(}?9$~` zYKgKuw`yLkT>fQO-@4e{+t!62*1Tt7Bb2V_xI*zzdRhCU*{|R2e!q^-`i;TYACLQA zuZ&c-Q2ds+;~`t?N{-DH-|heZ?C*Q<&{*e{srvu_zh18gPhp0iI$#EghpbxXw^vq9 zmMfUi;ULG7wbvr3XT{Tl3)ZA=?sM)fF#3AbD(>dD?Sb~6|LooS{Oq<kE<~{v7MUt) zTN*KQ!|Tg29x>i4bT=Ges*065(lb-3Rp3y`@}Dxn{Sg7yr*$^J$h>@7Z+Fh5yGt{K znRsXOY<MkvpHE?u!B)<~c1_PU;?5<!!LvG+yxskNU)5ikZI{EjO{cgn;eVTWnc>}o z)goE<Yd-hxd(8j(p2E8gV*D3PTz+oY#<%;H!nqA)tg{sa7+toU58w23`^}oG%nRO{ z8^r%j-J7Y*P=83NCg+HwS84AoUha+?%8UAMGT-sIppp2DA@$kJ^m%TPlmAw4ejKou zFZ{arZBSb&zQwHSUe4{M0h?V{ovhg>yY!xAmViaX@;1%GSqszF*&C*AyvBTa*0VWA zpLfoDX7gl%^Oq21zlZC#c7OVQzdrm#bMY0QLklMqTsmuhKW4v30{^074}l<oM1gRD ztQ(45Yu~HQ%=Fp3azPQ7cw+IK=$6<e9?>})Tg4h@$hnG~dn3{6;rfMl(Yf?ZPtEh~ zj2VnpJ)7+NvvhX;cf)tTj#vc!UCI^z=EGC|M?&ZA_VFZ@SEL@2xUfAxelMRmr?;lS zQ}-!%ReJnyMD~4LX7#YfH0DHK>{E}3qQ=cvHv~FFowDW&eH^%cU&Jx(+y8z&+IjJF z+HJkoS-L^K&$Mp^O3m!e^eA59mU{2hdBcu}F^U}fzX_d6I3=94XqVp_;fn8f%fGJk z<!Ld?mcEtEoqfGviu=>MbtnG+d_Mnm{zZX#X=h`Uc|QHQJ1su^rvXEf)XlV5=XrG- z*VwS+oO`hOYq0zaiG^jK&zirU``Dx6+{aY@WG<IkJGTqZZYl6)*mq`b$tBOKNVa_u zkGvIGWLs`&E}ye#|B6R9=JlH2i+Dfd*sYtdS~%>LzTWWcGh{x_xX@<NHw|^oo1b25 z#b10pHP^nTAm{U*o7=n>rgeu*{@GPBMa?%)x6P6N^0ejis#g6g>uOe<c}pqb^!nE| zPZ~LXI2^d<|9MOAS+|aY#JO61j}Kn;xv{aA!&)gzAlc%=HI<Il2b<YnU;f`4(7d8K zz}cw0K55y5ZMX9-dz%<^2T0l;e%`U=q0GrwE#B8Q&b~Y6XUG2JGKT4E*Ka%~b<0nN zx#jEni16-ISqbh$^LKwi)4NwMEOh=VqMcXeIDf(i$s=-kRV&MnDVOa@zPmDVQQ^y_ z)1NhNON@-Ji+!G*F=IK;w!a^)?Ae^9d1a1c<nBdNWLaOIF38YXCT1}8q=_cewm-Yh zx$A*e*5>>*@xLu#E#Y5~!@rLs>9T;C$io;H4pW_Ohbt0+6*}DqeuZ<Gcc?30+0Z8H z#4A|Bp+2XuZH0Z`g#(u90uI|a1x+~|ryR8k*ZFH;Eu6^QBBAvC|DWgfr6K&`j}yN! zSf3L7d6?%QXnL!B_ha^SU!_DXF?)-GJ@+L01*&eG>?<?8nzbxHH~0Lk^V8z5|J-!z zrPlsj`<SiISIcpk#-I2Xx*pd5{Pfx?epAE64=V&We7&4z-6(s@TW{x*xc6OmZ*-VA za)feijVeu+)#W>4=Csy`KQH{?!y5v1H)2|xx1P8CerJ}NQ^L&O9fiBO`raMv)x9Cm zD*G%=R+sO>F{yB!rw6W9byOw(5<SGbh<lOX>jcFsXKvkdm#+<(|FVsjbN`=D-RIaB zcCLupYb<wBZ&}RQki5-1ZcW?#^m?gX^zWGGo8Pv-E{nbHzVMmU#Z|wS!23zpe@<fU zX>;#wSUcbBHs_l!$Bs3CreVVyW1pry-`=?*v3FMIiiZr@IUI+2)pvwn<}mG0zR|@Y zQ?_At%j*{kGYoj6W-6RBDDB)6@wtt~kWH|4CiCWHV$#zMe7iIx^86!nw_d#hnr!tf zPvkB;I(v5X1jg;E3+moj9Ony~^SYyMTlulYGbbJWlF^X@O1X-^!dCO%t`kX}pSxQG zJm%rwwb<ll?Z=}zKTGHO+iZA~pvZCKSLWtp5BvN$6kN7#kmQ)Cvc`9H&x+9Xfrr!7 z?l3jXkIKHHm3wfajm37s*QYjoJEJ1Aq?bcZDe=aImX>dVhKCL9^Y?xYdtIXbukB^n zo#LKd2D+WU&crSds1-=*m=?-qI_2=ziW?@aXE|?lG<@3eXdNgil&<J^S{vD)wSP{2 z{kP<=OST5BsC0{hj#1?PES;+#c_5?W3fOUT4~VEKrAL_T|NHIs>!W`={I-H89aldV zP|a4kvVmLV5clf`1xo~$se@Le=<X4?yDBcbyI8vLuUy}s23d=Gp+lUniwghBnn^y$ z@#N6TX*h8AaL0*<e>{B(!?;az3=DE-Jnr3)w)UQ6e?+|d!fR{HP4%ANo-ZB!K#d)= zYWDRtCFsBeC?ieRNiea=VgcnOb%i+_Cd=$LHC)?KETH&c0~=59%!m!~mH!mW{2%S$ zStIQHgnQAdqU-5fb$9Tx1}~j@{aWH?h9gmHTh8*F=%2etEvv0qUVrBkA=9r{g0)>3 zH_pDSBJ-QEv6JKeve|j7miuW7pKCdy_-IG!(Ir*sHjDH+LVP&eJwUDyUzES~)`qw4 zf#2YT*b)n`$#=!$&w%pP5$4l;VojiQm@Tu+=IquIfoO}*1^<3NzrKCujy;Yn-TwqH z9*Q#TSmsumyjEtJqoHosS&nBf_%HjryiyP;%ywK`te*RUqxM*`+{2{T?Aw0keE2v~ zz3g|+Zy!jBiOVt;L9vIAZ&|;YaAe9eqtiN<pUr!a_Bw6nF^(Ic{G5FH&yx*r+vi`q zd(~^<GrrTaOd-Qa(R+3GuluaZEy3F_#TadW_A;l-x`JQ!%d86vboe@QMLwRoEO+`J zKO?BT)9zv>B1tPA+j#K~#L~ROv)3HhChr?2zeb{UR{9FWxCT;wb-T+c6)q07K!`>b z9PhXl&*AYgoy+t*|5mK!+zM;Q#~N2Ot~{#ZN|KLA+ODr>c6sx$Y4>%0Mny%bF*23Q zhb_;$yK5=Cgl-=wq<VJ=oAf#LI_a)kuJEl<we0t!BxBobaD&r(x*n((oqOQLg@w(t z3=*6E@i66{nPK>{(Y1TA`+;lzi{EqbuIX$5g}kV1d#-)grt{lk{c3M1T}|2d?(S~T z5dO>Q+LLuy<SHI8Ufo|`uYEDaIzd6+MdHu0FsCiN|Bkq@)PTm(*;f@_d6~WEkgmW+ zwcCZ}VZVE0MY85eK05FmG+z7N^25S+^K7fPxm}d-)SmD{$n@+-FTI;~$5%%LE)M8! znR%o0#HRumCe5=OTo^8zsLbY=zIJ}tGv~i)d!>{%{W$o(XH}%ok(`-=4=ScgZc5?$ zA-6t><xtt3-izP7W=jNeADA%n+@mk)3>%ouCZ-B(I2%2eKm1L?-dTd_ZhIsd)0Kso zoenKyQ8@6?i=oqWSAsR$!WFr3w`*J#rFPeD+YzwhrqWbp`M7mImYrgKVCm4aCSzLu z@=7+lAH2&JuUecjwTai->8GlK5xeINnZ9t&$>GPp1UwGSIT5(R^^k{_%Y)SJ>6*$4 z6D|Dsj5qOBRklc-+IBr|X~N?CrwUVDZ-cDub8eAapX8(`T6=-R*zJmx;*$^WW&X%C zMLLA0{q-|$x?Of)#dQAM?c%136SNN~wwRy%sFmB)Ewet!@m$%R-lO-b$^urfrmd(t z#dWs$mX-mh<gCL9>5HO%)Nkhgnaj>|yXNaIhlA4^W72Xv7>=)Q6L6iXxb@>H^NPyj z!S}!2yym|!t$WJjnlxFCRi^yYAFD;oWoGH=I9Dw;?`=ck?Dc`yHEu{L9@(Gn*zh=1 zY)jYa*{>>|avO#}Ua9{(=QXHld#cz@lkX{Ls2ennIbT;mBxjq4VZ0bi%<s%;+h$(3 zXWI7X*0ay~g>S`@wx1Uh2Q~R^o<DY+JdaUt!!Mom;GYr^7yjMYm|V#g-Dsz<HnT7M zlEmNm`YyTkF-otKZAvre=f;BSr^<838_ydbU=5Q$eIUK8{^Nx^OmiJQF3YTM5r|wY zy|E`;PheR<apR(9t0e*xpFS*LkY3Hv;V|v(N5wxg+n=$i#AgJ{tZxyz{lH?utGITF z^`8`Ech_#KO?Ejewvypzg;E8>1nvx_(+Lw*^Y5+uaN*7#j%mAXj%&~SlP=l3>4`4W z+8b{-A8i5khoP#O%_pkPV!PZW5wYW;!iHdu%)ZA{1(dXRO*~XFmG!IAvCBH&ZaxDA zkye16oRK8Q3x=~PvR}G{ve>w|wlVlAuHozpFXHgc-LuJYp3_;jr3{rz1Ohol+4nQ_ zJ>J+Upx#t%5+5IVl$YI3a9XJO@zq;?`qb{p;;#iyb9u}+oW~)jX;^xOt5&IkqeSC| z(*m8vynW%BA2ka1tUAij8l_UF+1gQ6@X6(ahs@eW$%Xzb{GD8^(H>ha=XF00mHOi; zw_Zzf0%!ut`|-}KtwCLnRoSWyij$vCZ-2&C%oxaf^ws%A4tg7mH-47hUAyf{;EJ0{ zqMmkgCX$?ja%Vgq=4i>ydfixYFtljTB=0<~$D*xKD*x15Iif8rKipKB8n;h`&8}IC z|E%x%{aqVoJPs9H(Vl7C`q8V)F2O~&$KN_zwYB|lWV&})pz-a;-EAH1&&19;+<9BP zr)&0nn`=uA;sRGZO}vp9sp*o^*rMK)?x;O?kLGV9bD1TN(--PKtq_&^Xz+Ha0VqH5 zM)$0^xj-aRZXSo6q$1xL&xf~H`kHIr$O+I2m+K4v^usT8&!T|tBj1+@OceE#Gny&7 zvEuV`qZg@;6Pk3nqdt8u+B4~Jq1WT7;7RmD=lR+9x10?2dTJ?XGj(3@hNXw5)LUD| z{XBjnom;anTqMiRR>}EpP{)Z2Pt77Ll`1x$5Dh+ewe!Kzi2F6GMRLw2tFKf!zIw|I zpV~c>z~TFP=gMqde-{5{k8t&-<ri;n3;T58j!5L^WaH!7_B(d1GyVFp%jxV^cazBZ zB1*H~)NM#Qva@nUXKeJFij2I^`$E1=+Gy{+@pib`|A~j#m9tVm-%<N@I&-y}!|&A` z8&~(s@}JGUxBgUw(YJKXvfrm(7>i_0+@J@V-CUE&W?+{2=t!sGY^k}qN7fmt+L&xN zbUU*!<jwh@H{YgSY+v$%+3m`y7kedt<-{#o=Hcz#{p$Mq_%^9iv!~ujeLPRFGpAyz zW;sOl$#AXTUJJ!IKL>Smu$=P*O=_N45oI>5Bi3w>PafB{X9bgEw7_mq`R!I+3!dE6 zUd<l;W%sXWrNvod3;s@Ry>T-+R9~Gnx{gQniooy9BD-saY8KqI3s_;=J?C*zP)7kz z_vBX%x$S(iA<O;dUfEIj_|}z^TeIFe`@EU6W5K$Xrn9osG_Q$(b!ry9JCz2?4yNI9 zifiQd$hbq-JrqpqE3DXOA}#FuMk@J=58tmi;}uI|)xb`>lxDyGt4P*Q!;+w85v4f| z4>t(O_+{}~yKKE`k=*cTS<|fsVe9t3h)_}fvtQeDdrXi2(>a<K-!rFeizhhgF1fC9 zXPQX6eiKvDbGcHvS+C_Ti)8iujqJL+PsE}ubFqk>#+8_=)(5+mSkwrL2wK;#_<SLz z{>HJ0VsI!PJ+ab%_L2{d3!h!~X1S_+^kMgcmK#6a=e9rlb=;y&EUA84(sq3|KIdBs zt^8bDC&W!Ihz^q3$HCPRYjI`gLj{>@u3I3!cP$7@nH}_FL4fw9ZlSE`uEXMtmK(YI ztyrTg&Ny$80EdvGMb}DR&6<D}N1ucW-c~yLu)AT#4bjG5^K*kXh_>(TpOy@=?mWA? z;dM=rbu;$rDBT9RdxFqzrGWg~YOK*8Wp->(0Eb*m!Gs`LkcHkSUvq5<1zD)LQJd-O zt=ymuM-RIiPdfq*DdQQ-W8AppMY1%j6CG|ZwWx785j9(>%ymKBeqXs+(&F-wYdXQ9 zr4!+OLc5ip%arq;!~*^x89RoM$tI3(x*YZv&ITvbjZZtk3UB=QlG_go)|%?B3BQ(F z)CiUc>{bfco<F($*{$Tzl5;oaFTL?rd)EF7Z@nKjJLztDu5xRhNIO4c{a4!+S8s&g z=a)F7w(X(>qui|95{oZb231e9@N4@v;oI%WhuB-AV(LWKng+?(u^hO{eT}zFAfxv8 zw@}-vFArM3DRyLR;=Rqw{y=zT^!7a8ZAX%N1w7tHKC-ykadAWabdc_d{hr%QHTmSb z7#@Vq+*R^&(XoE{^`Mb%HNQC$r+BtaW^QzAI?M4seSWQ(ySC0Pj>akTRQo3P-r)IN z4vLx9ud`F4CqMeIki$U#=c{i~QBe}U+^$WF%U*Gsae(IDwToVHys)~u<cm(>oG-7r zBeTKQhCTD172kEZeaU(&p@waezT77pZf{$~D%}!wex7aVl#(+u4CgSFa+lA(6;wIR z!mp~NNp00Mkb8xnOyAfc($0S}wp68I;`9kGerKQl(6u%5@v+{^PQ6NZ<nOJpoSNSG zcuBndiKyM6P~T(}f9X$<jGamC)QJpkmz@^BUvKMjSwU{YI{|wSfxM12hCdw@T0vUm z-_2ed3X1x(RSqXlc^3Y-u*EcLg4`{+ZPVo$JGR8_t=h_E5}XXm-1F^fcd!}SA2H4L zco_M};$`O_wbfHW?wiaPuq_Fc;_r3D3a<E_xw(jo?+}l@+M=|mCsn5QHx^$5$M)yr zK66aLvF-Q2>)a{<zWimAFH{!0g_by6Sa8kt^Nd%oudk0^DX{X}>5a+9{Vx3n4R|KG z%=bHNdnU4?vexQ|#Z0zEg%RLnZ}CU7O1s9Y=INuH&ySufF8a8uMNnHn^M=AfU!loG zuJik@*JnpQJGH#FZ*r!hRQpy?Cg?sqf6?|s(+@wE(Nf_s>Dv6_?t*2F&x$^8a=rd) zqw9RX%l+DG^R6wg?VbEmIm(A0l;gvC{;OPH#ovCMTlam4bCCm=>5iM?vrQ~sTrQHx zJ+{2IXL6AM?|or#s`x%vCA#G8hqF9Qo=o9Ni%;tXy}0~oj_qpy-E!(r6{WVhgWSOV z+Wh3UXSW{4UZ1YBp^3*lTx;srJr=*VD5U>etsPlA%T8cAzXvEs=<V;iCN-V!{0ZkR zCeO`y1Urn@nJ@8wUN$#F`^2NmddE*@FnXRa09ma1q{MaBt4j|z^VGP0o0*&Len7@O zaGUV2mzQtWs!kP(thx2nVkVcJ;calhfy;{+E1UQ%LBZEIrs(LK9`_ZGlC9kp@MEvp zyrauw`zFU(hfX@R)JkhdENm^n2gikBLhWa7`%dS3ziHi`ze$zfIi^g!Z}jcv-seZ6 z7whid_Vdx(l{%+EL8f+EfA800OAqf}b2_>`vhXrQ;m%BU&kYMe3WZt}JSQ*x;J9$w zlHaZ7w?GQDZG>_*3NocW+1^u|_k?}Yzr54ybL~8D9JwP7^5D@ose(73U3wUMO;pgu z<f%T(sT28<zhl(eLG9Q0nH#h>tp^1yxKO<fHcyemJ2^}8r*86m@5dLsG^6WsKTqY{ zt@K+9RAMUa)mXSK)@sk`T|!M8OqNXp`D3REpYOtHI#+|{d2?+|i8WaBP*3(=YHVU) zLbe&i12>O}FL|=@>2<UDA~8wt+d;W3>H8LsH^nbM=)LY@k((9R=m56y^ph{!{@i+| zEnMdM4V<%Fs{);Jcb8O5FI8np%=FP!-k<uWI8$a;@cffOx=(j53GlwgdRXcm*neWI z+tQjHB!8a0{M_>SoZzzthk0HtogNo-*~hrI?Z?&d_)yTc63}?~tjuLIUmf}fTP^{b z0XMr6@!WB@tW`-seC^k%uWoEizFP#_-j@CE?_qxX5YQ5e^?N>b?fP~rd+qJAxgW1Z z=ZBuw+r1{L;$iFTb+@L)->&hMKGZZ*U;-#-tKB+1`z9zvSMTXLa{IH<r`gNT3uMi& z{Wep|AfdtP-Hyj58wJe0^>(H>FDyGQTfV}s_ScH-_o_~>be357?dkORRgq~km*(C5 zez$!7t%PRYE4TCa+j`CeZAt^}AAR+7dVJXR*z&o-zc+<!yHj*JGv;$gBq+90H_oq| z?d||Bn0`B~^x6dqzNuX;E>_WQb)UaTI^}ljZVL#HDQvC!eAc}5$?~Wbidkhp9=5N( z9#`#~yXB%=7HHP<cK-gW7j-(8tlfSu>hHJP`K!X$$Gv)A|9|(chi%eVDxc3?eym4w z@#2!-Z@16CRq?p@>a^&*m43EgLrPyRoxUo*?x!ngSL>@Mll{YjeNCrE)qcHt_22LJ z>(5!e){$k5E<7qK+9IWt?JiT;^6SZD|B{xRQ<}?jzPc!1QS+M<aoIX>yI_{a{oUpH zt-FmC=lR+HE!q0#)9Ke84?NZ9F1fuMw1xPT_WCtPpM!P?f%cu0o=|LGk=$<^c0HcE zJu-c6=y!I(J>~Z*-S1Yv-@9uaXg^tU!>;FZ%i~I~hK675{byRWCFkeXv)5PH{=3V| z1j+`*kNF>E7lKly5PwaRtd8>j%3nMS*%mSue*OFX{%Y&@dp7q5{Qh`c9=u_Y&+bRU z*0W}}R~VnOaPHnx{cflG-0F8bU(G2#7g&D3cKfamhq$*s*!AO4_g048|9-u`s@!k0 z$d&uZEzpi)x#~BDr8g4WGdFHKV|4mOP4%0N?XRw{pD&hRe9mIASc^bSM@Q|)qvBB~ z?$&%h`|6^*eCX%1=JC?~CQiJ$q09FFeVY$jOt?#@<<^CT&R18hUbo8izWx87{;it9 zF1JB@aKBy&_J6rT=E$>exAWKYS-nt@O?25mLE+ZD`v0}L@wzf{H6I*v|97g-Tk-4r z`}N8b+2tx0{Bx`Y&EDRE?Z!%*ox5$>JPlB?GEHUSPIUt(tC=hH(;30VS<xoJ^7W@r z<j=E{UbyX&mv*M2NzIRftw)5sxA@h@RX&}X_259`tG(avU1ndew5n}?{hyD=Ux8ft z`pWZO^Lr~;x&QT93A*0OTt4>-Xfep*oQ@1f9Yv+~%rF&~4GMVzolOExS2z!y^{M^$ zSpNTo%hS%={mwaS8t1lR?S?~KxpRuvZoPI%=@Q3QXMWp|h4mTBgO~ep30icl>(<-l zan|PZnWz<xOZ?35mSnBp`|VO~#gB*WSLN&fEL59cQ)F89CgSTE<MUUJGCmTy=-gqZ z;_`Sy9sjoCSH|x?9$H>nInR53S?b!^PP*Djs%PJW3YpL#t3~h1KxIt2@|CJDFBZ0P zD5XVIvjwsqY{}fut+yjV=$xQp^9RH1D+)&hP9FO5;Mwf_b;@De@0QJO$~g3lrNb!4 z=fD=V7U@Yhc|N>ezdvhX+l%Qpk2JiP?kUhB5Owur*(>4N+j+a+s%i2!ZatyY{o=&E z<@4)S{qH;RP$bxA;qvl{37<Ozl|{^0uN-C+wC9NA@Ky0yZTInraMYKe6|S~16{dRU zi(g*d&@(l7MJmghH8;V<b<hLm*EMRhb2gQgpI>@`KU(_qG5vy*m!EqrY%5KkF)60t zAnVl=6P33HSbsia{Pq9FZQPuTz|)=CJ3mxDO=Id1a=EQg0$Q57MZHC8**^o`8+)tE zZEL$S9aT6~J1l*+JFQ5}l{q!LLu#2SD2{Z$C@=`#UFEaQiTADYBzD8jm!T>hhgiiT z9BjYeDXv;2dU>|nii2WXqBXAw7_M$-Rw|EJ%x37dFzxq}Q|G5Y-`T?{%e8gJjgA{) z;DnZSV#7T4%j#P%`I_IIlKnh<t<~+@zxt<3EK*+V)_cj-khSzmp!>^=_U;z(k3T*> z{>t=z#w7o`<X7oSbt`|xXkH0WXF0j+^}5xo+Y_q(d_2DO#KAA}M<iRMuPt_*;jrV) z&gb)f{TE1|@#*j{V-5qK=vlH$1w4M(FH<&@?Z^!B=}j^|6c(Mk^m^-6p{yU1J|5<` zf1w!}oUXf&ZDZ(MvDlJ8-E9gdF1&lQ`TV-v<Ifmuge&+IEDT$-m9K1wTqMUg<J4O9 zD+*!X@0Q2!UAX9G%IWpF`_kSf?9Actc&NNR;P5Xtl{LK@N}h^~INog9lG$y%@9X2% zOY{71T$_5-ZnC)k)R)WW$N5iI*cCAI*^Feqzvk0d-rLf(k=cp2dq$z0XxzFPlQK)p zrmn4>@$J{o=krThRF+-oxWDLl&zcCy`FZ(0*;k%_yR}9v>qNF0^Nivv8yF9`%y@A8 zMg@c6_lxfGFXv94vFyk$J>#jI4_h`L2F<F}+TFhFZ@<>JA))z3<-ecLzrGi!>sa=X zgO9`1<(yc2&BtpUvp$CUES^_%O7oY50Egb>Th{KpW;1#PXXO38zW?7+&@QHHn^wGk zvA93%htp+`6^gIgGZJiN4)|^jI9&2}L*n76quKNHvq07T=~vBX?#nO*{m6(~k+|Wg zdDW7t=*_d6&7w6mT~c0`{<sraaI8D|&W^&h{{sIuoem1WHczUtB~xlo%PQf0M<1td zJgv9;g?*yARM{EDQxA$>+xJB}xFmjgaq$;xb4!MNT*Z$x`|o#(ujlf=&QUn@;ZdVN z_1~}8zuua?bXt_x_2$-_9R&$*`Qr9O9B%pQWf8@w|KP0IZ6AHH<G1Elxhtg{HTC{i z_2-yTTFT4rlie#lT=Wf}T@}i)tG#vO1854jH0HronV#<bikDdK8wGdu{`&s={r>F# zhxh`22<Grl-H^zTd*1lGjjulIigxGf+J*;5mbJcG8GXC%_NVOG=eNZ^JKf$OVrRs? z_0&Nzfosw`J{`=CkKz*iW~--`E;dK7@x{%}%Rz(IX4g2XK7+k~Pii5XeQSUbXRgzN zuWxUMyGs;Y6B2R}sZ*F2llS-dY2k^SdqM<s9lj*bExndmYx%G>dcEzM?FSj>cGQ5j zVpm0R9TK|8zUM_jm+i9SADXA%10BY3{g*>a(s8+E(*;T;Z7K@xDhq0fccmZQ5%@2w zPWw2|mTuEfSJwy9H{;&F|B$J?BfGcSu69@C?8tMn;6cygbjj>2en!oj2=1*}jcEro zjb^b)FA=ynZ}UvoBPW_SclvPsw2TXC%bs1P*dY+Q+Q)6f!}$2R<d$1b+`3DaH~Sni z&vZFcASQCH>!GxnSe~;^;x6{UtyS&{CcD4NC%u`Kz3yV5weeM!n1Tfwe2>;#m*cZL zdVgaX`)mP$*2C+}eBu+oOS`Bp+f$Gy(sHZM`rV52T}H>HB|f&fKK|P0a$siYzDbp8 z$+E_?-fr()75dx6C0+8^!nDH40p~z1Hz5Phh5SK3GBmEN+V6QyiTx4d{dW_!KDYmn zdHZmw{I0tb{+ec2H7xIRS+HNx-u%(2ZLz|oE53<;Iau)Qv17i;*UsXZ0<}(8I4`^2 zc*oD!qRbeR_xJzH<@3Kx5m^-PF{9~7-xko?#`l{JC%vkA`|$nL>+fb{hP>%IoK)yD z+iA~1afMR~HXG|Wv!`eYABo+oEV$vqop3J8sn1sPpS|+>^=WtGZ5w)`S#sikZ2Ng9 z>iDf!iVCg$ZBAzy0$$%PoURx9#j(RxP18lBbD{6;$ij6sk;<D|o%IU!gj%Am?aFy$ zTq(tA`oy?BF=?UMx~m7TD6vdAz4m`c*FxE1vnd<-vzs<3NbP?4YAd^7WUc)pt<`H5 zmEA23-<!<GUY{hpKrkyUOZ2!|!gKjWx!dm)b<e9>Tdv~twCRJ+k6TZ2^%t?(H|+2+ zyehOH?Pa_Fd_O_$Ofyj8_Ls8T_|2V5{+iR;X$gn9C3e5oTK?EcSgp0=!j9BjeeQE^ zSHihXE~ib~wdq!7i&WXn#Ou+iPAXjCCmx(`we*zb{`S%G+M1nre(^7CJ^FtK8+-R3 z#RUpy3|u?s7QK}<ZJ4_dv=`dk<*!(D&c<seW(sC?Tv-^e(f)ar0*j#T5s~b@%7SN( zwXFGZ>q&louhc1Jsn{no5-+#EviXo%5V`Z+rlPrX{paT$yQg$2VKP(DX6|p@8*Xm% z1+{i=ZaZD`Q((d&_q2s!x;MJ|R(UEa&A0xgKbJNANo)KJj;O7rk*`kO+WhTYVDk+_ z_FAP|EvD`}^e?JhkNz(hdb|4l-ssoIcZOQ5VxG-3;nmjmWbT3w8b_9Sc1%iKF0;&L z<3R>aC&uef9>|#H$Q+0a^tkc1>wLlU#J$Rbn;y+lt+%b~ZSXf-m9{9;_1&*ChZ;|I zcNktvoVEE|!5+4<-bagyiZAZ8+#;s_JN*9B%vT2^^8}J+q^+O6s{cgBv3n7xZ}dfO z`<e81xykM&A1-bQSS^whySq&Hjr1lFrKEa?oI*2c-do)>Zd?mxQCqkDpYoya-)`r> zUM#%9Y@L<q<v81z3u4QP3wr}niwaeo#Pp;-avuzPGGpRW{S(>6@1hsmrRQD_t>dVk zb3fhhuX((j!j6LJYC?TQ2hSx=ULJOP#|qi_rU3EQsM@lmugu~9rbO8W{Wzg}rAy6^ zOVIW4jTN=iEq1S2J@M|J>IzVIbWN?<?m1^g?9HYpSjkLZSpWCy^{RA}MR^^1$>qj* zrU&#=ea=3%v0F2J&);vizfQ3dT2#=%qO8>ZXGYQSD|Xi^l@_)2T3Uoi#os7UW>|D+ z^Es>4_Y!LlajL(#dphHDhjQPA<4+SLnfewV+`BAe`!!znhqe`$#BzUbJuB`!|5QRV zs5^S<!CJmwFF-B4rwg*z95Q4|ePVvi?(u;XnZEAiScN?W%#3`A$Ih}x9NuwKZT1Uk z&Vr>P%T5(86<L%mYh8Bb`r6o{ld4%;uZCStzrRp#%0Ve_4&6I_3>({h^*W@It3=(8 zB?$AH?S7ykC8OGG%ve||<sx-0Q0Wu*!}hIR5$D@Jvu^w*R2rryTJUDt&Q+U1Yw-1w zBW_4Bg8J~0!Ex_;z<uhcX{zV$O`mvw#_t|pof{F&&MVAsBrw;uDO|Hmnr_e{xX#h} z2=C=*0&yLAwI2?$N3C$YqZkxs`L$E_ghh;`ppi<4Wrq!i#h)3Pp&iCP%avBKIkwfG z?N!)ui)*6k7RH6&j!Eag*jl_%4U`3r-tx~Z^L*Is<U1?9>Q%pYdwJya<?lA#k^yz< zXZ-Hbn9;c+ag|_s+`r%V|6g<8n~==C%)F3I-bHkonc|8wr6Dt(tr5%Gv5P1BuEHj* z;HS^TYWjQ){cXQavC|ijPFy9tEYUEP%kanB?f0L3u=wu^ijn8{leRIifQCZc>bE%^ z0Ck^FpQ=dX>T;0$*}L=nj)}~HMlznwUsF03DOR<0h%GbS=q+KMn6OG{x3wW}SFgT6 zkj1g3Q7aUg+GgukeSf$1Z`O|w53~OLd>&qYr_g<N_r>0T<`0Jto{xCF?OxUEmqr4u z9h)A0<K^1Apg(=3RQJ!FXPj7Cqr|p&&AAS;eD#qjF1NoLeUdJoZ+Ntm`^H4A<r3GU zvUR_nQ0{+mc;fb3S=zR9JAGN7&#&KS7b0oBeWMxg>vIOZoy}c^cewlR9z0Y(<#6Al zrPJf0_Wt|z`j@fK!bdUtPjyJO+<CQn{ko%fmQIgb#h-F)W~)WYuHxtCM6xd0oqQ=R z_PKZ_Yb@x9t*I94K>;7$soA;hb?OuIZ+7`RpH8c4PkkyVBaqNB?cui`%V#s3<$v}3 zPMo;GSS0(lL2jpY^~N+_r*n56HTrT06wgp{P2qK~37NmRtwZV)kF=T3{nG9elCK;O zRatiIQ=eDiwEghP^BMBbm+*G~-MNKzI%w8!(sS_OjFzQtVA=kjKVC15%gU4<wK{iR zRG;&?eeR+e%UWj4s(Q8ZE5DG7ILo}wYo<kRGCv!uvkiH>4$lwv0=4VBSH9Q04IVa{ zve#h2TW|_yR7?n-21-Ci-)>%#bx8pw_4ynDLN8iC*-)rpn}kmZsQ=x?D1GaKSfkOW z=wo)%Pre7Gjc~O$U2j%{ly!Ys)N-o~q|A%s(4`qsZgr<`Jila7(v~dug1xY^6{P0T zr_~v23qfkS#5M>?hk?}??c4zxMmyCKJF#{uXpm-N+?0UZV25!!Mo0ypJ^>mWlWI?M z(T!ZS)MmO!*2!H75r@G&s6&emT+0#A0F6Lx?$!4=nG70d)7)|79zQ6L9(|WN@y2sd z0V2w2W3reD=JJ<Bx!h#A-Q=ZFr;0rnPFus>W_kyd^t5%ja?Y|r%(?xeX^IUfNGCUW zzxfLuUV1Z6tg}{6c3<`PcfWQ?-cdcF!rjO&SK;vW{rz~*E|Re0QeWEabf>@5v3pxI zXG(X*j(MQGtUKqt%H2uc?a#e+Gs82k|IpDl_0+hqTy^8kZTjHRPEGNP1-9Uc0*m>c zyHuz1%};&cEwx2Rsy{<YNNHKB*O$zlIq4rWr$1g2<8t_`4``U_VU60$X))F|uMU5a zSZ+VLtlP7v{H?m?Lg)E@ox0W0n}3u{+w)D#Abm3jXn1yQB)>+a<#oRP{FNO}Q*w1D zr))ndR5_u8xi(5}b!6?WuNIp87dO~W0>uw_x<Q_=ztpy4#njwcI+5xb$3LvmH|dmE z;QuAl@{HNz%XY^+Ej!xYcY-4Q&~Lv<y1$Al_T89N(jK<>>@6LxcmF?n%-37*|65A^ zvfCDm*PzkUusQsyS2y{$A2+`~ZJOBM%UiR<d%3T#JNjBqAl)Nv75^SXty|Odf0gX{ z7k%0&-0p4h93SqB7HhyMM&_T$UQtDvdwYH`wn<tnW?$CACM9@w^9QNP{`2#C0(mTB zewK6;8nNvO+UN)ho0SzY2g|$)e>5ege0FhQVUpp`y6h42s3;$tYMzE)j8Z=Oa53wQ zHo-<0ffaMEJ)Ke>eaXV_*wZ7R0jciO>lbZx>pJYtZNRI{)Tz+0@xYQ!VRf~nQVC;A zzqW%nw~2zxxoH&lsU}Ef-xHHfzg-l>nbc;bX+3lka=TJwIpz7GpnK6GS@UFFy}ky? z#Bs^LVHeb3YCM%8wK!|C(SgEE9P8KIUj_<2aF&_)=)*-OpTivvPdGx{FH3|j4(Ps< zI(5o-vDPSXk_(ct6SBx;6ZGI?>|q3rmx9jddwi@nJK6sFs=u7<$4~CK69w{k;m^=5 z*E|Y;WH2sEbWuoR5%85ZOlpxb$(Uf*bE}8_4&$w9CVi6&EjMCXeT3ry!>d!bomL%Z z<}j1HdaxrZM^ESJUe|?Uv(sI(`bFCNMdD_;vP^Pnc<h+FtHV1cPX{zOz2lFTRQ9U< zis9BZU(MfS@GMt!Y2c`EcR0m;!8G8=QPV{~Ux5?0oxMQxuBx}4g%uoIKxdZ8*;W;- za@P6%MnW({o>5cZ;ku2m`1OuwtNlU#`1!}7<mD^l$;gvkJ5GC>e0?J$m>~{UZi1#f z)8*<p%jYt>XS9U<mBoFnt=(CqloXz_-q^5M(pX@6PebK7J<v?x`Myb2U#|w5erdnB z<x1qzzb*>$OhIuCKLciLF)1wU&Di$~R1;1+&wph4y1rG0v()All}+F<ad9}sy&=)v zI88xMlJWDLSdc5{$+|jyoeDb4QpMnuoj_v^hesvjGv`J@)9XKWuJiAjAGBiUH=f3? zAHNhfF4^SmqQDNa$x>lO<dhvd+)UzYL8<NZbM~d0x<?;+J4;x5vDhdb__)Aq$C0Cp zFPjE#1;x@Vh5N38bKKiJM1}sH7g1+=c1z~ZY3-s%PddU{A;DaP63i!JZuuyO?faqq z{=(@PMeYjM1063mCLh<zS@Ix_Ykk4yPc8xzJ~5T>nxlBuXzIIrdv~AfKf!Y}Qtic} zlR1kP^sIAr=H%660EhMkLFC9eu*<|nYWev!54)_Ck49bja$yGp$m_e>x={QTw)AJx z_9o4hJ|g!#FS;hnDl0r?eIX&{8WW>DYrP#P4?X?Ny!ukmoTIBYtDbDxnk|rR6TVKR zW%KM@fd@0fZYy?p$MAQ70>S3D=;BP!a-J#<({<)L6Bx{5B|u@hj!{K#o#5H<`5;A~ zemWk$R5R1OMdK#VvyQ2T$;VV~vrGB0%yI<9-OPR4!`o1t$Lk%u!W5)fB<p05`{80x zYMCM2=GldkvKAy}YW7{)uvqo1L!Gx*&B@)q``5o^IHJ0a-5Hz){=&Al9@H1gH}II| zBz2F4N#?r7m01O|AGj|0q1ies{rbd58uJppwpAV0C#2+8)t{p6`J1L(D&S_ZSQoe= za);-`NQf!nlOU%2`u1aKg!i;Cse25Jec2*enl>syf2KH{-Mk&Tnz2^7uCm#2)0Imf z$^<f=d{1TV-*M#V9#9b3{GJM3_h<fSI%rd+F7NVy({Gr2k2RkW-Q=JLZUs&|%_}87 z?U6=rb<{Z-vp=77_7?qWdlGm1$KEIZuD_Np?CdTD#a-n$ZOy(U=F7j|?_UoZAOkHT zy`3UH@pxOjT#t5BR@ovZM(O?f$_YnQ^{#<xfM++?*I1p3%3ixvuJXx5&#Hn8j_fNx zpSRzicfRi5&-Bu}rPo)=mfdiCKC|xE%d67)dlo*Moxkte`Q@|otg=%;J55V3x{9xy z9$yzZ{paud|JV6hzcm33d#@<JUmI@w^U36_+qv7fuG3%IWA-O##nK}hxmz6%9DASp zYT~r^9Y>C?fQEp-dt*R!`rJ~`@t&8LiGwz5&MLhY`TE<N)$8|Ns{jAtFh6*zL9Xsc z;?_%E+AHVR{aX3;^Umk<ZgWXaiLHLS_3Gd6_t)oEK5P}g^6|L*deAYUx)<K<c+7Wo zxxf6^Yti|USEomT+w)7W)!&NtV|j6YYo)qgp)Efs$A5kkZYRs?l)HNEwxD*osuwDI z8(uUOfOh;|xtTtHt?P}8?(%CvheWoT26ueY+5KkIt985I1zEq_v3M6~Mq}OXcej37 zzG}VUw1wy8&*$^6r@Hq_Ed_1myY{V(M{-fs*H=pw{#lj1Sz%xQ^=kN4U-P?5UPsse z{d)Cw{{FSw?p0-*=G-tS{rz@(wzYxpu6Mg$uj1C*;c(Xa{hn8=R<8?szvpwGSbwmO zVe76hm%Oj8Tt06V=s>o*-*3%9d!SbupSKD2wfp%5Jki%KQ`7;PO1c6%D{x-zw@A<_ ziL!z%7B+uA9KM>pe(y4~TN%ox85b6mxn{@x%KhnTr*bc0f_UMyen!UV{rv~8O)wLf zJ|V+A&l{ATdUu|idU*L_hZT-<a&|tQmYZ{@;4tsiEtmaPFE;@lu4l{3^|0iqX!r{G z`aglTKOQtk9pRC;i|IDwSaUtTK9*bcv*op!jxx2s-)_%3CYc_hKCfcYuJ8A%OTVl& zN<1Z!`yl=K-12LW3cg+qzyA74-H(UtrSEn=UsZh0(*17j_q*VuS-o|)PU+i_c&qe4 z17p^q7S2}-+vS3m&nfD%dbi_o$!~YL$|bXMx82-wV)vU(r?=G3u-f}%l6T1YdA3)J zPU|iYi%4X>`yMnqW&7{P<5yF|<1YRbP_+5+p!urV?VQE`*?wP)k3R|7)chl<>1&(I zfot!bZ;3cZA5mo!`<D*x8r%Gy3QDET0ZuNfjADz=nr0nj6~E$?`{l*OsGi#Icgwkg z7YUd|e8^vBXI=7Q!Dq)64~;+n1dW9M2Ss^yAxmTFgGTmM%zPFJLPrE1?)r2}d#l8s z2hIFjHaIWI*?zYy+xTnc8N=f%43m$oI4)Pc#`M#*oyF;U``+HlULX2=Zuz`lKOXmA zO_}Vw?Cqaluh)a;x?Z;gG#A{-UcVP~66nf(KOS+LUJVI;$szSg;XmjAK;`WBd%w?P zde^Zkajwj(mWIz0bAGO!-rxS{S3+y)FSi5N-q+q1jQ)E>RnKh+Xmt{(Jn*Uxp5Ku+ z)0YW!&f`1P97*%MIekdm;gn)mFkhZ@HTycK!~1Hbm&@r13bzDmn=^iYx$J*c*x%;j zF1Os@Z?}hkK4aWJuglfx?u{)Uu7n+XBL!Ov5bU2hvGpv+jVBE)D=&hkD!DB<?3Wzo zv-Z*5a>2>U>HC+<{;$s)=vqCU5}dWLEi;Pa$g7spVsHJuTf~>;{>;^vKRQc1D`KTP zOU~bWi#Y?sd}AIhas?&Ud4EqWUwnhZbPd0A$y&*UZ5c8Ba<(D+>;8g|Azhq!mGkul zft!c6tnz$(y#IQxQ$y{Si|%Wk-Y%K!cgaaG`|1RR1snYMUOzu)^?Hq&)7t#|`>MP? zACt}x;nvyEa4T>3+maA|L8F{`4qJF%Ulq`8u4oBpJ|S&cv?MOQ{mbk1`&Ws_*93yj z;JW1|e{$M=x1SZwjr?U1%k^2Ler{f0mb`xYjw44WAeVZnQ$w%FRlm8oOnk<pBVW{% zvbMHJweVjnc04jeGsvelY1ic%zQC4@t2&#{EL!fnF>Fm$xu#UB!(lb%H@}WJRdy`C z>~A02ZN1qp=e+IrD;F(tJRIb55*ps#2x;JuF_V~6^XX)6%Pr9KTkhdsyVB=Xx=lZP z%gkrF-mVvmsx~t!m8^LDs9XP<6L0Xmh{tASZz6QhZTQI$Xtvq$Ap6yAf6PuDm*%P2 zaM-F=@xqDuwOggD_a0HzYg_VRV)P18+uUFk!HS(uA`Vloc-y^QUEU{E7LhbJN_XM6 zJH_W;YE0Ao{cLvrt4!ZDrHA)F18r}<J5|6tLOAU8iT?Zb|6|`DIAWQlmblRV4^tAi z;8xH%tBJZYWzFxlT=ui_YJ2IEQ*q#<tibFWJ`5XMSNf^s#2jd2P~kY?YkoJxKU+zu zz2=4>*TZ%X>1B}@`&-51BK-SjtqkqBDxJ5(@x9*HsX0Hlo&-66<B_UZ<%GxQ*WLD6 zX!l4++#5W{^3e6prAvz<XIc~{CB6~yWm#l5;}x^mR+i|C-?qB*EaN{rQEKW>EqnV{ zD;96L(exoZM7-d|m6exON|lV-zh<PZm3-wqh3^p8>)WqXWzKZ(Ss`pu_wVQPU-2Eu zJ|~@2l4S3Iw#O@1F4KE*__@Hmw6}Bg*|$Eut|rfa?CVjX*QLD;z4p8Fj9Y(oc*p2? zK2+Wuuv#ReV^V_Es=XbP@^5vi9rB5sSr^8=ZPD9ov3i-=jgNH&b{@K-yeP>~rNhqW zv=Z0$XS1?j-CcHCXS2_2(;~&UTR^6_MtMBD5hlly^T*Qv@5*VadWDASt^C;w!!$2w zt<*4@#b%wPaLDDVR-s{&F5B-}l_eYY@w6Y!+jvy$*O^T-gp|r>7#%H9XHntXo2zg1 z{Bjv+gT?2Y>eqZ(q!bfgpYMG&@mu*LA@RkKIRa(3tr-mg2N#v9$js_e7Mb8w)Avn5 z%z0b3-zW2k1CqDAUAu4YkduwPc7u;)-RF}|6Zd-ZGDg??t&OjItEyKiSP~t_CC}SB zt8s0Z3vYJ2!h|j#LxDi=6-(s;wI^Mka%<aH`|Cf04s~oh<$U1U{HI^{{FM`&zC&XA zq4uo-tJQB5Y@4=o{|1h(E;S}5G4>5fzT%Unm}a>a%uJfS?cZ~&_^ybHX_g!}er=v3 zcl&G0jvEg}w5EgSn6eIrm4vL#Q1UU+JsLazDnGYg;{4)smS1<7%*j1=MS?N<fAQS) z8&l7KHs~h2KL1arV{_UgA#r_h!U^Ttwk~$Jm{_RxB#zm}PrA0~zgBMEe4#*wz3*H@ z#^Il-K6%Tma{eALldn`{a#eD$U)yU}sCh|SJvW+5erIdc#VtqtT;6;O{j~j2m-ee@ zHUU`~gM<dqk<ee~7pkzWt3Slcu=%XnZ14tqM|Rne@5NIjjZ!-9nRe}V*r@&a$K(F% z*2bVcR<%E^-n}{!nPG86%v|%z?>!m+v##s|ZQn56)LpO6WGA@cYx;b%BN66>o!#Ib za^<(xAu_DX|LX62GRbOETeZ1-<rBfL9}e?pmlVWa25r*w|9L!d$Bz5LyK4%o9oC*N zWM<40YEXE6XXoZuS65HpSI0GdkFr<$Y?guxdU=93YQNw8x;0>{o&A>!&bFH;@2>(S zm(%%{*$PZ&l@nf{Kf8TGn&%@S@qB12Yo*00PW3qp)~6r3WfIf2@7Jr<uVwc}G<O_M zEtD1cqyQQ|j=CaS_v4|defx#OUwx;?*X=yl@0?lq|M`l*#a~!o@0i5(eRAE`tKq+n zF~z8czW#hvJpPWc_0QGYpI$HB_h;H>Hl+(TOxyn5so~C?rlME)Q4QR~tee`j_<`24 zozLe*cdNN<tNZy>{Odt>`4`@26^|L1cAmbz{chQ9vy7|1Wth09?+I6nk#BV_Vds-s z@!I89&gQdUzG&!0uK&I>y{afY|MdFTH9L9JSwWr0ZU5#h?o{a(n!Y0g)Tf@6zTfL$ z;F*QTl->JsY#;vr^?H4HzwNgfpraA4SiN4exZq;-`+Iv$qYk(8U;mz+l(p&Fb9VWf z4Tso-g&Pl-yab&zvbgxi|C-Ndm&?_D39S7p@vmR=Qq=tT^1G$;Zk~(>?}~c5eU7O> z<1@hxU!OmV_Smda*x79kY5uPkkztkQDB!yTnpnPg;P1Q}F(3YXKEL|+yWRev1NQG0 zoz{Kz`~CiKP*vJD<8I~ixu*8VS>HvpmtBu7f7yLwqbB3!*%9a4jK3Qk?Ygb4aAm{F z2S<ec*Zj16)o*(fv|;Pbjth1-L0KwCMD49?VP|(C)ao0uPuu0|0xtX8@7?wD*=$hL z>T(y`y1h<UazJZNW;2-GOcAcNv~Ces%Dy4m)yuxsuKk7clH4yZF7DblH9Rh|+u;f* z7G7@K(6-jOo$nQ>;hVi?qubr{wwEXGhNP@q3vC4^OMwkvpUe2FL{8ap#C0~bG8J)W z^oiKc)(C3<Y;|0F?YThJ`+dLHfz|<BP3qQN*3j(vL+15^4Q6YNuKvDb?7DLmIK{-c zZ8i`*(b=%p{&|kt&PPX7^-e(>LQBv#adtZ#xHjLl#LQW}!<%gbQwnGpY*u<YtRD$V z_}*d$QhH2`(e+{%Z}QAl(33pCH6aw-ESc+ywv%xO2TRW1NSAculBOLg4B8H1;7}|R zLmWR;x-W%s@k1qn4PVm*=bpX5`Dha38iq(nuPt&oIPT@Wy}S2a7AlW1I_bnP{pNSb zi0!h(<2j%mOuW)5Y)TIV8GmKw7Ib#IFV9|-1qvcl$GT}sB3Y3aytMUOqoQgqMwNrd zIh>!IpViTw?eh7mI%o{6rtZRql4;W`51*Q$sKp}S>+E!7OW-D1gPhN%S^eOWalw3} zMb9qpkGZOQ)L-*TOr?wU*8`CTw#QzcXGmbrQ97-VF#Eb${DHhpno0(oOkaYzwu;Dc zYu0%!6gzNRpwcnrY?^K`L-CCkW|mDZmoLnD+mJZ>yrXyot6+u{<1fwDsLSVsH!Kjb zUmC#u#3W*MTgR-kCXou0Z}?2+ND<8x$?|17n{*L0yzxRR;n5?hi#1=t!_xERQ?z_H zPUBqn!f5u_wzC|0w;2zc#g{y|upmg$!9LYRm$iNRqvax5jeB`7&VUWt-nF{Ej#W+3 zxfnET`%7w%sj%o)kXKV*Fl`oMe9m#fU-QZw>#6NrOF=^)?9Vr>ytL=X#Ooc5vy09M zi!mxM`aG{S-8$jMGwyDtXl15c!3Fb!RxJJC<MA<=Ypcf|-!5lYru34u8=tag>+j;b z1a`{O0PlkjLFPrN+&k7>sH}LXSu*n6rO8GcDjFt+y0tL;o#LdcRK6y=3ls+3M{a9e zQ39zE$&zzOo!ScVxeJQVEwtx8O?|f}FieD{QRjH2hh#((!)Z4z=Z3md9Z`wrrY}qc z1^=|hlKYVlL-rgzV1DZ1>+?ntDJP}(spm}O_|pltvo+ljG|K1tBzMn21tlYynUhp! z9TQ)md?B*8oMp)#hFE6Q!LH{^D>c>?dvLEdSnaVmK)XlFY>ptKrv8DRyLmI_?l5W5 z$Y2AdJJwR^-N!Vpy(#E24eyZVNqTGjRtr3KxbCJB@_1L{_Dg#X9+2J=r^Q#>+&JBD zLy%HJXTucn1*zq0Hw%hquV_k{0vgd5D9_v{crW3CO_`#1+rEPeDfe%P39fJh57KT% z89n5Pi|TsJ%C0w&?PR`^%hWqQzcO>#74!;iB|vp*_v!UgQHPrgrJbhau+3XKU8i)Z zaSUjrw-C*cSx&kZPYy~g3E*Zkl|BV>Qi7j^nx-G}$Y1k=r9X}M`6@TC&9*$JJfkqD zgCj%%G(tEl1SO_Kf~3wJm*(MWyqCQ=h)s08!p2V;0t?n(Th_S4<>9=wZlLK6UA_IA zHno{cL>!zFqULsa(xTO0j(Jrw?oykCGUC@d_1VH5t&Z>aBzBoRpRmd4JUBPEb)qVo zwk$$h<lmj%=Q|H7ls{h6!12Vv;S{$4JBw+z5b`MKf)AJW99&SqWhD9F6<f1UuaU7} zK@TYOlOse5kw=mjX`YqlS+sCbtaHrWgb8l>nM*^!iQ}^~a(FO<E@Nxpn8F7ha6KZ3 zY*oY3P6j~*rlro{C_@eHgiIv|mJWxP;9*@~85El%W`XV~3a|oOC+t21tTWIr+#$Fu zet+HCt09k@v>%_zRjIt4^z#h|xO{kXXETeS0+Y*v5RMS;zEk1~|JV*1rJb1(l-P7G z?A}(MgJ}hfYS6tk8Ol$**aHsAE(_3}!EkvG=%~-hY2d4!)EpTOEw29lZq?GIuH5`R zy9Lso^(B6;lw8OxHgzRv-}0XyA3*~@S&xo%rnacevhxO=Q0)3R$fN}noC5kxr}g*m zkuuMV@nt@(<KYvsR%(V(_w|T9Gn{mV)RqVca?UY<Two>4=yDZw8lAH1)XpZCmmJBZ zTAM3+p9+Ha>~$YqoWTzAjY1Jimg`jwkAK_4&R%f;DAleUyyECV=hu(UdYoAZz7>aY zBS(lkNQHZ8YDn)R(?0hGCtW@{jVnqI8$o^w;A7ERoF$_2|M8wG_6*BCitplrR=6JO zNAmP7*9BGV8V|FiLl;-{9#>xSf_YtF_wnT!oM0DlvJ`~4OP=@5cH!gSk=qh*V}J09 z)}y=gvV%H4a4xr;Ae8&yKlt`AMkN6@#ydU@^Vh}h{xq%0V8ZroO5ih0ZxlM2r(g4( zk-vY>ITaJ;oPG|0MkD10{o~2U`>wXL7Jqh)@Lv$X-EFR%<@+GlkN3HVtMG%393a~d z7&6T;IyU|3so##W<_BMC2`mWcJ|eqB;GvY?<_FWcqhpm%{{kNxeO5VP-Tg;z+&)X( znl@z-zs1+g(-lcS1$><!nQuSRv3RFT14oD3f-}=^w5v^X(lvQhdTX*%OSXkzQoG0F z?Pk|cY_bDqmCqajD@^-iuT2X2!l;}TIn!TdzX-c8OWrI`&`m)b+!`KlHVxTn1U}<` zy7ZCgh_2>i-3GeFy$Aa3|E<{f>y@_Yd7IBW*3J4V*tkOA!4H`>KGZ8+HXeMyvFHE4 z->+6I?hCpeU%xl6dgD>C;Ocifms@>0q5SndXw3Q7yWQ`j-p(q&S9#U$_nXCi*6%D# zZ>CIMS^NEN_}?#={a?+>UdNedEv>?IR^h<Mosw5JO`q6g+!|H(ZnB2rQOC&)v)!IK zF*v=Roxd*-G+;L?ZC2(L+44IJL5s*rzuzri4LXa4dn;&BHt5=^SD<Te4!84%v&$4T zRDsrHgBE{-#+m>A+<HB3_GvybHKv6i@33WJdgqMg^Es~$F!P6~&na-qzAcazyQ?HH zd(Fl+v8;}1Ute5w{{MHfzg=Mc@7wpUoS3M5wM{zDW1-j_L$ev;jD6=T1-EGHv!-*I zTJM{DTJ@;oWafEn>23^yTMss~ubx|W%M-i<V(r#zLEO4q0<vudvUb1O)E!m%bm~=p z`#%emv*c?&G*<ol`TXjYV1M6*(<BSUG^7~&&L>Jt00oIeJ?FhH5q4fa8EKwAhHKMf z3y+FMHT25aMs44JkWG38Xo%*l)$27@i?%&z;(q1Jw*T+9*;Vg$KEDzY?7P&hS8D0B zh$K#~tq*!O9^AuGP;;((L2M-`3~qj$8>6SmH%sP&iG?uJ{{R1W|N3@2KlFH?Y^kNo znY`U^&9>gJ`~8xanVFq$PRc9cq}<cG+pj3SeY5%evVhYq7RJXLKzEerpdRnu$IIsW zVC(g`%T2G>Zoijhe7BRA3A9IL*WYiq)djN*1gxFrSH03K{r~rS@Cw${p5C1f4Uac- zi%4Gw-*s{<Mt!DpSF;+YUGFxx2iN24LoM=>|9-t5E*@XAQ7lz||DR2_lDc)T<n4aD zEdTm}bkNZCJU&+w-bZh*1p9}AF4fsv{e4-$X1Cdr$&L+=izU>Spd6lmoUK{;!;i=P ztLK*Aiv%C)c}z0>%G><CU$4EI<gIscHfz@0#ch8;W9xCN+s<-W=uAIe%(A?X*Q}G_ z_;a<!(-A&g=R~q3JN;Eb*K@Jv-<rwK=yD3QYw^4@sB>?3Vp=DMhbzeHG}QCykF$X* zx_N>Re!P)<uz%HbwCDw$_RLWM%Ax5EnpX}n<lN?xnYYr6Nm$)a#RPP;F{6@zBvVa( ztFp_XYJ;C0Q5L%{XLa7cap_Sv=$^d*ITj1M>FwF#wo3zw8<Sc}3lusgh$O1j{(8AQ z>)XwA@y#FPrKLbyE7NA@nkD*dwBD$A;G?CP+oNsmPP%z@v$pjyJ6^u9aRDon#R{?V zV!65>4}aZ{%AD+L76`gP%{BLE>OsBBuh;GN1Kqcj)up-Y!uL+l(Dk+S-G+jU@f-y; z-&)t4snWcX@@bWY0EepCq`bA;?^V5OVCD+|?E?Ar>-GArq0?i_X4;*8v#?$6(*DOh zCU>q%7XNy+di|DO`MMtqXH~!32|AzYD(KL|4ngH4v)S8J`xuTtKf=kAW7is$aKPF0 zc%y>IrKj2K(-*DZ`|TE&5__P=WYF|D=;FVxm%R12)|EYIWPhc-NTH_eer-8;UMIQF z((V7g7mK=A*?zm>d|&6olga+Cs%@u7WogD9mnlB85Htk`I%GCe@y4Y~i}Ln-bhFj1 zyp_59<!tT=|3PP;K0ekP3>txOVtK#k^SR6HPm;JkPjKeD_%@;H+ls|~m&)58<z0l` z^z>@Y=5v?W-+*>eWZg`i9tzrX^{@6;=JKoCl^@uct0_HTX6!p}7ceziy>(VVo+T)- zn(`E1wL~+6g5B)e6``z-J)lf}U#=nZ(&zK`@wT7O7)RwiY`7g;emB&8vqDdSD`;M( zbP3-fp7wiopy{FjN0+%ZpH9A-SN$#!bPnmSm&@me%(tuEA}bzK&<MKo@T==Pf%F|= zT;}2r^e%wrx@!Ob{a#g7_T<Dw@R_*5ewItcQZ}T|Oq~`Oox63alwHjZv57lgGL$Zq z>+r$hY}x8J8>3=)C5?`FtvGA{{|{)q;ZmjItq;FJqc2Bqa%rzwpda@CalieR0OyvR zHp#RLO*zm*V%LiK>_~g{YW4bSg4^BYDqW^qzu9p3iuL<Fi$5zVJ}Lw4{JNdD+ZVj? zW=8Ighi$*|1@cyi2U>BM-e}H<`+7zFlhcl~me1$>dKZYpdAXa<npwSS;RsJ%B_4R# zsn*9@$@aqmW~)bE|9n3Gn)SDQ%?HQT0nIZG`2{Tjol~`T=d)Q{=?aScuNoYpGZwan z+}~Gw)sbCx$#Q+rY^^P87mHzgrtg*Bm1p$#{a94mE2CFl|Ltaa=@TBOvp%`kgtFS@ zs#a`cp3O4@bS#*K-EW7`ytyJ-PCK7EC``G*v1{w&KI^PT&`e(hr|Fa9RwirsUtd`{ z`PIe6?fU}uI=Ay#eQGUD=~(gg)m87k|Ns4-%&`?T8KS%6LDQ?#`une3H1hFw%1E@m zwSND<RiN`IW7+;I-D=mk{pGU%`VG_gns_-c?i3A=33Pv`a3!wtsp#Iab<+ZF=Wf4y zg^62d0UM8m0OKtaM<phi`Kp^<t@jtn`nN%MOBx?b>mmJJg=_S8e?Diu_WBCRg>9v& zH&hrJw|~7By*hi{PPgvOfs5TT_q^gX<*?>h2U>mZ-<vdD?b^=7>6(k;K&L^A#S0{N z>{u8#<=`>q%?}e!s!k6{KGqX>T6cSl^ujh@c3JDP5P{|yVXjUgd`SXj#)6FUpi-l8 z)g3F%D=kH*8yz$@3YKsm&rf*x7j%nBf1}~bdso!OKE2<1J<jSjXu7t%Hp%e6RQ8&M z<~#|(Ov_YWbDDDK<S;o%3d=fw;R&7}@%bC*bkXx0^WOGZzq@ceCt;SzZU@CT6E4_Y zTc4;Uy67F~7O~6QJ+jwsop!Fjw7mGN>GZxYy|UI}y8Hip5?tUbtfF+_W2DmRf4^K7 zKI6abl>N*hK;zFM>Ej}5N+CB6W{SN|e`&Bx+Ay_~^|yc@sB-&PU(Gq2YlC;m!&dQY zmuGnhWC?_-&nam71-kH1t@Tt3$GzzMy-SaVFaCU|fQ3UT`$lZn%fL11%^fL9Om+ef ze!O80-B}v6g7fJ#=Ei^|<(Fb*QIB45zqz5KCAqLoWA18}hd=+{+C6=_#w3=$$1k}9 z90hA0T8Df{kdUgFC|ps-_gVbSobM-2-afbCf5UOx_i=m9CGxB{R^OYEAt9G?rJ(lV z>Z#L}ek42(ciD8+)im}(=-ru9@AoK_ZQpHW{dschZ{^KeuRlFK?RL8>KtRK*p?-e% zB;EAAEL)5EwEfjIUhdd+W$o(l^={FTFF0A&YFu9*Z!Rk<`|Q!t?wvJ%@7#$gNoKyj z?CBv-)zusVS1fF=DLDj0cTaOa{_6jpEvg4koak_0yKE(gLW9Fj)-A4QZ`_C|DduKv z)L~-Ts^cXm=N$04;6jEG6UUS|2Ss1kdXHd%6G{#Nrx!hWX!vWjZ=$bwcCdg010%~F zfeV|Kr(KSCTaav1lfmkEwmmQ^UHa?v*-X;GZ(g%JNd{Tb$MoxQBxCQ*Ei!@3E4mhh zeR2$oxXirntFevEnfO9g`TSk&3`}{PFZxqOTTT92`*;***VJV2f(*;r(EF?1NxI^d z{abq}-msI$1v6GP<aI{=+HcLpRL6Nk)i3Yer|dg1S-OsAmtI_;%b_qqZ-Kf(!CuvL zb|wxM4Tk{kf(tK=nBq8J=<VD;?fqi;cT+xRy~xmE;xN&32*|!OK}x`3fk)$w&n`1V zwS{Kw5_CA=%Gflkd$H4O0fz+71Lu}S@~2(3Fcxr7FkozoN?`UY7yRI*U^hEW`rOv6 zI9|nGSBA!8EF4+AKR;%&2xxdISk6ASCMxjKm2L(mK5l_4GIBDr+8i!0&GLQy&g|I@ z!{m2&RxV2j(|r-#d`?+l5`&}el8ejMbNo<RaC1w1z3H=4qRDP<JsWQq7qG9;SN5<L zbWl)dY>M)m5Yo)RWXY9bUe0O~J?Zxf%?%qv-TNMdv@$TQ;}W<MBP)5Um4Rt%vy>Sq z$Q77awmPuQ%2Rr<mBC-_L)DKA8zzo5@eK>M)mhthGBBMLQdnW?J?p(A1LJWPj;uaj zj<b#ojUtRqQp;JHI9RkC0=P>ayfkBq;}p2EM@mnsn}O*kr@)m@o0q78JlU`yY>LiT zrG|#bOf06y**l&oHXMjQ|3_s-p_D>{!vc`y?DO)JA53L%JiGegqKzC16Xr8G>e_o} zIWaUYV&TYgJsG6W#9^W55KvsxkRiv!vEj=}%LWFfhg<?z4#`$m^)=WtomuhIIBbgu zBTJE}!iuM-JX1Lo0y-ER*9wGbxiT<*XXVIx*Dt8+!ob)h^_+n`M>CYy7V#-GIP73z z*;;UX-aO?8{S3xg|9V7qT^Sl<SUIwG76nN%afm261ZcNR^%8VAP|Mgf>vysXx1dAA zf@2^TH*yJFVUn%b)!Pux#A3R>EopUL9RmaBTTd6qknUqj4GwioEL;ERtmI^5=@L>{ zA*$-VmqX#f4hF}w9~l=_awr^#oj-?}LqT92gQM=9jmw{N{7^p7Gs`~N)mzX(A)K)( zYTcZWHU_3v4uLCNiA#f61PbCC7CieWanXrIKw(88$o1recfoaaP@uJFI|Oi-zj<lN z^pC?}@w4+07lT*?PJ}irn5L~hRk6WAk%?uiQ^ZOUMwUC`3M+QnyKNC*WZ}pHyLbhI zqwa;q<+nL3bPdeX&YZXZzrXY3f^WayAM5F{xXUWl&cMX+MA0GOwDUwO0SAS6M%JzI zb&<aU6E-{gGUk?CnIT`lhOg*no%L451_q{c90FJ7NODOvF))QPaixDOdN;?=f1ZS~ zW#*YjN)ezmEx^RGRiSOBpVEVc4Rb@i&F-GtRCz;nRu2Oc$C}WF1>3?5``j5CpK+?B zU;T3S%revS^Yfh;8mDm!T#2${F=1e2$>LH;zdFPBaf%~D;{g_qtVUjoyRHYU8-J{k z+MIchSDx1mB`ZfMRI+DWyzl;(L!qI;nTf@;ovnG9LW2V@quHLPR~#4`9auTC8u@JQ z@&zaS*)RI}`Q)zpx!+5gZ~sf)oAw}Mef_;H5{xW!1Qk|T8jF~)G(KWk_t!A5?sxK@ z9r_ENg|gO3$Qev;V-Ij*U}U+b;}8&SEGh4BK)+G@|Gq?%$;&QXzn%80>h|AP4ae8c zU2$f1=P9Qv&5g->)4t?8%YAQKrrhA5&BBqjHsHCnV8*0|xt_re(r?~(HAyYq$+Z3d z9Mkn$+|N=|?-^{q7E`^Cx6z10;L0h3t}l#@QcU&#pXXn+Zf1^6+pu4FxfGMEtn9MY zt52Ufe}4AMmoM+kHCbKu_SvO1&-VZO==|<$up$%3l<<ZHVfQvJO>gAR*cp6!-YnPM zC5_y-vgh*I+S)!lF;O|~@-p9NkB|4KB_$p5@%4RL_f2Dk=7!#XCP#SLcD@c$WO^#9 zuwrU?&dbOLOl3DG-`sN5zh&P(yW$528lN`D?W>V&-5Qm8eO>IuH@B~?jXpa~H~P%= z_3?`v%#DqO&mOD&|Iha8;wYxQwswa<r9ap|y+pooE0@5PYg)%Xa#Vn7CbNLu<?qeh z`{iQoetdj<{Mq4ler>xw$;bH?CyQRmn)?0y{n_R3@3}72jpWF>d8~P{fWv~Qh6TqY z8y!4ZCpr3VcF0tf(|RQv{J!>T{QDVI@6A{9WiOn$@!h+38ErXvdFS@j{x+MX+AZF? zrJ0?7R_^U>p?mcnKiMX|>haNTaqVgToLQ=WT^C1li0C*3XiLm^C73bQ!DvNhrT^)g zlZ#UAbic2hV_$E#b?5fHyIpbm!LpIZT_3*r@bK`m&6|Iv^=SX!nRsk|NYM7X0Y7TL zy@?e0lcTsIRrI+9i$Djrz!eL50gaUmj=5hi%q+cOI(b|D|9_&!nN^OnIkHdlPJMFb z*6Q%}i)NZOMTKSdIWshxfJ#JGCRI_7=wDZQX2n)*@t(JN^XAjWS<KAd3zaL+{P=Mx znD<Ln<f{`#Z{EIr`|L=k@Wo9TQ5V0dZ{2qLLYO?iyq(E>`}#h+Q$0~)g?)|;jY}9D zdyAPGCvjcbHS>U8{ITgalUd3*ujo~(-PaG6y*17G`ihrUCU^J#e0FyB(|4~*Sxuw2 z+>xx`<zTepW$oEDH=kD@%lA=OG4+dhZ=Pbn1_sBq2??v*7lbn1`8w0ruI~Et>H6`D zo}Thb%`CoE`}^BW=XO5baFyV<{^^IKY*uJ4(OhtJx<lynX$~_3Pn(I!v@$ShvvOq3 z5#^W?(y(A!ZbJBN_p|%b=YL4Z-qPQ+$?<HSp3HwY-Ogj*Q<B|uZ&wtEFmZ%{0#X?q zkh-@IWW{fJe7xVCU0+X6Dz<<5>u(|7-rbeH`!TcIC-lvl$Qn1@pY!^v|NYrn`S+Kp zan{YYro{pd3a$+cj%9+9Ocv|bUTJeT+jU!;>%#h~zUJK9W4TIer~1sb`|mxUeU;BP z)*(9oMdf^MZtl~k=l%LO*SdVxWOaWx--~NzcJ2M=^WV0zH>xOpt9!rP%#$ZQo1(5A zd}6^O5TWQ0@OX*Cf+b9uj=qU5*JCwj)cpFQdF#&Ab8?YvXO&*MyNX{suD|Yj_OCbd zY^xWYjsF^XR^q0$^w)h%5&8M=Kk@y$^)&u^&C%wC+HY5wf7x~M!IhQ4ulK$Fe6X3_ z?fTx88@@#P&;Bmxpy1oE;8-QdCzqOLF-?<m$n&nrJh!jx*O!+WWuC5#Z~p!L9qM$F z`^|j2S}9h$Xp_lh-`?C@b^gxY>g`!+XQ!5>Nd9_an)9nC_E}7>{MIMN&YW41TP)ca zStc>Dn4aTg@zR<gc4d;Hc3t?QREy$gJ(=0r-T#(PV|ssgcev`3v+-LwbJlKHetuP7 zMWF1e(_-Pb1oIc)S{u3lNzmH3@Euo;GWM+bmcpc4u65wnO_SQb1!0%sO?I_99AskI z+SIsGt}%>r3G3Fkx3|0RexqHIao!+T*3i^6^y-lxJV8Za9_+6+uW~MZ2_kMTk~BR# z<Lj3%F8VJWpPqc4zUva-R{z<zR-Jz}{njdXd)4k~)oY{w?A?-H>*w$9u6B}rv+$Lu zud@$)S9-9W!SU?-kBh%@ToGAOYTVe=xo+<z)2z(Y!)?57_FB8RgX}Y1udk^6{q1Z9 z`@g97ufIm!f9z%bO84oleJ@|K+$#3He*dKY+8f!wF8Od|{n@0{aG;8XBkOhGV`GjA zg@o_lUcJsWp04+$>cXRICWTvTuUv{+ay%o`Ex<8&b351SUDN!{!&LImbkxsVaBbGd zr_q8RVjC7b`^|BwjwOpj;L4`CQe1K0B$pQ#7rXV>cHKWZYwfgO?y<Wg4TYz&8vnW+ za8*qHtNlqq4h4Zt434@_E-rt+RD6T=t86!4<LoI@nWCOu-L&jo$<?F(PiCL~WUzU2 z=Bm}#obP=8A@|CGq45)^z?D<x%f4_lrZQH~ofRh`^TMe4@7xzAkq(<PX88th?4Ora zB>cmQMc_k3!-8iYA6zV9*~F2tUVr!d>3#m^*7%;QI~&A%JVoHeyO=5|=RF!L1TPsq zDCA(`Si&W6#lld4!$HArvzSBq+}BFims*;um~b%Wvv6eH;}PX`Rgh==ea0*L_F3!m zXM1;_KXc)w?6TU^mx>)UZ?ZnyUt@0m&VTm8&FyDfi`&C$4F2U@c(b)gg^5F9gNj4I zV;={Fg2tzRul=%K{Q8DQw(t&HJ7L?>hS%q>Jv(-hLt%n%!-8pNI~NORtaY$iF?HKy z*7BYOVFm_Ql?661IO;w)xcoJTN5kvupDg)j1fD)VF$z&tJYf20?Zmu1W5@65ZR}F( jnz;lV7#epR_|K4#pt&?n*5W$@0|SGntDnm{r-UW|Z2%I& literal 0 HcmV?d00001 diff --git a/documentation/figures/overview/.gitkeep b/documentation/figures/overview/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/documentation/figures/overview/updated_controller_architecture_overview.drawio b/documentation/figures/overview/updated_controller_architecture_overview.drawio new file mode 100644 index 000000000..b7a8d0f37 --- /dev/null +++ b/documentation/figures/overview/updated_controller_architecture_overview.drawio @@ -0,0 +1,128 @@ +<mxfile host="Electron" modified="2023-05-15T11:44:20.474Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="YNlTGZZnrK1QxGPOz1hT" version="21.2.8" type="device"> + <diagram name="Seite-1" id="HPBHSIBaAVFy5oWYXxvs"> + <mxGraphModel dx="932" dy="513" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="g1X504qyV0JU_EHprrVk-23" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="120" y="698" width="470" height="250" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-24" value="NBI" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="690" width="160" height="20" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-25" value="SBI" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="939" width="160" height="20" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-26" value="Nucleus" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="280" y="764" width="160" height="120" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-27" value="" style="rounded=1;whiteSpace=wrap;html=1;rotation=90;" parent="1" vertex="1"> + <mxGeometry x="122.5" y="836" width="120" height="70" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-28" value="<font style="font-size: 10px;">goSDN<br>Eventsystem</font>" style="rounded=1;whiteSpace=wrap;html=1;rotation=0;" parent="1" vertex="1"> + <mxGeometry x="148" y="724" width="70" height="70" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-29" value="<font style="font-size: 10px;">Plugin<br>Registry</font>" style="rounded=1;whiteSpace=wrap;html=1;rotation=0;" parent="1" vertex="1"> + <mxGeometry x="481" y="724" width="70" height="70" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-30" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="360" y="690" as="sourcePoint" /> + <mxPoint x="360" y="640" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-31" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="g1X504qyV0JU_EHprrVk-26" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="359.72" y="760" as="sourcePoint" /> + <mxPoint x="359.72" y="710" as="targetPoint" /> + <Array as="points"> + <mxPoint x="360" y="740" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-32" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="360" y="938" as="sourcePoint" /> + <mxPoint x="359.72" y="884" as="targetPoint" /> + <Array as="points"> + <mxPoint x="360" y="914" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-33" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="g1X504qyV0JU_EHprrVk-27" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="380" y="831" as="sourcePoint" /> + <mxPoint x="280" y="871" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-34" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="218" y="780" as="sourcePoint" /> + <mxPoint x="280" y="780" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-35" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.786;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="g1X504qyV0JU_EHprrVk-29" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="441" y="778.88" as="sourcePoint" /> + <mxPoint x="470" y="779" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-36" value="<font style="font-size: 10px;">goSDN<br>Data Storage</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="150" y="817" width="60" height="30" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-38" value="<font style="font-size: 8px;">DB</font>" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;" parent="1" vertex="1"> + <mxGeometry x="160" y="857" width="40" height="61" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-39" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="360" y="1009" as="sourcePoint" /> + <mxPoint x="360" y="959" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-40" value="" style="fontColor=#0066CC;verticalAlign=top;verticalLabelPosition=bottom;labelPosition=center;align=center;html=1;outlineConnect=0;fillColor=#CCCCCC;strokeColor=#6881B3;gradientColor=none;gradientDirection=north;strokeWidth=2;shape=mxgraph.networks.router;" parent="1" vertex="1"> + <mxGeometry x="310" y="1010" width="100" height="30" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-44" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="290" y="559" width="140" height="80" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-41" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="g1X504qyV0JU_EHprrVk-44" vertex="1"> + <mxGeometry x="20" y="20" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-42" value="" style="rounded=1;whiteSpace=wrap;html=1;" parent="g1X504qyV0JU_EHprrVk-44" vertex="1"> + <mxGeometry x="10" y="10" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-43" value="APP" style="rounded=1;whiteSpace=wrap;html=1;" parent="g1X504qyV0JU_EHprrVk-44" vertex="1"> + <mxGeometry width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-48" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="480" y="830" width="90" height="96" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-46" value="" style="rounded=1;whiteSpace=wrap;html=1;rotation=0;" parent="g1X504qyV0JU_EHprrVk-48" vertex="1"> + <mxGeometry x="20" y="26" width="70" height="70" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-47" value="" style="rounded=1;whiteSpace=wrap;html=1;rotation=0;" parent="g1X504qyV0JU_EHprrVk-48" vertex="1"> + <mxGeometry x="10" y="16" width="70" height="70" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-45" value="<span style="font-size: 10px;">Plugin</span>" style="rounded=1;whiteSpace=wrap;html=1;rotation=0;" parent="g1X504qyV0JU_EHprrVk-48" vertex="1"> + <mxGeometry width="70" height="70" as="geometry" /> + </mxCell> + <mxCell id="g1X504qyV0JU_EHprrVk-49" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.786;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="440" y="847" as="sourcePoint" /> + <mxPoint x="480" y="847.12" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="vZsy0VxpvCjQ8s4P1SYj-1" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;dashed=1;dashPattern=8 8;" edge="1" parent="1" source="g1X504qyV0JU_EHprrVk-28" target="g1X504qyV0JU_EHprrVk-43"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="150" y="650" as="sourcePoint" /> + <mxPoint x="200" y="600" as="targetPoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/documentation/figures/overview/updated_controller_architecture_overview.drawio.png b/documentation/figures/overview/updated_controller_architecture_overview.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..a508d48654a03aab7c16e31f289132f8957336f5 GIT binary patch literal 39400 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 literal 0 HcmV?d00001 diff --git a/documentation/figures/plugins/.gitkeep b/documentation/figures/plugins/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/documentation/figures/plugins/plugin-device-interaction.drawio b/documentation/figures/plugins/plugin-device-interaction.drawio new file mode 100644 index 000000000..1c86f535f --- /dev/null +++ b/documentation/figures/plugins/plugin-device-interaction.drawio @@ -0,0 +1,88 @@ +<mxfile host="Electron" modified="2023-05-11T13:45:07.429Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.8 Chrome/112.0.5615.165 Electron/24.2.0 Safari/537.36" etag="b9W3KDi2VxrPMCuebgYl" version="21.2.8" type="device"> + <diagram name="Page-1" id="7acMf7GGfN7ie8L3jlAE"> + <mxGraphModel dx="1595" dy="933" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="V2kOSHpwmn09caB3T1uJ-9" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="80" y="510" width="520" height="180" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-3" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="440" y="570" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-4" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="430" y="560" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-5" value="Plugins" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="420" y="550" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-6" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="140" y="570" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-7" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="130" y="560" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" edge="1" parent="1" source="V2kOSHpwmn09caB3T1uJ-8" target="V2kOSHpwmn09caB3T1uJ-18"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-27" value="Set(), Get(), Subscribe()" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="V2kOSHpwmn09caB3T1uJ-20"> + <mxGeometry x="-0.0932" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-8" value="Network Elements" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="120" y="550" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-10" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="660" y="500" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-11" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="650" y="490" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-12" value="HashiCorp<br>go-plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="640" y="480" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-13" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="V2kOSHpwmn09caB3T1uJ-5" target="V2kOSHpwmn09caB3T1uJ-12"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="400" y="590" as="sourcePoint" /> + <mxPoint x="450" y="540" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-15" value="gRPC" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="V2kOSHpwmn09caB3T1uJ-13"> + <mxGeometry x="0.1618" y="-2" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-14" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="V2kOSHpwmn09caB3T1uJ-8" target="V2kOSHpwmn09caB3T1uJ-5"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="260" y="590" as="sourcePoint" /> + <mxPoint x="310" y="540" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-17" value="call methods like e.g.,<br>Unmarshal()<br>SetNode()<br>etc." style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="V2kOSHpwmn09caB3T1uJ-14"> + <mxGeometry x="-0.1634" y="2" relative="1" as="geometry"> + <mxPoint x="15" y="2" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-18" value="SBI (Transport)" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="200" y="680" width="280" height="30" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-23" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="300" y="780" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-24" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="290" y="770" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-25" value="Physical Network Element" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="280" y="760" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="V2kOSHpwmn09caB3T1uJ-26" value="gNMI" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="V2kOSHpwmn09caB3T1uJ-18" target="V2kOSHpwmn09caB3T1uJ-25"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="510" y="620" as="sourcePoint" /> + <mxPoint x="560" y="570" as="targetPoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/documentation/figures/plugins/plugin-device-interaction.drawio.png b/documentation/figures/plugins/plugin-device-interaction.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..13d7b14ff5beb497de3bcccb4c3c3523ccdd041e GIT binary patch literal 39845 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 WS04PKqRqg-z~JfX=d#Wzp$P!ErDqxd literal 0 HcmV?d00001 -- GitLab