diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-24 10:38:36 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-24 10:38:36 +0100 |
| commit | 7b4bd3577a31d0f0adc7371840642791ae1567f4 (patch) | |
| tree | 1a8afc973aaa739d0d763315cad2fd376d1cea9c /doc | |
ADD: Open version, with important changes kept out.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/DDK.pdf | bin | 0 -> 24997 bytes | |||
| -rw-r--r-- | doc/EPM.pdf | bin | 0 -> 12517 bytes | |||
| -rw-r--r-- | doc/GUI-System.drawio | 34 | ||||
| -rw-r--r-- | doc/MFlash.pdf | bin | 0 -> 25005 bytes | |||
| -rw-r--r-- | doc/NeFS.pdf | bin | 0 -> 13466 bytes | |||
| -rw-r--r-- | doc/OS-Design.drawio | 25 | ||||
| -rw-r--r-- | doc/OS-Scheduler-Design.drawio | 25 | ||||
| -rw-r--r-- | doc/OS-Timer-Design.drawio | 49 | ||||
| -rw-r--r-- | doc/SCHED-DESIGN.drawio | 34 | ||||
| -rw-r--r-- | doc/ZXD.drawio | 31 |
10 files changed, 198 insertions, 0 deletions
diff --git a/doc/DDK.pdf b/doc/DDK.pdf Binary files differnew file mode 100644 index 00000000..7029e0cc --- /dev/null +++ b/doc/DDK.pdf diff --git a/doc/EPM.pdf b/doc/EPM.pdf Binary files differnew file mode 100644 index 00000000..d9eeebc9 --- /dev/null +++ b/doc/EPM.pdf diff --git a/doc/GUI-System.drawio b/doc/GUI-System.drawio new file mode 100644 index 00000000..bd31ac14 --- /dev/null +++ b/doc/GUI-System.drawio @@ -0,0 +1,34 @@ +<mxfile host="65bd71144e"> + <diagram name="Page-1" id="yf45V2V4Ppj0j8o4dQoi"> + <mxGraphModel dx="530" dy="567" 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="mspNsT0Gx7HsNPX6GqQO-2" value="LibSCI" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="50" y="450" width="450" height="140" as="geometry"/> + </mxCell> + <mxCell id="2" style="edgeStyle=none;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="mspNsT0Gx7HsNPX6GqQO-3" target="mspNsT0Gx7HsNPX6GqQO-13"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="mspNsT0Gx7HsNPX6GqQO-3" value="LibGUI" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="250" y="210" width="270" height="160" as="geometry"/> + </mxCell> + <mxCell id="mspNsT0Gx7HsNPX6GqQO-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.093;entryY=1.019;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="mspNsT0Gx7HsNPX6GqQO-2" target="mspNsT0Gx7HsNPX6GqQO-3" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="mspNsT0Gx7HsNPX6GqQO-12" value="<h1 style="margin-top: 0px;">GUI System<span style="white-space: pre;">	</span></h1><p>The system works by a set of</p><p>Interface files (.ib) and Style files</p><p>(.style) describing how a control should look. an Interface can also contain C code.</p><p>Lets put it straight, we need to support</p><p>the GPU for our Graphics stack.</p>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="560" y="260" width="220" height="220" as="geometry"/> + </mxCell> + <mxCell id="mspNsT0Gx7HsNPX6GqQO-13" value="ZkaOS Subsystem<div>App</div>" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="55" y="40" width="120" height="60" as="geometry"/> + </mxCell> + <mxCell id="mspNsT0Gx7HsNPX6GqQO-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.526;entryY=-0.025;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="mspNsT0Gx7HsNPX6GqQO-13" target="mspNsT0Gx7HsNPX6GqQO-3" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="mspNsT0Gx7HsNPX6GqQO-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.743;entryY=0.002;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="mspNsT0Gx7HsNPX6GqQO-3" target="mspNsT0Gx7HsNPX6GqQO-2" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile>
\ No newline at end of file diff --git a/doc/MFlash.pdf b/doc/MFlash.pdf Binary files differnew file mode 100644 index 00000000..2e6d7d42 --- /dev/null +++ b/doc/MFlash.pdf diff --git a/doc/NeFS.pdf b/doc/NeFS.pdf Binary files differnew file mode 100644 index 00000000..1b804346 --- /dev/null +++ b/doc/NeFS.pdf diff --git a/doc/OS-Design.drawio b/doc/OS-Design.drawio new file mode 100644 index 00000000..130c3d3e --- /dev/null +++ b/doc/OS-Design.drawio @@ -0,0 +1,25 @@ +<mxfile host="65bd71144e"> + <diagram name="Page-1" id="lDkK2i6CeL2VbSOVDvrP"> + <mxGraphModel dx="1144" dy="743" 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="ifhO3zQZNW-sXvZMTmu8-2" value="LibSCI Dylib (RING 3) (EL0)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="340" width="360" height="30" as="geometry"/> + </mxCell> + <mxCell id="ifhO3zQZNW-sXvZMTmu8-3" value="Dylibs and Applications. (RING 3) (EL0)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="295" width="360" height="35" as="geometry"/> + </mxCell> + <mxCell id="ifhO3zQZNW-sXvZMTmu8-8" value="<h1 style="margin-top: 0px;"><span style="background-color: initial;">OS's Design</span></h1><h1 style="margin-top: 0px;"><span style="font-size: 12px; font-weight: 400;">This describes how ZKA is structued and how we're supposed to deal with (rings included.)</span></h1>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="620" y="310" width="180" height="180" as="geometry"/> + </mxCell> + <mxCell id="ifhO3zQZNW-sXvZMTmu8-13" value="NewOS MP Kernel, DDK and it's drivers. (RING 0) (EL1)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="450" width="360" height="60" as="geometry"/> + </mxCell> + <mxCell id="4" value="LibSCI and DDK syscalls/kerncalls (RING 0/RING 2) (EL0, EL1)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="380" width="360" height="60" as="geometry"/> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile>
\ No newline at end of file diff --git a/doc/OS-Scheduler-Design.drawio b/doc/OS-Scheduler-Design.drawio new file mode 100644 index 00000000..c8a382c4 --- /dev/null +++ b/doc/OS-Scheduler-Design.drawio @@ -0,0 +1,25 @@ +<mxfile host="65bd71144e"> + <diagram name="Page-1" id="lDkK2i6CeL2VbSOVDvrP"> + <mxGraphModel dx="764" dy="289" 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="ifhO3zQZNW-sXvZMTmu8-2" value="LibSCI DLL inside code (RING 3)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="340" width="360" height="30" as="geometry"/> + </mxCell> + <mxCell id="ifhO3zQZNW-sXvZMTmu8-3" value="Running code (RING 3)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="295" width="360" height="35" as="geometry"/> + </mxCell> + <mxCell id="ifhO3zQZNW-sXvZMTmu8-8" value="<h1 style="margin-top: 0px;"><span style="background-color: initial;">ZKA Scheduler</span></h1><h1 style="margin-top: 0px;"><span style="font-size: 12px; font-weight: 400; background-color: initial;">This describes how ZKA is structued to schedule tasks.</span><br></h1><div>A UserProcess may be attached to another one (thread)</div><div>Otherwise it's a process within a team.</div>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="620" y="290" width="180" height="200" as="geometry"/> + </mxCell> + <mxCell id="ifhO3zQZNW-sXvZMTmu8-13" value="UserProcess structure (RING 0)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="235.5" y="380" width="360" height="60" as="geometry"/> + </mxCell> + <mxCell id="4" value="HardwareThread, HardwareThreadScheduler and UserProcessScheduler (RING 0)" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="234" y="450" width="360" height="60" as="geometry"/> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile>
\ No newline at end of file diff --git a/doc/OS-Timer-Design.drawio b/doc/OS-Timer-Design.drawio new file mode 100644 index 00000000..ca081fd3 --- /dev/null +++ b/doc/OS-Timer-Design.drawio @@ -0,0 +1,49 @@ +<mxfile host="65bd71144e"> + <diagram name="Page-1" id="SMmOiZGLec9H7ruN5qyQ"> + <mxGraphModel dx="764" dy="289" 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="c-_7pHU60HQ0aR4bwu-4-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="c-_7pHU60HQ0aR4bwu-4-1" target="c-_7pHU60HQ0aR4bwu-4-2" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="c-_7pHU60HQ0aR4bwu-4-1" target="c-_7pHU60HQ0aR4bwu-4-4" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="c-_7pHU60HQ0aR4bwu-4-1" target="c-_7pHU60HQ0aR4bwu-4-6" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-1" value="TIME_INFO" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="340" y="230" width="120" height="60" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-2" value="APIC/PIC/IOAPIC" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="340" y="400" width="120" height="60" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-4" value="GT" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="530" y="400" width="120" height="60" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-6" value="CLINT" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="150" y="400" width="120" height="60" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="c-_7pHU60HQ0aR4bwu-4-8" target="c-_7pHU60HQ0aR4bwu-4-1" edge="1"> + <mxGeometry relative="1" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-8" value="Scheduler context switch (on non MT mode),<br>Also SoftwareTimer gets implemented." style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="130" y="75" width="120" height="90" as="geometry"/> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="c-_7pHU60HQ0aR4bwu-4-10" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="530" y="120" as="sourcePoint"/> + <mxPoint x="430" y="230" as="targetPoint"/> + </mxGeometry> + </mxCell> + <mxCell id="c-_7pHU60HQ0aR4bwu-4-10" value="Hook 2 system calls for timing purposes.<br>(Wait, WaitUntil)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="560" y="90" width="120" height="60" as="geometry"/> + </mxCell> + <mxCell id="2" value="It is either abstracted like this, or has a direct interface to it." style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="490" y="235" width="200" height="55" as="geometry"/> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile>
\ No newline at end of file diff --git a/doc/SCHED-DESIGN.drawio b/doc/SCHED-DESIGN.drawio new file mode 100644 index 00000000..ab75d000 --- /dev/null +++ b/doc/SCHED-DESIGN.drawio @@ -0,0 +1,34 @@ +<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" version="24.7.14"> + <diagram name="Page-1" id="6QVppPX6dMcFLP7eY7Ap"> + <mxGraphModel dx="1368" dy="717" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="V4mTDnC5FWkVb8QuH4lW-1" target="V4mTDnC5FWkVb8QuH4lW-2"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-1" value="ISCHEDOBJECT INTERFACE" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="90" y="70" width="670" height="60" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="V4mTDnC5FWkVb8QuH4lW-2" target="V4mTDnC5FWkVb8QuH4lW-4"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-2" value="USER SCHEDULER/THREAD SCHEDULER/HW THREAD SCHEDULER" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="90" y="170" width="670" height="50" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-4" value="ANOTHER SCHEDULER OR DIRECT CALL TO DRIVER/HAL." style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="90" y="280" width="670" height="60" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-12" value="PROCESS BANKS CPU 1..N" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="1"> + <mxGeometry x="338" y="450" width="175" height="80" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="V4mTDnC5FWkVb8QuH4lW-4" target="V4mTDnC5FWkVb8QuH4lW-12"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V4mTDnC5FWkVb8QuH4lW-15" value="<h1 style="margin-top: 0px;">Raise error checks when:</h1><p>- Kernel level tasks crashes.</p><p>- An assertion fails.</p><p>- System Call isn't returning correctly.</p><p>- Driver is at an uncertain state.</p>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="580" y="390" width="180" height="210" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/doc/ZXD.drawio b/doc/ZXD.drawio new file mode 100644 index 00000000..f71ddba5 --- /dev/null +++ b/doc/ZXD.drawio @@ -0,0 +1,31 @@ +<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" version="24.7.12"> + <diagram name="Page-1" id="PApGwmLcT2JRCILoETeI"> + <mxGraphModel dx="1368" dy="717" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="5xbXWvOdvmnQnRAweQaM-1" value="<h1 style="margin-top: 0px;">ZXD</h1><p>ZKA eXtended Driver Format.</p><p>An Extended PE32+</p><p>With additional headers and such.</p>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="40" y="40" width="210" height="130" as="geometry" /> + </mxCell> + <mxCell id="5xbXWvOdvmnQnRAweQaM-2" value="ZKA HEADER" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="40" y="180" width="310" height="60" as="geometry" /> + </mxCell> + <mxCell id="5xbXWvOdvmnQnRAweQaM-3" value="PE32+ ZONE" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="40" y="260" width="310" height="60" as="geometry" /> + </mxCell> + <mxCell id="5xbXWvOdvmnQnRAweQaM-4" value="ZXD STUB [1..N]" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="40" y="340" width="310" height="60" as="geometry" /> + </mxCell> + <mxCell id="FgewEam9b60nFajCTQDb-1" value="StubHeapSz, StubStackSz, StubPageFlags..." style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="380" y="355" width="290" height="30" as="geometry" /> + </mxCell> + <mxCell id="FgewEam9b60nFajCTQDb-2" value="Executable image type..." style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="380" y="274" width="290" height="30" as="geometry" /> + </mxCell> + <mxCell id="FgewEam9b60nFajCTQDb-5" value="ZKA executable header." style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="380" y="194" width="290" height="30" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> |
