--- /dev/null
+<mxGraphModel dx="1172" dy="686" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#ffffff" math="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="TrustAnchor(API)" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="30" y="30" width="190" height="200" as="geometry"/></mxCell><mxCell id="3" value="- Impl: class<div>- m_pImpl: unique_ptr&lt;Impl&gt;</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="2" vertex="1"><mxGeometry y="26" width="190" height="44" as="geometry"/></mxCell><mxCell id="4" value="" style="line;html=1;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="2" vertex="1"><mxGeometry y="70" width="190" height="8" as="geometry"/></mxCell><mxCell id="5" value="+ TrustAnchor(string, string, uid)<div>+ TrustAnchor(string, string)<br></div><div>+ ~TrustAnchor(void)</div><div><br></div><div>+ install(bool): int</div><div>+ uninstall(void): int</div><div>+ launch(void): int</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="2" vertex="1"><mxGeometry y="78" width="190" height="112" as="geometry"/></mxCell><mxCell id="7" value="TrustAnchor::Impl" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="270" y="30" width="230" height="240" as="geometry"/></mxCell><mxCell id="8" value="<div><span>- m_logic: Logic</span><br></div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="7" vertex="1"><mxGeometry y="26" width="230" height="34" as="geometry"/></mxCell><mxCell id="12" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="7" source="3" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="-50" y="119" as="sourcePoint"/><mxPoint y="48" as="targetPoint"/><Array as="points"><mxPoint y="48"/></Array></mxGeometry></mxCell><mxCell id="9" value="" style="line;html=1;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="7" vertex="1"><mxGeometry y="60" width="230" height="8" as="geometry"/></mxCell><mxCell id="10" value="<div>+ Impl(string, string, uid)<div>+ Impl(string, string)<br></div><div>+ ~Impl(void)</div></div><div><span><br></span></div><div><div>+ install(bool): int<br></div><div>+ uninstall(void): int</div><div><span>+ launch(void): int</span><br></div></div><div><span>+ rollback(void): int</span></div><div><div><br></div><div>- preInstall(void):&nbsp;void</div><div>- preLaunch(void): void</div></div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="7" vertex="1"><mxGeometry y="68" width="230" height="172" as="geometry"/></mxCell><mxCell id="18" value="Exception" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="270" y="329" width="230" height="170" as="geometry"/></mxCell><mxCell id="19" value="- m_ec: int<div>- m_message: string</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="18" vertex="1"><mxGeometry y="26" width="230" height="44" as="geometry"/></mxCell><mxCell id="20" value="" style="line;html=1;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="18" vertex="1"><mxGeometry y="70" width="230" height="8" as="geometry"/></mxCell><mxCell id="21" value="+ Exception(int, char*, char*, int, stirng)<div>+ ~Exception(void)<br></div><div><br></div><div>+ what(void): char*</div><div>+ error(void): int</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="18" vertex="1"><mxGeometry y="78" width="230" height="82" as="geometry"/></mxCell><mxCell id="25" value="InitLib" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="30" y="268" width="190" height="72" as="geometry"/></mxCell><mxCell id="26" value="+ InitLib(void)<div>+ ~InitLib(void)</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="25" vertex="1"><mxGeometry y="26" width="190" height="44" as="geometry"/></mxCell><mxCell id="32" value="Logic" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="550" y="30" width="220" height="460" as="geometry"/></mxCell><mxCell id="33" value="<div><div><div>-&nbsp;m_appCertsPath: string</div><div>- m_customBasePath:&nbsp;string<br></div><div>- m_customCertsPath: string</div><div>- m_customBundlePath:&nbsp;string</div></div><div><br></div><div><span>- m_customCertNameSet:&nbsp;</span><span>set&lt;string&gt;</span><br></div><div>- m_customCertsData:&nbsp;<span>vector&lt;string&gt;</span></div></div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="32" vertex="1"><mxGeometry y="26" width="220" height="114" as="geometry"/></mxCell><mxCell id="35" value="i" style="line;html=1;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="32" vertex="1"><mxGeometry y="140" width="220" height="10" as="geometry"/></mxCell><mxCell id="36" value="<div>+ Logic(void)<div>+ ~Logic(void)<br></div><div><br></div></div><div>+ init(void): void</div><div>+ deinit(void): void</div><div><br></div><div><div>+ makeCustomCerts(bool):&nbsp;void</div><div>+ makeCustomBundle(bool): void</div></div><div><br></div><div>+ isAppCertsValid(string): bool</div><div><br></div><div>+ isSystemCertsUsed(void): bool<br></div><div><div><span>+ isSystemCertsModified(void): bool</span></div></div><div><div>+ setSystemCertsUsed(void): void<br></div></div><div><br></div><div><span>+ disassociateNS(void): void</span></div><div><span>+ mountCustomCerts(void): void</span></div><div><span>+ mountCustomBundle(void): void</span></div><div><br></div><div>- getUniqueCertName(string): string</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="32" vertex="1"><mxGeometry y="150" width="220" height="290" as="geometry"/></mxCell><mxCell id="37" value="Certificate" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="810" y="30" width="230" height="170" as="geometry"/></mxCell><mxCell id="38" value="- m_fp: unique_ptr&lt;File&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="37" vertex="1"><mxGeometry y="26" width="230" height="24" as="geometry"/></mxCell><mxCell id="39" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="37" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="-40" y="49" as="sourcePoint"/><mxPoint y="49" as="targetPoint"/></mxGeometry></mxCell><mxCell id="40" value="" style="line;html=1;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="37" vertex="1"><mxGeometry y="50" width="230" height="8" as="geometry"/></mxCell><mxCell id="41" value="<div>+ Certificate(string)</div><div><span>+ ~Certificate(void)</span></div><div><span><br></span></div><div><span>+ getSubjectNameHash(void): string</span></div><div><span>+ getCertificateData(void): string</span></div><div><br></div><div>- parseData(void): string</div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="37" vertex="1"><mxGeometry y="58" width="230" height="112" as="geometry"/></mxCell><mxCell id="42" value="FileSystem" style="swimlane;html=1;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;" parent="1" vertex="1"><mxGeometry x="810" y="232" width="210" height="88" as="geometry"/></mxCell><mxCell id="45" value="<div><div>+ linkTo(string, string): void</div><div>+ readLink(string): void</div></div><div>+ getName(string): string<br></div>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="42" vertex="1"><mxGeometry y="26" width="210" height="50" as="geometry"/></mxCell><mxCell id="49" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" edge="1"><mxGeometry x="499" y="80" as="geometry"><mxPoint x="499" y="80" as="sourcePoint"/><mxPoint x="549" y="80" as="targetPoint"/><Array as="points"><mxPoint x="549" y="80"/></Array></mxGeometry></mxCell><mxCell id="53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;entryX=0.5;entryY=1;" parent="1" source="7" target="7" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="58" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="770" y="285.9999999999999" as="sourcePoint"/><mxPoint x="810" y="286" as="targetPoint"/></mxGeometry></mxCell><mxCell id="61" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;entryX=1;entryY=0.5;" parent="1" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="550" y="360" as="sourcePoint"/><mxPoint x="500.4578313253012" y="359.15662650602417" as="targetPoint"/><Array as="points"><mxPoint x="540" y="360"/></Array></mxGeometry></mxCell><mxCell id="64" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="920" y="324" as="sourcePoint"/><mxPoint x="450" y="500" as="targetPoint"/><Array as="points"><mxPoint x="899" y="533"/><mxPoint x="450" y="533"/></Array></mxGeometry></mxCell><mxCell id="65" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="1030.5783132530123" y="203" as="sourcePoint"/><mxPoint x="410" y="500" as="targetPoint"/><Array as="points"><mxPoint x="1031" y="543"/><mxPoint x="410" y="543"/></Array></mxGeometry></mxCell><mxCell id="67" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" source="10" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="1040.5783132530123" y="210" as="sourcePoint"/><mxPoint x="385" y="330" as="targetPoint"/><Array as="points"><mxPoint x="385" y="290"/><mxPoint x="385" y="290"/></Array></mxGeometry></mxCell></root></mxGraphModel>
\ No newline at end of file