/ architecture.drawio
architecture.drawio
  1  <mxfile host="app.diagrams.net" version="24.0.0">
  2    <diagram name="Architecture Overview" id="overview">
  3      <mxGraphModel dx="2400" dy="1600" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
  4        <root>
  5          <mxCell id="0" />
  6          <mxCell id="1" parent="0" />
  7  
  8          <!-- ============================================================ -->
  9          <!-- DESCRIPTION TEXT BLOCK                                        -->
 10          <!-- ============================================================ -->
 11          <mxCell id="desc" value="&lt;h2 style=&quot;margin-top: 0px;&quot;&gt;WhatsApp AI Agent - Architecture Overview&lt;/h2&gt;&lt;p&gt;Three independent CDK stacks sharing configuration via AWS Systems Manager Parameter Store:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Stack 00&lt;/b&gt;: AgentCore Runtime + Memory with Strands multimodal agent, Claude Sonnet, and TwelveLabs video analysis.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Stack 01&lt;/b&gt;: WhatsApp via AWS End User Messaging Social - SNS triggers receiver Lambda, DynamoDB Stream tumbling window buffers messages, processor invokes AgentCore.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Stack 02&lt;/b&gt;: WhatsApp + Instagram via Meta Cloud API - API Gateway webhook, dual-channel receiver, DynamoDB buffering, unified user identity, processor invokes AgentCore.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Both Stack 01 and 02 use a &lt;b&gt;tumbling window&lt;/b&gt; (3s) to aggregate rapid-fire messages into a single agent invocation, reducing token usage and costs.&lt;/p&gt;" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;spacing=9;fontSize=11;" vertex="1" parent="1">
 12            <mxGeometry x="120" y="-180" width="1300" height="200" as="geometry" />
 13          </mxCell>
 14  
 15          <!-- ============================================================ -->
 16          <!-- WHATSAPP USERS (outside region)                               -->
 17          <!-- ============================================================ -->
 18          <mxCell id="user" value="WhatsApp Users" style="dashed=0;outlineConnect=0;html=1;align=center;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.weblogos.whatsapp;fillColor=#00E676;strokeColor=none;fontSize=11;fontStyle=0;" vertex="1" parent="1">
 19            <mxGeometry x="-30" y="340" width="60" height="60" as="geometry" />
 20          </mxCell>
 21  
 22          <!-- External: Instagram Users (below WhatsApp, connects to Stack 02) -->
 23          <mxCell id="ig_user" value="Instagram Users" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;imageAspect=0;image=https://cdn.simpleicons.org/instagram/E4405F;" vertex="1" parent="1">
 24            <mxGeometry x="-30" y="520" width="60" height="60" as="geometry" />
 25          </mxCell>
 26  
 27          <!-- Instagram Users -> API GW (green, route to Stack 02) -->
 28          <mxCell id="e_ig_apigw" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="ig_user" target="apigw">
 29            <mxGeometry relative="1" as="geometry">
 30              <Array as="points">
 31                <mxPoint x="70" y="550" />
 32                <mxPoint x="70" y="545" />
 33              </Array>
 34            </mxGeometry>
 35          </mxCell>
 36  
 37          <!-- ============================================================ -->
 38          <!-- TWELVELABS API (outside region, right side)                   -->
 39          <!-- ============================================================ -->
 40          <mxCell id="twelvelabs" value="TwelveLabs API&lt;div&gt;(External)&lt;/div&gt;" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;imageAspect=0;image=https://vectorseek.com/wp-content/uploads/2025/12/TwelveLabs-Logo-PNG-SVG-Vecto-01.png;" vertex="1" parent="1">
 41            <mxGeometry x="1520" y="500" width="60" height="60" as="geometry" />
 42          </mxCell>
 43  
 44          <!-- ============================================================ -->
 45          <!-- AWS REGION CONTAINER                                          -->
 46          <!-- ============================================================ -->
 47          <mxCell id="region" value="AWS Region" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;strokeColor=#00A4A6;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=1;" vertex="1" parent="1">
 48            <mxGeometry x="120" y="50" width="1340" height="830" as="geometry" />
 49          </mxCell>
 50  
 51          <!-- ============================================================ -->
 52          <!-- STACK 01 BOX (blue) - top left                                -->
 53          <!-- ============================================================ -->
 54          <mxCell id="stack01_box" value="Stack 01: End User Messaging (WhatsApp)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#147EBA;strokeWidth=2;dashed=1;fontSize=13;fontStyle=1;fontColor=#147EBA;verticalAlign=top;align=right;spacingRight=10;spacingTop=5;container=0;" vertex="1" parent="region">
 55            <mxGeometry x="20" y="30" width="720" height="330" as="geometry" />
 56          </mxCell>
 57  
 58          <!-- ============================================================ -->
 59          <!-- STACK 02 BOX (purple) - bottom left                           -->
 60          <!-- ============================================================ -->
 61          <mxCell id="stack02_box" value="Stack 02: Multichannel (WhatsApp + Instagram)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#8C4FFF;strokeWidth=2;dashed=1;fontSize=13;fontStyle=1;fontColor=#8C4FFF;verticalAlign=top;align=right;spacingRight=10;spacingTop=5;container=0;" vertex="1" parent="region">
 62            <mxGeometry x="20" y="410" width="720" height="380" as="geometry" />
 63          </mxCell>
 64  
 65          <!-- ============================================================ -->
 66          <!-- STACK 00 BOX (orange) - right side                            -->
 67          <!-- ============================================================ -->
 68          <mxCell id="stack00_box" value="Stack 00: AgentCore" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#FF8000;strokeWidth=2;dashed=1;fontSize=13;fontStyle=1;fontColor=#FF8000;verticalAlign=top;align=right;spacingRight=10;spacingTop=5;container=0;" vertex="1" parent="region">
 69            <mxGeometry x="790" y="30" width="520" height="760" as="geometry" />
 70          </mxCell>
 71  
 72          <!-- ============================================================ -->
 73          <!-- STACK 01 ICONS (Row 1: EUM -> SNS -> Receiver -> DDB -> Stream -> Processor) -->
 74          <!-- ============================================================ -->
 75  
 76          <!-- End User Messaging -->
 77          <mxCell id="eum" value="AWS End User&lt;div&gt;Messaging&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.end_user_messaging;" vertex="1" parent="region">
 78            <mxGeometry x="40" y="85" width="60" height="60" as="geometry" />
 79          </mxCell>
 80  
 81          <!-- SNS Topic (native shape, exception) -->
 82          <mxCell id="sns01" value="Amazon SNS" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#E7157B;strokeColor=none;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.topic;" vertex="1" parent="region">
 83            <mxGeometry x="155" y="89" width="60" height="52" as="geometry" />
 84          </mxCell>
 85  
 86          <!-- Receiver Lambda 01 -->
 87          <mxCell id="receiver01" value="Lambda&lt;div&gt;Receiver&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="region">
 88            <mxGeometry x="275" y="85" width="60" height="60" as="geometry" />
 89          </mxCell>
 90  
 91          <!-- DynamoDB 01 -->
 92          <mxCell id="ddb01" value="Amazon&lt;div&gt;DynamoDB&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#C925D1;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb;" vertex="1" parent="region">
 93            <mxGeometry x="395" y="85" width="60" height="60" as="geometry" />
 94          </mxCell>
 95  
 96          <!-- DynamoDB Stream 01 -->
 97          <mxCell id="stream01" value="DynamoDB&lt;div&gt;Stream&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#C925D1;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb_stream;" vertex="1" parent="region">
 98            <mxGeometry x="515" y="85" width="60" height="60" as="geometry" />
 99          </mxCell>
100  
101          <!-- Processor Lambda 01 -->
102          <mxCell id="processor01" value="Lambda&lt;div&gt;Processor&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="region">
103            <mxGeometry x="635" y="85" width="60" height="60" as="geometry" />
104          </mxCell>
105  
106          <!-- Stack 01 Row 2: S3 below Receiver, Transcribe below Processor -->
107          <mxCell id="s3_01" value="Amazon S3&lt;div&gt;Media&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#3F8624;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="region">
108            <mxGeometry x="275" y="230" width="60" height="60" as="geometry" />
109          </mxCell>
110  
111          <mxCell id="transcribe01" value="Amazon&lt;div&gt;Transcribe&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.transcribe;" vertex="1" parent="region">
112            <mxGeometry x="635" y="230" width="60" height="60" as="geometry" />
113          </mxCell>
114  
115          <!-- ============================================================ -->
116          <!-- STACK 02 ICONS (Row 1: API GW -> Receiver -> DDB -> Stream -> Processor) -->
117          <!-- ============================================================ -->
118  
119          <!-- API Gateway -->
120          <mxCell id="apigw" value="Amazon API&lt;div&gt;Gateway&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.api_gateway;" vertex="1" parent="region">
121            <mxGeometry x="40" y="465" width="60" height="60" as="geometry" />
122          </mxCell>
123  
124          <!-- Receiver Lambda 02 -->
125          <mxCell id="receiver02" value="Lambda&lt;div&gt;Receiver&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="region">
126            <mxGeometry x="195" y="465" width="60" height="60" as="geometry" />
127          </mxCell>
128  
129          <!-- DynamoDB 02 -->
130          <mxCell id="ddb02" value="Amazon&lt;div&gt;DynamoDB&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#C925D1;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb;" vertex="1" parent="region">
131            <mxGeometry x="355" y="465" width="60" height="60" as="geometry" />
132          </mxCell>
133  
134          <!-- DynamoDB Stream 02 -->
135          <mxCell id="stream02" value="DynamoDB&lt;div&gt;Stream&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#C925D1;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.dynamodb_stream;" vertex="1" parent="region">
136            <mxGeometry x="475" y="465" width="60" height="60" as="geometry" />
137          </mxCell>
138  
139          <!-- Processor Lambda 02 -->
140          <mxCell id="processor02" value="Lambda&lt;div&gt;Processor&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="region">
141            <mxGeometry x="635" y="465" width="60" height="60" as="geometry" />
142          </mxCell>
143  
144          <!-- Stack 02 Row 2: Secrets below API GW, S3 below DDB, Transcribe below Processor -->
145          <mxCell id="secrets02" value="Secrets&lt;div&gt;Manager&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.secrets_manager;" vertex="1" parent="region">
146            <mxGeometry x="40" y="620" width="60" height="60" as="geometry" />
147          </mxCell>
148  
149          <mxCell id="s3_02" value="Amazon S3&lt;div&gt;Media&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#3F8624;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="region">
150            <mxGeometry x="355" y="620" width="60" height="60" as="geometry" />
151          </mxCell>
152  
153          <mxCell id="transcribe02" value="Amazon&lt;div&gt;Transcribe&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.transcribe;" vertex="1" parent="region">
154            <mxGeometry x="635" y="620" width="60" height="60" as="geometry" />
155          </mxCell>
156  
157          <!-- ============================================================ -->
158          <!-- STACK 00 ICONS                                                -->
159          <!-- ============================================================ -->
160  
161          <!-- SSM Parameter Store (top) -->
162          <mxCell id="ssm" value="Parameter&lt;div&gt;Store&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.parameter_store;" vertex="1" parent="region">
163            <mxGeometry x="830" y="75" width="60" height="60" as="geometry" />
164          </mxCell>
165  
166          <!-- S3 Agent Code (below SSM) -->
167          <mxCell id="s3_agent" value="Amazon S3&lt;div&gt;Agent Code&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#3F8624;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="region">
168            <mxGeometry x="830" y="230" width="60" height="60" as="geometry" />
169          </mxCell>
170  
171          <!-- AgentCore Runtime Endpoint (center) -->
172          <mxCell id="endpoint" value="AgentCore&lt;div&gt;Endpoint&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
173            <mxGeometry x="930" y="400" width="60" height="60" as="geometry" />
174          </mxCell>
175  
176          <!-- AgentCore Runtime (right of Endpoint) -->
177          <mxCell id="runtime" value="AgentCore&lt;div&gt;Runtime&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
178            <mxGeometry x="1100" y="400" width="60" height="60" as="geometry" />
179          </mxCell>
180  
181          <!-- AgentCore Memory (below Runtime) -->
182          <mxCell id="memory" value="AgentCore&lt;div&gt;Memory&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
183            <mxGeometry x="1100" y="580" width="60" height="60" as="geometry" />
184          </mxCell>
185  
186          <!-- Amazon Bedrock (top-right) -->
187          <mxCell id="bedrock" value="Amazon Bedrock&lt;div&gt;Claude Sonnet&lt;/div&gt;" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
188            <mxGeometry x="1200" y="230" width="60" height="60" as="geometry" />
189          </mxCell>
190  
191          <!-- ============================================================ -->
192          <!-- STACK 01 MAIN FLOW EDGES                                      -->
193          <!-- ============================================================ -->
194  
195          <!-- EUM -> SNS (green) -->
196          <mxCell id="e_eum_sns" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="eum" target="sns01">
197            <mxGeometry relative="1" as="geometry" />
198          </mxCell>
199  
200          <!-- SNS -> Receiver 01 (green) -->
201          <mxCell id="e_sns_r01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="sns01" target="receiver01">
202            <mxGeometry relative="1" as="geometry" />
203          </mxCell>
204  
205          <!-- Receiver 01 -> DDB 01 (green) -->
206          <mxCell id="e_r01_ddb01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="receiver01" target="ddb01">
207            <mxGeometry relative="1" as="geometry" />
208          </mxCell>
209  
210          <!-- DDB 01 -> Stream 01 (red) -->
211          <mxCell id="e_ddb01_s01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="ddb01" target="stream01">
212            <mxGeometry relative="1" as="geometry" />
213          </mxCell>
214  
215          <!-- Stream 01 -> Processor 01 (red) -->
216          <mxCell id="e_s01_p01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="stream01" target="processor01">
217            <mxGeometry relative="1" as="geometry" />
218          </mxCell>
219  
220          <!-- Receiver 01 -> S3 01 (green, down) -->
221          <mxCell id="e_r01_s3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="receiver01" target="s3_01">
222            <mxGeometry relative="1" as="geometry" />
223          </mxCell>
224  
225          <!-- Processor 01 -> Transcribe 01 (orange, down) -->
226          <mxCell id="e_p01_t01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="processor01" target="transcribe01">
227            <mxGeometry relative="1" as="geometry" />
228          </mxCell>
229  
230          <!-- Processor 01 -> S3 01 (orange, down-left with waypoints) -->
231          <mxCell id="e_p01_s3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor01" target="s3_01">
232            <mxGeometry relative="1" as="geometry">
233              <Array as="points">
234                <mxPoint x="665" y="190" />
235                <mxPoint x="390" y="190" />
236                <mxPoint x="390" y="260" />
237              </Array>
238            </mxGeometry>
239          </mxCell>
240  
241          <!-- Processor 01 -> Endpoint (orange, right then down) -->
242          <mxCell id="e_p01_endpoint" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor01" target="endpoint">
243            <mxGeometry relative="1" as="geometry">
244              <Array as="points">
245                <mxPoint x="760" y="115" />
246                <mxPoint x="760" y="415" />
247              </Array>
248            </mxGeometry>
249          </mxCell>
250  
251          <!-- ============================================================ -->
252          <!-- STACK 02 MAIN FLOW EDGES                                      -->
253          <!-- ============================================================ -->
254  
255          <!-- API GW -> Receiver 02 (green) -->
256          <mxCell id="e_apigw_r02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="apigw" target="receiver02">
257            <mxGeometry relative="1" as="geometry" />
258          </mxCell>
259  
260          <!-- Receiver 02 -> DDB 02 (green) -->
261          <mxCell id="e_r02_ddb02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="receiver02" target="ddb02">
262            <mxGeometry relative="1" as="geometry" />
263          </mxCell>
264  
265          <!-- DDB 02 -> Stream 02 (red) -->
266          <mxCell id="e_ddb02_s02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="ddb02" target="stream02">
267            <mxGeometry relative="1" as="geometry" />
268          </mxCell>
269  
270          <!-- Stream 02 -> Processor 02 (red) -->
271          <mxCell id="e_s02_p02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="stream02" target="processor02">
272            <mxGeometry relative="1" as="geometry" />
273          </mxCell>
274  
275          <!-- Receiver 02 -> S3 02 (green, down-right with waypoints) -->
276          <mxCell id="e_r02_s302" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="region" source="receiver02" target="s3_02">
277            <mxGeometry relative="1" as="geometry">
278              <Array as="points">
279                <mxPoint x="225" y="570" />
280                <mxPoint x="300" y="570" />
281                <mxPoint x="300" y="650" />
282              </Array>
283            </mxGeometry>
284          </mxCell>
285  
286          <!-- Receiver 02 -> Secrets 02 (dashed, down-left) -->
287          <mxCell id="e_r02_secrets" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeWidth=2;dashed=1;flowAnimation=1;strokeColor=#DD344C;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="receiver02" target="secrets02">
288            <mxGeometry relative="1" as="geometry">
289              <Array as="points">
290                <mxPoint x="195" y="560" />
291                <mxPoint x="70" y="560" />
292              </Array>
293            </mxGeometry>
294          </mxCell>
295  
296          <!-- Processor 02 -> Transcribe 02 (orange, down) -->
297          <mxCell id="e_p02_t02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="processor02" target="transcribe02">
298            <mxGeometry relative="1" as="geometry" />
299          </mxCell>
300  
301          <!-- Processor 02 -> S3 02 (orange, down-left with waypoints) -->
302          <mxCell id="e_p02_s3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor02" target="s3_02">
303            <mxGeometry relative="1" as="geometry">
304              <Array as="points">
305                <mxPoint x="665" y="575" />
306                <mxPoint x="470" y="575" />
307                <mxPoint x="470" y="650" />
308              </Array>
309            </mxGeometry>
310          </mxCell>
311  
312          <!-- Processor 02 -> Endpoint (orange, right then up) -->
313          <mxCell id="e_p02_endpoint" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor02" target="endpoint">
314            <mxGeometry relative="1" as="geometry">
315              <Array as="points">
316                <mxPoint x="760" y="495" />
317                <mxPoint x="760" y="445" />
318              </Array>
319            </mxGeometry>
320          </mxCell>
321  
322          <!-- ============================================================ -->
323          <!-- STACK 00 INTERNAL EDGES (teal)                                -->
324          <!-- ============================================================ -->
325  
326          <!-- S3 Agent -> Endpoint (teal) -->
327          <mxCell id="e_s3_endpoint" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="s3_agent" target="endpoint">
328            <mxGeometry relative="1" as="geometry">
329              <Array as="points">
330                <mxPoint x="860" y="350" />
331                <mxPoint x="930" y="350" />
332              </Array>
333            </mxGeometry>
334          </mxCell>
335  
336          <!-- Endpoint -> Runtime (teal) -->
337          <mxCell id="e_endpoint_runtime" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="endpoint" target="runtime">
338            <mxGeometry relative="1" as="geometry" />
339          </mxCell>
340  
341          <!-- Runtime -> Memory (teal) -->
342          <mxCell id="e_runtime_memory" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="runtime" target="memory">
343            <mxGeometry relative="1" as="geometry" />
344          </mxCell>
345  
346          <!-- Runtime -> Bedrock (teal, up-right) -->
347          <mxCell id="e_runtime_bedrock" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="region" source="runtime" target="bedrock">
348            <mxGeometry relative="1" as="geometry">
349              <Array as="points">
350                <mxPoint x="1230" y="415" />
351                <mxPoint x="1230" y="290" />
352              </Array>
353            </mxGeometry>
354          </mxCell>
355  
356          <!-- Runtime -> TwelveLabs (teal, exits region) -->
357          <mxCell id="e_runtime_tl" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="1" source="runtime" target="twelvelabs">
358            <mxGeometry relative="1" as="geometry">
359              <Array as="points">
360                <mxPoint x="1480" y="495" />
361                <mxPoint x="1480" y="530" />
362              </Array>
363            </mxGeometry>
364          </mxCell>
365  
366          <!-- ============================================================ -->
367          <!-- SSM DASHED EXPORT EDGES                                       -->
368          <!-- ============================================================ -->
369  
370          <!-- SSM -> Processor 01 (dashed, orange) -->
371          <mxCell id="e_ssm_p01" value="exports ARN" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeWidth=2;dashed=1;flowAnimation=1;strokeColor=#FF8000;fontColor=#FF8000;fontSize=10;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="ssm" target="processor01">
372            <mxGeometry relative="1" as="geometry">
373              <Array as="points">
374                <mxPoint x="780" y="105" />
375                <mxPoint x="780" y="55" />
376                <mxPoint x="665" y="55" />
377              </Array>
378            </mxGeometry>
379          </mxCell>
380  
381          <!-- SSM -> Processor 02 (dashed, purple) -->
382          <mxCell id="e_ssm_p02" value="exports ARN" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeWidth=2;dashed=1;flowAnimation=1;strokeColor=#8C4FFF;fontColor=#8C4FFF;fontSize=10;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="ssm" target="processor02">
383            <mxGeometry relative="1" as="geometry">
384              <Array as="points">
385                <mxPoint x="780" y="135" />
386                <mxPoint x="780" y="435" />
387                <mxPoint x="665" y="435" />
388              </Array>
389            </mxGeometry>
390          </mxCell>
391  
392          <!-- ============================================================ -->
393          <!-- USER -> STACKS EDGES (outside region, parent="1")             -->
394          <!-- ============================================================ -->
395  
396          <!-- User -> EUM (green, route up) -->
397          <mxCell id="e_user_eum" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="user" target="eum">
398            <mxGeometry relative="1" as="geometry">
399              <Array as="points">
400                <mxPoint x="70" y="370" />
401                <mxPoint x="70" y="165" />
402              </Array>
403            </mxGeometry>
404          </mxCell>
405  
406          <!-- User -> API GW (green, route down) -->
407          <mxCell id="e_user_apigw" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="user" target="apigw">
408            <mxGeometry relative="1" as="geometry">
409              <Array as="points">
410                <mxPoint x="70" y="370" />
411                <mxPoint x="70" y="545" />
412              </Array>
413            </mxGeometry>
414          </mxCell>
415  
416          <!-- ============================================================ -->
417          <!-- LEGEND (bottom)                                               -->
418          <!-- ============================================================ -->
419          <mxCell id="legend_box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;strokeWidth=1;" vertex="1" parent="1">
420            <mxGeometry x="120" y="920" width="1100" height="50" as="geometry" />
421          </mxCell>
422  
423          <mxCell id="legend_title" value="Legend:" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=13;fontStyle=1;" vertex="1" parent="1">
424            <mxGeometry x="130" y="930" width="70" height="30" as="geometry" />
425          </mxCell>
426  
427          <!-- Green line legend -->
428          <mxCell id="leg1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1">
429            <mxGeometry relative="1" as="geometry">
430              <mxPoint x="210" y="945" as="sourcePoint" />
431              <mxPoint x="270" y="945" as="targetPoint" />
432            </mxGeometry>
433          </mxCell>
434          <mxCell id="leg1t" value="Raw messages" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1">
435            <mxGeometry x="275" y="932" width="110" height="25" as="geometry" />
436          </mxCell>
437  
438          <!-- Red line legend -->
439          <mxCell id="leg2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1">
440            <mxGeometry relative="1" as="geometry">
441              <mxPoint x="400" y="945" as="sourcePoint" />
442              <mxPoint x="460" y="945" as="targetPoint" />
443            </mxGeometry>
444          </mxCell>
445          <mxCell id="leg2t" value="Buffered (tumbling window)" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1">
446            <mxGeometry x="465" y="932" width="180" height="25" as="geometry" />
447          </mxCell>
448  
449          <!-- Orange line legend -->
450          <mxCell id="leg3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1">
451            <mxGeometry relative="1" as="geometry">
452              <mxPoint x="660" y="945" as="sourcePoint" />
453              <mxPoint x="720" y="945" as="targetPoint" />
454            </mxGeometry>
455          </mxCell>
456          <mxCell id="leg3t" value="Processed (AgentCore)" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1">
457            <mxGeometry x="725" y="932" width="160" height="25" as="geometry" />
458          </mxCell>
459  
460          <!-- Teal line legend -->
461          <mxCell id="leg4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1">
462            <mxGeometry relative="1" as="geometry">
463              <mxPoint x="900" y="945" as="sourcePoint" />
464              <mxPoint x="960" y="945" as="targetPoint" />
465            </mxGeometry>
466          </mxCell>
467          <mxCell id="leg4t" value="AgentCore internal" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1">
468            <mxGeometry x="965" y="932" width="140" height="25" as="geometry" />
469          </mxCell>
470  
471          <!-- Dashed line legend -->
472          <mxCell id="leg5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=2;dashed=1;flowAnimation=1;endArrow=none;endFill=0;strokeColor=#666666;" edge="1" parent="1">
473            <mxGeometry relative="1" as="geometry">
474              <mxPoint x="1110" y="945" as="sourcePoint" />
475              <mxPoint x="1170" y="945" as="targetPoint" />
476            </mxGeometry>
477          </mxCell>
478          <mxCell id="leg5t" value="Config export" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1">
479            <mxGeometry x="1175" y="932" width="100" height="25" as="geometry" />
480          </mxCell>
481  
482        </root>
483      </mxGraphModel>
484    </diagram>
485  </mxfile>