1
0

Merge dababases coursework

This commit is contained in:
2025-05-03 11:47:16 +03:00
115 changed files with 17067 additions and 1 deletions

2
3/coursework/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.drawio.bkp
other

9
3/coursework/LICENSE Normal file
View File

@ -0,0 +1,9 @@
MIT License
Copyright (c) 2025 Anton Bilous <anton.bilous@nure.ua>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

8
3/coursework/README.md Normal file
View File

@ -0,0 +1,8 @@
# Databases coursework
Program source code is in the [src](src/) directory.
Paper is declared in [typst](https://typst.app/) v0.13, using [this template](https://github.com/linerds/typst_nure_template).
> [!CAUTION]
> The [template.typ](template.typ) file is licensed under GPLv3. Check the [template repo](https://github.com/linerds/typst_nure_template) if you wish to use it.

View File

@ -0,0 +1,173 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" version="26.0.11">
<diagram name="Page-1" id="xRsSjXiDyx2HrTEbfJbS">
<mxGraphModel dx="804" dy="290" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="aeO1vsXZbVWh7k1FALDI-26" value="Користувач" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="130" y="260" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-28" value="База Пакунку" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="320" y="340" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-29" value="Роль Користувача" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="320" y="260" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-30" value="Залежності Пакунку" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="520.0000000000001" y="340" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-31" value="Вид залежності" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="520" y="420" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-32" value="Тип ролі користувача" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="514.3199999999999" y="260" width="140" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-33" value="Відносини пакунку" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="130" y="340" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-34" value="Тип відносин" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="130" y="420" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-35" value="Пакунок" style="swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=85;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;" vertex="1" parent="1">
<mxGeometry x="320" y="420" width="128.64" height="37.62" as="geometry" />
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-36" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-30" target="aeO1vsXZbVWh7k1FALDI-35">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="530" y="460" as="sourcePoint" />
<mxPoint x="180" y="350" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-37" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-36">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-6" y="-29" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-38" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-36">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="12" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-40" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-29" target="aeO1vsXZbVWh7k1FALDI-26">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="544" y="370" as="sourcePoint" />
<mxPoint x="414" y="370" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-41" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-40">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-42" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-40">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="6" y="23" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-44" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-29" target="aeO1vsXZbVWh7k1FALDI-28">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="544" y="500" as="sourcePoint" />
<mxPoint x="414" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-45" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-44">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-46" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-44">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-51" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-35" target="aeO1vsXZbVWh7k1FALDI-28">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="584" y="410" as="sourcePoint" />
<mxPoint x="584" y="338" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-52" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-51">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="30" y="-20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-53" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-51">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-14" y="22" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-54" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-29" target="aeO1vsXZbVWh7k1FALDI-32">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="470" y="350" as="sourcePoint" />
<mxPoint x="578.64" y="532" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-55" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-54">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="26" y="2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-56" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-54">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-16" y="21" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-57" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-33" target="aeO1vsXZbVWh7k1FALDI-35">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="229" y="309" as="sourcePoint" />
<mxPoint x="310" y="309" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-58" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-57">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="31" y="-29" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-59" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-57">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-20" y="11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-62" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-30" target="aeO1vsXZbVWh7k1FALDI-31">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="232" y="310" as="sourcePoint" />
<mxPoint x="180" y="402" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-63" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-62">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-64" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-62">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-65" value="" style="curved=0;startArrow=none;endArrow=none;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="aeO1vsXZbVWh7k1FALDI-33" target="aeO1vsXZbVWh7k1FALDI-34">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
<mxPoint x="244" y="328" as="sourcePoint" />
<mxPoint x="169" y="401" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-66" value="0..n&#xa;" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=right;verticalAlign=top;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-65">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="aeO1vsXZbVWh7k1FALDI-67" value="1" style="edgeLabel;resizable=0;labelBackgroundColor=none;fontSize=12;align=left;verticalAlign=bottom;" vertex="1" parent="aeO1vsXZbVWh7k1FALDI-65">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="6" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,295 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="Q5se_paezd7bh9Hq_2kQ">
<mxGraphModel dx="1687" dy="1067" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TsSuOcFh9R8wNlV-BA49-2" value="Користувач" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="60" y="30" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="TsSuOcFh9R8wNlV-BA49-3" value="Завдання параметрів фільтрації та сортування&lt;div&gt;результатів&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="50" y="110" width="140" height="85" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-20" value="" style="group" parent="1" connectable="0" vertex="1">
<mxGeometry x="249" y="30" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-22" value="" style="group" parent="g8Hk9kY67_a-sykVnxVS-20" connectable="0" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-17" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Пакунки" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="g8Hk9kY67_a-sykVnxVS-22" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-19" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" parent="g8Hk9kY67_a-sykVnxVS-22" vertex="1">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-18" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="g8Hk9kY67_a-sykVnxVS-22" source="g8Hk9kY67_a-sykVnxVS-17" target="g8Hk9kY67_a-sykVnxVS-17" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-36" value="" style="group" parent="1" connectable="0" vertex="1">
<mxGeometry x="250" y="165" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-37" value="" style="group" parent="g8Hk9kY67_a-sykVnxVS-36" connectable="0" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-38" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp;&amp;nbsp; Користувачі" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="g8Hk9kY67_a-sykVnxVS-37" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-39" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" parent="g8Hk9kY67_a-sykVnxVS-37" vertex="1">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-40" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="g8Hk9kY67_a-sykVnxVS-37" source="g8Hk9kY67_a-sykVnxVS-38" target="g8Hk9kY67_a-sykVnxVS-38" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-46" value="" style="group" parent="1" connectable="0" vertex="1">
<mxGeometry x="249" y="225" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-47" value="" style="group" parent="g8Hk9kY67_a-sykVnxVS-46" connectable="0" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-48" value="&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ролі&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp;&amp;nbsp; користувачей&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="g8Hk9kY67_a-sykVnxVS-47" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-49" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" parent="g8Hk9kY67_a-sykVnxVS-47" vertex="1">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-50" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="g8Hk9kY67_a-sykVnxVS-47" source="g8Hk9kY67_a-sykVnxVS-48" target="g8Hk9kY67_a-sykVnxVS-48" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-64" value="&lt;div&gt;Вибір пакунку&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="49" y="280" width="142" height="40" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-76" value="" style="group" parent="1" connectable="0" vertex="1">
<mxGeometry x="249" y="90" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-77" value="" style="group" parent="g8Hk9kY67_a-sykVnxVS-76" connectable="0" vertex="1">
<mxGeometry x="2" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-78" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp;Бази&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;пакунків&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="g8Hk9kY67_a-sykVnxVS-77" vertex="1">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-79" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" parent="g8Hk9kY67_a-sykVnxVS-77" vertex="1">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-80" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="g8Hk9kY67_a-sykVnxVS-77" source="g8Hk9kY67_a-sykVnxVS-78" target="g8Hk9kY67_a-sykVnxVS-78" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-87" value="Формування звіту та завантаження" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="50" y="420" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-89" value="" style="group" parent="1" connectable="0" vertex="1">
<mxGeometry x="20" y="680" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="xkRWYsoNMHkY_TOU-Azu-11" value="Перегляд інформацї про пакунок" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="50" y="340" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="43nrA4cYu7d4_LjxyBvL-1" target="TsSuOcFh9R8wNlV-BA49-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-20" y="60" as="targetPoint" />
<Array as="points">
<mxPoint x="30" y="530" />
<mxPoint x="30" y="60" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-1" value="Звіт" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="61" y="500" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="g8Hk9kY67_a-sykVnxVS-28" value="&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;Пошук пакунку&lt;/span&gt;&lt;/div&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="55" y="220" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-5" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="g8Hk9kY67_a-sykVnxVS-19">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="190" y="240" as="sourcePoint" />
<mxPoint x="220" y="60" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-6" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="195.5" as="sourcePoint" />
<mxPoint x="220" y="195.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-7" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="249.5" as="sourcePoint" />
<mxPoint x="220" y="249.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-8" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="119" as="sourcePoint" />
<mxPoint x="220" y="119" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-10" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="250" as="sourcePoint" />
<mxPoint x="220" y="60" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-15" value="" style="group" connectable="0" vertex="1" parent="1">
<mxGeometry x="248" y="440" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-16" value="" style="group" connectable="0" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-15">
<mxGeometry x="2" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-17" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; &amp;nbsp; Залежності&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;пакунку&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-16">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-18" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-16">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-19" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="43nrA4cYu7d4_LjxyBvL-16" source="43nrA4cYu7d4_LjxyBvL-17" target="43nrA4cYu7d4_LjxyBvL-17">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-20" value="" style="group" connectable="0" vertex="1" parent="1">
<mxGeometry x="247" y="310" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-21" value="" style="group" connectable="0" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-20">
<mxGeometry x="2" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-22" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; &amp;nbsp; Відносини&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;пакунку&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-21">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-23" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-21">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-24" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="43nrA4cYu7d4_LjxyBvL-21" source="43nrA4cYu7d4_LjxyBvL-22" target="43nrA4cYu7d4_LjxyBvL-22">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-25" value="" style="group" connectable="0" vertex="1" parent="1">
<mxGeometry x="248" y="500" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-26" value="" style="group" connectable="0" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-25">
<mxGeometry x="2" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-27" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Типи&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; &amp;nbsp;залежності" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-26">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-28" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-26">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-29" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="43nrA4cYu7d4_LjxyBvL-26" source="43nrA4cYu7d4_LjxyBvL-27" target="43nrA4cYu7d4_LjxyBvL-27">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-30" value="" style="group" connectable="0" vertex="1" parent="1">
<mxGeometry x="247" y="370" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-31" value="" style="group" connectable="0" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-30">
<mxGeometry x="2" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-32" value="&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;Типи&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; &amp;nbsp;відносин" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-31">
<mxGeometry width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-33" value="D" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;points=[[0,0,0,0,0],[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[1,0,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0],[1,1,0,0,0]];" vertex="1" parent="43nrA4cYu7d4_LjxyBvL-31">
<mxGeometry width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-34" value="" style="endArrow=none;html=1;rounded=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="43nrA4cYu7d4_LjxyBvL-31" source="43nrA4cYu7d4_LjxyBvL-32" target="43nrA4cYu7d4_LjxyBvL-32">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="10" y="90" as="sourcePoint" />
<mxPoint x="60" y="15" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-48" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="g8Hk9kY67_a-sykVnxVS-28">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="239.5" as="sourcePoint" />
<mxPoint x="190" y="239.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-50" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="249" y="340" as="sourcePoint" />
<mxPoint x="220" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-51" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="475.5" as="sourcePoint" />
<mxPoint x="220" y="475.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-52" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="529.5" as="sourcePoint" />
<mxPoint x="220" y="529.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-53" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="250" y="399" as="sourcePoint" />
<mxPoint x="220" y="399" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-54" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="530" as="sourcePoint" />
<mxPoint x="220" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-55" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="220" y="369.5" as="sourcePoint" />
<mxPoint x="190" y="370" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-57" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="xkRWYsoNMHkY_TOU-Azu-11" target="g8Hk9kY67_a-sykVnxVS-87">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="340" as="sourcePoint" />
<mxPoint x="170" y="290" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-59" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="480" as="sourcePoint" />
<mxPoint x="120" y="500" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-60" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="320" as="sourcePoint" />
<mxPoint x="120" y="340" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-61" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="260" as="sourcePoint" />
<mxPoint x="120" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-62" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.498;exitY=0.984;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="119.72000000000003" y="194.64" as="sourcePoint" />
<mxPoint x="120" y="221" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="43nrA4cYu7d4_LjxyBvL-63" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="90" as="sourcePoint" />
<mxPoint x="120" y="110" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,357 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="1195" dy="2456" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-31" value="Пакунок" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="530" y="-1432" width="160" height="248" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-32" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-33" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-32" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-34" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-35" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-36" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-37" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-38" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="108" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-39" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-55" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="134" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-56" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-55" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-57" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="160" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-58" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-57" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-59" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="186" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-60" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-59" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-61" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="212" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-62" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-61" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-40" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="238" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-40" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-70" value="Користувач" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="730" y="-1560" width="150" height="220" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-71" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="26" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-72" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-71" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-73" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="56" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-74" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-73" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="82" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="108" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="134" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="160" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="186" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="212" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-116" value="Тип ролі" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="320" y="-1560" width="160" height="118" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-117" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-118" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-117" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-119" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-120" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-119" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="108" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-140" value="Тип залежності" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="720" y="-1140" width="160" height="92" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-141" value="Тип залежності id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-140" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-142" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-141" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-143" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-140" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-144" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-143" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-147" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-140" vertex="1">
<mxGeometry y="82" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-148" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-147" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-150" value="Тип відношення" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="530" y="-1140" width="160" height="92" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-151" value="Тип відношення id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-150" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-152" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-151" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-153" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-150" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-154" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-153" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-155" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-150" vertex="1">
<mxGeometry y="82" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-156" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-155" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-157" value="База пакунку" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="320" y="-1410" width="160" height="170" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-158" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-159" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-158" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-160" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-161" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-160" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="108" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="134" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-168" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="160" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-169" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-168" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-170" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;" parent="1" source="TstbxcchZz1pR3d-lyST-162" target="TstbxcchZz1pR3d-lyST-55" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-171" value="Залежність" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="730" y="-1330" width="150" height="180" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-172" value="Залежність id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="26" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-173" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-172" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-174" value="Архітектура" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="56" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-175" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-174" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-184" value="Умова" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="82" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-185" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-184" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-176" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="108" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-177" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-176" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-178" value="Назва залежного пакунку" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="134" width="150" height="46" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-179" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-178" vertex="1" connectable="0">
<mxGeometry width="30" height="46" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-188" value="Відношення" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="320" y="-1202" width="160" height="154" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-189" value="Відношення id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-190" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-189" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-191" value="Архітектура" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-192" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-191" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-193" value="Умова" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-194" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-193" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-197" value="Назва пакунку з яким є відношення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="108" width="160" height="46" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-198" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-197" vertex="1" connectable="0">
<mxGeometry width="30" height="46" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-206" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-193" target="TstbxcchZz1pR3d-lyST-61" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="530" y="-1240" as="targetPoint" />
<Array as="points">
<mxPoint x="510" y="-1107" />
<mxPoint x="510" y="-1207" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-207" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" source="TstbxcchZz1pR3d-lyST-197" target="TstbxcchZz1pR3d-lyST-153" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" source="TstbxcchZz1pR3d-lyST-178" target="TstbxcchZz1pR3d-lyST-143" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="700" y="-1183" />
<mxPoint x="700" y="-1071" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-210" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.012;entryY=0.419;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;" parent="1" source="TstbxcchZz1pR3d-lyST-57" target="TstbxcchZz1pR3d-lyST-184" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-212" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="PkgUqFx-XmgoDWfw4lMe-12" target="TstbxcchZz1pR3d-lyST-119" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="530" y="-1490" as="sourcePoint" />
<mxPoint x="490" y="-1460" as="targetPoint" />
<Array as="points">
<mxPoint x="500" y="-1491" />
<mxPoint x="500" y="-1471" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="Роль" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="530" y="-1560" width="160" height="82" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-2" value="Роль id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-3" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-2" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-12" value="&lt;div&gt;Коментар&lt;/div&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-13" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-12" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="PkgUqFx-XmgoDWfw4lMe-12" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="480" y="-1340" as="sourcePoint" />
<mxPoint x="520" y="-1450" as="targetPoint" />
<Array as="points">
<mxPoint x="510" y="-1340" />
<mxPoint x="510" y="-1491" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="PkgUqFx-XmgoDWfw4lMe-12" target="TstbxcchZz1pR3d-lyST-77" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="740" y="-1470" as="targetPoint" />
<mxPoint x="690" y="-1513" as="sourcePoint" />
<Array as="points">
<mxPoint x="710" y="-1491" />
<mxPoint x="710" y="-1439" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,407 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="1434" dy="2607" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-31" value="Packages" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="480" y="-1349" width="160" height="274" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-32" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-33" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-32" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-34" value="base" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-35" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-36" value="name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-37" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-38" value="version" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="108" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-39" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-55" value="description" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="134" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-56" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-55" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-57" value="url" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="160" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-58" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-57" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-59" value="flagged_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="186" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-60" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-59" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-61" value="created_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="212" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-62" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-61" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-47" value="updated_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="238" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-48" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-47" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-40" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="264" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-40" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-70" value="Users" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="270" y="-1639" width="150" height="220" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-71" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="26" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-72" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-71" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-31" value="name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="56" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-32" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-31" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-33" value="email" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="82" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-34" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-33" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-35" value="password" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="108" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-36" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-35" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-37" value="last_used" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="134" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-38" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-37" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-39" value="created_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="160" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-40" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-39" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-41" value="updated_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="186" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-42" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-41" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="212" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-116" value="PackageBaseRoles" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="480" y="-1510" width="160" height="118" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-117" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-118" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-117" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-119" value="name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-120" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-119" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="description" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="108" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-129" value="PackageBaseUserRoles" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14" parent="1" vertex="1">
<mxGeometry x="270" y="-1399" width="160" height="142" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-130" value="user" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=60;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-129" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-131" value="PK,FK1" style="shape=partialRectangle;fontStyle=1;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-130" vertex="1" connectable="0">
<mxGeometry width="56" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-138" value="role" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=60;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-129" vertex="1">
<mxGeometry y="56" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-139" value="PK,FK2" style="shape=partialRectangle;fontStyle=1;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-138" vertex="1" connectable="0">
<mxGeometry width="56" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-132" value="base" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=60;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-129" vertex="1">
<mxGeometry y="86" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-133" value="PK,FK3" style="shape=partialRectangle;fontStyle=1;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-132" vertex="1" connectable="0">
<mxGeometry width="56" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-134" value="comment" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=60;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-129" vertex="1">
<mxGeometry y="116" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-135" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-134" vertex="1" connectable="0">
<mxGeometry width="56" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-140" value="DependencyTypes" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="480" y="-1639" width="160" height="92" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-141" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-140" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-142" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-141" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-143" value="name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-140" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-144" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-143" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-147" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-140" vertex="1">
<mxGeometry y="82" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-148" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-147" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-150" value="RelationTypes" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="720" y="-1399" width="160" height="92" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-151" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-150" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-152" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-151" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-153" value="name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-150" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-154" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-153" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-155" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-150" vertex="1">
<mxGeometry y="82" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-156" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-155" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-157" value="PackageBases" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="270" y="-1245" width="160" height="170" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-158" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-159" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-158" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-160" value="name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-161" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-160" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="description" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="created_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="108" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="updated_at" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="134" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-168" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="160" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-169" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-168" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-170" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-158" target="TstbxcchZz1pR3d-lyST-34" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="450" y="-1219" as="sourcePoint" />
<Array as="points">
<mxPoint x="460" y="-1204" />
<mxPoint x="460" y="-1280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-171" value="PackageDependencies" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="680" y="-1646" width="200" height="220" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-172" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="26" width="200" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-173" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-172" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-184" value="arch" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="56" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-185" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-184" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-23" value="requirement" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="82" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-24" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-23" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-176" value="description" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="108" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-177" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-176" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-29" value="dependency_type" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="134" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-30" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-29" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-174" value="package" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="160" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-175" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-174" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-178" value="dependency_package_name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-171" vertex="1">
<mxGeometry y="186" width="200" height="34" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-179" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-178" vertex="1" connectable="0">
<mxGeometry width="30" height="34" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-188" value="&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); font-size: 12px; text-wrap: wrap;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;PackageRelations&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="700" y="-1275" width="180" height="200" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-189" value="id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="26" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-190" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-189" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-197" value="relation_type" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="56" width="180" height="32" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-198" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-197" vertex="1" connectable="0">
<mxGeometry width="30" height="31.999999999999996" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-193" value="package" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="88" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-194" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-193" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-191" value="arch" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="114" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-192" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-191" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-1" value="requirement" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="140" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-2" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-1" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-3" value="relation_package_name" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-188" vertex="1">
<mxGeometry y="170" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="j6MDIjJCqvpe9HdPzyI4-4" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="j6MDIjJCqvpe9HdPzyI4-3" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-203" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-132" target="TstbxcchZz1pR3d-lyST-158" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="450" y="-1298" />
<mxPoint x="450" y="-1204" />
</Array>
<mxPoint x="180" y="-1299" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-204" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;entryX=1.004;entryY=0.627;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="TstbxcchZz1pR3d-lyST-71" target="TstbxcchZz1pR3d-lyST-130" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-206" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-193" target="TstbxcchZz1pR3d-lyST-32" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="670" y="-1174" />
<mxPoint x="670" y="-1308" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-207" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-197" target="TstbxcchZz1pR3d-lyST-151" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="680" y="-1203" />
<mxPoint x="680" y="-1358" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="j6MDIjJCqvpe9HdPzyI4-29" target="TstbxcchZz1pR3d-lyST-141" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-1499" />
<mxPoint x="660" y="-1578" />
</Array>
<mxPoint x="1120" y="-1239" as="sourcePoint" />
<mxPoint x="680" y="-989" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-210" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-32" target="TstbxcchZz1pR3d-lyST-174" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="720" y="-1136" as="targetPoint" />
<Array as="points">
<mxPoint x="660" y="-1308" />
<mxPoint x="660" y="-1473" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-212" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-138" target="TstbxcchZz1pR3d-lyST-117" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="460" y="-1328" />
<mxPoint x="460" y="-1438" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,246 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="478" dy="2002" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-31" value="Пакунок" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="550" y="-897" width="160" height="248" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-32" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-33" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-32" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-34" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-35" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-36" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-37" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-38" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="108" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-39" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-55" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="134" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-56" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-55" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-57" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="160" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-58" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-57" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-59" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="186" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-60" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-59" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-61" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="212" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-62" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-61" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-40" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-31" vertex="1">
<mxGeometry y="238" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-40" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-70" value="Користувач" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="765" y="-869" width="150" height="220" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-71" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="26" width="150" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-72" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-71" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-73" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="56" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-74" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-73" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="82" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="108" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="134" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="160" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="186" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="212" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-116" value="Тип ролі" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="755" y="-1110" width="160" height="118" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-117" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-118" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-117" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-119" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-120" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-119" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="108" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-157" value="База пакунку" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="550" y="-1110" width="160" height="170" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-158" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-159" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-158" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-160" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-161" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-160" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="82" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="108" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="134" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-168" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="160" width="160" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-169" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-168" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-170" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;exitX=0.688;exitY=1.029;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="TstbxcchZz1pR3d-lyST-168" target="TstbxcchZz1pR3d-lyST-31" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="630" y="-941" as="sourcePoint" />
<Array as="points">
<mxPoint x="660" y="-920" />
<mxPoint x="630" y="-920" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-212" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.007;entryY=0.148;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="PkgUqFx-XmgoDWfw4lMe-1" target="TstbxcchZz1pR3d-lyST-121" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="480" y="-841" as="sourcePoint" />
<Array as="points">
<mxPoint x="835" y="-980" />
<mxPoint x="740" y="-980" />
<mxPoint x="740" y="-1024" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="Роль" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="755" y="-960" width="160" height="82" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-2" value="Роль id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=1;html=1;align=left;verticalAlign=middle;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=5;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-3" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-2" vertex="1" connectable="0">
<mxGeometry width="30" height="30" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="56" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=ERmandOne;startFill=0;endArrow=ERzeroToMany;endFill=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="TstbxcchZz1pR3d-lyST-160" target="PkgUqFx-XmgoDWfw4lMe-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="439.9999999999998" y="-704.9655172413793" as="targetPoint" />
<Array as="points">
<mxPoint x="730" y="-1041" />
<mxPoint x="730" y="-919" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="PkgUqFx-XmgoDWfw4lMe-10" target="TstbxcchZz1pR3d-lyST-73" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="760" y="-800" as="targetPoint" />
<Array as="points">
<mxPoint x="730" y="-891" />
<mxPoint x="730" y="-800" />
</Array>
<mxPoint x="439.52" y="-709.4980000000003" as="sourcePoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,270 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="819" dy="2218" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-70" value="Користувач" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="440" y="-1140" width="150" height="216" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-73" value="&lt;b&gt;Користувач id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-74" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-73" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-46" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-47" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-46" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="208" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-116" value="Тип ролі" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="670" y="-950" width="150" height="114" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-119" value="&lt;b&gt;Тип ролі&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-120" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-119" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-42" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-43" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-42" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="104" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-157" value="База пакунку" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="670" y="-806" width="150" height="166" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-160" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-161" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-160" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="okuSX89Ro8Y6cY_jQ_8G-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-40" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="156" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-40" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="Роль" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="670" y="-1140" width="150" height="166" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="&lt;b&gt;Роль id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-40" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-40" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-37" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-38" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-39" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-34" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-35" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-44" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="156" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-45" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-44" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="Пакунок" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="440" y="-910" width="150" height="270" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-14" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-15" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-14" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-16" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-17" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-16" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-18" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-19" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-18" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-20" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-21" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-20" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-22" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-23" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-22" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-24" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-25" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-24" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-26" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-27" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-26" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-28" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="208" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-29" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-28" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-32" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="234" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-33" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-32" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-30" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="260" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-30" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="ICTwy9OZ2GXdnIRym0L8-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" edge="1" parent="1" source="abOVGPFW28QzTePHPfqQ-32" target="TstbxcchZz1pR3d-lyST-160">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="620" y="-663" />
<mxPoint x="620" y="-767" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ICTwy9OZ2GXdnIRym0L8-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=ERzeroToMany;startFill=0;endArrow=ERmandOne;endFill=0;" edge="1" parent="1" source="abOVGPFW28QzTePHPfqQ-34" target="TstbxcchZz1pR3d-lyST-119">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="640" y="-997" />
<mxPoint x="640" y="-911" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ICTwy9OZ2GXdnIRym0L8-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" edge="1" parent="1" source="abOVGPFW28QzTePHPfqQ-36" target="TstbxcchZz1pR3d-lyST-73">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="620" y="-1049" />
<mxPoint x="620" y="-1101" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ICTwy9OZ2GXdnIRym0L8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.001;entryY=0.077;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=ERzeroToMany;startFill=0;endArrow=ERmandOne;endFill=0;" edge="1" parent="1" source="abOVGPFW28QzTePHPfqQ-38" target="TstbxcchZz1pR3d-lyST-160">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="620" y="-1023" />
<mxPoint x="620" y="-778" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,442 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="1195" dy="2436" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-70" value="Користувач" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="440" y="-1140" width="150" height="216" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-73" value="&lt;b&gt;Користувач id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-74" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-73" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-46" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="TstbxcchZz1pR3d-lyST-70">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-47" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-46">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="208" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-116" value="Тип ролі" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="670" y="-950" width="150" height="114" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-119" value="&lt;b&gt;Тип ролі&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-120" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-119" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-42" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="TstbxcchZz1pR3d-lyST-116">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-43" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-42">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="104" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-157" value="База пакунку" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="670" y="-806" width="150" height="166" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-160" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-161" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-160" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="okuSX89Ro8Y6cY_jQ_8G-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-40" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-157" vertex="1">
<mxGeometry y="156" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-40" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="Роль" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="670" y="-1140" width="150" height="166" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="&lt;b&gt;Роль id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-40" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-40">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-34" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-35" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-34">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-37" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-36">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-38" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-39" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-38">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-44" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
<mxGeometry y="156" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-45" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-44">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="Пакунок" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" vertex="1" parent="1">
<mxGeometry x="440" y="-910" width="150" height="270" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-14" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-15" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-14">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-16" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-17" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-16">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-18" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-19" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-18">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-20" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-21" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-20">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-22" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-23" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-22">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-24" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-25" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-24">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-26" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-27" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-26">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-28" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="208" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-29" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-28">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-32" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="234" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-33" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-32">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-66" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-40" y="250" as="sourcePoint" />
<mxPoint y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-30" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
<mxGeometry y="260" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="abOVGPFW28QzTePHPfqQ-30">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-49" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="440" y="-1100" as="sourcePoint" />
<mxPoint x="400" y="-1100" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-50" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-1074" as="sourcePoint" />
<mxPoint x="440" y="-1074" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-51" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-1048" as="sourcePoint" />
<mxPoint x="440" y="-1048" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-53" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-1021" as="sourcePoint" />
<mxPoint x="440" y="-1021" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-54" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-994" as="sourcePoint" />
<mxPoint x="440" y="-994" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-55" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-967" as="sourcePoint" />
<mxPoint x="440" y="-967" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-56" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-940" as="sourcePoint" />
<mxPoint x="440" y="-940" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-57" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-940" as="sourcePoint" />
<mxPoint x="400" y="-1100" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-58" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="440" y="-870" as="sourcePoint" />
<mxPoint x="400" y="-870" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-59" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-844" as="sourcePoint" />
<mxPoint x="440" y="-844" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-60" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-818" as="sourcePoint" />
<mxPoint x="440" y="-818" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-61" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-791" as="sourcePoint" />
<mxPoint x="440" y="-791" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-62" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-764" as="sourcePoint" />
<mxPoint x="440" y="-764" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-63" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-737" as="sourcePoint" />
<mxPoint x="440" y="-737" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-64" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-710" as="sourcePoint" />
<mxPoint x="440" y="-710" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-65" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-660" as="sourcePoint" />
<mxPoint x="400" y="-870" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-67" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="-687" as="sourcePoint" />
<mxPoint x="440" y="-687" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-68" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="670" y="-1100" as="sourcePoint" />
<mxPoint x="630" y="-1100" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-69" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-1074" as="sourcePoint" />
<mxPoint x="670" y="-1074" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-70" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-1048" as="sourcePoint" />
<mxPoint x="670" y="-1048" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-71" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-1021" as="sourcePoint" />
<mxPoint x="670" y="-1021" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-72" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-992" as="sourcePoint" />
<mxPoint x="670" y="-992" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-75" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-991" as="sourcePoint" />
<mxPoint x="630" y="-1101" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-76" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="670" y="-910" as="sourcePoint" />
<mxPoint x="630" y="-910" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-77" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-884" as="sourcePoint" />
<mxPoint x="670" y="-884" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-78" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-861" as="sourcePoint" />
<mxPoint x="670" y="-861" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-81" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-860" as="sourcePoint" />
<mxPoint x="630" y="-911" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-82" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="670" y="-766" as="sourcePoint" />
<mxPoint x="630" y="-766" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-83" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-740" as="sourcePoint" />
<mxPoint x="670" y="-740" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-84" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-714" as="sourcePoint" />
<mxPoint x="670" y="-714" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-85" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-687" as="sourcePoint" />
<mxPoint x="670" y="-687" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-86" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-658" as="sourcePoint" />
<mxPoint x="670" y="-658" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-87" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="630" y="-657" as="sourcePoint" />
<mxPoint x="630" y="-767" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,202 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="989" dy="2326" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="510" y="-1620" width="150" height="724" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="&lt;span&gt;Роль id&lt;/span&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=0" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-40" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-40" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-44" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="78" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-45" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-44" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-38" value="&lt;span style=&quot;&quot;&gt;Пакунок id&lt;/span&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=0" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="88" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-39" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-16" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="114" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-17" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-16" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-18" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="140" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-19" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-18" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-20" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="166" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-21" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-20" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-22" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="192" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-23" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-22" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-24" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="218" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-25" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-24" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-26" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="244" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-27" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-26" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-28" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="270" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-29" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-28" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-30" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="296" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-30" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-1" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="306" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-2" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="VLBbV8p_sqR4Kir-txfg-1" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="332" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="okuSX89Ro8Y6cY_jQ_8G-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="358" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="384" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="410" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="436" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-34" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="446" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-35" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-42" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="472" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-43" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-42" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="498" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-5" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="524" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-6" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="-Q3yDpWV8JF3GJ1VOMCk-5" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="534" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-37" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-46" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="560" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-47" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-46" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="586" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="612" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="638" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="664" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="690" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="716" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,583 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="989" dy="2326" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T1" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="340" y="-1530" width="150" height="506" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="&lt;b&gt;Роль id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-40" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-40" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-44" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="78" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-45" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-44" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-38" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="88" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-39" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="114" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="okuSX89Ro8Y6cY_jQ_8G-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="140" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="166" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="192" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="218" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-34" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="228" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-35" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-42" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="254" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-43" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-42" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="280" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-5" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="306" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-6" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="-Q3yDpWV8JF3GJ1VOMCk-5" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="316" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-37" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-46" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="342" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-47" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-46" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="368" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="394" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="420" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="446" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="472" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="498" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="T2" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="600" y="-1467" width="150" height="384" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-14" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-15" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-14" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-16" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-17" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-16" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-18" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-19" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-18" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-20" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-21" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-20" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-22" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-23" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-22" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-24" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-25" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-24" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-26" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-27" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-26" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-28" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="208" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-29" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-28" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-30" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="234" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-30" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-32" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="244" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-33" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-32" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-66" value="" style="endArrow=classic;html=1;rounded=0;" parent="abOVGPFW28QzTePHPfqQ-1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-40" y="258" as="sourcePoint" />
<mxPoint y="258" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="270" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-6" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="296" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-7" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-6" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-8" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="322" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-9" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-8" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-10" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="348" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-11" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-12" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="374" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-13" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-12" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-49" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="-1201" as="sourcePoint" />
<mxPoint x="530" y="-1201" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-50" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1175" as="sourcePoint" />
<mxPoint x="490" y="-1175" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-51" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1149" as="sourcePoint" />
<mxPoint x="490" y="-1149" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-53" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1122" as="sourcePoint" />
<mxPoint x="490" y="-1122" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-54" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1095" as="sourcePoint" />
<mxPoint x="490" y="-1095" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-55" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1068" as="sourcePoint" />
<mxPoint x="490" y="-1068" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-56" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1041" as="sourcePoint" />
<mxPoint x="490" y="-1041" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-57" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1201" as="sourcePoint" />
<mxPoint x="530" y="-1041" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-58" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="-1427" as="sourcePoint" />
<mxPoint x="560" y="-1427" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-59" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1401" as="sourcePoint" />
<mxPoint x="600" y="-1401" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-60" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1375" as="sourcePoint" />
<mxPoint x="600" y="-1375" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-61" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1348" as="sourcePoint" />
<mxPoint x="600" y="-1348" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-62" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1321" as="sourcePoint" />
<mxPoint x="600" y="-1321" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-63" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1294" as="sourcePoint" />
<mxPoint x="600" y="-1294" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-64" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1267" as="sourcePoint" />
<mxPoint x="600" y="-1267" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-65" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1217" as="sourcePoint" />
<mxPoint x="560" y="-1427" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-67" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1244" as="sourcePoint" />
<mxPoint x="600" y="-1244" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-68" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="-1490" as="sourcePoint" />
<mxPoint x="300" y="-1490" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-69" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1464" as="sourcePoint" />
<mxPoint x="340" y="-1464" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-70" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1429" as="sourcePoint" />
<mxPoint x="340" y="-1429" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-71" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1402" as="sourcePoint" />
<mxPoint x="340" y="-1402" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-75" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1040" as="sourcePoint" />
<mxPoint x="300" y="-1491" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-82" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1374" as="sourcePoint" />
<mxPoint x="340" y="-1374" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-83" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1350" as="sourcePoint" />
<mxPoint x="340" y="-1350" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-84" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1324" as="sourcePoint" />
<mxPoint x="340" y="-1324" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-85" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1287" as="sourcePoint" />
<mxPoint x="340" y="-1287" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-86" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1262" as="sourcePoint" />
<mxPoint x="340" y="-1262" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1183" as="sourcePoint" />
<mxPoint x="600" y="-1183" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1157" as="sourcePoint" />
<mxPoint x="600" y="-1157" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1130" as="sourcePoint" />
<mxPoint x="600" y="-1130" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1101" as="sourcePoint" />
<mxPoint x="600" y="-1101" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-19" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="560" y="-1100" as="sourcePoint" />
<mxPoint x="560" y="-1227" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="-1431" as="sourcePoint" />
<mxPoint x="530" y="-1431" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-22" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1404" as="sourcePoint" />
<mxPoint x="490" y="-1404" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-23" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1378" as="sourcePoint" />
<mxPoint x="490" y="-1378" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-24" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1351" as="sourcePoint" />
<mxPoint x="490" y="-1351" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-25" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1321" as="sourcePoint" />
<mxPoint x="490" y="-1321" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-26" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1321" as="sourcePoint" />
<mxPoint x="530" y="-1431" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-27" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="751" y="-1209" as="sourcePoint" />
<mxPoint x="791" y="-1209" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-28" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="791" y="-1182" as="sourcePoint" />
<mxPoint x="751" y="-1182" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-29" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="791" y="-1156" as="sourcePoint" />
<mxPoint x="751" y="-1156" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-30" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="791" y="-1129" as="sourcePoint" />
<mxPoint x="751" y="-1129" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-31" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="791" y="-1099" as="sourcePoint" />
<mxPoint x="751" y="-1099" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-32" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="791" y="-1099" as="sourcePoint" />
<mxPoint x="791" y="-1209" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-7" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="-1288" as="sourcePoint" />
<mxPoint x="530" y="-1288" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-8" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1262" as="sourcePoint" />
<mxPoint x="490" y="-1262" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-9" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1239" as="sourcePoint" />
<mxPoint x="490" y="-1239" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-10" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="530" y="-1238" as="sourcePoint" />
<mxPoint x="530" y="-1289" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-11" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1200" as="sourcePoint" />
<mxPoint x="340" y="-1200" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-12" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1236" as="sourcePoint" />
<mxPoint x="340" y="-1236" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-14" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1149" as="sourcePoint" />
<mxPoint x="340" y="-1149" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1122" as="sourcePoint" />
<mxPoint x="340" y="-1122" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1095" as="sourcePoint" />
<mxPoint x="340" y="-1095" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1068" as="sourcePoint" />
<mxPoint x="340" y="-1068" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1040" as="sourcePoint" />
<mxPoint x="340" y="-1040" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-19" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="300" y="-1175" as="sourcePoint" />
<mxPoint x="340" y="-1175" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,553 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="819" dy="2218" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-70" value="Користувач" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="720" y="-742" width="150" height="216" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-73" value="&lt;b&gt;Користувач id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-74" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-73" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-46" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-47" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-46" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-70" vertex="1">
<mxGeometry y="208" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-116" value="Тип ролі" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="450" y="-1040" width="150" height="114" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-119" value="&lt;b&gt;Тип ролі&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-120" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="TstbxcchZz1pR3d-lyST-119" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-42" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-43" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-42" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="TstbxcchZz1pR3d-lyST-116" vertex="1">
<mxGeometry y="104" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T3" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="680" y="-1040" width="150" height="280" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="&lt;b&gt;Роль id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-40" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-40" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-34" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-35" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-37" value="FK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-44" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="130" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-45" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-44" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-38" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="140" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-39" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="166" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="okuSX89Ro8Y6cY_jQ_8G-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="192" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="218" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="244" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="T2" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="450" y="-910" width="150" height="384" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-14" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-15" value="PK" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-14" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-16" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-17" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-16" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-18" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="78" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-19" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-18" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-20" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="104" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-21" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-20" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-22" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="130" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-23" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-22" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-24" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="156" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-25" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-24" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-26" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="182" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-27" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-26" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-28" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="208" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-29" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-28" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-30" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="234" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-30" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-32" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="244" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-33" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-32" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-66" value="" style="endArrow=classic;html=1;rounded=0;" parent="abOVGPFW28QzTePHPfqQ-1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-40" y="258" as="sourcePoint" />
<mxPoint y="258" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="270" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-6" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="296" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-7" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-6" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-8" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="322" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-9" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-8" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-10" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="348" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-11" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-12" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
<mxGeometry y="374" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-13" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-12" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-49" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="720" y="-702" as="sourcePoint" />
<mxPoint x="680" y="-702" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-50" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-676" as="sourcePoint" />
<mxPoint x="720" y="-676" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-51" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-650" as="sourcePoint" />
<mxPoint x="720" y="-650" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-53" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-623" as="sourcePoint" />
<mxPoint x="720" y="-623" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-54" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-596" as="sourcePoint" />
<mxPoint x="720" y="-596" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-55" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-569" as="sourcePoint" />
<mxPoint x="720" y="-569" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-56" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-542" as="sourcePoint" />
<mxPoint x="720" y="-542" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-57" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-542" as="sourcePoint" />
<mxPoint x="680" y="-702" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-58" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="-870" as="sourcePoint" />
<mxPoint x="410" y="-870" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-59" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-844" as="sourcePoint" />
<mxPoint x="450" y="-844" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-60" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-818" as="sourcePoint" />
<mxPoint x="450" y="-818" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-61" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-791" as="sourcePoint" />
<mxPoint x="450" y="-791" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-62" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-764" as="sourcePoint" />
<mxPoint x="450" y="-764" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-63" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-737" as="sourcePoint" />
<mxPoint x="450" y="-737" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-64" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-710" as="sourcePoint" />
<mxPoint x="450" y="-710" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-65" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-660" as="sourcePoint" />
<mxPoint x="410" y="-870" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-67" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-687" as="sourcePoint" />
<mxPoint x="450" y="-687" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-68" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="680" y="-1000" as="sourcePoint" />
<mxPoint x="640" y="-1000" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-69" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-974" as="sourcePoint" />
<mxPoint x="680" y="-974" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-70" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-948" as="sourcePoint" />
<mxPoint x="680" y="-948" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-71" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-921" as="sourcePoint" />
<mxPoint x="680" y="-921" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-75" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-891" as="sourcePoint" />
<mxPoint x="640" y="-1001" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-76" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="-1000" as="sourcePoint" />
<mxPoint x="410" y="-1000" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-77" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-974" as="sourcePoint" />
<mxPoint x="450" y="-974" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-78" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-951" as="sourcePoint" />
<mxPoint x="450" y="-951" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-81" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-950" as="sourcePoint" />
<mxPoint x="410" y="-1001" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-82" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-887" as="sourcePoint" />
<mxPoint x="680" y="-887" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-83" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-861" as="sourcePoint" />
<mxPoint x="680" y="-861" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-84" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-835" as="sourcePoint" />
<mxPoint x="680" y="-835" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-85" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-808" as="sourcePoint" />
<mxPoint x="680" y="-808" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-86" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-779" as="sourcePoint" />
<mxPoint x="680" y="-779" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-87" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="-778" as="sourcePoint" />
<mxPoint x="640" y="-910" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-626" as="sourcePoint" />
<mxPoint x="450" y="-626" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-600" as="sourcePoint" />
<mxPoint x="450" y="-600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-573" as="sourcePoint" />
<mxPoint x="450" y="-573" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-544" as="sourcePoint" />
<mxPoint x="450" y="-544" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-19" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="-543" as="sourcePoint" />
<mxPoint x="410" y="-670" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="830" y="-888" as="sourcePoint" />
<mxPoint x="870" y="-888" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-22" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="870" y="-861" as="sourcePoint" />
<mxPoint x="830" y="-861" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-23" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="870" y="-835" as="sourcePoint" />
<mxPoint x="830" y="-835" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-24" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="870" y="-808" as="sourcePoint" />
<mxPoint x="830" y="-808" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-25" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="870" y="-778" as="sourcePoint" />
<mxPoint x="830" y="-778" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-26" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="870" y="-778" as="sourcePoint" />
<mxPoint x="870" y="-888" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-27" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="601" y="-652" as="sourcePoint" />
<mxPoint x="641" y="-652" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-28" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="641" y="-625" as="sourcePoint" />
<mxPoint x="601" y="-625" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-29" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="641" y="-599" as="sourcePoint" />
<mxPoint x="601" y="-599" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-30" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="641" y="-572" as="sourcePoint" />
<mxPoint x="601" y="-572" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-31" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="641" y="-542" as="sourcePoint" />
<mxPoint x="601" y="-542" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-32" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="641" y="-542" as="sourcePoint" />
<mxPoint x="641" y="-652" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,622 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
<mxGraphModel dx="1434" dy="2607" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="TstbxcchZz1pR3d-lyST-208" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=ERmandOne;endFill=0;startArrow=ERzeroToMany;startFill=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="-483" />
<mxPoint x="660" y="-371" />
</Array>
<mxPoint x="680" y="-371" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
<mxGeometry x="510" y="-1620" width="150" height="724" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="&lt;b&gt;Роль id&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="26" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="PkgUqFx-XmgoDWfw4lMe-11" value="&lt;b&gt;PK&lt;/b&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="PkgUqFx-XmgoDWfw4lMe-10" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-40" value="Коментар" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="52" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-41" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-40" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-44" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="78" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-45" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-44" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-38" value="&lt;span style=&quot;font-weight: 700;&quot;&gt;Пакунок id&lt;/span&gt;" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="88" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-39" value="&lt;span style=&quot;font-weight: 700;&quot;&gt;PK&lt;/span&gt;" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-38" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-16" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="114" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-17" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-16" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-18" value="Версія" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="140" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-19" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-18" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-20" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="166" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-21" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-20" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-22" value="Веб-покликання" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="192" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-23" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-22" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-24" value="Дата позначення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="218" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-25" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-24" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-26" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="244" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-27" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-26" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-28" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="270" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-29" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-28" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-30" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="296" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-30" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-1" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="306" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-2" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="VLBbV8p_sqR4Kir-txfg-1" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="332" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="okuSX89Ro8Y6cY_jQ_8G-4" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-162" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="358" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-163" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-162" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-164" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="384" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-165" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-164" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-166" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="410" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-127" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="436" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-128" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-127" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-34" value="Тип ролі id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="446" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-35" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-34" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-42" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="472" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-43" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-42" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-121" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="498" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-5" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="524" width="150" height="10" as="geometry" />
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-6" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="-Q3yDpWV8JF3GJ1VOMCk-5" vertex="1" connectable="0">
<mxGeometry width="30" height="10" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="534" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-37" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-36" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-46" value="Ім&#39;я" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="560" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-47" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-46" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-75" value="Електронна пошта" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="586" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-76" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-75" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-77" value="Пароль" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="612" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-78" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-77" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-79" value="Дата&amp;nbsp; логіну" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="638" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-80" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-79" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-81" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="664" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-82" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-81" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-93" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="690" width="150" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-94" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-93" vertex="1" connectable="0">
<mxGeometry width="30" height="26" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-114" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
<mxGeometry y="716" width="150" height="8" as="geometry" />
</mxCell>
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
<mxGeometry width="30" height="8" as="geometry" />
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-49" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="710" y="-1073" as="sourcePoint" />
<mxPoint x="750" y="-1073" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-50" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1047" as="sourcePoint" />
<mxPoint x="710" y="-1047" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-51" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1021" as="sourcePoint" />
<mxPoint x="710" y="-1021" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-53" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-994" as="sourcePoint" />
<mxPoint x="710" y="-994" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-54" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-967" as="sourcePoint" />
<mxPoint x="710" y="-967" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-55" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-940" as="sourcePoint" />
<mxPoint x="710" y="-940" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-56" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-920" as="sourcePoint" />
<mxPoint x="710" y="-920" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-57" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1073" as="sourcePoint" />
<mxPoint x="750" y="-920" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-58" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="510" y="-1519" as="sourcePoint" />
<mxPoint x="470" y="-1519" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-59" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1493" as="sourcePoint" />
<mxPoint x="510" y="-1493" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-60" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1467" as="sourcePoint" />
<mxPoint x="510" y="-1467" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-61" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1440" as="sourcePoint" />
<mxPoint x="510" y="-1440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-62" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1413" as="sourcePoint" />
<mxPoint x="510" y="-1413" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-63" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1386" as="sourcePoint" />
<mxPoint x="510" y="-1386" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-64" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1359" as="sourcePoint" />
<mxPoint x="510" y="-1359" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-67" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1336" as="sourcePoint" />
<mxPoint x="510" y="-1336" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-68" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="510" y="-1580" as="sourcePoint" />
<mxPoint x="470" y="-1580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-69" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1554" as="sourcePoint" />
<mxPoint x="510" y="-1554" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-75" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-919" as="sourcePoint" />
<mxPoint x="470" y="-1580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-85" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1159" as="sourcePoint" />
<mxPoint x="510" y="-1159" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="abOVGPFW28QzTePHPfqQ-86" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1134" as="sourcePoint" />
<mxPoint x="510" y="-1134" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1275" as="sourcePoint" />
<mxPoint x="510" y="-1275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1249" as="sourcePoint" />
<mxPoint x="510" y="-1249" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1222" as="sourcePoint" />
<mxPoint x="510" y="-1222" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="37LQwTKnvuf_VbudVwVU-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1193" as="sourcePoint" />
<mxPoint x="510" y="-1193" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-7" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="710" y="-1156" as="sourcePoint" />
<mxPoint x="750" y="-1156" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-8" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1130" as="sourcePoint" />
<mxPoint x="710" y="-1130" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-9" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1107" as="sourcePoint" />
<mxPoint x="710" y="-1107" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-10" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1106" as="sourcePoint" />
<mxPoint x="750" y="-1157" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-11" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1072" as="sourcePoint" />
<mxPoint x="510" y="-1072" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-12" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1108" as="sourcePoint" />
<mxPoint x="510" y="-1108" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-14" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1021" as="sourcePoint" />
<mxPoint x="510" y="-1021" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-994" as="sourcePoint" />
<mxPoint x="510" y="-994" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-967" as="sourcePoint" />
<mxPoint x="510" y="-967" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-940" as="sourcePoint" />
<mxPoint x="510" y="-940" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-919" as="sourcePoint" />
<mxPoint x="510" y="-919" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-19" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1047" as="sourcePoint" />
<mxPoint x="510" y="-1047" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-11" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="470" y="-1299" as="sourcePoint" />
<mxPoint x="510" y="-1299" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-20" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="660" y="-1580" as="sourcePoint" />
<mxPoint x="700" y="-1580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1554" as="sourcePoint" />
<mxPoint x="660" y="-1554" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-22" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1275" as="sourcePoint" />
<mxPoint x="660" y="-1275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-23" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1249" as="sourcePoint" />
<mxPoint x="660" y="-1249" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-24" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1222" as="sourcePoint" />
<mxPoint x="660" y="-1222" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-25" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1191" as="sourcePoint" />
<mxPoint x="660" y="-1191" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-26" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1299" as="sourcePoint" />
<mxPoint x="660" y="-1299" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-27" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="710" y="-1519" as="sourcePoint" />
<mxPoint x="750" y="-1519" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-28" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1493" as="sourcePoint" />
<mxPoint x="710" y="-1493" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-29" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1467" as="sourcePoint" />
<mxPoint x="710" y="-1467" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-30" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1440" as="sourcePoint" />
<mxPoint x="710" y="-1440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-31" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1413" as="sourcePoint" />
<mxPoint x="710" y="-1413" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-32" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1386" as="sourcePoint" />
<mxPoint x="710" y="-1386" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-33" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1359" as="sourcePoint" />
<mxPoint x="710" y="-1359" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-34" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1336" as="sourcePoint" />
<mxPoint x="710" y="-1336" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-37" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1275" as="sourcePoint" />
<mxPoint x="710" y="-1275" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-38" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1249" as="sourcePoint" />
<mxPoint x="710" y="-1249" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-39" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1222" as="sourcePoint" />
<mxPoint x="710" y="-1222" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-40" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1191" as="sourcePoint" />
<mxPoint x="710" y="-1191" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-41" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1299" as="sourcePoint" />
<mxPoint x="710" y="-1299" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-42" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-920" as="sourcePoint" />
<mxPoint x="700" y="-1580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-43" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="750" y="-1190" as="sourcePoint" />
<mxPoint x="750" y="-1520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-44" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1073" as="sourcePoint" />
<mxPoint x="660" y="-1073" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-45" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1047" as="sourcePoint" />
<mxPoint x="660" y="-1047" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-46" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1021" as="sourcePoint" />
<mxPoint x="660" y="-1021" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-47" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-994" as="sourcePoint" />
<mxPoint x="660" y="-994" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-48" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-967" as="sourcePoint" />
<mxPoint x="660" y="-967" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-49" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-940" as="sourcePoint" />
<mxPoint x="660" y="-940" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-50" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-920" as="sourcePoint" />
<mxPoint x="660" y="-920" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-52" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1156" as="sourcePoint" />
<mxPoint x="660" y="-1156" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-53" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1130" as="sourcePoint" />
<mxPoint x="660" y="-1130" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="VLBbV8p_sqR4Kir-txfg-54" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="700" y="-1107" as="sourcePoint" />
<mxPoint x="660" y="-1107" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,718 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
<diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">
<mxGraphModel dx="1602" dy="1659" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="fWsHJvBSsPRKD1qfUvCc-1" value="Будь-який&amp;nbsp;&lt;div&gt;К&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ористувач&lt;/span&gt;&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="-775" y="-800" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-7" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Логін&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-750" y="-889.5" width="60" height="31" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-8" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Реєстрація&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-730" y="-856" width="70" height="33" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-13" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук пакунків&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-650" y="-887" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-14" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.406;entryY=0.957;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="fWsHJvBSsPRKD1qfUvCc-13" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-740" y="-790" as="sourcePoint" />
<mxPoint x="-320" y="-990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-34" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;користувача&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-610" y="-715" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-35" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-395" y="-625" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-36" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;бази пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-540" y="-670" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-40" value="Автентифікований&amp;nbsp;&lt;div&gt;К&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ористувач&lt;/span&gt;&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="-775" y="-504" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="fWsHJvBSsPRKD1qfUvCc-42" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Відкриття&lt;br&gt;веб-покликання на ресурс пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-240" y="-810" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-6" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за покликанням&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-200" y="-868" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-7" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за назвою&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-400" y="-900" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-8" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за назвою бази&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-120" y="-970" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-9" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за описом&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-300" y="-868" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-11" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Властивості пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-290" y="-960" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-15" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.247;entryY=0.94;entryDx=0;entryDy=0;exitX=0.937;exitY=0.215;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-7" target="V5Ab3TWy5OOZFwxnvpL4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-430" y="-900" as="sourcePoint" />
<mxPoint x="-400" y="-932" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-23" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-15" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-17" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-9" target="V5Ab3TWy5OOZFwxnvpL4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-294" y="-855" as="sourcePoint" />
<mxPoint x="-228" y="-909" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-24" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-17" vertex="1" connectable="0">
<mxGeometry x="-0.0655" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-18" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.819;entryY=0.912;entryDx=0;entryDy=0;exitX=0.393;exitY=0.032;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-6" target="V5Ab3TWy5OOZFwxnvpL4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-205" y="-858" as="sourcePoint" />
<mxPoint x="-205" y="-906" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-25" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-18" vertex="1" connectable="0">
<mxGeometry x="0.0256" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-20" value="" style="endArrow=classic;html=1;rounded=0;entryX=1.025;entryY=0.61;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-8" target="V5Ab3TWy5OOZFwxnvpL4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-131" y="-848" as="sourcePoint" />
<mxPoint x="-176" y="-911" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-33" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-20" vertex="1" connectable="0">
<mxGeometry x="0.0148" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-21" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за користувачем&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-280" y="-1030" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-27" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.994;entryY=0.618;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-11" target="V5Ab3TWy5OOZFwxnvpL4-65" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-294" y="-855" as="sourcePoint" />
<mxPoint x="-310" y="-970" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-28" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-27" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint y="-2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-29" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-21" target="V5Ab3TWy5OOZFwxnvpL4-65" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-430" y="-900" as="sourcePoint" />
<mxPoint x="-350" y="-1000" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-35" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-29" vertex="1" connectable="0">
<mxGeometry x="-0.0981" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-36" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за ім&#39;ям меінтейнера&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-270" y="-1114" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-37" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за ім&#39;ям помітчика&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-170" y="-1090" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-38" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за ім&#39;ям завантажувача&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-140" y="-1028" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-39" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за ім&#39;ям пакувальника&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-370" y="-1110" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-40" value="" style="endArrow=none;html=1;rounded=0;entryX=0.751;entryY=0.978;entryDx=0;entryDy=0;exitX=0.223;exitY=0.077;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;startFill=1;startArrow=classic;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-21" target="V5Ab3TWy5OOZFwxnvpL4-39" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-230" y="-932" as="sourcePoint" />
<mxPoint x="-310" y="-932" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-41" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-40" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint y="-2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-42" value="" style="endArrow=none;html=1;rounded=0;entryX=0.57;entryY=0.994;entryDx=0;entryDy=0;entryPerimeter=0;startFill=1;startArrow=classic;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-21" target="V5Ab3TWy5OOZFwxnvpL4-36" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-230" y="-1022" as="sourcePoint" />
<mxPoint x="-210" y="-1060" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-43" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-42" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint y="-2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-44" value="" style="endArrow=none;html=1;rounded=0;entryX=0.237;entryY=0.917;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.969;exitY=0.228;exitDx=0;exitDy=0;exitPerimeter=0;startFill=1;startArrow=classic;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-21" target="V5Ab3TWy5OOZFwxnvpL4-37" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-196" y="-1026" as="sourcePoint" />
<mxPoint x="-186" y="-1057" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-45" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-44" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint y="-2" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-46" value="" style="endArrow=none;html=1;rounded=0;exitX=0.961;exitY=0.681;exitDx=0;exitDy=0;exitPerimeter=0;startFill=1;startArrow=classic;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-21" target="V5Ab3TWy5OOZFwxnvpL4-38" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-163" y="-1014" as="sourcePoint" />
<mxPoint x="-128" y="-1036" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-47" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-46" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint x="5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-48" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Пошук за описом&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-size: 10px;&quot;&gt;бази&lt;/span&gt;&lt;/div&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-130" y="-908" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-52" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.927;entryY=0.773;entryDx=0;entryDy=0;exitX=0;exitY=0.346;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-48" target="V5Ab3TWy5OOZFwxnvpL4-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-21" y="-920" as="sourcePoint" />
<mxPoint x="-138" y="-926" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-53" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-52" vertex="1" connectable="0">
<mxGeometry x="0.0148" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-54" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Вибір режиму сортування&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-530" y="-1012" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-55" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Сортування за назвою пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-580" y="-1102" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-56" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Сортування за версією пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-400" y="-1050" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-57" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Сортування за назвою бази&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-476.5" y="-1102" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-58" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Сортування за часом створення&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-690" y="-1102" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-59" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Сортування за часом оновлення&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-690" y="-1048" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-65" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Вибір режиму пошуку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-450" y="-970" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-66" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.003;entryY=0.589;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-13" target="V5Ab3TWy5OOZFwxnvpL4-65" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-690" y="-840" as="sourcePoint" />
<mxPoint x="-630" y="-864" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-67" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-66" vertex="1" connectable="0">
<mxGeometry x="-0.1232" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-68" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.326;entryY=0.993;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.778;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-13" target="V5Ab3TWy5OOZFwxnvpL4-54" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-570" y="-901" as="sourcePoint" />
<mxPoint x="-570" y="-950" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-69" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-68" vertex="1" connectable="0">
<mxGeometry x="-0.1232" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-70" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.241;entryY=0.09;entryDx=0;entryDy=0;exitX=0.702;exitY=0.984;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-55" target="V5Ab3TWy5OOZFwxnvpL4-54" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-761.5" y="-1419" as="sourcePoint" />
<mxPoint x="-675.5" y="-1473" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-71" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-70" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-72" value="" style="endArrow=classic;html=1;rounded=0;entryX=-0.004;entryY=0.34;entryDx=0;entryDy=0;exitX=0.983;exitY=0.731;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-58" target="V5Ab3TWy5OOZFwxnvpL4-54" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-754.5" y="-1322" as="sourcePoint" />
<mxPoint x="-797.5" y="-1322" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-73" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-72" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-74" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.552;entryY=-0.035;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.369;exitY=0.955;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-57" target="V5Ab3TWy5OOZFwxnvpL4-54" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-807.5" y="-1204" as="sourcePoint" />
<mxPoint x="-810.5" y="-1304" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-75" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-74" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-76" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.963;entryY=0.33;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-56" target="V5Ab3TWy5OOZFwxnvpL4-54" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-827.5" y="-1201" as="sourcePoint" />
<mxPoint x="-857.5" y="-1306" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-77" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-76" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-78" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.002;entryY=0.599;entryDx=0;entryDy=0;exitX=1.005;exitY=0.634;exitDx=0;exitDy=0;entryPerimeter=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-59" target="V5Ab3TWy5OOZFwxnvpL4-54" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-817.5" y="-1173" as="sourcePoint" />
<mxPoint x="-842.5" y="-1296" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-79" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-78" vertex="1" connectable="0">
<mxGeometry x="-0.0793" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-82" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Введення тексту для пошуку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-750" y="-1004" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-83" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.797;entryY=0.909;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-13" target="V5Ab3TWy5OOZFwxnvpL4-82" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-546" y="-877" as="sourcePoint" />
<mxPoint x="-453" y="-910" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-84" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-83" vertex="1" connectable="0">
<mxGeometry x="-0.1232" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-85" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Вибір строгості пошуку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-650" y="-990" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-86" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.315;entryY=0.953;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-13" target="V5Ab3TWy5OOZFwxnvpL4-85" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-546" y="-877" as="sourcePoint" />
<mxPoint x="-453" y="-910" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-87" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-86" vertex="1" connectable="0">
<mxGeometry x="-0.1232" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-88" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Вибір ліміту кількості результатів&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-520" y="-904" width="110" height="56" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-91" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.057;entryY=0.769;entryDx=0;entryDy=0;exitX=1.007;exitY=0.627;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-13" target="V5Ab3TWy5OOZFwxnvpL4-88" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-602" y="-842" as="sourcePoint" />
<mxPoint x="-576" y="-817" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-92" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-91" vertex="1" connectable="0">
<mxGeometry x="-0.1232" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-93" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Вибір порядку сортування&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-790" y="-952" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-95" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.111;exitY=0.192;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-13" target="V5Ab3TWy5OOZFwxnvpL4-93" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-620" y="-890" as="sourcePoint" />
<mxPoint x="-612" y="-930" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-96" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-95" vertex="1" connectable="0">
<mxGeometry x="-0.1232" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-97" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Перегляд статистики репозиторію&amp;nbsp;&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-580" y="-845" width="130" height="45" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-99" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Перегляд інформації про пакунок&amp;nbsp;&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-430" y="-840" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-100" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Перегляд інформації про користувача&amp;nbsp;&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-680" y="-775" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-103" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" target="V5Ab3TWy5OOZFwxnvpL4-99" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-730" y="-770" as="sourcePoint" />
<mxPoint x="-310.0000000000059" y="-710" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-106" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="V5Ab3TWy5OOZFwxnvpL4-100" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-730" y="-750" as="sourcePoint" />
<mxPoint x="-679" y="-807" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-107" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Перегляд інформації про базу пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-520" y="-780" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-108" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.997;exitY=0.652;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-107" target="V5Ab3TWy5OOZFwxnvpL4-99" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-686" y="-779" as="sourcePoint" />
<mxPoint x="-631" y="-718" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-109" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-108" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint x="6" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-110" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.99;entryY=0.381;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-107" target="V5Ab3TWy5OOZFwxnvpL4-100" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-510" y="-760" as="sourcePoint" />
<mxPoint x="-500" y="-780" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-111" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-110" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-112" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="V5Ab3TWy5OOZFwxnvpL4-97" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-730" y="-780" as="sourcePoint" />
<mxPoint x="-581" y="-725" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-113" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.006;exitY=0.564;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-42" target="V5Ab3TWy5OOZFwxnvpL4-99" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-320" y="-760" as="sourcePoint" />
<mxPoint x="-469" y="-767" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-114" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-113" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-120" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-760" y="-700" as="sourcePoint" />
<mxPoint x="-760" y="-510" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-123" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.02;entryY=0.74;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="fWsHJvBSsPRKD1qfUvCc-7" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-760" y="-810" as="sourcePoint" />
<mxPoint x="-603" y="-827" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-124" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.029;entryY=0.736;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="fWsHJvBSsPRKD1qfUvCc-8" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-750" y="-800" as="sourcePoint" />
<mxPoint x="-739" y="-857" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-126" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;даних&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-720" y="-636" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-127" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Додаваня&lt;br&gt;даних&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-720" y="-560" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-129" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.637;entryY=0.056;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-34" target="V5Ab3TWy5OOZFwxnvpL4-126" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-480" y="-590" as="sourcePoint" />
<mxPoint x="-190" y="-700" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-130" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-129" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-131" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;ролей користувачів&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-370" y="-740" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-132" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;залежностей пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-250" y="-737.5" width="100" height="55" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-133" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Редагування&lt;br&gt;відносин пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-210" y="-670" width="100" height="55" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-134" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=-0.022;exitY=0.427;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-131" target="fWsHJvBSsPRKD1qfUvCc-34" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-500" y="-594" as="sourcePoint" />
<mxPoint x="-600" y="-594" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-135" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-134" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-136" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.965;entryY=0.259;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-131" target="fWsHJvBSsPRKD1qfUvCc-36" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-412" y="-634" as="sourcePoint" />
<mxPoint x="-440" y="-581" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-137" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-136" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-138" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.247;entryY=0.077;entryDx=0;entryDy=0;exitX=0.989;exitY=0.699;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-36" target="fWsHJvBSsPRKD1qfUvCc-35" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-348" y="-597" as="sourcePoint" />
<mxPoint x="-365" y="-555" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-139" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-138" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-142" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-36" target="V5Ab3TWy5OOZFwxnvpL4-126" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-530" y="-581" as="sourcePoint" />
<mxPoint x="-585" y="-529" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-143" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-142" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-144" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.917;entryY=0.809;entryDx=0;entryDy=0;exitX=0.092;exitY=0.822;exitDx=0;exitDy=0;entryPerimeter=0;exitPerimeter=0;" parent="1" source="fWsHJvBSsPRKD1qfUvCc-35" target="V5Ab3TWy5OOZFwxnvpL4-126" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-421" y="-542" as="sourcePoint" />
<mxPoint x="-585" y="-529" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-145" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-144" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-146" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;" parent="1" target="V5Ab3TWy5OOZFwxnvpL4-126" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-740" y="-510" as="sourcePoint" />
<mxPoint x="-718" y="-762" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-147" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.638;entryY=0.022;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-132" target="fWsHJvBSsPRKD1qfUvCc-35" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-338" y="-607" as="sourcePoint" />
<mxPoint x="-453" y="-587" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-148" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-147" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-149" value="" style="endArrow=classic;html=1;rounded=0;entryX=1.013;entryY=0.616;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=1;exitDx=0;exitDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-133" target="fWsHJvBSsPRKD1qfUvCc-35" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-255" y="-614" as="sourcePoint" />
<mxPoint x="-316" y="-579" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-150" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-149" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-152" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Створення&lt;br&gt;пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-560" y="-573" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-153" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Створення&lt;br&gt;бази пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-630" y="-485" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-154" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Призначення ролей користувачам&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-460" y="-521" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-155" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Створення&lt;br&gt;залежностей пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-220" y="-521" width="100" height="55" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-156" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Створення&lt;br&gt;відносин пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-235" y="-590" width="100" height="55" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-157" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.06;entryY=0.831;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="V5Ab3TWy5OOZFwxnvpL4-127" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-740" y="-490" as="sourcePoint" />
<mxPoint x="-690" y="-549" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-158" value="" style="endArrow=classic;html=1;rounded=0;exitX=-0.016;exitY=0.401;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.956;entryY=0.305;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-152" target="V5Ab3TWy5OOZFwxnvpL4-127" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-540" y="-574" as="sourcePoint" />
<mxPoint x="-580" y="-480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-159" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-158" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-160" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.946;entryY=0.783;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-153" target="V5Ab3TWy5OOZFwxnvpL4-127" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-540" y="-574" as="sourcePoint" />
<mxPoint x="-600" y="-549" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-161" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-160" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-162" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0.583;exitY=0.02;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-153" target="V5Ab3TWy5OOZFwxnvpL4-152" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-470" y="-470" as="sourcePoint" />
<mxPoint x="-436" y="-493" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-163" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-162" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint x="6" y="-5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-164" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-154" target="V5Ab3TWy5OOZFwxnvpL4-153" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-230" y="-560" as="sourcePoint" />
<mxPoint x="-309" y="-558" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-165" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-164" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-166" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.07;exitY=0.243;exitDx=0;exitDy=0;entryX=0.957;entryY=0.602;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-155" target="V5Ab3TWy5OOZFwxnvpL4-152" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-135" y="-611" as="sourcePoint" />
<mxPoint x="-300" y="-460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-167" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-166" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-168" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0.005;exitY=0.471;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-156" target="V5Ab3TWy5OOZFwxnvpL4-152" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-240" y="-565" as="sourcePoint" />
<mxPoint x="-340" y="-480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-169" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-168" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-172" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.024;entryY=0.292;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="V5Ab3TWy5OOZFwxnvpL4-174" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-740" y="-470" as="sourcePoint" />
<mxPoint x="-674.3299999999999" y="-435.78" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-174" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Видалення&lt;br&gt;даних&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-680" y="-420" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-175" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Видалення&lt;br&gt;пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-530" y="-450" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-176" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Видалення бази пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-540" y="-368" width="90" height="52" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-177" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Видалення ролей користувачів&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-300" y="-376" width="110" height="60" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-178" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Видалення&lt;br&gt;залежностей пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-386.5" y="-423" width="100" height="55" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-179" value="&lt;span style=&quot;font-size: 10px;&quot;&gt;Видалення&lt;br&gt;відносин пакунку&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-320" y="-485" width="100" height="55" as="geometry" />
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-180" value="" style="endArrow=classic;html=1;rounded=0;exitX=-0.016;exitY=0.401;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.928;entryY=0.252;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-175" target="V5Ab3TWy5OOZFwxnvpL4-174" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-530" y="-379" as="sourcePoint" />
<mxPoint x="-570" y="-285" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-181" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-180" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-182" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.946;entryY=0.783;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-176" target="V5Ab3TWy5OOZFwxnvpL4-174" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-530" y="-379" as="sourcePoint" />
<mxPoint x="-590" y="-354" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-183" value="extend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-182" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-184" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.782;entryY=0.922;entryDx=0;entryDy=0;exitX=0.574;exitY=-0.007;exitDx=0;exitDy=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-176" target="V5Ab3TWy5OOZFwxnvpL4-175" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-440" y="-350" as="sourcePoint" />
<mxPoint x="-480" y="-380" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-185" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-184" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-186" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-176" target="V5Ab3TWy5OOZFwxnvpL4-177" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-299" y="-363" as="sourcePoint" />
<mxPoint x="-220" y="-365" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-187" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-186" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-188" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-175" target="V5Ab3TWy5OOZFwxnvpL4-178" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-290" y="-265" as="sourcePoint" />
<mxPoint x="-125" y="-416" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-189" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-188" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-190" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="V5Ab3TWy5OOZFwxnvpL4-175" target="V5Ab3TWy5OOZFwxnvpL4-179" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-330" y="-285" as="sourcePoint" />
<mxPoint x="-256" y="-342" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V5Ab3TWy5OOZFwxnvpL4-191" value="include" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="V5Ab3TWy5OOZFwxnvpL4-190" vertex="1" connectable="0">
<mxGeometry x="-0.2026" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

216
3/coursework/bibl.yml Normal file
View File

@ -0,0 +1,216 @@
# ===== RESULT ==== #
repo:
type: Web
title: repo
author: Білоус А. А.
url:
value: https://gitea.linerds.us/0x1D8/repo
date: 2025-02-10
# ===== RUST ==== #
rust:
type: Web
title: Rust Programming Language
author: Rust Programming Language
url:
value: https://www.rust-lang.org
date: 2025-02-09
iced:
type: Web
title: iced - A cross-platform GUI library for Rust
author: iced - A cross-platform GUI library for Rust
url:
value: https://iced.rs
date: 2025-02-09
sqlx:
type: Web
title: "GitHub - launchbadge/sqlx: The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite"
author: GitHub
url:
value: https://github.com/launchbadge/sqlx
date: 2025-02-09
# ===== HOWTO ==== #
halloy:
type: Web
title: Halloy
author: Halloy
url:
value: https://halloy.squidowl.org
date: 2025-02-09
iced-guide:
type: Web
title: Introduction - Unofficial Iced Guide
author: GitHub Pages
url:
value: https://jl710.github.io/iced-guide
date: 2025-02-09
iced-editor:
type: Web
title: Building a simple text editor with iced, a cross-platform GUI library for Rust
author: iced-rs
publisher: YouTube
url:
value: https://www.youtube.com/watch?v=gcBJ7cPSALo
date: 2025-02-09
normalization:
type: Web
title: Database Normalization Normal Forms 1nf 2nf 3nf Table Examples
author: Kolade Chris
url:
value: https://www.freecodecamp.org/news/database-normalization-1nf-2nf-3nf-table-examples
date: 2025-02-09
# ===== DESIGN ==== #
elm:
type: Web
title: Elm - delightful language for reliable web applications.
author: Elm - delightful language for reliable web applications.
url:
value: https://elm-lang.org
date: 2025-02-11
# Richard Feldman. Making Impossible States Impossible, 2016. YouTube. URL: https://www.youtube.com/watch?v=IcgmSRJHu_8 (date of access: 09.02.2025).
elm-conf:
type: Web
title: Making Impossible States Impossible, 2016
author: Richard Feldman
publisher: YouTube
url:
value: https://www.youtube.com/watch?v=IcgmSRJHu_8
date: 2025-02-09
# can't use wiki for some reason
# hexagonal:
# type: Web
# title: Гексагональна архітектура (програмування) — Вікіпедія
# author: Учасники проектів Вікімедіа
# publisher: Вікіпедія
# url:
# value: https://uk.wikipedia.org/wiki/%D0%93%D0%B5%D0%BA%D1%81%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0_%D0%B0%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)
# date: 2025-02-11
hexagonal:
type: Web
title: How to apply hexagonal architecture to Rust
author: Josip Benko-Đaković
publisher: Barrage
url:
value: https://www.barrage.net/blog/technology/how-to-apply-hexagonal-architecture-to-rust
date: 2025-02-09
state-machines:
type: Web
title: Pretty State Machine Patterns in Rust
author: Hoverbear
url:
value: https://hoverbear.org/blog/rust-state-machine-pattern
date: 2025-02-09
# ===== I use Arch btw ==== #
aurweb:
type: Web
title: Arch Linux / aurweb · GitLab
author: GitLab
url:
value: https://gitlab.archlinux.org/archlinux/aurweb
date: 2025-02-06
aur:
type: Web
title: AUR (en) - Home
author: AUR (en) - Home
url:
value: https://aur.archlinux.org
date: 2025-02-06
aur-search:
type: Web
title: AUR (en) - Packages
author: AUR (en) - Home
url:
value: https://aur.archlinux.org/packages?O=0&K=librewolf
date: 2025-02-06
aur-package:
type: Web
title: AUR (en) - librewolf-bin
author: AUR (en) - Home
url:
value: https://aur.archlinux.org/packages/librewolf-bin
date: 2025-02-06
aur-user:
type: Web
title: AUR (en) - Account lsf
author: AUR (en) - Home
url:
value: https://aur.archlinux.org/account/lsf
date: 2025-02-06
aur-search-func:
type: Web
title: AUR (en) - Packages
author: AUR (en) - Home
url:
value: https://aur.archlinux.org/account/lsf
date: 2025-02-06
archlinux: # I use Arch btw!
type: Web
title: Arch Linux
author: Arch Linux
url:
value: https://archlinux.org
date: 2025-02-09
# ===== TOOLS ==== #
argon2:
type: Web
title: "GitHub - P-H-C/phc-winner-argon2: The password hash Argon2, winner of PHC"
author: GitHub
url:
value: https://github.com/P-H-C/phc-winner-argon2
date: 2025-02-09
neovim:
type: Web
title: Neovim
author: Neovim
url:
value: https://neovim.io
date: 2025-02-09
mysql:
type: Web
title: MySQL
author: MySQL
url:
value: https://www.mysql.com
date: 2025-02-09
docker:
type: Web
title: "Docker: accelerated container application development"
author: Docker
url:
value: https://www.docker.com
date: 2025-02-09
compose:
type: Web
title: Docker compose
author: Docker Documentation
url:
value: https://docs.docker.com/compose
date: 2025-02-09

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

BIN
3/coursework/main.pdf Normal file

Binary file not shown.

1698
3/coursework/main.typ Normal file

File diff suppressed because it is too large Load Diff

2
3/coursework/src/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target/
/**/scrapyard/

5381
3/coursework/src/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
[package]
name = "repo"
version = "0.1.0"
edition = "2024"
[dependencies]
data = { path = "data" }
service = { path = "service" }
iced = { version = "0.13.1", features = ["tokio", "lazy"] }
strum = { version = "0.27.0", features = ["derive"] }
open = "5.3.2"
[workspace]
resolver = "2"
members = ["data", "service"]

View File

@ -0,0 +1,20 @@
# Stuff that helped
* Architecture:
- [How to apply hexagonal architecture to Rust](https://www.barrage.net/blog/technology/how-to-apply-hexagonal-architecture-to-rust)
- [Implementing onion architecture using Rust](https://mathias-vandaele.dev/implementing-onion-architecture-using-rust)
* Design:
- [Rust Data Modelling Without Classes](https://www.youtube.com/watch?v=z-0-bbc80JM)
- ["Making Impossible States Impossible" by Richard Feldman](https://www.youtube.com/watch?v=IcgmSRJHu_8)
- [Pretty State Machine Patterns in Rust](https://hoverbear.org/blog/rust-state-machine-pattern/)
* How to Iced:
- [Building a simple text editor with iced, a cross-platform GUI library for Rust](https://www.youtube.com/watch?v=gcBJ7cPSALo)
- [Unofficial Iced Guide](https://jl710.github.io/iced-guide/)
- [icebreaker](https://github.com/hecrj/icebreaker)
- [Halloy](https://github.com/squidowl/halloy)
---
> _The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise._
_Edsger W. Dijkstra_

View File

@ -0,0 +1,11 @@
services:
database:
image: mysql:9.0
restart: unless-stopped
ports:
- "127.0.0.1:3306:3306"
volumes:
- ../../repo-database:/var/lib/mysql
- ./init:/docker-entrypoint-initdb.d/:ro
environment:
MYSQL_ROOT_PASSWORD: password # yes, I know

View File

@ -0,0 +1,191 @@
-- DROP DATABASE IF EXISTS repository;
CREATE DATABASE repository;
USE repository;
-- Required info for an account
CREATE TABLE Users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(31) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
last_used TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
-- Enables multiple packages to have the same base yet different components
CREATE TABLE PackageBases (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(127) UNIQUE NOT NULL,
description VARCHAR(510) NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- User roles for working on packages: flagger, packager, submitter, maintainer, etc.
CREATE TABLE PackageBaseRoles (
id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(31) UNIQUE NOT NULL,
description VARCHAR(255) NULL
);
INSERT INTO PackageBaseRoles (id, name) VALUES
(1, 'submitter'),
(2, 'packager'),
(3, 'maintainer'),
(4, 'flagger');
-- Roles that a user has for a package
CREATE TABLE PackageBaseUserRoles (
base INT UNSIGNED,
user INT UNSIGNED,
role TINYINT UNSIGNED,
comment VARCHAR(255) NULL,
PRIMARY KEY (base, user, role), -- composite key
FOREIGN KEY (base) REFERENCES PackageBases(id) ON DELETE CASCADE,
FOREIGN KEY (user) REFERENCES Users(id) ON DELETE CASCADE,
FOREIGN KEY (role) REFERENCES PackageBaseRoles(id) ON DELETE CASCADE
);
-- Information about the actual packages
CREATE TABLE Packages (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
base INT UNSIGNED NOT NULL,
name VARCHAR(127) UNIQUE NOT NULL,
version VARCHAR(127) NOT NULL,
description VARCHAR(255) NULL,
url VARCHAR(510) NULL,
flagged_at TIMESTAMP NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (base) REFERENCES PackageBases (id) ON DELETE CASCADE
);
-- depends, makedepends, optdepends, etc.
CREATE TABLE DependencyTypes (
id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(31) UNIQUE NOT NULL
);
INSERT INTO DependencyTypes (id, name) VALUES
(1, 'depends'),
(2, 'makedepends'),
(3, 'checkdepends'),
(4, 'optdepends');
-- Track which dependencies a package has
CREATE TABLE PackageDependencies (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
arch VARCHAR(63) NULL,
requirement VARCHAR(255) NULL,
description VARCHAR(127) NULL,
package INT UNSIGNED NOT NULL,
dependency_type TINYINT UNSIGNED NOT NULL,
dependency_package_name VARCHAR(127) NOT NULL, -- Not an actual package, but an an alias. Allows for package substitution.
FOREIGN KEY (package) REFERENCES Packages (id) ON DELETE CASCADE,
FOREIGN KEY (dependency_type) REFERENCES DependencyTypes (id)
);
-- conflicts, provides, replaces, etc.
CREATE TABLE RelationTypes (
id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(31) UNIQUE NOT NULL
);
INSERT INTO RelationTypes (id, name) VALUES
(1, 'conflicts'),
(2, 'provides'),
(3, 'replaces');
-- Track which conflicts, provides and replaces a package has
CREATE TABLE PackageRelations (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
arch VARCHAR(63) NULL,
requirement VARCHAR(255) NULL,
package INT UNSIGNED NOT NULL,
relation_type TINYINT UNSIGNED NOT NULL,
relation_package_name VARCHAR(127) NOT NULL,
FOREIGN KEY (package) REFERENCES Packages (id) ON DELETE CASCADE,
FOREIGN KEY (relation_type) REFERENCES RelationTypes (id)
);
-- Public user profile
/* CREATE TABLE UserProfiles ( user_id INT UNSIGNED PRIMARY KEY,
real_name VARCHAR(63) NULL,
homepage TEXT NULL, -- bio / description / whatever
irc_nick VARCHAR(31) NULL,
pgp_key CHAR(40) NULL,
language VARCHAR(31) NULL, -- only for display
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
FOREIGN KEY (user_id) REFERENCES Users(id) ON DELETE CASCADE
); */
-- Settings for the User
/* CREATE TABLE UserPreferences ( user_id INT UNSIGNED PRIMARY KEY,
inactive BOOLEAN DEFAULT 0 NOT NULL, -- user is no longer active
show_email BOOLEAN DEFAULT 0 NOT NULL, -- on public profile page
utc_timezone TINYINT DEFAULT 0 NOT NULL, -- adjust timestamps shown
backup_email VARCHAR(127) NULL, -- to restore the account
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
FOREIGN KEY (user_id) REFERENCES Users(id) ON DELETE CASCADE
); */
-- Levels of access to the repository
/* CREATE TABLE AccessRoles ( id TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(31) UNIQUE NOT NULL,
description VARCHAR(255) NULL
); */
-- Roles that a user has
/* CREATE TABLE UserAccessRoles (
user_id INT UNSIGNED,
role_id TINYINT UNSIGNED,
PRIMARY KEY (user_id, role_id), -- composite key
FOREIGN KEY (user_id) REFERENCES Users(id) ON DELETE CASCADE,
FOREIGN KEY (role_id) REFERENCES AccessRoles(id) ON DELETE CASCADE
); */
-- Votes
/* CREATE TABLE PackageBaseUserVotes (
package_base INT UNSIGNED,
user INT UNSIGNED,
score TINYINT UNSIGNED DEFAULT 0 NOT NULL CHECK (score <= 10),
comment VARCHAR(255) NULL,
log TEXT NULL, -- error logs, etc.
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (package_base, user), -- composite key
FOREIGN KEY (package_base) REFERENCES PackageBases (id) ON DELETE CASCADE,
FOREIGN KEY (user) REFERENCES Users (id) ON DELETE CASCADE
); */
-- Information about licenses
/* CREATE TABLE Licenses ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(127) UNIQUE NOT NULL,
description TEXT NULL
); */
-- Information about licenses
/* CREATE TABLE PackageLicenses (
package INT UNSIGNED,
license INT UNSIGNED,
PRIMARY KEY (package, license), -- composite key
FOREIGN KEY (package) REFERENCES Packages (id) ON DELETE CASCADE,
FOREIGN KEY (license) REFERENCES Licenses (id) ON DELETE CASCADE
); */

View File

@ -0,0 +1,103 @@
-- Insert Users
INSERT INTO Users (name, email, password, last_used) VALUES
('alice', 'alice@example.com', 'password123', NOW()),
('bob', 'bob@example.com', 'securepass', NOW()),
('charlie', 'charlie@example.com', 'charliepwd', NOW()),
('dave', 'dave@example.com', 'davepass', NOW()),
('eve', 'eve@example.com', 'evepwd', NOW()),
('frank', 'frank@example.com', 'frankpass', NOW()),
('grace', 'grace@example.com', 'gracepwd', NOW()),
('heidi', 'heidi@example.com', 'heidipwd', NOW()),
('ivan', 'ivan@example.com', 'ivanpass', NOW()),
('judy', 'judy@example.com', 'judypass', NOW()),
('mallory', 'mallory@example.com', 'mallorypwd', NOW()),
('oscar', 'oscar@example.com', 'oscarpass', NOW()),
('peggy', 'peggy@example.com', 'peggypwd', NOW()),
('trent', 'trent@example.com', 'trentpass', NOW()),
('victor', 'victor@example.com', 'victorpwd', NOW());
-- Insert PackageBases
INSERT INTO PackageBases (name, description) VALUES
('libcore', 'Core system libraries'),
('webframework', 'A modern web framework'),
('dataproc', 'Data processing toolkit'),
('authmodule', 'Authentication and authorization module'),
('networkstack', 'Networking utilities and stack'),
('uikit', 'UI Kit for building interfaces'),
('cryptoengine', 'Cryptographic library'),
('dbconnector', 'Database connectivity drivers'),
('imageproc', 'Image processing library'),
('audiokit', 'Audio toolkit'),
('videokit', 'Video processing toolkit'),
('mlcore', 'Machine Learning core library'),
('analyticspro', 'Advanced analytics toolkit'),
('monitoragent', 'System monitoring agent'),
('filesystem', 'Filesystem utilities');
-- Assign Roles to Users for PackageBases
INSERT INTO PackageBaseUserRoles (base, user, role, comment) VALUES
(1, 1, 1, 'Original submitter'),
(1, 2, 2, 'Packager for latest release'),
(2, 3, 3, 'Maintains stability'),
(2, 4, 4, 'Flags issues'),
(3, 5, 1, 'Initial submission'),
(3, 6, 3, 'Lead maintainer'),
(4, 7, 2, 'Core packager'),
(5, 8, 1, 'Submitted new version'),
(6, 9, 4, 'Flagged for performance issues'),
(7, 10, 3, 'Maintainer for security fixes'),
(8, 11, 2, 'Driver package manager'),
(9, 12, 1, 'Original contributor'),
(10, 13, 3, 'Maintains core features'),
(11, 14, 4, 'Reported critical bug'),
(12, 15, 2, 'Optimized build process');
-- Insert Packages
INSERT INTO Packages (base, name, version, description, url) VALUES
(1, 'libcore-utils', '1.0.0', 'Utilities for libcore', 'http://example.com/libcore-utils'),
(1, 'libcore-extended', '1.1.0', 'Extended functionalities', 'http://example.com/libcore-extended'),
(2, 'webframework-api', '2.0.0', 'REST API module', 'http://example.com/webframework-api'),
(2, 'webframework-cli', '2.1.0', 'Command-line tools', 'http://example.com/webframework-cli'),
(3, 'dataproc-engine', '3.0.1', 'Data processing engine', 'http://example.com/dataproc-engine'),
(4, 'authmodule-oauth', '4.2.0', 'OAuth module', 'http://example.com/authmodule-oauth'),
(5, 'networkstack-core', '5.5.0', 'Core network stack', 'http://example.com/networkstack-core'),
(6, 'uikit-designer', '6.0.3', 'UI designer toolkit', 'http://example.com/uikit-designer'),
(7, 'cryptoengine-hash', '7.1.1', 'Hash algorithms', 'http://example.com/cryptoengine-hash'),
(8, 'dbconnector-mysql', '8.0.0', 'MySQL connector', 'http://example.com/dbconnector-mysql'),
(9, 'imageproc-filters', '9.3.0', 'Image filters library', 'http://example.com/imageproc-filters'),
(10, 'audiokit-mixer', '10.2.1', 'Audio mixing toolkit', 'http://example.com/audiokit-mixer'),
(11, 'videokit-stream', '11.4.0', 'Video streaming tools', 'http://example.com/videokit-stream'),
(12, 'mlcore-algo', '12.0.2', 'ML algorithms', 'http://example.com/mlcore-algo'),
(13, 'analyticspro-dashboard', '13.5.1', 'Analytics dashboard', 'http://example.com/analyticspro-dashboard');
-- Insert PackageDependencies
INSERT INTO PackageDependencies (arch, requirement, description, package, dependency_type, dependency_package_name) VALUES
('x86_64', '>=1.0.0', 'Core dependency', 3, 1, 'libcore-utils'),
('x86_64', '>=2.0.0', 'Required for API', 4, 2, 'webframework-api'),
('arm64', '>=3.0.1', 'Optional analytics', 5, 4, 'analyticspro-dashboard'),
('x86_64', '>=5.5.0', 'Network stack dependency', 6, 1, 'networkstack-core'),
('x86_64', '>=4.2.0', 'Authentication module', 7, 1, 'authmodule-oauth'),
('x86_64', NULL, 'Database driver', 8, 1, 'dbconnector-mysql'),
('arm64', NULL, 'Machine learning algorithms', 9, 3, 'mlcore-algo'),
('x86_64', '>=6.0.3', 'UI designer toolkit', 10, 1, 'uikit-designer'),
('x86_64', NULL, 'Audio toolkit dependency', 11, 2, 'audiokit-mixer'),
('x86_64', '>=7.1.1', 'Hash functions', 12, 1, 'cryptoengine-hash'),
('arm64', NULL, 'Video streaming tools', 13, 4, 'videokit-stream'),
('x86_64', '>=9.3.0', 'Image filters', 14, 1, 'imageproc-filters'),
('x86_64', NULL, 'System monitoring agent', 15, 2, 'monitoragent');
-- Insert PackageRelations
INSERT INTO PackageRelations (arch, requirement, package, relation_type, relation_package_name) VALUES
('x86_64', '>=1.0.0', 3, 1, 'legacy-web-api'), -- conflicts
('x86_64', NULL, 4, 2, 'web-cli-tools'), -- provides
('arm64', NULL, 5, 3, 'old-dataproc'), -- replaces
('x86_64', '>=5.0.0', 6, 1, 'net-tools-legacy'),
('x86_64', NULL, 7, 2, 'crypto-lib'),
('x86_64', '>=4.0.0', 8, 3, 'db-driver-old'),
('arm64', NULL, 9, 1, 'imgproc-v1'),
('x86_64', NULL, 10, 2, 'audio-tools'),
('x86_64', '>=7.0.0', 11, 3, 'video-kit-old'),
('x86_64', NULL, 12, 1, 'ml-core-legacy'),
('x86_64', '>=6.0.0', 13, 2, 'analytics-pro-tools'),
('x86_64', NULL, 14, 3, 'monitor-agent-v1'),
('x86_64', '>=9.0.0', 15, 1, 'filesystem-old');

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO PackageBases (name, description, created_at, updated_at) VALUES (?, ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 4
},
"nullable": []
},
"hash": "014cf2ec55142a17047ad7c469685df75ae8e3c95a1a7c6c21be7b5624a82ae1"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET created_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "063059de083c42956506d991bc04472929e6b2618ab13eb90e772ad9bd9c1984"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE PackageBases SET name = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "0af939868e37bad5eb9097badeaefca62c247c4b2265a9667c4b33885126c771"
}

View File

@ -0,0 +1,84 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM Users WHERE email = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 124
}
},
{
"ordinal": 2,
"name": "email",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 1020
}
},
{
"ordinal": 3,
"name": "password",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 1020
}
},
{
"ordinal": 4,
"name": "last_used",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 5,
"name": "created_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 6,
"name": "updated_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
false,
false
]
},
"hash": "0bb7353d64231dc12416f5504d94513493670e3f2ae017d87a2f0c3eca045f60"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET version = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "346beb83d6351740a503b72133a190ac327ae79f6e555def8fec89fcc75fb015"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM PackageBases WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "389e38e7e0a0b7d9ba667ac148a0a468da889a3455c47325938b819ab41ef4c8"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO Packages (base, name, version, description, url, flagged_at, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 8
},
"nullable": []
},
"hash": "3ffe9168c1eb30bb54c65055314655c21f03d04973e4291e6d4b6c7847364659"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM Users WHERE name = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "404747d44ee859e8c967695c29963594bb8273e66c053934ec20d5fc3db9d41e"
}

View File

@ -0,0 +1,84 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM Users WHERE name = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 124
}
},
{
"ordinal": 2,
"name": "email",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 1020
}
},
{
"ordinal": 3,
"name": "password",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 1020
}
},
{
"ordinal": 4,
"name": "last_used",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 5,
"name": "created_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 6,
"name": "updated_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
false,
false
]
},
"hash": "68ed36ae997fff190b4b15b80bf24b553d8ac922da251d9e8b8f4e897bab46b0"
}

View File

@ -0,0 +1,104 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM Packages WHERE id = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "base",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | MULTIPLE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 10
}
},
{
"ordinal": 2,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 508
}
},
{
"ordinal": 3,
"name": "version",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 508
}
},
{
"ordinal": 4,
"name": "description",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1020
}
},
{
"ordinal": 5,
"name": "url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2040
}
},
{
"ordinal": 6,
"name": "flagged_at",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 7,
"name": "created_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "updated_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP | ON_UPDATE_NOW",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
false,
false
]
},
"hash": "695f4b0a4286cf625dc60dc3dfc4a9cd92aaea3ea58ef8702903983cfc32ab47"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET base = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "6b6f842d169e2a9628474edcd6dad10878bb9aaa612f62080d40ba24682b0c3b"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET updated_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "7cc4cf73572c0830d1da7b8e621a79a09f3e3d8cfd42d3946bd1fac93838b913"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE PackageBases SET description = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "7f06016e9892486c938a5e94c9e5f70903a38ed314235712c28ac5e14d9ac20f"
}

View File

@ -0,0 +1,64 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM PackageBases WHERE id = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 508
}
},
{
"ordinal": 2,
"name": "description",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2040
}
},
{
"ordinal": 3,
"name": "created_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 4,
"name": "updated_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP | ON_UPDATE_NOW",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
false,
false
]
},
"hash": "839cea68f9de889f35a0d0ad0b48b4a0dc1af49f0f0e7bb12238d22a9c37fbbc"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Users SET updated_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "8af7a0169e934cb82997a1cab04e921f719ed9466c13713fda8736c540d0fa78"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Users SET password = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "8be76176b46f645095dce3bcbed11134ec0f43504d3a820698282848fd67dbad"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET flagged_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "8bfaca937858ed1060da5a650f749849d29af3d6345d0e02474abf4d8c78b89d"
}

View File

@ -0,0 +1,84 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM Users WHERE id = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 124
}
},
{
"ordinal": 2,
"name": "email",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 1020
}
},
{
"ordinal": 3,
"name": "password",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 1020
}
},
{
"ordinal": 4,
"name": "last_used",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 5,
"name": "created_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 6,
"name": "updated_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
false,
false
]
},
"hash": "8e3ffe0d11d3eb38cd805771cd133588c0679404a68a8041f414553226abeeb2"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE PackageBases SET created_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "93ec7d124c9bfa7329478d975614db874788ed297fe2d95275592becb186f942"
}

View File

@ -0,0 +1,104 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM Packages WHERE name = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "base",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | MULTIPLE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 10
}
},
{
"ordinal": 2,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 508
}
},
{
"ordinal": 3,
"name": "version",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 508
}
},
{
"ordinal": 4,
"name": "description",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1020
}
},
{
"ordinal": 5,
"name": "url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2040
}
},
{
"ordinal": 6,
"name": "flagged_at",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 7,
"name": "created_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "updated_at",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP | ON_UPDATE_NOW",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
false,
false
]
},
"hash": "944eb40633e943a75244dee639fe6efb16919aff7172189c81240cb12462ae58"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Users SET email = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "9be7f66630e64787e55946dff428d28035747b66e57260bc9cd4634a71a037a6"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM Users WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "9fa86328c40ce0469f755efb4876010092b7bc9f240a5d43dc69f9d0b1b5b7ce"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET url = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "b5814b93236d587957a103e61726b0b9ae811ba6bff0617871e76de3ef0ff662"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET description = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "c1abf048d65d421717f20343bb0ef4fcd78f8571cfe2347c147124763bd17491"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM Users WHERE email = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "c2b00adbcb3c35a6ffa6b2bce08a738a9b3cd1ca4aa4c843909c7e14f7ef3e06"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Users SET last_used = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "cc8f7e13c6aedf6aa4d6d4fc39db7aa98b84baf911e7f779641c1dc514c676cd"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Users SET created_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "cf79e2f6038dddd055d535d2c41dd8dccd1a4e6a763963590c904c25abf33137"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE PackageBases SET updated_at = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "d289747c7c7fba86e2b66174e2d1546f10e8213d36b6b3cd25016f829e9d731b"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM Packages WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "d474dd848d0ef8832afd4d1302fa562a3c4a4569032e8636d664043b5dc96661"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO Users (name, email, password, last_used, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 6
},
"nullable": []
},
"hash": "daf98e6f1013c4993f7329f6fa690e92bccd89d1ff90131719c40626088dabd1"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Packages SET name = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "e8ee44281a87c6e7147332dd5548971cb804a1ab1edcdae8bf009ac39059c2bb"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM Packages WHERE name = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "f4963ad77bcbc0af4fc929f1f66b7ee842c26c44da32ae9bbbc06c466a908ccf"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE Users SET name = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "f656bd1abb82c10af4e0e21b4a04a364988f5329356282f2ae0098dbfcaec671"
}

View File

@ -0,0 +1,17 @@
[package]
name = "data"
version = "0.1.0"
edition = "2024"
[dependencies]
derive_more = { version = "2.0.1", features = ["deref", "into"] }
futures = "0.3.31"
chrono = { version = "0.4.39", default-features = false, features = [
"std",
"now",
] }
sqlx = { version = "0.8.3", default-features = false, features = ["mysql", "macros", "chrono", "runtime-tokio"] }
# thiserror = "2.0.11"
# garde = { version = "0.22.0", features = ["email", "url", "derive"] }

View File

@ -0,0 +1,2 @@
//! Specific implementations of [`crate::port`]s to plug into other parts of the application.
pub mod mysql;

View File

@ -0,0 +1,5 @@
//! `MySQL` adapters.
pub mod base;
pub mod package;
pub mod search;
pub mod user;

View File

@ -0,0 +1,105 @@
use crate::Result;
use crate::port::base::{Base, BaseRepository, Field, New};
use chrono::Utc;
use sqlx::{Executor, MySql};
pub struct BaseAdapter;
impl<E> BaseRepository<E> for BaseAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
}
impl<E> crate::port::Crud<E> for BaseAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
type New = New;
type Unique = u64;
type Update = Field;
type Existing = Base;
async fn create(connection: &mut E, data: Self::New) -> Result<Self::Existing> {
let created_at = Utc::now();
let id = sqlx::query!(
"INSERT INTO PackageBases (name, description, created_at, updated_at) VALUES (?, ?, ?, ?)",
data.name.as_str(),
data.description.as_ref(),
created_at, created_at,
)
.execute(&*connection)
.await?
.last_insert_id();
Ok(Self::Existing {
id,
name: data.name.into(),
description: data.description.into(),
created_at,
updated_at: created_at,
})
}
async fn read(connection: &E, data: Self::Unique) -> Result<Option<Self::Existing>> {
Ok(
sqlx::query_as!(Base, "SELECT * FROM PackageBases WHERE id = ?", data)
.fetch_optional(connection)
.await?,
)
}
async fn update(
connection: &mut E,
existing: &mut Self::Existing,
data: Self::Update,
) -> Result {
match &data {
Field::Name(name) => {
sqlx::query!(
"UPDATE PackageBases SET name = ? WHERE id = ?",
name.as_str(),
existing.id
)
}
Field::Description(description) => {
sqlx::query!(
"UPDATE PackageBases SET description = ? WHERE id = ?",
description.as_ref(),
existing.id
)
}
Field::CreatedAt(date_time) => sqlx::query!(
"UPDATE PackageBases SET created_at = ? WHERE id = ?",
date_time,
existing.id
),
Field::UpdatedAt(date_time) => sqlx::query!(
"UPDATE PackageBases SET updated_at = ? WHERE id = ?",
date_time,
existing.id
),
}
.execute(&*connection)
.await?;
match data {
Field::Name(s) => existing.name = s.into(),
Field::Description(o) => existing.description = o.into(),
Field::CreatedAt(date_time) => existing.created_at = date_time,
Field::UpdatedAt(date_time) => existing.updated_at = date_time,
}
Ok(())
}
async fn delete(connection: &mut E, data: Self::Unique) -> Result {
sqlx::query!("DELETE FROM PackageBases WHERE id = ?", data)
.execute(&*connection)
.await?;
Ok(())
}
}

View File

@ -0,0 +1,162 @@
use crate::Result;
use crate::port::package::{Field, New, Package, PackageRepository, Unique};
use chrono::Utc;
use sqlx::{Executor, MySql};
pub struct PackageAdapter;
impl<E> PackageRepository<E> for PackageAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
}
impl<E> crate::port::Crud<E> for PackageAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
type New = New;
type Update = Field;
type Unique = Unique;
type Existing = Package;
async fn create(connection: &mut E, data: Self::New) -> Result<Self::Existing> {
let created_at = Utc::now();
let id = sqlx::query!(
"INSERT INTO Packages \
(base, name, version, description, url, flagged_at, created_at, updated_at) \
VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
data.package_base.id,
data.name.as_str(),
data.version.as_str(),
data.description.as_ref(),
data.url.as_ref(),
data.flagged_at,
created_at,
created_at,
)
.execute(&*connection)
.await?
.last_insert_id();
Ok(Self::Existing {
id,
base: data.package_base.id,
name: data.name.into(),
version: data.version.into(),
description: data.description.into(),
url: data.url.into(),
flagged_at: data.flagged_at,
created_at,
updated_at: created_at,
})
}
async fn read(connection: &E, data: Self::Unique) -> Result<Option<Self::Existing>> {
Ok(match data {
Unique::Id(id) => {
sqlx::query_as!(Package, "SELECT * FROM Packages WHERE id = ?", id)
.fetch_optional(connection)
.await
}
Unique::Name(name) => {
sqlx::query_as!(
Package,
"SELECT * FROM Packages WHERE name = ?",
name.as_str()
)
.fetch_optional(connection)
.await
}
}?)
}
async fn update(
connection: &mut E,
existing: &mut Self::Existing,
data: Self::Update,
) -> Result {
match &data {
Field::Name(name) => {
sqlx::query!(
"UPDATE Packages SET name = ? WHERE id = ?",
name.as_str(),
existing.id
)
}
Field::PackageBase(package_base) => {
sqlx::query!(
"UPDATE Packages SET base = ? WHERE id = ?",
package_base.id,
existing.id
)
}
Field::Version(version) => {
sqlx::query!(
"UPDATE Packages SET version = ? WHERE id = ?",
version.as_str(),
existing.id
)
}
Field::Description(description) => {
sqlx::query!(
"UPDATE Packages SET description = ? WHERE id = ?",
description.as_ref(),
existing.id
)
}
Field::Url(url) => {
sqlx::query!(
"UPDATE Packages SET url = ? WHERE id = ?",
url.as_ref(),
existing.id
)
}
Field::FlaggedAt(date_time) => sqlx::query!(
"UPDATE Packages SET flagged_at = ? WHERE id = ?",
date_time,
existing.id
),
Field::CreatedAt(date_time) => sqlx::query!(
"UPDATE Packages SET created_at = ? WHERE id = ?",
date_time,
existing.id
),
Field::UpdatedAt(date_time) => sqlx::query!(
"UPDATE Packages SET updated_at = ? WHERE id = ?",
date_time,
existing.id
),
}
.execute(&*connection)
.await?;
match data {
Field::Name(s) => existing.name = s.into(),
Field::PackageBase(s) => existing.base = s.id,
Field::Version(s) => existing.version = s.into(),
Field::Description(o) => existing.description = o.into(),
Field::Url(o) => existing.url = o.into(),
Field::FlaggedAt(date_time) => existing.flagged_at = date_time,
Field::CreatedAt(date_time) => existing.created_at = date_time,
Field::UpdatedAt(date_time) => existing.updated_at = date_time,
}
Ok(())
}
async fn delete(connection: &mut E, data: Self::Unique) -> Result {
match data {
Unique::Id(id) => sqlx::query!("DELETE FROM Packages WHERE id = ?", id),
Unique::Name(name) => {
sqlx::query!("DELETE FROM Packages WHERE name = ?", name.as_str())
}
}
.execute(&*connection)
.await?;
Ok(())
}
}

View File

@ -0,0 +1,152 @@
use crate::Result;
use crate::port::search::{Data, Entry, Mode, Order, SearchRepository};
// use chrono::Utc;
use futures::TryStreamExt;
use sqlx::{Executor, MySql, QueryBuilder, Row};
pub struct SearchAdapter;
impl<E> SearchRepository<E> for SearchAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
async fn search(connection: &E, data: Data) -> Result<Vec<Entry>> {
let mut builder = QueryBuilder::new(
"SELECT \
p.id, p.name, p.version, p.url, p.description, \
p.updated_at, p.created_at, \
pb.id AS base_id, pb.name AS base_name, \
( \
SELECT COUNT(DISTINCT pbur.user) \
FROM PackageBaseUserRoles pbur \
WHERE pbur.base = pb.id AND pbur.role = 3 \
) AS maintainers_num \
FROM \
Packages p \
JOIN \
PackageBases pb ON p.base = pb.id ",
);
let mut push_search = |cond, param| {
builder.push(format_args!(
" {cond} {param} {} ",
if data.exact { "=" } else { "LIKE" }
));
builder.push_bind(if data.exact {
data.search.to_string()
} else {
format!("%{}%", data.search.as_str())
});
};
let join_user = " JOIN PackageBaseUserRoles pbur ON pb.id = pbur.base \
JOIN Users u ON pbur.user = u.id WHERE ";
match data.mode {
Mode::Url => push_search("WHERE", "p.url"),
Mode::Name => push_search("WHERE", "p.name"),
Mode::PackageBase => push_search("WHERE", "pb.name"),
Mode::Description => push_search("WHERE", "p.description"),
Mode::BaseDescription => push_search("WHERE", "pb.description"),
Mode::NameAndDescription => {
// WHERE (p.name LIKE '%search_term%' OR p.description LIKE '%search_term%')
builder.push(" WHERE p.name LIKE ");
builder.push_bind(format!("%{}%", data.search.as_str()));
builder.push(" OR p.description LIKE ");
builder.push_bind(format!("%{}%", data.search.as_str()));
}
Mode::User => {
push_search(
"WHERE EXISTS ( \
SELECT 1 \
FROM PackageBaseUserRoles pbur \
JOIN Users u ON pbur.user = u.id \
WHERE pbur.base = pb.id AND",
"u.name",
);
builder.push(" ) ");
}
Mode::Flagger => {
push_search(join_user, "u.name");
builder.push(" AND pbur.role = 4 ");
} // 4
Mode::Packager => {
push_search(join_user, "u.name");
builder.push(" AND pbur.role = 2 ");
} // 2
Mode::Submitter => {
push_search(join_user, "u.name");
builder.push(" AND pbur.role = 1 ");
} // 1
Mode::Maintainer => {
push_search(join_user, "u.name");
builder.push(" AND pbur.role = 3 ");
} // 3
}
builder.push(format_args!(
" ORDER BY {} {} LIMIT {};",
match data.order {
Order::Name => "p.name",
Order::Version => "p.version",
Order::BaseName => "pb.name",
Order::UpdatedAt => "p.updated_at",
Order::CreatedAt => "p.created_at",
},
if data.ascending { "ASC" } else { "DESC" },
data.limit
));
let mut entries = Vec::new();
let mut rows = builder.build().fetch(connection);
while let Some(row) = rows.try_next().await? {
entries.push(Entry {
id: row.try_get("id")?,
name: row.try_get("name")?,
version: row.try_get("version")?,
base_id: row.try_get("base_id")?,
base_name: row.try_get("base_name")?,
url: row.try_get("url")?,
description: row.try_get("description")?,
// submitter_id: row.try_get("submitter_id")?,
// submitter_name: row.try_get("submitter_name")?,
updated_at: row.try_get("updated_at")?,
created_at: row.try_get("created_at")?,
});
}
Ok(entries)
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::Validation;
use crate::port::search::Search;
use sqlx::MySqlPool;
#[sqlx::test]
async fn search() -> crate::Result {
let pool = MySqlPool::connect_lazy(
&std::env::var("DATABASE_URL")
.expect("environment variable `DATABASE_URL` should be set"),
)?;
let data = Data {
mode: Mode::NameAndDescription,
order: Order::UpdatedAt,
search: Search::new("f").map_err(|e| e.1)?,
limit: 50,
exact: true,
ascending: false,
};
SearchAdapter::search(&pool, data).await?;
Ok(())
}
}

View File

@ -0,0 +1,146 @@
use crate::Result;
use crate::port::user::{Field, New, Unique, User, UserRepository};
use chrono::Utc;
use sqlx::{Executor, MySql};
pub struct UserAdapter;
impl<E> UserRepository<E> for UserAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
}
impl<E> crate::port::Crud<E> for UserAdapter
where
E: Send,
for<'a> &'a E: Executor<'a, Database = MySql>,
{
type New = New;
type Update = Field;
type Unique = Unique;
type Existing = User;
async fn create(connection: &mut E, data: Self::New) -> Result<Self::Existing> {
let created_at = Utc::now();
let id = sqlx::query!(
"INSERT INTO Users (name, email, password, last_used, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)",
data.name.as_str(),
data.email.as_str(),
data.password.as_str(),
data.last_used,
created_at,
created_at,
)
.execute(&*connection)
.await?
.last_insert_id();
Ok(Self::Existing {
id,
name: data.name.into(),
email: data.email.into(),
password: data.password.into(),
last_used: data.last_used,
created_at,
updated_at: created_at,
})
}
async fn read(connection: &E, data: Self::Unique) -> Result<Option<Self::Existing>> {
Ok(match data {
Unique::Id(id) => {
sqlx::query_as!(User, "SELECT * FROM Users WHERE id = ?", id)
.fetch_optional(connection)
.await
}
Unique::Name(name) => {
sqlx::query_as!(User, "SELECT * FROM Users WHERE name = ?", name.as_str())
.fetch_optional(connection)
.await
}
Unique::Email(email) => {
sqlx::query_as!(User, "SELECT * FROM Users WHERE email = ?", email.as_str())
.fetch_optional(connection)
.await
}
}?)
}
async fn update(
connection: &mut E,
existing: &mut Self::Existing,
data: Self::Update,
) -> Result {
match &data {
Field::Name(name) => {
sqlx::query!(
"UPDATE Users SET name = ? WHERE id = ?",
name.as_str(),
existing.id
)
}
Field::Email(email) => {
sqlx::query!(
"UPDATE Users SET email = ? WHERE id = ?",
email.as_str(),
existing.id
)
}
Field::Password(password) => {
sqlx::query!(
"UPDATE Users SET password = ? WHERE id = ?",
password.as_str(),
existing.id
)
}
Field::LastUsed(date_time) => {
sqlx::query!(
"UPDATE Users SET last_used = ? WHERE id = ?",
date_time,
existing.id
)
}
Field::CreatedAt(date_time) => sqlx::query!(
"UPDATE Users SET created_at = ? WHERE id = ?",
date_time,
existing.id
),
Field::UpdatedAt(date_time) => sqlx::query!(
"UPDATE Users SET updated_at = ? WHERE id = ?",
date_time,
existing.id
),
}
.execute(&*connection)
.await?;
match data {
Field::Name(valid) => existing.name = valid.into(),
Field::Email(valid) => existing.email = valid.into(),
Field::Password(valid) => existing.password = valid.into(),
Field::LastUsed(date_time) => existing.last_used = date_time,
Field::CreatedAt(date_time) => existing.created_at = date_time,
Field::UpdatedAt(date_time) => existing.updated_at = date_time,
}
Ok(())
}
async fn delete(connection: &mut E, data: Self::Unique) -> Result {
match data {
Unique::Id(id) => sqlx::query!("DELETE FROM Users WHERE id = ?", id),
Unique::Name(name) => {
sqlx::query!("DELETE FROM Users WHERE name = ?", name.as_str())
}
Unique::Email(email) => {
sqlx::query!("DELETE FROM Users WHERE email = ?", email.as_str())
}
}
.execute(&*connection)
.await?;
Ok(())
}
}

View File

@ -0,0 +1,43 @@
//! Unify transaction management for established connections.
use crate::Result;
pub trait Atomic {
type Transaction<'a>;
fn start_transaction(&mut self) -> impl Future<Output = Result<Self::Transaction<'_>>> + Send;
fn abort_transaction(transaction: Self::Transaction<'_>)
-> impl Future<Output = Result> + Send;
fn commit_transaction(
transaction: Self::Transaction<'_>,
) -> impl Future<Output = Result> + Send;
}
use sqlx::Connection;
impl Atomic for sqlx::MySqlPool {
type Transaction<'a> = sqlx::MySqlTransaction<'a>;
async fn start_transaction(&mut self) -> Result<Self::Transaction<'_>> {
self.begin().await.map_err(Box::from)
}
async fn abort_transaction(transaction: Self::Transaction<'_>) -> Result {
transaction.rollback().await.map_err(Box::from)
}
async fn commit_transaction(transaction: Self::Transaction<'_>) -> Result {
transaction.commit().await.map_err(Box::from)
}
}
impl Atomic for sqlx::MySqlConnection {
type Transaction<'a> = sqlx::MySqlTransaction<'a>;
async fn start_transaction(&mut self) -> Result<Self::Transaction<'_>> {
self.begin().await.map_err(Box::from)
}
async fn abort_transaction(transaction: Self::Transaction<'_>) -> Result {
transaction.rollback().await.map_err(Box::from)
}
async fn commit_transaction(transaction: Self::Transaction<'_>) -> Result {
transaction.commit().await.map_err(Box::from)
}
}

View File

@ -0,0 +1,53 @@
//! Driver to manage a connection which is passed to adapters.
use crate::Result;
pub trait Connect {
type Connection;
fn open_connection(&self) -> impl Future<Output = Result<Self::Connection>> + Send;
fn close_connection(connection: Self::Connection) -> impl Future<Output = Result> + Send;
}
use sqlx::Connection;
pub use sqlx::MySqlConnection as SqlxConnection;
pub use sqlx::MySqlPool as SqlxPool;
#[derive(Clone)]
pub struct MySqlPool {
pool: SqlxPool,
}
impl MySqlPool {
pub const fn new(pool: SqlxPool) -> Self {
Self { pool }
}
}
impl Connect for MySqlPool {
type Connection = SqlxPool;
async fn open_connection(&self) -> Result<Self::Connection> {
Ok(self.pool.clone())
}
async fn close_connection(_: Self::Connection) -> Result {
Ok(())
}
}
pub struct MySqlConnection {
link: String,
}
impl MySqlConnection {
pub const fn new(link: String) -> Self {
Self { link }
}
}
impl Connect for MySqlConnection {
type Connection = SqlxConnection;
async fn open_connection(&self) -> Result<Self::Connection> {
SqlxConnection::connect(&self.link).await.map_err(Box::from)
}
async fn close_connection(connection: Self::Connection) -> Result {
connection.close().await?;
Ok(())
}
}

View File

@ -0,0 +1,23 @@
//! Data access for the application.
pub mod adapter;
pub mod atomic;
pub mod connect;
pub mod port;
// Don't want to handle errors for dynamic mess.
pub type BoxDynError = Box<dyn std::error::Error + Send + Sync + 'static>;
pub type Result<T = (), E = BoxDynError> = std::result::Result<T, E>;
pub use chrono::Utc;
pub use adapter::mysql::base::BaseAdapter as MySqlBaseAdapter;
pub use adapter::mysql::package::PackageAdapter as MySqlPackageAdapter;
pub use adapter::mysql::user::UserAdapter as MySqlUserAdapter;
pub use adapter::mysql::search::SearchAdapter as MySqlSearchAdapter;
pub use atomic::Atomic;
pub use connect::*;
pub use port::base::{Base, BaseRepository};
pub use port::package::{Package, PackageRepository};
pub use port::search::{Search, SearchRepository};
pub use port::user::{User, UserRepository};
pub use port::*;

View File

@ -0,0 +1,91 @@
//! Low-level repository traits for unified data access.
//!
//! Very mild argument validation.
use crate::{BoxDynError, Result};
pub mod base;
pub mod package;
pub mod search;
pub mod user;
pub trait Crud<C> {
type New;
type Unique;
type Update;
type Existing;
fn create(
connection: &mut C,
data: Self::New,
) -> impl Future<Output = Result<Self::Existing>> + Send;
fn read(
connection: &C,
data: Self::Unique,
) -> impl Future<Output = Result<Option<Self::Existing>>> + Send;
fn update(
connection: &mut C,
existing: &mut Self::Existing,
data: Self::Update,
) -> impl Future<Output = Result> + Send;
fn delete(connection: &mut C, data: Self::Unique) -> impl Future<Output = Result> + Send;
}
pub trait CharLength {
fn length(&self) -> usize;
}
impl CharLength for &str {
fn length(&self) -> usize {
self.chars().count()
}
}
impl CharLength for String {
fn length(&self) -> usize {
self.chars().count()
}
}
impl CharLength for Option<String> {
fn length(&self) -> usize {
self.as_ref().map_or(0, CharLength::length)
}
}
trait Validatable {
type Inner: CharLength;
const MAX_LENGTH: usize;
fn encapsulate(value: Self::Inner) -> Self;
}
#[allow(private_bounds)] // don't expose the impl details
pub trait Validation<T>: Validatable
where
T: CharLength + Into<Self::Inner>,
{
fn valid(value: &T) -> Result<(), String> {
if value.length() > Self::MAX_LENGTH {
Err(format!(
"too long (length: {}, max length: {})",
value.length(),
Self::MAX_LENGTH
))
} else {
Ok(())
}
}
fn new(value: T) -> Result<Self, (T, BoxDynError)>
where
Self: Sized,
{
match Self::valid(&value) {
Ok(()) => Ok(Self::encapsulate(value.into())),
Err(e) => Err((value, e.into())),
}
}
}
impl<T, U> Validation<U> for T
where
T: Validatable,
U: CharLength + Into<T::Inner>,
{
}

View File

@ -0,0 +1,70 @@
use super::Validatable;
use chrono::{DateTime, Utc};
use derive_more::{Deref, Into};
pub trait BaseRepository<C>:
super::Crud<C, New = New, Unique = u64, Update = Field, Existing = Base>
{
}
// #[derive(Deref, Into, Clone, Copy)]
// pub struct Id(pub(crate) u64);
#[derive(Clone, Deref, Into)]
pub struct Name(String);
impl Validatable for Name {
type Inner = String;
const MAX_LENGTH: usize = 127;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
#[derive(Clone, Deref, Into)]
pub struct Description(Option<String>);
impl Validatable for Description {
type Inner = Option<String>;
const MAX_LENGTH: usize = 510;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
pub enum Field {
Name(Name),
Description(Description),
CreatedAt(DateTime<Utc>),
UpdatedAt(DateTime<Utc>),
}
pub struct New {
pub name: Name,
pub description: Description,
}
pub struct Base {
pub(crate) id: u64,
pub(crate) name: String,
pub(crate) description: Option<String>,
pub(crate) created_at: DateTime<Utc>,
pub(crate) updated_at: DateTime<Utc>,
}
impl Base {
pub const fn id(&self) -> u64 {
self.id
}
pub const fn name(&self) -> &String {
&self.name
}
pub const fn description(&self) -> Option<&String> {
self.description.as_ref()
}
pub const fn created_at(&self) -> DateTime<Utc> {
self.created_at
}
pub const fn updated_at(&self) -> DateTime<Utc> {
self.updated_at
}
}

View File

@ -0,0 +1,117 @@
use super::Validatable;
use crate::Base;
use chrono::{DateTime, Utc};
use derive_more::{Deref, Into};
pub trait PackageRepository<C>:
super::Crud<C, New = New, Update = Field, Unique = Unique, Existing = Package>
{
}
#[derive(Clone, Deref, Into)]
pub struct Name(String);
impl Validatable for Name {
type Inner = String;
const MAX_LENGTH: usize = 127;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
#[derive(Clone, Deref, Into)]
pub struct Version(String);
impl Validatable for Version {
type Inner = String;
const MAX_LENGTH: usize = 127;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
#[derive(Clone, Deref, Into)]
pub struct Description(Option<String>);
impl Validatable for Description {
type Inner = Option<String>;
const MAX_LENGTH: usize = 255;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
#[derive(Clone, Deref, Into)]
pub struct Url(Option<String>);
impl Validatable for Url {
type Inner = Option<String>;
const MAX_LENGTH: usize = 510;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
pub enum Unique {
Id(u64),
Name(Name),
}
pub enum Field {
PackageBase(Base),
Name(Name),
Version(Version),
Description(Description),
Url(Url),
FlaggedAt(Option<DateTime<Utc>>),
CreatedAt(DateTime<Utc>),
UpdatedAt(DateTime<Utc>),
}
pub struct New {
pub package_base: Base,
pub name: Name,
pub version: Version,
pub description: Description,
pub url: Url,
pub flagged_at: Option<DateTime<Utc>>,
}
pub struct Package {
pub(crate) id: u64,
pub(crate) base: u64,
pub(crate) name: String,
pub(crate) version: String,
pub(crate) description: Option<String>,
pub(crate) url: Option<String>,
pub(crate) flagged_at: Option<DateTime<Utc>>,
pub(crate) created_at: DateTime<Utc>,
pub(crate) updated_at: DateTime<Utc>,
}
impl Package {
pub const fn id(&self) -> u64 {
self.id
}
pub const fn package_base(&self) -> u64 {
self.base
}
pub const fn name(&self) -> &String {
&self.name
}
pub const fn version(&self) -> &String {
&self.version
}
pub const fn description(&self) -> Option<&String> {
self.description.as_ref()
}
pub const fn url(&self) -> Option<&String> {
self.url.as_ref()
}
pub const fn flagged_at(&self) -> Option<DateTime<Utc>> {
self.flagged_at
}
pub const fn created_at(&self) -> DateTime<Utc> {
self.created_at
}
pub const fn updated_at(&self) -> DateTime<Utc> {
self.updated_at
}
}

View File

@ -0,0 +1,69 @@
use super::Validatable;
use crate::Result;
use chrono::{DateTime, Utc};
use derive_more::{Deref, Into};
pub trait SearchRepository<C> {
fn search(connection: &C, data: Data) -> impl Future<Output = Result<Vec<Entry>>> + Send;
}
#[derive(Clone, Deref, Into)]
pub struct Search(String);
impl Validatable for Search {
type Inner = String;
const MAX_LENGTH: usize = 255;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
pub struct Data {
pub mode: Mode,
pub order: Order,
pub search: Search,
pub limit: u16,
pub exact: bool,
pub ascending: bool,
}
#[derive(Debug, Clone, Hash, PartialEq, Eq)]
pub struct Entry {
pub id: u64,
pub name: Box<str>,
pub version: Box<str>,
pub base_id: u64,
pub base_name: Box<str>,
pub url: Option<Box<str>>,
pub description: Box<str>,
// pub submitter_id: u64,
// pub submitter_name: Box<str>,
pub updated_at: DateTime<Utc>,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Mode {
Url,
Name,
PackageBase,
Description,
BaseDescription,
NameAndDescription,
User,
Flagger,
Packager,
Submitter,
Maintainer,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Order {
Name,
Version,
BaseName,
// Submitter,
UpdatedAt,
CreatedAt,
}

View File

@ -0,0 +1,96 @@
use super::Validatable;
use chrono::{DateTime, Utc};
use derive_more::{Deref, Into};
pub trait UserRepository<C>:
super::Crud<C, New = New, Update = Field, Unique = Unique, Existing = User>
{
}
#[derive(Clone, Deref, Into)]
pub struct Name(String);
impl Validatable for Name {
type Inner = String;
const MAX_LENGTH: usize = 31;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
#[derive(Clone, Deref, Into)]
pub struct Email(String);
impl Validatable for Email {
type Inner = String;
const MAX_LENGTH: usize = 255;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
#[derive(Clone, Deref, Into)]
pub struct Password(String);
impl Validatable for Password {
type Inner = String;
const MAX_LENGTH: usize = 255;
fn encapsulate(value: Self::Inner) -> Self {
Self(value)
}
}
pub enum Unique {
Id(u64),
Name(Name),
Email(Email),
}
pub enum Field {
Name(Name),
Email(Email),
Password(Password),
LastUsed(Option<DateTime<Utc>>),
CreatedAt(DateTime<Utc>),
UpdatedAt(DateTime<Utc>),
}
pub struct New {
pub name: Name,
pub email: Email,
pub password: Password,
pub last_used: Option<DateTime<Utc>>,
}
#[derive(Debug, Clone)]
pub struct User {
pub(crate) id: u64,
pub(crate) name: String,
pub(crate) email: String,
pub(crate) password: String,
pub(crate) last_used: Option<DateTime<Utc>>,
pub(crate) created_at: DateTime<Utc>,
pub(crate) updated_at: DateTime<Utc>,
}
impl User {
pub const fn id(&self) -> u64 {
self.id
}
pub const fn name(&self) -> &String {
&self.name
}
pub const fn email(&self) -> &String {
&self.email
}
pub const fn password(&self) -> &String {
&self.password
}
pub const fn last_used(&self) -> Option<DateTime<Utc>> {
self.last_used
}
pub const fn created_at(&self) -> DateTime<Utc> {
self.created_at
}
pub const fn updated_at(&self) -> DateTime<Utc> {
self.updated_at
}
}

View File

@ -0,0 +1,13 @@
[package]
name = "service"
version = "0.1.0"
edition = "2024"
[dependencies]
thiserror = "2.0.11"
argon2 = { version = "0.5.3", features = ["std"] }
garde = { version = "0.22.0", features = ["email", "url", "derive"] }
derive_more = { version = "2.0.1", features = ["deref", "deref_mut", "into"] }
[dependencies.data]
path = "../data"

View File

@ -0,0 +1,9 @@
pub mod adapter;
pub mod contract;
pub mod repository;
pub mod service;
pub use adapter::*;
pub use contract::*;
pub use repository::*;
pub use service::*;

View File

@ -0,0 +1,71 @@
use super::{Authenticated, AuthenticationRepository, Get};
use data::user::{Field, New, User, UserRepository};
use data::{Connect, Result};
use std::marker::PhantomData;
pub struct AuthenticationAdapter<D, C, UR>
where
C: Send,
D: Connect<Connection = C> + Sync,
UR: UserRepository<C> + Sync,
{
driver: D,
// connection: Option<C>,
_user_repository: PhantomData<UR>,
}
impl<D, C, UR> AuthenticationAdapter<D, C, UR>
where
C: Send,
D: Connect<Connection = C> + Sync,
UR: UserRepository<C> + Sync,
{
pub const fn new(driver: D) -> Self {
Self {
driver,
// connection: None,
_user_repository: PhantomData,
}
}
// async fn connection(&mut self) -> Result<&C> {
// if let Some(ref c) = self.connection {
// Ok(c)
// } else {
// self.connection = Some(self.driver.open_connection().await?);
// self.connection().await
// }
// }
}
impl<D, C, UR> AuthenticationRepository for AuthenticationAdapter<D, C, UR>
where
C: Send, //+ Sync,
D: Connect<Connection = C> + Sync,
UR: UserRepository<C> + Sync,
{
async fn get_user(&self, get: Get) -> Result<Option<User>> {
let c = self.driver.open_connection().await?;
let user = UR::read(&c, get.into()).await?;
D::close_connection(c).await?;
Ok(user)
}
async fn create_user(&self, new: New) -> Result<User> {
let mut c = self.driver.open_connection().await?;
let user = UR::create(&mut c, new).await?;
D::close_connection(c).await?;
Ok(user)
}
async fn start_session(&self, mut user: User) -> Result<Authenticated> {
let mut c = self.driver.open_connection().await?;
UR::update(&mut c, &mut user, Field::LastUsed(Some(data::Utc::now()))).await?;
D::close_connection(c).await?;
Ok(Authenticated(user))
}
}

View File

@ -0,0 +1,155 @@
use super::Authenticated;
pub use data::Validation;
use data::{BoxDynError, user};
use derive_more::{Deref, Into};
use garde::Validate;
pub type Result<T = (), E = Error> = std::result::Result<T, E>;
pub trait AuthenticationContract: Send {
fn name_available(&self, name: Name) -> impl Future<Output = Result> + Send;
fn email_available(&self, email: Email) -> impl Future<Output = Result> + Send;
fn login(&self, data: LoginData) -> impl Future<Output = Result<Authenticated>> + Send;
fn register(
&mut self,
data: RegisterData,
) -> impl Future<Output = Result<Authenticated>> + Send;
}
pub struct LoginData {
pub login: Login,
pub password: Password,
}
pub struct RegisterData {
pub name: Name,
pub email: Email,
pub password: Password,
}
#[derive(thiserror::Error, Debug)]
pub enum Error {
// Login
#[error("login was not found")]
LoginNotFound,
#[error("incorrect password")]
IncorrectPassword,
// Register
#[error("username is taken")]
NameExists,
#[error("email is already in use")]
EmailExists,
// Shared
#[error("invalid password: {0}")]
InvalidPassword(data::BoxDynError),
#[error("data source error: {0}")]
Repository(data::BoxDynError),
#[error(transparent)]
Other(data::BoxDynError),
}
pub type ReturnError<T = String> = (T, BoxDynError);
#[derive(Clone)]
pub enum Login {
Name(Name),
Email(Email),
}
impl AsRef<str> for Login {
fn as_ref(&self) -> &str {
match self {
Self::Name(name) => name.as_ref(),
Self::Email(email) => email.as_ref(),
}
}
}
impl TryFrom<String> for Login {
type Error = ReturnError;
fn try_from(value: String) -> Result<Self, Self::Error> {
let value = match Email::try_from(value) {
Ok(x) => return Ok(Self::Email(x)),
Err((v, _)) => v,
};
match Name::try_from(value) {
Ok(x) => Ok(Self::Name(x)),
Err((v, _)) => Err((v, "login is invalid".into())),
}
}
}
impl From<Login> for String {
fn from(val: Login) -> Self {
match val {
Login::Name(name) => name.0.into(),
Login::Email(email) => email.0.into(),
}
}
}
#[derive(Clone, Deref, Into)]
pub struct Name(user::Name);
impl AsRef<str> for Name {
fn as_ref(&self) -> &str {
self.0.as_ref()
}
}
impl TryFrom<String> for Name {
type Error = ReturnError;
fn try_from(value: String) -> Result<Self, Self::Error> {
#[derive(Validate)]
#[garde(transparent)]
struct Username<'a>(#[garde(alphanumeric, length(chars, min = 2, max = 31))] &'a str);
match Username(value.as_str()).validate() {
Ok(()) => (),
Err(e) => return Err((value, e.into())),
}
Ok(Self(user::Name::new(value)?))
}
}
#[derive(Clone, Deref, Into)]
pub struct Email(user::Email);
impl AsRef<str> for Email {
fn as_ref(&self) -> &str {
self.0.as_ref()
}
}
impl TryFrom<String> for Email {
type Error = ReturnError;
fn try_from(value: String) -> Result<Self, Self::Error> {
#[derive(Validate)]
#[garde(transparent)]
pub struct Email<'a>(#[garde(email, length(chars, max = 255))] &'a str);
match Email(value.as_str()).validate() {
Ok(()) => (),
Err(e) => return Err((value, e.into())),
}
Ok(Self(user::Email::new(value)?))
}
}
#[derive(Clone, Deref, Into)]
pub struct Password(String);
impl AsRef<str> for Password {
fn as_ref(&self) -> &str {
self.0.as_ref()
}
}
impl TryFrom<String> for Password {
type Error = ReturnError;
fn try_from(value: String) -> Result<Self, Self::Error> {
if value.chars().count() > 7 {
Ok(Self(value))
} else {
Err((value, "password must be longer than 7 characters".into()))
}
}
}

View File

@ -0,0 +1,26 @@
use data::Result;
use data::user::{Email, Name, New, Unique, User};
use derive_more::{Deref, DerefMut};
#[derive(Debug, Clone, Deref, DerefMut)]
pub struct Authenticated(pub(super) User);
pub trait AuthenticationRepository {
fn get_user(&self, get: Get) -> impl Future<Output = Result<Option<User>>> + Send;
fn create_user(&self, new: New) -> impl Future<Output = Result<User>> + Send;
fn start_session(&self, user: User) -> impl Future<Output = Result<Authenticated>> + Send;
}
pub enum Get {
Name(Name),
Email(Email),
}
impl From<Get> for Unique {
fn from(value: Get) -> Self {
match value {
Get::Name(s) => Self::Name(s),
Get::Email(s) => Self::Email(s),
}
}
}

View File

@ -0,0 +1,114 @@
use super::{
Authenticated, AuthenticationContract, AuthenticationRepository, Email, Error, Get, Login,
LoginData, Name, RegisterData, Result, Validation,
};
use argon2::{
Argon2,
password_hash::{
self, PasswordHash, PasswordHasher, PasswordVerifier, SaltString, rand_core::OsRng,
},
};
impl From<password_hash::Error> for Error {
fn from(error: password_hash::Error) -> Self {
match error {
password_hash::Error::Password => Self::IncorrectPassword,
_ => Self::InvalidPassword(error.into()),
}
}
}
pub struct AuthenticationService<R>
where
R: AuthenticationRepository,
{
pub(crate) repository: R,
}
impl<R> AuthenticationService<R>
where
R: AuthenticationRepository,
{
pub const fn new(repository: R) -> Self {
Self { repository }
}
}
impl<R> AuthenticationContract for AuthenticationService<R>
where
R: AuthenticationRepository + Send + Sync,
{
async fn name_available(&self, name: Name) -> Result {
if self
.repository
.get_user(Get::Name(name.into()))
.await
.map_err(Error::Repository)?
.is_some()
{
return Err(Error::NameExists);
}
Ok(())
}
async fn email_available(&self, email: Email) -> Result {
if self
.repository
.get_user(Get::Email(email.into()))
.await
.map_err(Error::Repository)?
.is_some()
{
return Err(Error::EmailExists);
}
Ok(())
}
async fn login(&self, data: LoginData) -> Result<Authenticated> {
let user = match data.login {
Login::Name(name) => self.repository.get_user(Get::Name(name.into())),
Login::Email(email) => self.repository.get_user(Get::Email(email.into())),
}
.await
.map_err(Error::Repository)?
.ok_or(Error::LoginNotFound)?;
Argon2::default().verify_password(
data.password.as_bytes(),
&PasswordHash::new(user.password())?,
)?;
self.repository
.start_session(user)
.await
.map_err(Error::Repository)
}
async fn register(&mut self, data: RegisterData) -> Result<Authenticated> {
self.name_available(data.name.clone()).await?;
self.email_available(data.email.clone()).await?;
// Get PHC string ($argon2id$v=19$...)
let phc = Argon2::default()
.hash_password(data.password.as_bytes(), &SaltString::generate(&mut OsRng))?
.to_string();
let password = data::user::Password::new(phc)
.map_err(|(_, e)| Error::InvalidPassword(e))?;
let user = self
.repository
.create_user(data::user::New {
name: data.name.into(),
email: data.email.into(),
password,
last_used: None,
})
.await
.map_err(Error::Repository)?;
self.repository
.start_session(user)
.await
.map_err(Error::Repository)
}
}

Some files were not shown because too many files have changed in this diff Show More