1 2 3 4
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="771px" height="1510px" viewBox="-0.5 -0.5 771 1510" content="<mxfile host="drawio.corp.amazon.com" modified="2024-01-02T18:24:53.169Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/115.0" etag="ihFKOu0VIxVrXs9i_NFC" version="21.7.4" type="device">
 <diagram name="Page-1" id="L5YxPPg_dapdm7Y5pT0E">
 <mxGraphModel dx="2074" dy="1129" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="#ffffff" math="0" shadow="0">
 <root>
 <mxCell id="0" />
 <mxCell id="1" parent="0" />
 <mxCell id="Wqh5jUtsnaBHgISomFF5-7" value="" style="group;strokeColor=#2e6caa;" parent="1" vertex="1" connectable="0">
 <mxGeometry x="20" y="250" width="750" height="589" as="geometry" />
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-4" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;ObjectSize and Potentially FirstPart Request&lt;/font&gt;" style="shape=rect;strokeColor=none;fillColor=#008cff;strokeWidth=1;dashed=0;rounded=1;arcSize=20;fontColor=#ffffff;fontSize=17;spacing=2;spacingTop=-2;align=left;autosize=1;spacingLeft=4;resizeWidth=0;resizeHeight=0;perimeter=none;html=1;whiteSpace=wrap;" parent="Wqh5jUtsnaBHgISomFF5-7" vertex="1">
 <mxGeometry x="490.0045569620253" width="260" height="30" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-1" target="bzwhMvU1NpIFp74mUWRK-2" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="469" y="100" as="sourcePoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-1" value="User makes a GetObject Request" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="409" y="16" width="120" height="80" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-2" target="s8yCDx7f0iDlg3cUnc8v-1" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="284" y="251" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-9" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-8" vertex="1" connectable="0">
 <mxGeometry x="-0.3668" y="-8" relative="1" as="geometry">
 <mxPoint x="48" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-3" value="Default Request" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;enumerate=0;enumerateValue=1;" parent="1" vertex="1">
 <mxGeometry x="650" y="161" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-10" target="bzwhMvU1NpIFp74mUWRK-20" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="484" y="409" as="targetPoint" />
 <mxPoint x="371" y="339" as="sourcePoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-62" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-19" vertex="1" connectable="0">
 <mxGeometry x="-0.4018" y="-1" relative="1" as="geometry">
 <mxPoint x="-44" y="-12" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="bzwhMvU1NpIFp74mUWRK-13" target="bzwhMvU1NpIFp74mUWRK-28" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-10" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="2v5i9Duevj2DpRYej06B-6" vertex="1" connectable="0">
 <mxGeometry x="-0.4833" y="2" relative="1" as="geometry">
 <mxPoint x="12" y="-6" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="bzwhMvU1NpIFp74mUWRK-20" target="bzwhMvU1NpIFp74mUWRK-23" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-25" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-24" vertex="1" connectable="0">
 <mxGeometry x="-0.3597" y="1" relative="1" as="geometry">
 <mxPoint x="-138" y="-9" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-2" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-24" vertex="1" connectable="0">
 <mxGeometry x="-0.934" y="1" relative="1" as="geometry">
 <mxPoint x="-7" y="-7" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="bzwhMvU1NpIFp74mUWRK-20" target="bzwhMvU1NpIFp74mUWRK-29" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-63" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-53" vertex="1" connectable="0">
 <mxGeometry x="-0.8729" y="-4" relative="1" as="geometry">
 <mxPoint x="20" y="-15" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="bzwhMvU1NpIFp74mUWRK-28" target="bzwhMvU1NpIFp74mUWRK-30" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-65" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-55" vertex="1" connectable="0">
 <mxGeometry x="-0.5289" y="-1" relative="1" as="geometry">
 <mxPoint x="15" y="-9" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-9" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;rounded=1;" parent="1" target="bzwhMvU1NpIFp74mUWRK-29" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="480" y="640" as="targetPoint" />
 <mxPoint x="383" y="638" as="sourcePoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-11" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="2v5i9Duevj2DpRYej06B-9" vertex="1" connectable="0">
 <mxGeometry x="-0.634" y="3" relative="1" as="geometry">
 <mxPoint x="-33" y="-7" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-8" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.05;entryY=0.65;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-29" target="Wqh5jUtsnaBHgISomFF5-10" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-29" value="HeadObject" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;enumerate=0;enumerateValue=4;container=0;" parent="1" vertex="1">
 <mxGeometry x="424" y="758" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-9" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-30" target="Wqh5jUtsnaBHgISomFF5-10" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="310" y="860" />
 <mxPoint x="484" y="860" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-30" value="GetObject with partNumber=1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;enumerate=0;enumerateValue=3;container=0;" parent="1" vertex="1">
 <mxGeometry x="250" y="758" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-91" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.35;entryY=0.7;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-82" target="Wqh5jUtsnaBHgISomFF5-10" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="480" y="898" as="targetPoint" />
 <mxPoint x="230" y="920" as="sourcePoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-92" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-91" vertex="1" connectable="0">
 <mxGeometry x="-0.488" y="-3" relative="1" as="geometry">
 <mxPoint x="-73" y="-13" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-111" value="" style="group;collapsible=0;" parent="1" vertex="1" connectable="0">
 <mxGeometry x="88" y="1176" width="480" height="220" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-115" value="Parallel Download All Parts" style="swimlane;whiteSpace=wrap;html=1;fillColor=#3c89f7;fontColor=#ffffff;strokeColor=#006EAF;direction=east;snapToPoint=0;fixDash=0;autosize=1;fixedWidth=1;treeFolding=0;swimlaneHead=1;resizeWidth=1;resizeHeight=1;moveCells=1;" parent="1" vertex="1">
 <mxGeometry x="249" y="965" width="470" height="200" as="geometry">
 <mxRectangle x="140" y="950" width="470" height="30" as="alternateBounds" />
 </mxGeometry>
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-14" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="bzwhMvU1NpIFp74mUWRK-115" source="bzwhMvU1NpIFp74mUWRK-35" target="bzwhMvU1NpIFp74mUWRK-79" edge="1">
 <mxGeometry x="-0.7699" y="-14" relative="1" as="geometry">
 <mxPoint x="1" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-35" value="Has &lt;br&gt;More Parts?" style="rhombus;whiteSpace=wrap;html=1;container=1;collapsible=0;" parent="bzwhMvU1NpIFp74mUWRK-115" vertex="1">
 <mxGeometry x="187.5" y="50" width="95" height="108" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-31" value="6" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="bzwhMvU1NpIFp74mUWRK-35" vertex="1">
 <mxGeometry x="39.5" y="10" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-43" value="GetObject with range of part" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;enumerate=0;enumerateValue=6;" parent="bzwhMvU1NpIFp74mUWRK-115" vertex="1">
 <mxGeometry x="335" y="133" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-75" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;" parent="bzwhMvU1NpIFp74mUWRK-115" source="bzwhMvU1NpIFp74mUWRK-43" target="bzwhMvU1NpIFp74mUWRK-35" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-74" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="bzwhMvU1NpIFp74mUWRK-115" source="bzwhMvU1NpIFp74mUWRK-35" target="bzwhMvU1NpIFp74mUWRK-43" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-3" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-74" vertex="1" connectable="0">
 <mxGeometry x="-0.5582" y="-1" relative="1" as="geometry">
 <mxPoint x="-15" y="-17" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-79" value="End" style="ellipse;whiteSpace=wrap;html=1;" parent="bzwhMvU1NpIFp74mUWRK-115" vertex="1">
 <mxGeometry x="51" y="77" width="80" height="54" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-1" value="&lt;ol style=&quot;font-size: 13px;&quot;&gt;&lt;li style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 13px;&quot;&gt;If the initial request contains a partNumber, we currently send it as a default request since we have not yet implemented downloading a single part with splitting.&lt;/font&gt;&lt;/li&gt;&lt;li style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 13px;&quot;&gt;If there was a range header without a startRange, we perform a&amp;nbsp;HeadObject&amp;nbsp;to determine the startRange first; otherwise, we execute a GetObject from the startRange.&lt;/font&gt;&lt;/li&gt;&lt;li style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 13px;&quot;&gt;If checksum validation is enabled, we validate the checksum for part aligned ranged gets and also have a workaround to validate checksum if the file was uploaded as a single part but is now being downloaded as multipart. This is done using&amp;nbsp;HeadObject&amp;nbsp;or GetObject with partNumber=1.&lt;br&gt;&lt;/font&gt;&lt;/li&gt;&lt;li style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 13px;&quot;&gt;If the size_hint indicates a small file, we execute GetObject with partNumber=1 to avoid the&amp;nbsp;HeadObject&amp;nbsp;for small files. If the actual part size exceeds our part_size, we cancel the request upon receiving the headers and retrieve the first part again as part of parallelized ranged gets. Otherwise, we perform a&amp;nbsp;HeadObject&amp;nbsp;to discover both the object size and checksum if available.&lt;/font&gt;&lt;/li&gt;&lt;li style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 13px;&quot;&gt;When we do the first GetObject with range request to discover object size, it can fail if the file is empty. Now that we know the file is empty, we send another GetObject with partNumber=1 request to provide successful response headers to the user. It will succeed if the file is empty, or it will proceed to download the file.&lt;br&gt;&lt;/font&gt;&lt;/li&gt;&lt;li style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 13px;&quot;&gt;We perform multiple GetObject with range requests in parallel to download the remaining portion of the file once its total size is known.&lt;br&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;" style="text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;align=left;labelPosition=center;verticalLabelPosition=middle;" parent="1" vertex="1">
 <mxGeometry y="1190" width="740" height="330" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-22" value="" style="group;rotation=90;" parent="1" vertex="1" connectable="0">
 <mxGeometry x="418.5" y="141" width="100" height="100" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-2" value="Contains &lt;br&gt;partNumber?" style="rhombus;whiteSpace=wrap;html=1;enumerate=0;enumerateValue=1;" parent="2v5i9Duevj2DpRYej06B-22" vertex="1">
 <mxGeometry width="100" height="100" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-21" value="1" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="2v5i9Duevj2DpRYej06B-22" vertex="1">
 <mxGeometry x="43.04347826086956" y="10.833333333333334" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-30" value="" style="group" parent="1" vertex="1" connectable="0">
 <mxGeometry x="97" y="859" width="80" height="80" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-82" value="EmptyFile&lt;br&gt;Error?" style="rhombus;whiteSpace=wrap;html=1;" parent="2v5i9Duevj2DpRYej06B-30" vertex="1">
 <mxGeometry width="80" height="80" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-29" value="5" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="2v5i9Duevj2DpRYej06B-30" vertex="1">
 <mxGeometry x="31" y="9" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="bzwhMvU1NpIFp74mUWRK-2" target="bzwhMvU1NpIFp74mUWRK-3" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-49" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="2v5i9Duevj2DpRYej06B-33" vertex="1" connectable="0">
 <mxGeometry x="-0.4575" y="4" relative="1" as="geometry">
 <mxPoint x="-22" y="-7" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-36" value="Legend" style="shape=table;startSize=30;container=1;collapsible=0;childLayout=tableLayout;fontSize=14;align=left;verticalAlign=top;fillColor=none;strokeColor=default;fontColor=#4D4D4D;fontStyle=1;spacingLeft=6;spacing=0;resizable=0;" parent="1" vertex="1">
 <mxGeometry x="20" y="11" width="163" height="90" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-37" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;" parent="2v5i9Duevj2DpRYej06B-36" vertex="1">
 <mxGeometry y="30" width="163" height="30" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-38" value="Request to S3" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#2D7600;overflow=hidden;fillColor=#60a917;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;spacingLeft=10;spacingRight=4;fontColor=#ffffff;" parent="2v5i9Duevj2DpRYej06B-37" vertex="1">
 <mxGeometry width="163" height="30" as="geometry">
 <mxRectangle width="163" height="30" as="alternateBounds" />
 </mxGeometry>
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-39" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;" parent="2v5i9Duevj2DpRYej06B-36" vertex="1">
 <mxGeometry y="60" width="163" height="30" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-40" value="Comment" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=#6c8ebf;overflow=hidden;fillColor=#dae8fc;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=12;align=left;spacingLeft=10;spacingRight=4;gradientColor=#7ea6e0;" parent="2v5i9Duevj2DpRYej06B-39" vertex="1">
 <mxGeometry width="163" height="30" as="geometry">
 <mxRectangle width="163" height="30" as="alternateBounds" />
 </mxGeometry>
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-10" target="bzwhMvU1NpIFp74mUWRK-13" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-1" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="s8yCDx7f0iDlg3cUnc8v-3" vertex="1" connectable="0">
 <mxGeometry x="-0.6627" y="3" relative="1" as="geometry">
 <mxPoint x="5" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;jumpStyle=arc;" parent="1" source="bzwhMvU1NpIFp74mUWRK-34" target="bzwhMvU1NpIFp74mUWRK-82" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-82" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="199" y="230" as="targetPoint" />
 <mxPoint x="80" y="899" as="sourcePoint" />
 <Array as="points">
 <mxPoint x="10" y="899" />
 <mxPoint x="10" y="230" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-24" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="s8yCDx7f0iDlg3cUnc8v-22" vertex="1" connectable="0">
 <mxGeometry x="-0.7414" y="1" relative="1" as="geometry">
 <mxPoint x="81" y="23" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-13" target="bzwhMvU1NpIFp74mUWRK-34" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="126" y="734" as="targetPoint" />
 <mxPoint x="266" y="460" as="sourcePoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-66" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="bzwhMvU1NpIFp74mUWRK-26" vertex="1" connectable="0">
 <mxGeometry x="-0.8591" y="2" relative="1" as="geometry">
 <mxPoint x="20" y="-12" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;jumpStyle=arc;jumpSize=8;" parent="1" source="s8yCDx7f0iDlg3cUnc8v-1" target="bzwhMvU1NpIFp74mUWRK-30" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-17" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="s8yCDx7f0iDlg3cUnc8v-5" vertex="1" connectable="0">
 <mxGeometry x="-0.9383" relative="1" as="geometry">
 <mxPoint x="10" y="-8" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-34" value="GetObject with range 0-partSize" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;enumerate=0;enumerateValue=2;container=0;" parent="1" vertex="1">
 <mxGeometry x="76" y="760" width="120" height="60" as="geometry" />
 </mxCell>
 <UserObject label="Contains&lt;br&gt;&amp;nbsp;Range&lt;br&gt;Header?" tooltip="Test tooltip&#xa;" id="bzwhMvU1NpIFp74mUWRK-10">
 <mxCell style="rhombus;whiteSpace=wrap;html=1;container=0;" parent="1" vertex="1">
 <mxGeometry x="255" y="318" width="109" height="79" as="geometry" />
 </mxCell>
 </UserObject>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="s8yCDx7f0iDlg3cUnc8v-1" target="bzwhMvU1NpIFp74mUWRK-10" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-16" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="s8yCDx7f0iDlg3cUnc8v-12" vertex="1" connectable="0">
 <mxGeometry x="-0.1824" y="-4" relative="1" as="geometry">
 <mxPoint x="-23" y="-12" as="offset" />
 </mxGeometry>
 </mxCell>
 <UserObject label="EmptyFile?" tooltip="Test tooltip&#xa;" id="s8yCDx7f0iDlg3cUnc8v-1">
 <mxCell style="rhombus;whiteSpace=wrap;html=1;container=0;" parent="1" vertex="1">
 <mxGeometry x="154" y="264" width="100" height="68.5" as="geometry" />
 </mxCell>
 </UserObject>
 <mxCell id="s8yCDx7f0iDlg3cUnc8v-25" value="5" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="1" vertex="1">
 <mxGeometry x="196.5" y="270" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-14" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.8;entryY=0.65;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="bzwhMvU1NpIFp74mUWRK-23" target="Wqh5jUtsnaBHgISomFF5-10" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="656" y="860" />
 <mxPoint x="484" y="860" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-23" value="GetObject from startRange" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;enumerate=0;enumerateValue=5;container=0;" parent="1" vertex="1">
 <mxGeometry x="596" y="760" width="120" height="60" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-28" value="size_hint_available &amp;amp;&amp;amp; &lt;br&gt;size_hint&amp;lt;=part_size" style="rhombus;whiteSpace=wrap;html=1;enumerate=0;enumerateValue=4;" parent="1" vertex="1">
 <mxGeometry x="237" y="582" width="146" height="112.00000000000001" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-19" value="4" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="1" vertex="1">
 <mxGeometry x="302.5111111111111" y="588.5333333333333" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="2v5i9Duevj2DpRYej06B-19" target="2v5i9Duevj2DpRYej06B-19" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-13" value="Validate Checksum?" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="262" y="438" width="96" height="92" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-24" value="3" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="1" vertex="1">
 <mxGeometry x="302.4" y="446.35" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="bzwhMvU1NpIFp74mUWRK-20" value="Contains &lt;br&gt;Start Range?" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="424" y="428" width="120" height="100" as="geometry" />
 </mxCell>
 <mxCell id="2v5i9Duevj2DpRYej06B-26" value="2" style="shape=ellipse;fillColor=#dae8fc;strokeColor=#6c8ebf;html=1;sketch=0;gradientColor=#7ea6e0;" parent="1" vertex="1">
 <mxGeometry x="476" y="436" width="15" height="15" as="geometry" />
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="Wqh5jUtsnaBHgISomFF5-10" target="bzwhMvU1NpIFp74mUWRK-35" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="Wqh5jUtsnaBHgISomFF5-10" value="" style="shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" parent="1" vertex="1">
 <mxGeometry x="474" y="889" width="20" height="20" as="geometry" />
 </mxCell>
 </root>
 </mxGraphModel>
 </diagram>
</mxfile>
"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-7ea6e0-1-s-0"><stop offset="0%" style="stop-color: rgb(218, 232, 252); stop-opacity: 1;"/><stop offset="100%" style="stop-color: rgb(126, 166, 224); stop-opacity: 1;"/></linearGradient></defs><g><rect x="20" y="239" width="750" height="589" fill="none" stroke="#2e6caa" pointer-events="none"/><rect x="510" y="239" width="260" height="30" rx="6" ry="6" fill="#008cff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 254px; height: 1px; padding-top: 253px; margin-left: 516px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 17px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 12px;">ObjectSize and Potentially FirstPart Request</font></div></div></div></foreignObject><text x="516" y="258" fill="#ffffff" font-family="Helvetica" font-size="17px">ObjectSize and Potentially Fir...</text></switch></g><path d="M 469 85 L 469 107.5 L 468.64 123.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 468.52 128.88 L 465.18 121.81 L 468.64 123.63 L 472.18 121.96 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="469" cy="45" rx="60" ry="40" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 45px; margin-left: 410px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">User makes a GetObject Request</div></div></div></foreignObject><text x="469" y="49" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">User makes a GetObje...</text></switch></g><path d="M 418.5 180 L 204 180 L 204 246.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 204 251.88 L 200.5 244.88 L 204 246.63 L 207.5 244.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 173px; margin-left: 376px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="376" y="176" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><rect x="650" y="150" width="120" height="60" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Default Request</div></div></div></foreignObject><text x="710" y="184" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">Default Request</text></switch></g><path d="M 364 346.5 L 484 346.5 L 484 410.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 415.88 L 480.5 408.88 L 484 410.63 L 487.5 408.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 336px; margin-left: 378px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="378" y="339" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><path d="M 310 519 L 310 564.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 310 569.88 L 306.5 562.88 L 310 564.63 L 313.5 562.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 527px; margin-left: 325px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="325" y="530" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><path d="M 544 467 L 656 467 L 656 742.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 656 747.88 L 652.5 740.88 L 656 742.63 L 659.5 740.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 473px; margin-left: 520px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="520" y="476" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 460px; margin-left: 551px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="551" y="463" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><path d="M 484 517 L 484 740.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 745.88 L 480.5 738.88 L 484 740.63 L 487.5 738.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 518px; margin-left: 501px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="501" y="521" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 310 683 L 310 740.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 310 745.88 L 306.5 738.88 L 310 740.63 L 313.5 738.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 690px; margin-left: 325px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="325" y="693" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><path d="M 383 627 L 474 627.45 Q 484 627.5 484 637.5 L 484 740.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 745.88 L 480.5 738.88 L 484 740.63 L 487.5 738.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 618px; margin-left: 391px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="391" y="621" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 484 807 L 484 881.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 886.88 L 480.5 879.88 L 484 881.63 L 487.5 879.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="424" y="747" width="120" height="60" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 777px; margin-left: 425px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">HeadObject</div></div></div></foreignObject><text x="484" y="781" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">HeadObject</text></switch></g><path d="M 310 807 L 310 839 Q 310 849 320 849 L 474 849 Q 484 849 484 859 L 484 881.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 886.88 L 480.5 879.88 L 484 881.63 L 487.5 879.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="250" y="747" width="120" height="60" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 777px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">GetObject with partNumber=1</div></div></div></foreignObject><text x="310" y="781" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">GetObject with partN...</text></switch></g><path d="M 177 888 L 477.63 888" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 482.88 888 L 475.88 891.5 L 477.63 888 L 475.88 884.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 879px; margin-left: 184px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="184" y="882" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 249 977 L 249 954 L 719 954 L 719 977" fill="#3c89f7" stroke="#006eaf" stroke-miterlimit="10" pointer-events="all"/><path d="M 249 977 L 249 1154 L 719 1154 L 719 977" fill="none" stroke="#006eaf" stroke-miterlimit="10" pointer-events="none"/><path d="M 249 977 L 719 977" fill="none" stroke="#006eaf" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 468px; height: 1px; padding-top: 966px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Parallel Download All Parts</div></div></div></foreignObject><text x="484" y="969" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Parallel Download All Parts</text></switch></g><path d="M 436.5 1058 L 386.37 1058" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 381.12 1058 L 388.12 1054.5 L 386.37 1058 L 388.12 1061.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1044px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="431" y="1047" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 484 1004 L 531.5 1058 L 484 1112 L 436.5 1058 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 93px; height: 1px; padding-top: 1058px; margin-left: 438px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Has <br />More Parts?</div></div></div></foreignObject><text x="484" y="1062" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Has...</text></switch></g><ellipse cx="483.5" cy="1021.5" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1022px; margin-left: 484px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">6</div></div></div></foreignObject><text x="484" y="1025" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><rect x="584" y="1087" width="120" height="60" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1117px; margin-left: 585px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">GetObject with range of part</div></div></div></foreignObject><text x="644" y="1121" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">GetObject with range...</text></switch></g><path d="M 584 1132 L 484 1132 L 484 1118.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 1113.12 L 487.5 1120.12 L 484 1118.37 L 480.5 1120.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 531.5 1058 L 644 1058 L 644 1080.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 644 1085.88 L 640.5 1078.88 L 644 1080.63 L 647.5 1078.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1043px; margin-left: 548px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="548" y="1046" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><ellipse cx="340" cy="1058" rx="40" ry="27" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 1058px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">End</div></div></div></foreignObject><text x="340" y="1062" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">End</text></switch></g><rect x="0" y="1179" width="740" height="330" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 738px; height: 1px; padding-top: 1344px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 326px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><ol style="font-size: 13px;"><li style=""><font style="font-size: 13px;">If the initial request contains a partNumber, we currently send it as a default request since we have not yet implemented downloading a single part with splitting.</font></li><li style=""><font style="font-size: 13px;">If there was a range header without a startRange, we perform a HeadObject to determine the startRange first; otherwise, we execute a GetObject from the startRange.</font></li><li style=""><font style="font-size: 13px;">If checksum validation is enabled, we validate the checksum for part aligned ranged gets and also have a workaround to validate checksum if the file was uploaded as a single part but is now being downloaded as multipart. This is done using HeadObject or GetObject with partNumber=1.<br /></font></li><li style=""><font style="font-size: 13px;">If the size_hint indicates a small file, we execute GetObject with partNumber=1 to avoid the HeadObject for small files. If the actual part size exceeds our part_size, we cancel the request upon receiving the headers and retrieve the first part again as part of parallelized ranged gets. Otherwise, we perform a HeadObject to discover both the object size and checksum if available.</font></li><li style=""><font style="font-size: 13px;">When we do the first GetObject with range request to discover object size, it can fail if the file is empty. Now that we know the file is empty, we send another GetObject with partNumber=1 request to provide successful response headers to the user. It will succeed if the file is empty, or it will proceed to download the file.<br /></font></li><li style=""><font style="font-size: 13px;">We perform multiple GetObject with range requests in parallel to download the remaining portion of the file once its total size is known.<br /></font></li></ol></div></div></div></foreignObject><text x="2" y="1348" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">If the initial request contains a partNumber, we currently send it as a default request since we have not yet implemented d...</text></switch></g><path d="M 468.5 130 L 518.5 180 L 468.5 230 L 418.5 180 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 180px; margin-left: 420px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Contains <br />partNumber?</div></div></div></foreignObject><text x="469" y="184" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Contains...</text></switch></g><ellipse cx="469.04" cy="148.33" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 148px; margin-left: 469px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">1</div></div></div></foreignObject><text x="469" y="152" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><path d="M 137 848 L 177 888 L 137 928 L 97 888 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 888px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">EmptyFile<br />Error?</div></div></div></foreignObject><text x="137" y="892" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">EmptyFile...</text></switch></g><ellipse cx="135.5" cy="864.5" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 865px; margin-left: 136px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">5</div></div></div></foreignObject><text x="136" y="868" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><path d="M 518.5 180 L 643.63 180" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 648.88 180 L 641.88 183.5 L 643.63 180 L 641.88 176.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 170px; margin-left: 533px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="533" y="173" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><path d="M 20 30 L 20 0 L 183 0 L 183 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 20 30 L 20 90 L 183 90 L 183 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 20 30 L 183 30" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 20 60 L 183 60" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="#4D4D4D" font-family="Helvetica" font-weight="bold" font-size="14px"><text x="25.5" y="17.5">Legend</text></g><rect x="20" y="30" width="163" height="30" fill="#60a917" stroke="none" pointer-events="all"/><path d="M 20 30 M 183 30 M 183 60 M 20 60" fill="none" stroke="#2d7600" stroke-linecap="square" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 147px; height: 1px; padding-top: 45px; margin-left: 32px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Request to S3</div></div></div></foreignObject><text x="32" y="49" fill="#ffffff" font-family="Helvetica" font-size="12px">Request to S3</text></switch></g><rect x="20" y="60" width="163" height="30" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="none" pointer-events="all"/><path d="M 20 60 M 183 60 M 183 90 M 20 90" fill="none" stroke="#6c8ebf" stroke-linecap="square" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 147px; height: 1px; padding-top: 75px; margin-left: 32px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Comment</div></div></div></foreignObject><text x="32" y="79" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Comment</text></switch></g><path d="M 309.5 386 L 309.5 406.5 L 309.84 420.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 309.97 425.88 L 306.3 418.97 L 309.84 420.63 L 313.3 418.8 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 394px; margin-left: 318px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="318" y="397" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 136 809 L 137 841.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 137 846.88 L 133.5 839.88 L 137 841.63 L 140.5 839.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 97 888 L 10 888 L 10 219 L 192.63 219" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 197.88 219 L 190.88 222.5 L 192.63 219 L 190.88 215.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 877px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="91" y="880" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><path d="M 262 473 L 136 473 L 136 742.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 136 747.88 L 132.5 740.88 L 136 742.63 L 139.5 740.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 464px; margin-left: 255px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="255" y="467" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 204 321.5 L 204 469 C 209.2 469 209.2 477 204 477 L 204 477 L 204 792 L 243.63 792" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 248.88 792 L 241.88 795.5 L 243.63 792 L 241.88 788.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 330px; margin-left: 215px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Yes</div></div></div></foreignObject><text x="215" y="333" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Yes</text></switch></g><rect x="76" y="749" width="120" height="60" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 779px; margin-left: 77px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">GetObject with range 0-partSize</div></div></div></foreignObject><text x="136" y="783" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">GetObject with range...</text></switch></g><path d="M 309.5 307 L 364 346.5 L 309.5 386 L 255 346.5 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"><title>Test tooltip
</title></path><g transform="translate(-0.5 -0.5)"><title>Test tooltip
</title><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 107px; height: 1px; padding-top: 347px; margin-left: 256px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Contains<br /> Range<br />Header?</div></div></div></foreignObject><text x="310" y="350" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Contains...</text></switch></g><path d="M 253.93 287.3 L 274 287.3 L 309.5 287 L 309.5 300.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 309.5 305.88 L 306 298.88 L 309.5 300.63 L 313 298.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 262px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">No</div></div></div></foreignObject><text x="262" y="283" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">No</text></switch></g><path d="M 204 253 L 254 287.25 L 204 321.5 L 154 287.25 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"><title>Test tooltip
</title></path><g transform="translate(-0.5 -0.5)"><title>Test tooltip
</title><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 287px; margin-left: 155px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">EmptyFile?</div></div></div></foreignObject><text x="204" y="291" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">EmptyFile?</text></switch></g><ellipse cx="204" cy="266.5" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 267px; margin-left: 204px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">5</div></div></div></foreignObject><text x="204" y="270" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><path d="M 656 809 L 656 839 Q 656 849 646 849 L 494 849 Q 484 849 484 859 L 484 881.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 886.88 L 480.5 879.88 L 484 881.63 L 487.5 879.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="596" y="749" width="120" height="60" fill="#60a917" stroke="#2d7600" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 779px; margin-left: 597px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">GetObject from startRange</div></div></div></foreignObject><text x="656" y="783" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">GetObject from start...</text></switch></g><path d="M 310 571 L 383 627 L 310 683 L 237 627 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 144px; height: 1px; padding-top: 627px; margin-left: 238px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">size_hint_available && <br />size_hint<=part_size</div></div></div></foreignObject><text x="310" y="631" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">size_hint_available &&...</text></switch></g><ellipse cx="310.01" cy="585.03" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 585px; margin-left: 310px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">4</div></div></div></foreignObject><text x="310" y="589" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><path d="M 310 427 L 358 473 L 310 519 L 262 473 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 473px; margin-left: 263px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Validate Checksum?</div></div></div></foreignObject><text x="310" y="477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Validate Checksu...</text></switch></g><ellipse cx="309.9" cy="442.85" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 443px; margin-left: 310px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">3</div></div></div></foreignObject><text x="310" y="446" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><path d="M 484 417 L 544 467 L 484 517 L 424 467 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 467px; margin-left: 425px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Contains <br />Start Range?</div></div></div></foreignObject><text x="484" y="471" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Contains...</text></switch></g><ellipse cx="483.5" cy="432.5" rx="7.5" ry="7.5" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 433px; margin-left: 484px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">2</div></div></div></foreignObject><text x="484" y="436" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><path d="M 484 888 L 484 997.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 484 1002.88 L 480.5 995.88 L 484 997.63 L 487.5 995.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="484" cy="888" rx="3" ry="3" fill="rgb(0, 0, 0)" stroke="none" pointer-events="all"/><rect x="474" y="878" width="20" height="20" fill="none" stroke="none" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|