CVE-2023-3398 (JavaScript, published 2023-06-26T11:15Z)
Description: value: Denial of Service in GitHub repository jgraph/drawio prior to 18.1.3.
Severity: nan (CVSS v3 base score: 7.5)
Weakness: CWE-400 \u2014 Uncontrolled Resource Consumption
The product does not properly control the allocation and maintenance of a limited resource, thereby enabling an actor to influence the amount of resources consumed, eventually leading to the exhaustion of available resources.
Repository: https://github.com/jgraph/drawio
Files changed:
ChangeLog
VERSION
src/main/java/com/mxgraph/online/ConverterServlet.java
src/main/java/com/mxgraph/online/EmbedServlet2.java
src/main/java/com/mxgraph/online/ExportProxyServlet.java
src/main/java/com/mxgraph/online/ProxyServlet.java
src/main/java/com/mxgraph/online/Utils.java
src/main/webapp/js/app.min.js
src/main/webapp/js/diagramly/EditorUi.js
src/main/webapp/js/diagramly/ElectronApp.js
src/main/webapp/js/diagramly/Menus.js
src/main/webapp/js/diagramly/Minimal.js
src/main/webapp/js/grapheditor/EditorUi.js
src/main/webapp/js/grapheditor/Graph.js
src/main/webapp/js/grapheditor/Init.js
src/main/webapp/js/grapheditor/Menus.js
src/main/webapp/js/integrate.min.js
src/main/webapp/js/viewer-static.min.js
src/main/webapp/js/viewer.min.js
src/main/webapp/mxgraph/mxClient.js
src/main/webapp/service-worker.js
src/main/webapp/service-worker.js.map
Commit message: 18.1.3 release


Vulnerable code:
18.1.2
				
						Utils.copy(connection.getInputStream(), stream);
	
				Utils.copy(request.getInputStream(), params);
			    { 
			Utils.copy(is, out);
		int read;
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|callto|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";
window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";
window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
Editor=function(a,c,f,e,g){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=e||this.createGraph(c,f);this.editable=null!=g?g:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(d){this.status=d;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
(function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(c){}})();Editor.defaultHtmlFont='-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"';Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.extractGraphModelFromPng=function(a){var c=null;try{var f=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0);EditorUi.parsePng(e,mxUtils.bind(this,function(g,d,k){g=e.substring(g+8,g+8+k);"zTXt"==d?(k=g.indexOf(String.fromCharCode(0)),"mxGraphModel"==g.substring(0,k)&&(g=pako.inflateRaw(Graph.stringToArrayBuffer(g.substring(k+2)),{to:"string"}).replace(/\+/g," "),null!=g&&0<g.length&&(c=g))):"tEXt"==d&&(g=g.split(String.fromCharCode(0)),1<g.length&&("mxGraphModel"==
g[0]||"mxfile"==g[0])&&(c=g[1]));if(null!=c||"IDAT"==d)return!0}))}catch(g){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c};Editor.isDarkMode=function(a){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.editAsNew=function(a,c){c=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(c+=(0<c.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var f=null,e=mxUtils.bind(this,function(g){"ready"==g.data&&g.source==f&&(mxEvent.removeListener(window,"message",e),f.postMessage(a,"*"))});mxEvent.addListener(window,"message",e);f=this.graph.openLink(this.getEditBlankUrl(c+(0<c.length?"&":"?")+"client=1"),
null,!0)}else this.graph.openLink(this.getEditBlankUrl(c)+"#R"+encodeURIComponent(a))};Editor.prototype.createGraph=function(a,c){a=new Graph(null,c,null,null,a);a.transparentBackground=!1;var f=a.isCssTransformsSupported,e=this;a.isCssTransformsSupported=function(){return f.apply(this,arguments)&&(!e.chromeless||!mxClient.IS_SF)};this.chromeless||(a.isBlankLink=function(g){return!this.isExternalProtocol(g)});return a};
Editor.prototype.readGraphState=function(a){var c=a.getAttribute("grid");if(null==c||""==c)c=this.graph.defaultGridEnabled?"1":"0";this.graph.gridEnabled="0"!=c&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=a.getAttribute("guides");this.graph.setTooltips("0"!=a.getAttribute("tooltips"));this.graph.setConnectable("0"!=a.getAttribute("connect"));this.graph.connectionArrowsEnabled=
"0"!=a.getAttribute("arrows");this.graph.foldingEnabled="0"!=a.getAttribute("fold");this.isChromelessView()&&this.graph.foldingEnabled&&(this.graph.foldingEnabled="1"==urlParams.nav,this.graph.cellRenderer.forceControlClickHandler=this.graph.foldingEnabled);c=parseFloat(a.getAttribute("pageScale"));!isNaN(c)&&0<c?this.graph.pageScale=c:this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.isLightboxView()||this.graph.isViewer()?this.graph.pageVisible=!1:(c=a.getAttribute("page"),this.graph.pageVisible=
null!=c?"0"!=c:this.graph.defaultPageVisible);this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;c=parseFloat(a.getAttribute("pageWidth"));var f=parseFloat(a.getAttribute("pageHeight"));isNaN(c)||isNaN(f)||(this.graph.pageFormat=new mxRectangle(0,0,c,f));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null};
Editor.prototype.setGraphXml=function(a){if(null!=a){var c=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),c.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var f=c.document.createElement("mxGraphModel");f.appendChild(a);c.decode(f,this.graph.getModel());
Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(e,g){c.undoableEditHappened(g.getProperty("edit"))};var f=mxUtils.bind(this,function(e,g){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(e,g){e=a.getSelectionCellsForChanges(g.getProperty("edit").changes,function(k){return!(k instanceof mxChildChange)});if(0<e.length){a.getModel();g=[];for(var d=0;d<e.length;d++)null!=
a.view.getState(e[d])&&g.push(e[d]);a.setSelectionCells(g)}};c.addListener(mxEvent.UNDO,f);c.addListener(mxEvent.REDO,f);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};
function Dialog(a,c,f,e,g,d,k,n,u,m,r){var x=u?57:0,A=f,C=e,F=u?0:64,K=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(K.height=window.innerHeight);var E=K.height,O=Math.max(1,Math.round((K.width-f-F)/2)),R=Math.max(1,Math.round((E-e-a.footerHeight)/3));c.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-F):f;e=Math.min(e,E-F);0<a.dialogs.length&&(this.zIndex+=
R+=a.embedViewport.y,O+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var Q=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(O,R,f,e);O=g.x;R=g.y;Q.style.width=f+"px";Q.style.height=e+"px";Q.style.left=O+"px";Q.style.top=R+"px";Q.style.zIndex=this.zIndex;Q.appendChild(c);document.body.appendChild(Q);!n&&c.clientHeight>Q.clientHeight-F&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(d&&(d=document.createElement("img"),d.setAttribute("src",Dialog.prototype.closeImage),
"px";!n&&c.clientHeight>Q.clientHeight-F&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=R+14+"px",this.dialogImg.style.left=O+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=Q;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,c){return new mxPoint(a,c)};Dialog.prototype.close=function(a,c){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,c))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
var ErrorDialog=function(a,c,f,e,g,d,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=c){var A=document.createElement("div");A.style.padding="0px";A.style.margin="0px";A.style.fontSize="18px";A.style.paddingBottom="16px";A.style.marginBottom="10px";A.style.borderBottom="1px solid #c0c0c0";A.style.color="gray";A.style.whiteSpace="nowrap";A.style.textOverflow="ellipsis";A.style.overflow="hidden";mxUtils.write(A,c);A.setAttribute("title",c);x.appendChild(A)}c=
document.createElement("div");c.style.lineHeight="1.2em";c.style.padding="6px";c.innerHTML=f;x.appendChild(c);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=d&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();d()}),c.className="geBtn",f.appendChild(c),f.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=r&&r()}),m.className="geBtn",f.appendChild(m));var C=mxUtils.button(e,function(){u&&a.hideDialog();null!=g&&g()});
C.className="geBtn";f.appendChild(C);null!=k&&(e=mxUtils.button(k,function(){u&&a.hideDialog();null!=n&&n()}),e.className="geBtn gePrimaryBtn",f.appendChild(e));this.init=function(){C.focus()};x.appendChild(f);this.container=x},PrintDialog=function(a,c){this.create(a,c)};
PrintDialog.prototype.create=function(a){function c(C){var F=k.checked||m.checked,K=parseInt(x.value)/100;isNaN(K)&&(K=1,x.value="100%");K*=.75;var E=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,O=1/f.pageScale;if(F){var R=k.checked?1:parseInt(r.value);isNaN(R)||(O=mxUtils.getScaleForPageCount(R,f,E))}f.getGraphBounds();var Q=R=0;E=mxRectangle.fromRectangle(E);E.width=Math.ceil(E.width*K);E.height=Math.ceil(E.height*K);O*=K;!F&&f.pageVisible?(K=f.getPageLayout(),R-=K.x*E.width,Q-=K.y*E.height):
n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)});A.className="geBtn";n.appendChild(A)}A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});A.className="geBtn gePrimaryBtn";n.appendChild(A);a.editor.cancelFirst||
n.appendChild(u);d.appendChild(n);g.appendChild(d);e.appendChild(g);this.container=e};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var c=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(c,500):c()}}catch(f){}};
PrintDialog.createPrintPreview=function(a,c,f,e,g,d,k){c=new mxPrintPreview(a,c,f,e,g,d);c.title=mxResources.get("preview");c.printBackgroundImage=!0;c.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";c.backgroundColor=a;var n=c.writeHead;c.writeHead=function(u){n.apply(this,arguments);u.writeln('<style type="text/css">');u.writeln("@media screen {");u.writeln("  body > div { padding:30px;box-sizing:content-box; }");u.writeln("}");u.writeln("</style>")};return c};
var PageSetupDialog=function(a){function c(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var E=F;null!=E&&Graph.isPageLink(E.src)&&(E=a.createImageForPageLink(E.src,null));null!=E&&null!=E.src?(C.setAttribute("src",E.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var e=a.editor.graph,g=document.createElement("table");g.style.width=
mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var r=e.background;c();mxEvent.addListener(m,
"click",function(E){a.pickColor(r||"none",function(O){r=O;c()});mxEvent.consume(E)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=e.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var E=parseInt(x.value);x.value=Math.max(1,isNaN(E)?e.getGridSize():E)});k.appendChild(n);d.appendChild(k);k=document.createElement("tr");
PageSetupDialog.addPageFormatPanel=function(a,c,f,e){function g(aa,T,U){if(U||x!=document.activeElement&&A!=document.activeElement){aa=!1;for(T=0;T<F.length;T++)U=F[T],R?"custom"==U.key&&(n.value=U.key,R=!1):null!=U.format&&("a4"==U.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==U.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==U.format.width&&
n.value="custom",u.style.display="none",r.style.display="")}}c="format-"+c;var d=document.createElement("input");d.setAttribute("name",c);d.setAttribute("type","radio");d.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",c);k.setAttribute("type","radio");k.setAttribute("value","landscape");var n=document.createElement("select");n.style.marginBottom="8px";n.style.borderRadius="4px";n.style.border="1px solid rgb(160, 160, 160)";n.style.width="206px";var u=
document.createElement("div");u.style.marginLeft="4px";u.style.width="210px";u.style.height="24px";d.style.marginRight="6px";u.appendChild(d);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));u.appendChild(c);k.style.marginLeft="10px";k.style.marginRight="6px";u.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));u.appendChild(m);var r=document.createElement("div");r.style.marginLeft=
Math.floor(100*parseFloat(A.value)));"custom"!=n.value&&k.checked&&(aa=new mxRectangle(0,0,aa.height,aa.width));T&&R||aa.width==Q.width&&aa.height==Q.height||(Q=aa,null!=e&&e(Q))};mxEvent.addListener(c,"click",function(aa){d.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(m,"click",function(aa){k.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(A,"blur",P);mxEvent.addListener(A,"click",P);mxEvent.addListener(k,"change",
var FilenameDialog=function(a,c,f,e,g,d,k,n,u,m,r,x){u=null!=u?u:!0;var A=document.createElement("table"),C=document.createElement("tbody");A.style.position="absolute";A.style.top="30px";A.style.left="20px";var F=document.createElement("tr");var K=document.createElement("td");K.style.textOverflow="ellipsis";K.style.textAlign="right";K.style.maxWidth="100px";K.style.fontSize="10pt";K.style.width="84px";mxUtils.write(K,(g||mxResources.get("filename"))+":");F.appendChild(K);var E=document.createElement("input");
E.setAttribute("value",c||"");E.style.marginLeft="4px";E.style.width=null!=x?x+"px":"180px";var O=mxUtils.button(f,function(){if(null==d||d(E.value))u&&a.hideDialog(),e(E.value)});O.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(E.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?E.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=A.parentNode;if(null!=R){var Q=null;mxEvent.addListener(R,"dragleave",function(P){null!=Q&&(Q.style.backgroundColor=
K=document.createElement("td"),K.style.whiteSpace="nowrap",F.appendChild(K),c=FilenameDialog.createFileTypes(a,E,a.editor.diagramFileTypes),c.style.marginLeft="4px",c.style.width="198px",K.appendChild(c),E.style.width=null!=x?x-40+"px":"190px",F.appendChild(K),C.appendChild(F)));null!=k&&(F=document.createElement("tr"),K=document.createElement("td"),K.colSpan=2,K.appendChild(k),F.appendChild(K),C.appendChild(F));F=document.createElement("tr");K=document.createElement("td");K.colSpan=2;K.style.paddingTop=
FilenameDialog.createTypeHint=function(a,c,f){var e=document.createElement("img");e.style.backgroundPosition="center bottom";e.style.backgroundRepeat="no-repeat";e.style.margin="2px 0 0 4px";e.style.verticalAlign="top";e.style.cursor="pointer";e.style.height="16px";e.style.width="16px";mxUtils.setOpacity(e,70);var g=function(){e.setAttribute("src",Editor.helpImage);e.setAttribute("title",mxResources.get("help"));for(var d=0;d<f.length;d++)if(0<f[d].ext.length&&c.value.toLowerCase().substring(c.value.length-
f[d].ext.length-1)=="."+f[d].ext){e.setAttribute("title",mxResources.get(f[d].title));break}};mxEvent.addListener(c,"keyup",g);mxEvent.addListener(c,"change",g);mxEvent.addListener(e,"click",function(d){var k=e.getAttribute("title");e.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=k&&a.showError(null,k,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(d)});
FilenameDialog.createFileTypes=function(a,c,f){var e=document.createElement("select");for(a=0;a<f.length;a++){var g=document.createElement("option");g.setAttribute("value",a);mxUtils.write(g,mxResources.get(f[a].description)+" (."+f[a].extension+")");e.appendChild(g)}mxEvent.addListener(e,"change",function(d){d=f[e.value].extension;var k=c.value.lastIndexOf(".drawio.");k=0<k?k:c.value.lastIndexOf(".");"drawio"!=d&&(d="drawio."+d);c.value=0<k?c.value.substring(0,k+1)+d:c.value+"."+d;"createEvent"in
document?(d=document.createEvent("HTMLEvents"),d.initEvent("change",!1,!0),c.dispatchEvent(d)):c.fireEvent("onchange")});a=function(d){d=c.value.toLowerCase();for(var k=0,n=0;n<f.length;n++){var u=f[n].extension,m=null;"drawio"!=u&&(m=u,u=".drawio."+u);if(d.substring(d.length-u.length-1)=="."+u||null!=m&&d.substring(d.length-m.length-1)=="."+m){k=n;break}}e.value=k};mxEvent.addListener(c,"change",a);mxEvent.addListener(c,"keyup",a);a();return e};
k(this.verticalPageBreaks)};var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(k,n,u){for(var m=0;m<n.length;m++){if(this.graph.isTableCell(n[m])||this.graph.isTableRow(n[m]))return!1;if(this.graph.getModel().isVertex(n[m])){var r=this.graph.getCellGeometry(n[m]);if(null!=r&&r.relative)return!1}}return c.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var k=
this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,c,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=c||document.body;var e=this.editor.graph;e.lightbox=f;var g=e.getGraphBounds;e.getGraphBounds=function(){var I=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var H=this.view.translate,S=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((H.x+L.x)*S,(H.y+L.y)*S,L.width*S,L.height*S))}return I};e.useCssTransforms&&(this.lazyZoomDelay=
e.currentVertexStyle=mxUtils.clone(e.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<u.length;c++)0>mxUtils.indexOf(d,u[c])&&d.push(u[c]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),r=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<r.length;c++)for(f=0;f<r[c].length;f++)d.push(r[c][f]);for(c=0;c<k.length;c++)0>mxUtils.indexOf(d,k[c])&&d.push(k[c]);var x=function(I,L,H,S,V,ea,ka){S=null!=S?S:e.currentVertexStyle;V=null!=V?V:e.currentEdgeStyle;ea=null!=ea?ea:!0;H=null!=H?H:e.getModel();if(ka){ka=[];for(var wa=0;wa<I.length;wa++)ka=ka.concat(H.getDescendants(I[wa]));I=ka}H.beginUpdate();try{for(wa=0;wa<I.length;wa++){var W=I[wa];if(L)var Z=["fontSize",
A,this.footerContainer.onselectstart=A,this.footerContainer.onmousedown=A,null!=this.tabContainer&&(this.tabContainer.onselectstart=A));!this.editor.chromeless||this.editor.editable?(c=function(I){if(null!=I){var L=mxEvent.getSource(I);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return A(I)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=
c):e.panningHandler.usePopupTrigger=!1;e.init(this.diagramContainer);mxClient.IS_SVG&&null!=e.view.getDrawPane()&&(c=e.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=e.graphHandler){var C=e.graphHandler.start;e.graphHandler.start=function(){null!=fa.hoverIcons&&fa.hoverIcons.reset();C.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(I){var L=mxUtils.getOffset(this.diagramContainer);
EditorUi.parsePng=function(a,c,f){function e(n,u){var m=d;d+=u;return n.substring(m,d)}function g(n){n=e(n,4);return n.charCodeAt(3)+(n.charCodeAt(2)<<8)+(n.charCodeAt(1)<<16)+(n.charCodeAt(0)<<24)}var d=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(e(a,4),"IHDR"!=e(a,4))null!=f&&f();else{e(a,17);do{f=g(a);var k=e(a,4);if(null!=c&&c(d-8,k,f))break;value=e(a,f);e(a,4);if("IEND"==k)break}while(f)}};mxUtils.extend(EditorUi,mxEventSource);
"keydown",mxUtils.bind(this,function(e){this.onKeyDown(e)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(e){this.onKeyPress(e)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,c=a.getSelectionCells(),f=this.initSelectionState(),e=!0,g=0;g<c.length;g++){var d=a.getCurrentCellStyle(c[g]);"0"!=mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(f,c[g],c,e),e=!1)}this.updateSelectionStateForTableCells(f);return f};
EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var c=mxUtils.sortCells(a.cells),f=this.editor.graph.model,e=f.getParent(c[0]),g=f.getParent(e),d=e.getIndex(c[0]),k=g.getIndex(e),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),d):null;r<c.length-1;){var A=c[++r];null==x||x!=A||null!=n&&u!=n||(n=u,u=0,m++,e=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),d):null);var C=this.editor.graph.view.getState(A);
if(A==f.getChildAt(e,d+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=c[0],a.colspan=u,a.rowspan=m)}};
EditorUi.prototype.updateSelectionStateForCell=function(a,c,f,e){f=this.editor.graph;a.cells.push(c);if(f.getModel().isVertex(c)){a.connections=0<f.model.getEdgeCount(c);a.unlocked=a.unlocked&&!f.isCellLocked(c);a.resizable=a.resizable&&f.isCellResizable(c);a.rotatable=a.rotatable&&f.isCellRotatable(c);a.movable=a.movable&&f.isCellMovable(c)&&!f.isTableRow(c)&&!f.isTableCell(c);a.swimlane=a.swimlane||f.isSwimlane(c);a.table=a.table||f.isTable(c);a.cell=a.cell||f.isTableCell(c);a.row=a.row||f.isTableRow(c);
a.vertices.push(c);var g=f.getCellGeometry(c);if(null!=g&&(0<g.width?null==a.width?a.width=g.width:a.width!=g.width&&(a.width=""):a.containsLabel=!0,0<g.height?null==a.height?a.height=g.height:a.height!=g.height&&(a.height=""):a.containsLabel=!0,!g.relative||null!=g.offset)){var d=g.relative?g.offset.x:g.x;g=g.relative?g.offset.y:g.y;null==a.x?a.x=d:a.x!=d&&(a.x="");null==a.y?a.y=g:a.y!=g&&(a.y="")}}else f.getModel().isEdge(c)&&(a.edges.push(c),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=
!1);c=f.view.getState(c);null!=c&&(a.autoSize=a.autoSize||f.isAutoSizeState(c),a.glass=a.glass&&f.isGlassState(c),a.rounded=a.rounded&&f.isRoundedState(c),a.lineJumps=a.lineJumps&&f.isLineJumpState(c),a.image=a.image&&f.isImageState(c),a.shadow=a.shadow&&f.isShadowState(c),a.fill=a.fill&&f.isFillState(c),a.stroke=a.stroke&&f.isStrokeState(c),d=mxUtils.getValue(c.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==d,f.mergeStyle(c.style,a.style,e))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(u,m){"mouseDown"==m.getProperty("eventName")&&c.hideShapePicker()}));var f=mxUtils.bind(this,function(){c.hideShapePicker(!0)});a.addListener("wheel",f);a.addListener(mxEvent.ESCAPE,f);a.view.addListener(mxEvent.SCALE,f);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,f);a.getSelectionModel().addListener(mxEvent.CHANGE,f);var e=a.popupMenuHandler.isMenuShowing;
a.popupMenuHandler.isMenuShowing=function(){return e.apply(this,arguments)||null!=c.shapePicker};var g=a.dblClick;a.dblClick=function(u,m){if(this.isEnabled())if(null!=m||null==c.sidebar||mxEvent.isShiftDown(u)||a.isCellLocked(a.getDefaultParent()))g.apply(this,arguments);else{var r=mxUtils.convertPoint(this.container,mxEvent.getClientX(u),mxEvent.getClientY(u));mxEvent.consume(u);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(r.x,r.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
f);var d=this.hoverIcons.drag;this.hoverIcons.drag=function(){c.hideShapePicker();d.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(A,C,F){var K=a.getCompositeParent(u.cell);A=a.getCellGeometry(K);for(r.consume();null!=K&&a.model.isVertex(K)&&null!=A&&A.relative;)cell=
K,K=a.model.getParent(cell),A=a.getCellGeometry(K);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(r.getGraphX(),r.getGraphY(),K,mxUtils.bind(this,function(E){F(E);null!=c.hoverIcons&&c.hoverIcons.update(a.view.getState(E))}),m)}),30)}),mxUtils.bind(this,function(A){this.graph.selectCellsForConnectVertex(A,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
m.getProperty("arrow"),x=m.getProperty("direction"),A=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),F=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var K=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),E=c.showShapePicker(F,C,K,mxUtils.bind(this,function(O){null!=O&&a.connectVertex(K,x,a.defaultEdgeLength,A,!0,!0,function(R,Q,P){P(O);null!=c.hoverIcons&&c.hoverIcons.update(a.view.getState(O))},
function(R){a.selectCellsForConnectVertex(R)},A,this.hoverIcons)}),x,!0);this.centerShapePicker(E,r,F,C,x);mxUtils.setOpacity(E,30);mxEvent.addListener(E,"mouseenter",function(){mxUtils.setOpacity(E,100)});mxEvent.addListener(E,"mouseleave",function(){c.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
EditorUi.prototype.centerShapePicker=function(a,c,f,e,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)a.style.width="40px";var d=a.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(f-=d.width/2-10,e-=d.height+6):g==mxConstants.DIRECTION_SOUTH?(f-=d.width/2-10,e+=c.height+6):g==mxConstants.DIRECTION_WEST?(f-=d.width+6,e-=d.height/2-10):g==mxConstants.DIRECTION_EAST&&(f+=c.width+6,e-=d.height/2-10);a.style.left=f+"px";a.style.top=e+"px"};
EditorUi.prototype.showShapePicker=function(a,c,f,e,g,d){a=this.createShapePicker(a,c,f,e,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(f,d),d);null!=a&&(null==this.hoverIcons||d||this.hoverIcons.reset(),d=this.editor.graph,d.popupMenuHandler.hideMenu(),d.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=e,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,c,f,e,g,d,k,n){var u=null;if(null!=k&&0<k.length){var m=this,r=this.editor.graph;u=document.createElement("div");g=r.view.getState(f);var x=null==f||null!=g&&r.isTransparentState(g)?null:r.copyStyle(f);f=6>k.length?35*k.length:140;u.className="geToolbarContainer geSidebarContainer";u.style.cssText="position:absolute;left:"+a+"px;top:"+c+"px;width:"+f+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
this.sidebar.graph.pasteStyle(x,[A]):m.insertHandler([A],""!=A.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([A],25,25,C,null,!0,!1,A.geometry.width,A.geometry.height);mxEvent.addListener(C,"click",function(){var F=r.cloneCell(A);if(null!=e)e(F);else{F.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-A.geometry.width/2);F.geometry.y=r.snap(Math.round(c/r.view.scale)-r.view.translate.y-A.geometry.height/2);r.model.beginUpdate();try{r.addCell(F)}finally{r.model.endUpdate()}r.setSelectionCell(F);
r.scrollCellToVisible(F);r.startEditingAtCell(F);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(F))}null!=d&&d()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,c-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
EditorUi.prototype.getCellsForShapePicker=function(a,c){c=mxUtils.bind(this,function(f,e,g,d){return this.editor.graph.createVertex(null,null,d||"",0,0,e||120,g||60,f,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;"),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("rounded=1;whiteSpace=wrap;html=1;"),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),
c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80),c("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),c("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;if(9==a.which&&c.isEnabled()&&!mxEvent.isControlDown(a)){if(c.isEditing())if(mxEvent.isAltDown(a))c.stopEditing(!1);else try{var f=c.cellEditor.isContentEditing()&&c.cellEditor.isTextSelected();if(window.getSelection&&c.cellEditor.isContentEditing()&&!f&&!mxClient.IS_IE&&!mxClient.IS_IE11){var e=window.getSelection(),g=0<e.rangeCount?e.getRangeAt(0).commonAncestorContainer:null;f=null!=g&&("LI"==g.nodeName||null!=g.parentNode&&"LI"==
g.parentNode.nodeName)}f?document.execCommand(mxEvent.isShiftDown(a)?"outdent":"indent",!1,null):mxEvent.isShiftDown(a)?c.stopEditing(!1):c.cellEditor.insertTab(c.cellEditor.isContentEditing()?null:4)}catch(d){}else mxEvent.isAltDown(a)?c.selectParentCell():c.selectCell(!mxEvent.isShiftDown(a));mxEvent.consume(a)}};
EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,null!=c.textarea&&(c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a))))};
EditorUi.prototype.getCssClassForMarker=function(a,c,f,e){return"flexArrow"==c?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==f||"halfCircle"==f?"geSprite geSvgSprite geSprite-"+f+("end"==a?" geFlipSprite":""):f==mxConstants.ARROW_CLASSIC?"1"==e?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==e?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,c=this.actions.get("paste"),f=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(d){var k=null;if(d.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{k=k||d.getSelectionCells();k=d.getExportableCells(d.model.getTopmostCells(k));for(var n={},u=d.createCellLookup(k),m=d.cloneCells(k,null,n),r=new mxGraphModel,x=r.getChildAt(r.getRoot(),
this.scale*H.height*S.height)};a.getPreferredPageSize=function(H,S,V){H=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,H.width*S.width,H.height*S.height)};var c=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(H,S,V,ea){if(null!=a.container&&!a.isViewer()){V=null!=V?V:0;ea=null!=ea?ea:0;var ka=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,Z=a.view.scale,
20:null);a.view.scale!=ea&&(null!=ba&&(ka+=S.x-ba.x,wa+=S.y-ba.y),null!=c&&f.chromelessResize(!1,null,ka*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==ka&&0==wa||(a.container.scrollLeft-=ka*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=I&&U.setAttribute("filter",I);a.cumulativeZoomFactor=1;I=qa=ha=ba=fa=null}),null!=H?H:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(H,S,
20*(V-1):null!=H.movementY&&"pointermove"==H.type&&(V=1+Math.max(1,Math.abs(H.movementY))/20*(V-1),ea=-1),a.lazyZoom(S,null,ea,V),mxEvent.consume(H),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(H){a.cumulativeZoomFactor=H.scale;a.lazyZoom(0<H.scale,!0);mxEvent.consume(H)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(c){this.actions.get("print").funct();mxEvent.consume(c)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var c=urlParams.border,f=60;null!=c&&(f=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))};
EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c){try{var f=mxUtils.parseXml(a);this.editor.setGraphXml(f.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=c&&(this.editor.setFilename(c),this.updateDocumentTitle())}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange();
this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(a,c,f,e){this.editor.graph.popupMenuHandler.hideMenu();var g=new mxPopupMenu(a);g.div.className+=" geMenubarMenu";g.smartSeparators=!0;g.showDisabled=!0;g.autoExpand=!0;g.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(g,arguments);g.destroy()});g.popup(c,f,null,e);this.setCurrentMenu(g)};
EditorUi.prototype.setCurrentMenu=function(a,c){this.currentMenuElt=c;this.currentMenu=a};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())};EditorUi.prototype.updateDocumentTitle=function(){var a=this.editor.getOrCreateFilename();null!=this.editor.appName&&(a+=" - "+this.editor.appName);document.title=a};
EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(a){}};EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var c=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);c==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(f){}};
EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()};EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var c=0<a.indexOf("?")?1:0,f;for(f in urlParams)a=0==c?a+"?":a+"&",a+=f+"="+urlParams[f],c++;return a};
EditorUi.prototype.setScrollbars=function(a){var c=this.editor.graph,f=c.container.style.overflow;c.scrollbars=a;this.editor.updateGraphComponents();f!=c.container.style.overflow&&(c.container.scrollTop=0,c.container.scrollLeft=0,c.view.scaleAndTranslate(1,0,0),this.resetScrollbars());this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars};
EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.editor.extendCanvas)a.container.scrollTop=0,a.container.scrollLeft=0,mxUtils.hasScrollbars(a.container)||a.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(a.container))if(a.pageVisible){var c=a.getPagePadding();a.container.scrollTop=Math.floor(c.y-this.editor.initialTopSpacing)-1;a.container.scrollLeft=Math.floor(Math.min(c.x,(a.container.scrollWidth-a.container.clientWidth)/2))-
1;c=a.getGraphBounds();0<c.width&&0<c.height&&(c.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(c.x+c.width-a.container.clientWidth,c.x-10)),c.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(c.y+c.height-a.container.clientHeight,c.y-10)))}else{c=a.getGraphBounds();var f=Math.max(c.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,c.y-Math.max(20,(a.container.clientHeight-Math.max(c.height,
a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,c.x-Math.max(0,(a.container.clientWidth-f)/2)))}else{c=mxRectangle.fromRectangle(a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds());f=a.view.translate;var e=a.view.scale;c.x=c.x/e-f.x;c.y=c.y/e-f.y;c.width/=e;c.height/=e;a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-c.width)/2)-c.x+2),Math.floor((a.pageVisible?0:Math.max(0,(a.container.clientHeight-c.height)/4))-c.y+1))}};
EditorUi.prototype.setPageVisible=function(a){var c=this.editor.graph,f=mxUtils.hasScrollbars(c.container),e=0,g=0;f&&(e=c.view.translate.x*c.view.scale-c.container.scrollLeft,g=c.view.translate.y*c.view.scale-c.container.scrollTop);c.pageVisible=a;c.pageBreaksVisible=a;c.preferPageSize=a;c.view.validateBackground();if(f){var d=c.getSelectionCells();c.clearSelection();c.setSelectionCells(d)}c.sizeDidChange();f&&(c.container.scrollLeft=c.view.translate.x*c.view.scale-e,c.container.scrollTop=c.view.translate.y*
c.view.scale-g);c.defaultPageVisible=a;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(a,c){this.ui=a;this.color=c}ChangeGridColor.prototype.execute=function(){var a=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=a};(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(a)})();
function ChangePageSetup(a,c,f,e,g){this.ui=a;this.previousColor=this.color=c;this.previousImage=this.image=f;this.previousFormat=this.format=e;this.previousPageScale=this.pageScale=g;this.ignoreImage=this.ignoreColor=!1}
ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var c=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=c}if(!this.ignoreImage){this.image=this.previousImage;c=a.backgroundImage;var f=this.previousImage;null!=f&&null!=f.src&&"data:page/id,"==f.src.substring(0,13)&&(f=this.ui.createImageForPageLink(f.src,this.ui.currentPage));this.ui.setBackgroundImage(f);this.previousImage=c}null!=this.previousFormat&&
(this.format=this.previousFormat,c=a.pageFormat,this.previousFormat.width!=c.width||this.previousFormat.height!=c.height)&&(this.ui.setPageFormat(this.previousFormat),this.previousFormat=c);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled);null!=this.previousPageScale&&(a=this.ui.editor.graph.pageScale,this.previousPageScale!=a&&(this.ui.setPageScale(this.previousPageScale),
this.previousPageScale=a))};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat","previousPageScale"]);a.afterDecode=function(c,f,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;e.previousPageScale=e.pageScale;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);return e};mxCodecRegistry.register(a)})();
EditorUi.prototype.setPageFormat=function(a,c){c=null!=c?c:"1"==urlParams.sketch;this.editor.graph.pageFormat=a;c||(this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct());this.fireEvent(new mxEventObject("pageFormatChanged"))};
EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),c=this.actions.get("redo"),f=this.editor.undoManager,e=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,e);f.addListener(mxEvent.UNDO,e);f.addListener(mxEvent.REDO,e);f.addListener(mxEvent.CLEAR,e);var g=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){g.apply(this,arguments);e()};var d=this.editor.graph.cellEditor.stopEditing;
EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,c=this.getSelectionState(),f=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),e="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),g=0;g<e.length;g++)this.actions.get(e[g]).setEnabled(0<c.cells.length);
this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("copySize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(0<c.cells.length);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||
1==c.vertices.length&&0==a.model.getChildCount(c.cells[0])&&!a.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(a.isContainer(c.vertices[0])||0<a.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&a.getModel().isVertex(a.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<a.model.getChildCount(c.vertices[0])||a.isContainer(c.vertices[0])));
this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&a.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=a.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(f);this.actions.get("selectEdges").setEnabled(f);
this.actions.get("selectAll").setEnabled(f);this.actions.get("selectNone").setEnabled(f);e=1==c.vertices.length&&a.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(f);this.menus.get("insert").setEnabled(f);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&
1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&0<c.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var c=this.container.clientWidth,f=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,f=document.documentElement.clientHeight);var e=0;mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&window.innerHeight!=document.documentElement.clientHeight&&(e=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var g=Math.max(0,Math.min(this.hsplitPosition,
c-this.splitSize-20));c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var d=0;if(null!=this.sidebarFooterContainer){var k=this.footerHeight+e;d=Math.max(0,Math.min(f-c-k,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=g+"px";this.sidebarFooterContainer.style.height=
d+"px";this.sidebarFooterContainer.style.bottom=k+"px"}f=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=g+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=f+"px";this.formatContainer.style.display=null!=this.format?"":"none";k=this.getDiagramContainerOffset();var n=null!=this.hsplit.parentNode?g+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
d+e+"px";this.formatContainer.style.bottom=this.footerHeight+e+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=n+k.x+"px",this.diagramContainer.style.top=c+k.y+"px",this.diagramContainer.style.right=f+"px",this.diagramContainer.style.bottom=this.footerHeight+e+g+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
!0,0,mxUtils.bind(this,function(c){this.hsplitPosition=c;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a;0==this.statusContainer.getElementsByTagName("div").length&&(this.statusContainer.innerHTML="",a=this.createStatusDiv(a),this.statusContainer.appendChild(a))};
EditorUi.prototype.createStatusDiv=function(a){var c=document.createElement("div");c.setAttribute("title",a);c.innerHTML=a;return c};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};
EditorUi.prototype.createDiv=function(a){var c=document.createElement("div");c.className=a;return c};
EditorUi.prototype.addSplitHandler=function(a,c,f,e){function g(x){if(null!=k){var A=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));e(Math.max(0,n+(c?A.x-k.x:k.y-A.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function d(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(c?a.style.left:a.style.bottom);c||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
EditorUi.prototype.handleError=function(a,c,f,e,g){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=c){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var d=mxResources.get("ok");c=null!=c?c:mxResources.get("error");null!=a&&null!=a.message&&(g=mxUtils.htmlEntities(a.message));this.showError(c,g,d,f,null,null,null,null,null,null,null,null,e?f:null)}else null!=f&&f()};
EditorUi.prototype.showError=function(a,c,f,e,g,d,k,n,u,m,r,x,A){a=new ErrorDialog(this,a,c,f||mxResources.get("ok"),e,g,d,k,x,n,u);c=Math.ceil(null!=c?c.length/50:1);this.showDialog(a.container,m||340,r||100+20*c,!0,!1,A);a.init()};EditorUi.prototype.showDialog=function(a,c,f,e,g,d,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,c,f,e,g,d,k,n,u,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,c,f){null!=this.dialogs&&0<this.dialogs.length&&(null==f||f==this.dialog.container.firstChild)&&(f=this.dialogs.pop(),0==f.close(a,c)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var c=a.getSelectionCells(),f=new mxDictionary,e=[],g=0;g<c.length;g++){var d=a.isTableCell(c[g])?a.model.getParent(c[g]):c[g];null==d||f.get(d)||(f.put(d,!0),e.push(d))}a.setSelectionCells(a.duplicateCells(e,!1))}catch(k){this.handleError(k)}};
EditorUi.prototype.pickColor=function(a,c){var f=this.editor.graph,e=f.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));a=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(d){f.cellEditor.restoreSelection(e);c(d)},function(){f.cellEditor.restoreSelection(e)});this.showDialog(a.container,230,g,!0,!1);a.init()};
EditorUi.prototype.extractGraphModelFromHtml=function(a){var c=null;try{var f=a.indexOf("&lt;mxGraphModel ");if(0<=f){var e=a.lastIndexOf("&lt;/mxGraphModel&gt;");e>f&&(c=a.substring(f,e+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(g){}return c};
EditorUi.prototype.readGraphModelFromClipboard=function(a){this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(c){null!=c?a(c):this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(f){if(null!=f){var e=decodeURIComponent(f);this.isCompatibleString(e)&&(f=e)}a(f)}),"text")}),"html")};
EditorUi.prototype.readGraphModelFromClipboardWithType=function(a,c){navigator.clipboard.read().then(mxUtils.bind(this,function(f){if(null!=f&&0<f.length&&"html"==c&&0<=mxUtils.indexOf(f[0].types,"text/html"))f[0].getType("text/html").then(mxUtils.bind(this,function(e){e.text().then(mxUtils.bind(this,function(g){try{var d=this.parseHtmlData(g),k="text/plain"!=d.getAttribute("data-type")?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);try{var n=k.lastIndexOf("%3E");
0<=n&&n<k.length-3&&(k=k.substring(0,n+3))}catch(r){}try{var u=d.getElementsByTagName("span"),m=null!=u&&0<u.length?mxUtils.trim(decodeURIComponent(u[0].textContent)):decodeURIComponent(k);this.isCompatibleString(m)&&(k=m)}catch(r){}}catch(r){}a(this.isCompatibleString(k)?k:null)}))["catch"](function(g){a(null)})}))["catch"](function(e){a(null)});else if(null!=f&&0<f.length&&"text"==c&&0<=mxUtils.indexOf(f[0].types,"text/plain"))f[0].getType("text/plain").then(function(e){e.text().then(function(g){a(g)})["catch"](function(){a(null)})})["catch"](function(){a(null)});
EditorUi.prototype.parseHtmlData=function(a){var c=null;if(null!=a&&0<a.length){var f="<meta "==a.substring(0,6);c=document.createElement("div");c.innerHTML=(f?'<meta charset="utf-8">':"")+this.editor.graph.sanitizeHtml(a);asHtml=!0;a=c.getElementsByTagName("style");if(null!=a)for(;0<a.length;)a[0].parentNode.removeChild(a[0]);null!=c.firstChild&&c.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=c.firstChild.nextSibling&&c.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==
c.firstChild.nodeName&&"A"==c.firstChild.nextSibling.nodeName&&null==c.firstChild.nextSibling.nextSibling&&(a=null==c.firstChild.nextSibling.innerText?mxUtils.getTextContent(c.firstChild.nextSibling):c.firstChild.nextSibling.innerText,a==c.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(c,a),asHtml=!1));f=f&&null!=c.firstChild?c.firstChild.nextSibling:c.firstChild;null!=f&&null==f.nextSibling&&f.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==f.nodeName?(a=f.getAttribute("src"),
null!=a&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(c,a),asHtml=!1)):(f=c.getElementsByTagName("img"),1==f.length&&(f=f[0],a=f.getAttribute("src"),null!=a&&f.parentNode==c&&1==c.children.length&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(c,a),asHtml=!1)));asHtml&&Graph.removePasteFormatting(c)}asHtml||c.setAttribute("data-type","text/plain");return c};
EditorUi.prototype.extractGraphModelFromEvent=function(a){var c=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,0<=mxUtils.indexOf(a.types,"text/plain")&&(null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=Graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&&
(c=f);return c};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(c){this.save(c)}),null,mxUtils.bind(this,function(c){if(null!=c&&0<c.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())};
EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var c=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,c);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(c.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(c))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(c);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
EditorUi.prototype.executeLayout=function(a,c,f){var e=this.editor.graph;if(e.isEnabled()){e.getModel().beginUpdate();try{a()}catch(g){throw g;}finally{this.allowAnimation&&c&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(a=new mxMorphing(e),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){e.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(e.getModel().endUpdate(),null!=f&&f())}}};
EditorUi.prototype.showImageDialog=function(a,c,f,e){e=this.editor.graph.cellEditor;var g=e.saveSelection(),d=mxUtils.prompt(a,c);e.restoreSelection(g);if(null!=d&&0<d.length){var k=new Image;k.onload=function(){f(d,k.width,k.height)};k.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};k.src=d}else f(null)};EditorUi.prototype.showLinkDialog=function(a,c,f){a=new LinkDialog(this,a,c,f);this.showDialog(a.container,420,90,!0,!0);a.init()};
EditorUi.prototype.showBackgroundImageDialog=function(a,c){a=null!=a?a:mxUtils.bind(this,function(e){e=new ChangePageSetup(this,null,e);e.ignoreColor=!0;this.editor.graph.model.execute(e)});var f=mxUtils.prompt(mxResources.get("backgroundImage"),null!=c?c.src:"");null!=f&&0<f.length?(c=new Image,c.onload=function(){a(new mxImage(f,c.width,c.height),!1)},c.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},c.src=f):a(null)};
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,c,f){mxUtils.confirm(a)?null!=c&&c():null!=f&&f()};EditorUi.prototype.createOutline=function(a){var c=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){c.update(!1)});return c};
EditorUi.prototype.createKeyHandler=function(a){function c(x,A,C){if(!e.isSelectionEmpty()&&e.isEnabled()){A=null!=A?A:1;var F=e.getCompositeParents(e.getSelectionCells()),K=0<F.length?F[0]:null;if(null!=K)if(C){e.getModel().beginUpdate();try{for(K=0;K<F.length;K++)if(e.getModel().isVertex(F[K])&&e.isCellResizable(F[K])){var E=e.getCellGeometry(F[K]);null!=E&&(E=E.clone(),37==x?E.width=Math.max(0,E.width-A):38==x?E.height=Math.max(0,E.height-A):39==x?E.width+=A:40==x&&(E.height+=A),e.getModel().setGeometry(F[K],
e.defaultEdgeLength,x,!0);null!=C&&0<C.length&&(1==C.length&&e.model.isEdge(C[0])?e.setSelectionCell(e.model.getTerminal(C[0],!1)):e.setSelectionCell(C[C.length-1]),e.scrollCellToVisible(e.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(e.view.getState(e.getSelectionCell())))}}else return this.isControlDown(x)?function(){c(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null,!0)}:function(){c(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null)}}return u.apply(this,arguments)};g.bindAction=mxUtils.bind(this,
this.scrollHandler=null);if(null!=this.destroyFunctions){for(a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}var c=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog];for(a=0;a<c.length;a++)null!=c[a]&&null!=c[a].parentNode&&c[a].parentNode.removeChild(c[a])};function Sidebar(a,c){this.editorUi=a;this.container=c;this.palettes={};this.taglist={};this.lastCreated=0;this.showTooltips=!0;this.graph=a.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());this.graph.cellRenderer.minSvgStrokeWidth=this.minThumbStrokeWidth;this.graph.cellRenderer.antiAlias=this.thumbAntiAlias;this.graph.container.style.visibility="hidden";this.graph.foldingEnabled=!1;document.body.appendChild(this.graph.container);this.pointerUpHandler=mxUtils.bind(this,function(){if(null==
"pointerout":"mouseout",this.pointerOutHandler);mxEvent.addListener(c,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0;this.hideTooltip()}));this.init()}
Sidebar.prototype.getTooltipOffset=function(a,c){c=c.height+2*this.tooltipBorder;return new mxPoint(this.container.offsetWidth+this.editorUi.splitSize+10+this.editorUi.container.offsetLeft,Math.min(Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)-c-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop-c/2+16)))};
Sidebar.prototype.createTooltip=function(a,c,f,e,g,d,k,n,u,m,r){r=null!=r?r:!0;this.tooltipMouseDown=u;null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.userSelect="none",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),mxEvent.addMouseWheelListener(mxUtils.bind(this,function(x){this.hideTooltip()}),this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),
c=this.graph2.cloneCells(c);this.editorUi.insertHandler(c,null,this.graph2.model,r?null:this.editorUi.editor.graph.defaultVertexStyle,r?null:this.editorUi.editor.graph.defaultEdgeStyle,r,!0);this.graph2.addCells(c);mxClient.NO_FO=d;r=this.graph2.getGraphBounds();n&&0<f&&0<e&&(r.width>f||r.height>e)?(f=Math.round(100*Math.min(f/r.width,e/r.height))/100,mxClient.NO_FO?(this.graph2.view.setScale(Math.round(100*Math.min(this.maxTooltipWidth/r.width,this.maxTooltipHeight/r.height))/100),r=this.graph2.getGraphBounds()):
Sidebar.prototype.showTooltip=function(a,c,f,e,g,d){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=a){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var k=mxUtils.bind(this,function(){this.createTooltip(a,c,f,e,g,d)});null!=this.tooltip&&"none"!=this.tooltip.style.display?k():this.thread=window.setTimeout(k,this.tooltipDelay);this.currentElt=a}};
Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.currentElt=null);this.tooltipMouseDown=null};Sidebar.prototype.addDataEntry=function(a,c,f,e,g){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(g,c,f,e)}))};
Sidebar.prototype.addEntries=function(a){for(var c=0;c<a.length;c++)mxUtils.bind(this,function(f){var e=f.data,g=null!=f.title?f.title:"";null!=f.tags&&(g+=" "+f.tags);null!=e&&0<g.length?this.addEntry(g,mxUtils.bind(this,function(){e=this.editorUi.convertDataUri(e);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==f.aspect&&(d+="aspect=fixed;");return this.createVertexTemplate(d+"image="+e,f.w,f.h,"",f.title||"",!1,!1,!0)})):null!=f.xml&&0<g.length&&this.addEntry(g,
mxUtils.bind(this,function(){var d=this.editorUi.stringToCells(Graph.decompress(f.xml));return this.createVertexTemplateFromCells(d,f.w,f.h,f.title||"",!0,!1,!0)}))})(a[c])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,c){this.currentSearchEntryLibrary=null!=a?{id:a,lib:c}:null};
Sidebar.prototype.addEntry=function(a,c){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(c.parentLibraries=[this.currentSearchEntryLibrary]);a=a.toLowerCase().replace(/[\/,\(\)]/g," ").split(" ");for(var f=[],e={},g=0;g<a.length;g++){null==e[a[g]]&&(e[a[g]]=!0,f.push(a[g]));var d=a[g].replace(/\.*\d*$/,"");d!=a[g]&&null==e[d]&&(e[d]=!0,f.push(d))}for(g=0;g<f.length;g++)this.addEntryForTag(f[g],c)}return c};
Sidebar.prototype.addEntryForTag=function(a,c){if(null!=a&&1<a.length){var f=this.taglist[a];"object"!==typeof f&&(f={entries:[]},this.taglist[a]=f);f.entries.push(c)}};
Sidebar.prototype.searchEntries=function(a,c,f,e,g){if(null!=this.taglist&&null!=a){var d=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*c;a=[];for(var n=0,u=0;u<d.length;u++)if(0<d[u].length){var m=this.taglist[d[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var A=0;A<x.length;A++)if(m=x[A],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==d.length-1&&a.length==k)){e(a.slice(f*c,k),k,!0,d);return}}else a=[];g=r;n++}g=a.length;e(a.slice(f*c,(f+1)*c),g,!1,d)}else e([],null,
null,d)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var c=[],f={},e=0;e<a.length;e++)null==f[a[e]]&&(f[a[e]]="1",c.push(a[e]));return c.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,c){a=a.clone();null!=c&&(a.value=c);return a};Sidebar.prototype.showPopupMenuForEntry=function(a,c,f){};
Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var f=document.createElement("div");f.className="geSidebar";f.style.boxSizing="border-box";f.style.overflow="hidden";f.style.width="100%";f.style.padding="8px";f.style.paddingTop="14px";f.style.paddingBottom="0px";a||(f.style.display="none");var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.paddingBottom="8px";
E.stopPropagation();E.cancelBubble=!0});a=document.createElement("div");a.appendChild(f);this.container.appendChild(a);this.palettes.search=[c,a]};
Sidebar.prototype.insertSearchHint=function(a,c,f,e,g,d,k,n){0==g.length&&1==e&&(f=document.createElement("div"),f.className="geTitle",f.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(f,mxResources.get("noResultsFor",[c])),a.appendChild(f))};
Sidebar.prototype.addGeneralPalette=function(a){this.setCurrentSearchEntryLibrary("general","general");var c=this,f=parseInt(this.editorUi.editor.graph.defaultVertexStyle.fontSize);f=isNaN(f)?"":"fontSize="+Math.min(16,f)+";";var e=new mxCell("List Item",new mxGeometry(0,0,80,30),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;"+f);e.vertex=!0;f=[this.createVertexTemplateEntry("rounded=0;whiteSpace=wrap;html=1;",
g.vertex=!0;g.insert(c.cloneCell(e,"Item 1"));g.insert(c.cloneCell(e,"Item 2"));g.insert(c.cloneCell(e,"Item 3"));return c.createVertexTemplateFromCells([g],g.geometry.width,g.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return c.createVertexTemplateFromCells([c.cloneCell(e,"List Item")],e.geometry.width,e.geometry.height,"List Item")}),this.addEntry("curve",mxUtils.bind(this,function(){var g=new mxCell("",new mxGeometry(0,0,50,50),"curved=1;endArrow=classic;html=1;");
Sidebar.prototype.addMiscPalette=function(a){var c=this;this.setCurrentSearchEntryLibrary("general","misc");var f=[this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;",100,40,"Title","Title",null,null,"text heading title"),this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;",100,80,"<ul><li>Value 1</li><li>Value 2</li><li>Value 3</li></ul>",
this.addEntry("shape group container",function(){var e=new mxCell("Label",new mxGeometry(0,0,160,70),"html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;");e.vertex=!0;var g=new mxCell("",new mxGeometry(20,20,20,30),"triangle;html=1;whiteSpace=wrap;");g.vertex=!0;e.insert(g);return c.createVertexTemplateFromCells([e],e.geometry.width,e.geometry.height,"Shape Group")}),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;",120,
Sidebar.prototype.createAdvancedShapes=function(){var a=this,c=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");c.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(c,"Item 1"));f.insert(a.cloneCell(c,"Item 2"));
f.insert(a.cloneCell(c,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(c,"List Item")],c.geometry.width,c.geometry.height,"List Item")})]};
Sidebar.prototype.createAdvancedShapes=function(){var a=this,c=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");c.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(c,"Item 1"));f.insert(a.cloneCell(c,"Item 2"));
f.insert(a.cloneCell(c,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(c,"List Item")],c.geometry.width,c.geometry.height,"List Item")})]};
Sidebar.prototype.addUmlPalette=function(a){var c=this,f=new mxCell("+ field: type",new mxGeometry(0,0,100,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");f.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");
d.vertex=!0;d.insert(f.clone());d.insert(e.clone());d.insert(c.cloneCell(f,"+ method(type): type"));return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class")}),this.addEntry("uml static class section subsection",function(){var d=new mxCell("Classname",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");d.vertex=
!0;d.insert(f.clone());d.insert(f.clone());d.insert(f.clone());return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class 2")}),this.addEntry("uml static class item member method function variable field attribute label",function(){return c.createVertexTemplateFromCells([c.cloneCell(f,"+ item: attribute")],f.geometry.width,f.geometry.height,"Item 1")}),this.addEntry("uml static class item member method function variable field attribute label",function(){var d=new mxCell("item: attribute",
new mxGeometry(0,0,120,f.geometry.height),"label;fontStyle=0;strokeColor=none;fillColor=none;align=left;verticalAlign=top;overflow=hidden;spacingLeft=28;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;imageWidth=16;imageHeight=16;image="+c.gearImage);d.vertex=!0;return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Item 2")}),this.addEntry("uml static class divider hline line separator",function(){return c.createVertexTemplateFromCells([e.clone()],
e.geometry.width,e.geometry.height,"Divider")}),this.addEntry("uml static class spacer space gap separator",function(){var d=new mxCell("",new mxGeometry(0,0,20,14),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=4;spacingRight=4;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Spacer")}),this.createVertexTemplateEntry("text;align=center;fontStyle=1;verticalAlign=middle;spacingLeft=3;spacingRight=3;strokeColor=none;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;",
80,26,"Title","Title",null,null,"uml static class title label"),this.addEntry("uml static class component",function(){var d=new mxCell("&laquo;Annotation&raquo;<br/><b>Component</b>",new mxGeometry(0,0,180,90),"html=1;dropTarget=0;");d.vertex=!0;var k=new mxCell("",new mxGeometry(1,0,20,20),"shape=module;jettyWidth=8;jettyHeight=4;");k.vertex=!0;k.geometry.relative=!0;k.geometry.offset=new mxPoint(-27,7);d.insert(k);return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component")}),
return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component with Attributes")}),this.createVertexTemplateEntry("verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;html=1;",180,120,"Block","Block",null,null,"uml static class block"),this.createVertexTemplateEntry("shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;",100,50,"Module","Module",null,null,"uml static class module component"),
function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div>',new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 3")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div><hr size="1"/><div style="height:2px;"></div>',
new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 4")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method(): Type</p>',
new mxGeometry(0,0,160,90),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 5")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;Interface&gt;&gt;</i><br/><b>Interface</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field1: Type<br/>+ field2: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method1(Type): Type<br/>+ method2(Type, Type): Type</p>',
new mxGeometry(0,0,190,140),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Interface 2")}),this.createVertexTemplateEntry("shape=providedRequiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",20,20,"","Provided/Required Interface",null,null,"uml provided required interface lollipop notation"),this.createVertexTemplateEntry("shape=requiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",
10,20,"","Required Interface",null,null,"uml required interface lollipop notation"),this.addEntry("uml lollipop notation provided required interface",function(){return c.createVertexTemplateFromData("zVRNT8MwDP01uaLSMu6sfFxAmrQDcAytaQJZXLnu2u7XkzQZXTUmuIA4VIqf/ZzkvdQiyzf9HclaPWAJRmQ3IssJkcNq0+dgjEgTXYrsWqRp4j6R3p7Ino/ZpJYEln9CSANhK00LAQlAw4OJAGFrS/D1iciWSKywQivNPWLtwHMHvgHzsNY7z5Ato4MUb0zMgi2viLBzoUULAbnVxsSWzTtwofYBtlTACkhvgIHWtSy0rWKSJVXAJ5Lh4FBWMNMicAJ0cSzPWBW1uQN0fWlwJQRGst7OW8kmhNVn3Sd1hdp1TJMhVCzmhHipUDO54RYHm07Q6NHXfmV/65eS5jXXVJhj15yCNDz54GyxD58PwjL2v/SmMuE7POqSVdxj5vm/cK6PG4X/5deNvPjeSEfQdeOV75Rm8K/dZzo3LOaGSaMr69aF0wbIA00NhZfpVff+JSwJGr2TL2Nnr3jtbzDeabEUi2v/Tlo22kKO1gbq0Z8ZDwzE0J+cNidM2ROinF18CR6KeivQleI59pVrM8knfV04Dc1gx+FM/QA=",
k.geometry.setTerminalPoint(new mxPoint(15,90),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return c.createVertexTemplateFromCells([d,k],30,90,"Start")}),this.addEntry("uml activity state",function(){var d=new mxCell("Activity",new mxGeometry(0,0,120,40),"rounded=1;whiteSpace=wrap;html=1;arcSize=40;fontColor=#000000;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");
k.geometry.setTerminalPoint(new mxPoint(60,100),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return c.createVertexTemplateFromCells([d,k],120,100,"Activity")}),this.addEntry("uml activity composite state",function(){var d=new mxCell("Composite State",new mxGeometry(0,0,160,60),"swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=0;resizeLast=1;container=0;fontColor=#000000;collapsible=0;rounded=1;arcSize=30;strokeColor=#ff0000;fillColor=#ffffc0;swimlaneFillColor=#ffffc0;dropTarget=0;");
!0);return c.createVertexTemplateFromCells([d,k],160,120,"Composite State")}),this.addEntry("uml activity condition",function(){var d=new mxCell("Condition",new mxGeometry(0,0,80,40),"rhombus;whiteSpace=wrap;html=1;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("no",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(180,20),!1);k.geometry.relative=
!0;k.geometry.x=-1;k.edge=!0;d.insertEdge(k,!0);var n=new mxCell("yes",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=top;endArrow=open;endSize=8;strokeColor=#ff0000;");n.geometry.setTerminalPoint(new mxPoint(40,100),!1);n.geometry.relative=!0;n.geometry.x=-1;n.edge=!0;d.insertEdge(n,!0);return c.createVertexTemplateFromCells([d,k,n],180,100,"Condition")}),this.addEntry("uml activity fork join",function(){var d=new mxCell("",new mxGeometry(0,0,200,10),"shape=line;html=1;strokeWidth=6;strokeColor=#ff0000;");
d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(100,80),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return c.createVertexTemplateFromCells([d,k],200,80,"Fork/Join")}),this.createVertexTemplateEntry("ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;",30,30,"","End",null,null,"uml activity state end"),this.createVertexTemplateEntry("shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;",
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;startArrow=oval;endArrow=block;startSize=8;");k.geometry.setTerminalPoint(new mxPoint(-60,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);return c.createVertexTemplateFromCells([d,k],10,80,"Found Message")}),this.addEntry("uml sequence invoke call delegation synchronous invocation activation",function(){var d=new mxCell("",new mxGeometry(0,0,10,80),"html=1;points=[];perimeter=orthogonalPerimeter;");
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;");k.geometry.setTerminalPoint(new mxPoint(-70,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);var n=new mxCell("return",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;exitX=0;exitY=0.95;");n.geometry.setTerminalPoint(new mxPoint(-70,76),!1);n.geometry.relative=!0;n.edge=!0;d.insertEdge(n,!0);return c.createVertexTemplateFromCells([d,
!0;k.edge=!0;d.insertEdge(k,!1);return c.createVertexTemplateFromCells([d,k],10,60,"Self Call")}),this.addEntry("uml sequence invoke call delegation callback activation",function(){return c.createVertexTemplateFromData("xZRNT8MwDIZ/Ta6oaymD47rBTkiTuMAxW6wmIm0q19s6fj1OE3V0Y2iCA4dK8euP2I+riGxedUuUjX52CqzIHkU2R+conKpuDtaKNDFKZAuRpgl/In264J303qSRCDVdk5CGhJ20WwhKEFo62ChoqritxURkReNMTa2X80LkC68AmgoIkEWHpF3pamlXR7WIFwASdBeb7KXY4RIc5+KBQ/ZGkY4RYY5Egyl1zLqLmmyDXQ6Zx4n5EIf+HkB2BmAjrV3LzftPIPw4hgNn1pQ1a2tH5Cp2QK1miG7vNeu4iJe4pdeY2BtvbCQDGlAljMCQxBJotJ8rWCFYSWY3LvUdmZi68rvkkLiU6QnL1m1xAzHoBOdw61WEb88II9AW67/ydQ2wq1Cy1aAGvOrFfPh6997qDA3g+dxzv3nIL6MPU/8T+kMw8+m4QPgdfrEJNo8PSQj/+s58Ag==",
!0;d.edge=!0;return c.createEdgeTemplateFromCells([d],80,0,"Return")}),this.addEntry("uml relation",function(){var d=new mxCell("name",new mxGeometry(0,0,0,0),"endArrow=block;endFill=1;html=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.edge=!0;var k=new mxCell("1",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return c.createEdgeTemplateFromCells([d],160,0,"Relation 1")}),this.addEntry("uml association",function(){var d=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.edge=!0;var k=new mxCell("parent",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("child",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=bottom;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return c.createEdgeTemplateFromCells([d],160,0,"Association 1")}),this.addEntry("uml aggregation",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");
d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return c.createEdgeTemplateFromCells([d],160,0,"Aggregation 1")}),this.addEntry("uml composition",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");d.geometry.setTerminalPoint(new mxPoint(0,
0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return c.createEdgeTemplateFromCells([d],160,0,"Composition 1")}),this.addEntry("uml relation",function(){var d=new mxCell("Relation",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=
!0;d.edge=!0;var k=new mxCell("0..n",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("1",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return c.createEdgeTemplateFromCells([d],160,0,"Relation 2")}),this.createEdgeTemplateEntry("endArrow=open;endSize=12;dashed=1;html=1;",160,
160,0,"","Association 3",null,"uml association")];this.addPaletteFunctions("uml",mxResources.get("uml"),a||!1,g);this.setCurrentSearchEntryLibrary()};Sidebar.prototype.createTitle=function(a){var c=document.createElement("a");c.setAttribute("title",mxResources.get("sidebarTooltip"));c.className="geTitle";mxUtils.write(c,a);return c};
Sidebar.prototype.createThumb=function(a,c,f,e,g,d,k){this.graph.labelsVisible=null==d||d;d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;this.graph.view.scaleAndTranslate(1,0,0);this.graph.addCells(a);a=this.graph.getGraphBounds();var n=Math.floor(100*Math.min((c-2*this.thumbBorder)/a.width,(f-2*this.thumbBorder)/a.height))/100;this.graph.view.scaleAndTranslate(n,Math.floor((c-a.width*n)/2/n-a.x),Math.floor((f-a.height*n)/2/n-a.y));this.graph.dialect!=mxConstants.DIALECT_SVG||
mxClient.NO_FO||null==this.graph.view.getCanvas().ownerSVGElement?(n=this.graph.container.cloneNode(!1),n.innerHTML=this.graph.container.innerHTML):n=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0);this.graph.getModel().clear();mxClient.NO_FO=d;n.style.position="relative";n.style.overflow="hidden";n.style.left=this.thumbBorder+"px";n.style.top=this.thumbBorder+"px";n.style.width=c+"px";n.style.height=f+"px";n.style.visibility="";n.style.minWidth="";n.style.minHeight="";e.appendChild(n);
this.sidebarTitles&&null!=g&&0!=k&&(e.style.height=this.thumbHeight+0+this.sidebarTitleSize+8+"px",c=document.createElement("div"),c.style.color=Editor.isDarkMode()?"#A0A0A0":"#303030",c.style.fontSize=this.sidebarTitleSize+"px",c.style.textAlign="center",c.style.whiteSpace="nowrap",c.style.overflow="hidden",c.style.textOverflow="ellipsis",mxClient.IS_IE&&(c.style.height=this.sidebarTitleSize+12+"px"),c.style.paddingTop="4px",mxUtils.write(c,g),e.appendChild(c));return a};
Sidebar.prototype.createSection=function(a){return mxUtils.bind(this,function(){var c=document.createElement("div");c.setAttribute("title",a);c.style.textOverflow="ellipsis";c.style.whiteSpace="nowrap";c.style.textAlign="center";c.style.overflow="hidden";c.style.width="100%";c.style.padding="14px 0";mxUtils.write(c,a);return c})};
Sidebar.prototype.createItem=function(a,c,f,e,g,d,k,n){n=null!=n?n:!0;var u=document.createElement("a");u.className="geItem";u.style.overflow="hidden";var m=2*this.thumbBorder;u.style.width=this.thumbWidth+m+"px";u.style.height=this.thumbHeight+m+"px";u.style.padding=this.thumbPadding+"px";mxEvent.addListener(u,"click",function(x){mxEvent.consume(x)});m=a;a=this.graph.cloneCells(a);this.editorUi.insertHandler(m,null,this.graph.model,this.editorUi.editor.graph.defaultVertexStyle,this.editorUi.editor.graph.defaultEdgeStyle,
!0,!0);this.createThumb(m,this.thumbWidth,this.thumbHeight,u,c,f,e,g,d);var r=new mxRectangle(0,0,g,d);1<a.length||a[0].vertex?(e=this.createDragSource(u,this.createDropHandler(a,!0,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a),e.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})):null!=a[0]&&a[0].edge&&(e=this.createDragSource(u,this.createDropHandler(a,!1,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a));
!mxClient.IS_IOS&&n&&mxEvent.addGestureListeners(u,null,mxUtils.bind(this,function(x){mxEvent.isMouseEvent(x)&&this.showTooltip(u,a,r.width,r.height,c,f)}));return u};
Sidebar.prototype.updateShapes=function(a,c){var f=this.editorUi.editor.graph,e=f.getCellStyle(a),g=[];f.model.beginUpdate();try{for(var d=f.getModel().getStyle(a),k="shadow dashed dashPattern fontFamily fontSize fontColor align startFill startSize endFill endSize strokeColor strokeWidth fillColor gradientColor html part noEdgeStyle edgeStyle elbow childLayout recursiveResize container collapsible connectable comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),n=
0;n<c.length;n++){var u=c[n];if(f.getModel().isVertex(u)==f.getModel().isVertex(a)||f.getModel().isEdge(u)==f.getModel().isEdge(a)){var m=f.getCellStyle(c[n],!1);f.getModel().setStyle(u,d);if("1"==mxUtils.getValue(m,"composite","0"))for(var r=f.model.getChildCount(u);0<=r;r--)f.model.remove(f.model.getChildAt(u,r));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=e[mxConstants.STYLE_SHAPE]&&(f.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[u]),f.setCellStyles("participant",e[mxConstants.STYLE_SHAPE],
Sidebar.prototype.createDropHandler=function(a,c,f,e){f=null!=f?f:!0;return mxUtils.bind(this,function(g,d,k,n,u,m){for(m=m?null:mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d)?document.elementFromPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)):mxEvent.getSource(d);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&g.isEnabled()){a=g.getImportableCells(a);if(0<a.length){g.stopEditing();m=null==k||mxEvent.isAltDown(d)?!1:g.isValidDropTarget(k,a,d);var r=null;null==k||m||(k=null);if(!g.isCellLocked(k||
g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(c&&g.isSplitTarget(k,a,d)){var x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,K=g.cloneCells(a);g.splitEdge(k,K,null,n-e.width/2,u-e.height/2,C,F);r=K}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var E=g.layoutManager.getLayout(k);if(null!=E)for(x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,k=0;k<r.length;k++)E.moveCell(r[k],C,F)}!f||null!=d&&mxEvent.isShiftDown(d)||
Sidebar.prototype.createDragPreview=function(a,c){var f=document.createElement("div");f.className="geDragPreview";f.style.width=a+"px";f.style.height=c+"px";return f};
Sidebar.prototype.dropAndConnect=function(a,c,f,e,g){var d=this.getDropAndConnectGeometry(a,c[e],f,c),k=[];if(null!=d){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(c[e]),x=n.model.getParent(a),A=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(A=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var F=C=0;if(null!=k){var K=k.origin;C=K.x;F=K.y;var E=d.getTerminalPoint(!1);null!=
E&&(E.x+=K.x,E.y+=K.y)}var O=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&A),R=n.getCellAt((d.x+C+n.view.translate.x)*n.view.scale,(d.y+F+n.view.translate.y)*n.view.scale,null,null,null,function(aa,T,U){return!n.isContainer(aa.cell)});if(null!=R&&R!=x)k=n.view.getState(R),null!=k&&(K=k.origin,x=R,O=!0,n.model.isEdge(a)||(d.x-=K.x-C,d.y-=K.y-F));else if(!A||n.isTableRow(a)||n.isTableCell(a))d.x+=C,d.y+=F;C=r.x;F=r.y;n.model.isEdge(c[e])&&(F=C=0);k=c=n.importCells(c,
d.x-(O?C:0),d.y-(O?F:0),O?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,c[e],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(c[e])){n.model.setTerminal(c[e],a,!0);var Q=n.getCellGeometry(c[e]);Q.points=null;if(null!=Q.getTerminalPoint(!1))Q.setTerminalPoint(d.getTerminalPoint(!1),!1);else if(O&&n.model.isVertex(x)){var P=n.view.getState(x);K=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(c,K.x,K.y,null,null,!0)}}else r=n.getCellGeometry(c[e]),C=d.x-Math.round(r.x),F=
d.y-Math.round(r.y),d.x=Math.round(r.x),d.y=Math.round(r.y),n.model.setGeometry(c[e],d),n.cellsMoved(c,C,F,null,null,!0),k=c.slice(),u=1==k.length?k[0]:null,c.push(n.insertEdge(null,null,"",a,c[e],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(aa){this.editorUi.handleError(aa)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
Sidebar.prototype.getDropAndConnectGeometry=function(a,c,f,e){var g=this.editorUi.editor.graph,d=g.view,k=1<e.length,n=g.getCellGeometry(a);e=g.getCellGeometry(c);null!=n&&null!=e&&(e=e.clone(),g.model.isEdge(a)?(a=g.view.getState(a),n=a.absolutePoints,c=n[0],g=n[n.length-1],f==mxConstants.DIRECTION_NORTH?(e.x=c.x/d.scale-d.translate.x-e.width/2,e.y=c.y/d.scale-d.translate.y-e.height/2):(e.x=g.x/d.scale-d.translate.x-e.width/2,e.y=g.y/d.scale-d.translate.y-e.height/2)):(n.relative&&(a=g.view.getState(a),
n=n.clone(),n.x=(a.x-d.translate.x)/d.scale,n.y=(a.y-d.translate.y)/d.scale),d=g.defaultEdgeLength,g.model.isEdge(c)&&null!=e.getTerminalPoint(!0)&&null!=e.getTerminalPoint(!1)?(c=e.getTerminalPoint(!0),g=e.getTerminalPoint(!1),d=g.x-c.x,c=g.y-c.y,d=Math.sqrt(d*d+c*c),e.x=n.getCenterX(),e.y=n.getCenterY(),e.width=1,e.height=1,f==mxConstants.DIRECTION_NORTH?(e.height=d,e.y=n.y-d,e.setTerminalPoint(new mxPoint(e.x,e.y),!1)):f==mxConstants.DIRECTION_EAST?(e.width=d,e.x=n.x+n.width,e.setTerminalPoint(new mxPoint(e.x+
e.width/2+d:f==mxConstants.DIRECTION_SOUTH?e.y=e.y+n.height/2+e.height/2+d:f==mxConstants.DIRECTION_WEST&&(e.x=e.x-n.width/2-e.width/2-d),g.model.isEdge(c)&&null!=e.getTerminalPoint(!0)&&null!=c.getTerminal(!1)&&(n=g.getCellGeometry(c.getTerminal(!1)),null!=n&&(f==mxConstants.DIRECTION_NORTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()+n.height/2):f==mxConstants.DIRECTION_EAST?(e.x-=n.getCenterX()-n.width/2,e.y-=n.getCenterY()):f==mxConstants.DIRECTION_SOUTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()-n.height/
2):f==mxConstants.DIRECTION_WEST&&(e.x-=n.getCenterX()+n.width/2,e.y-=n.getCenterY()))))));return e};Sidebar.prototype.isDropStyleEnabled=function(a,c){var f=!0;null!=c&&1==a.length&&(a=this.graph.getCellStyle(a[c]),null!=a&&(f=mxUtils.getValue(a,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(a,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE));return f};
Sidebar.prototype.createDragSource=function(a,c,f,e,g){function d(Z,oa){var va=mxUtils.createImage(Z.src);va.style.width=Z.width+"px";va.style.height=Z.height+"px";null!=oa&&va.setAttribute("title",oa);mxUtils.setOpacity(va,Z==this.refreshTarget?30:20);va.style.position="absolute";va.style.cursor="crosshair";return va}function k(Z,oa,va,Ja){null!=Ja.parentNode&&(mxUtils.contains(va,Z,oa)?(mxUtils.setOpacity(Ja,100),L=Ja):mxUtils.setOpacity(Ja,Ja==fa?30:20));return va}for(var n=this.editorUi,u=n.editor.graph,
e&&null!=L&&null!=E&&L!=fa?(sa=Z.model.isEdge(E.cell)||null==m?r:m,Z.setSelectionCells(this.dropAndConnect(E.cell,e,I,sa,oa))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(Z.view.getState(Z.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(Z,oa){F.isActive()&&F.reset()});var K=F.mouseDown;F.mouseDown=function(Z){mxEvent.isPopupTrigger(Z)||mxEvent.isMultiTouchEvent(Z)||u.isCellLocked(u.getDefaultParent())||(u.stopEditing(),
Sidebar.prototype.itemClicked=function(a,c,f,e){e=this.editorUi.editor.graph;e.container.focus();if(mxEvent.isAltDown(f)&&1==e.getSelectionCount()&&e.model.isVertex(e.getSelectionCell())){c=null;for(var g=0;g<a.length&&null==c;g++)e.model.isVertex(a[g])&&(c=g);null!=c&&(e.setSelectionCells(this.dropAndConnect(e.getSelectionCell(),a,mxEvent.isMetaDown(f)||mxEvent.isControlDown(f)?mxEvent.isShiftDown(f)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(f)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,c,f)),e.scrollCellToVisible(e.getSelectionCell()))}else mxEvent.isShiftDown(f)&&!e.isSelectionEmpty()?(f=e.getEditableCells(e.getSelectionCells()),this.updateShapes(a[0],f),e.scrollCellToVisible(f)):(a=mxEvent.isAltDown(f)?e.getFreeInsertPoint():e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(a,!0)),c.drop(e,f,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,c,f){var e=c.mouseDown,g=c.mouseMove,d=c.mouseUp,k=this.editorUi.editor.graph.tolerance,n=null,u=this;c.mouseDown=function(m){e.apply(this,arguments);n=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(m){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=n&&(Math.abs(n.x-mxEvent.getClientX(m))>k||Math.abs(n.y-mxEvent.getClientY(m))>
k)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));g.apply(this,arguments)};c.mouseUp=function(m){try{mxEvent.isPopupTrigger(m)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||u.itemClicked(f,c,m,a),d.apply(c,arguments),mxUtils.setOpacity(a,100),n=null,u.currentElt=a}catch(r){c.reset(),u.editorUi.handleError(r)}}};
Sidebar.prototype.createVertexTemplateEntry=function(a,c,f,e,g,d,k,n){null!=n&&null!=g&&(n+=" "+g);n=null!=n&&0<n.length?n:null!=g?g.toLowerCase():"";return this.addEntry(n,mxUtils.bind(this,function(){return this.createVertexTemplate(a,c,f,e,g,d,k)}))};Sidebar.prototype.createVertexTemplate=function(a,c,f,e,g,d,k,n,u){a=[new mxCell(null!=e?e:"",new mxGeometry(0,0,c,f),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,c,f,g,d,k,n,u)};
Sidebar.prototype.createVertexTemplateFromData=function(a,c,f,e,g,d,k,n){a=mxUtils.parseXml(Graph.decompress(a));var u=new mxCodec(a),m=new mxGraphModel;u.decode(a.documentElement,m);a=this.graph.cloneCells(m.root.getChildAt(0).children);return this.createVertexTemplateFromCells(a,c,f,e,g,d,k,n)};Sidebar.prototype.createVertexTemplateFromCells=function(a,c,f,e,g,d,k,n){return this.createItem(a,e,g,d,c,f,k,n)};
Sidebar.prototype.createEdgeTemplateEntry=function(a,c,f,e,g,d,k,n,u){k=null!=k&&0<k.length?k:g.toLowerCase();return this.addEntry(k,mxUtils.bind(this,function(){return this.createEdgeTemplate(a,c,f,e,g,d,n,u)}))};
Sidebar.prototype.createEdgeTemplate=function(a,c,f,e,g,d,k,n){a=new mxCell(null!=e?e:"",new mxGeometry(0,0,c,f),a);a.geometry.setTerminalPoint(new mxPoint(0,f),!0);a.geometry.setTerminalPoint(new mxPoint(c,0),!1);a.geometry.relative=!0;a.edge=!0;return this.createEdgeTemplateFromCells([a],c,f,g,d,k,n)};Sidebar.prototype.createEdgeTemplateFromCells=function(a,c,f,e,g,d,k,n){return this.createItem(a,e,g,null!=n?n:!0,c,f,d,k)};
Sidebar.prototype.addPaletteFunctions=function(a,c,f,e){this.addPalette(a,c,f,mxUtils.bind(this,function(g){for(var d=0;d<e.length;d++)g.appendChild(e[d](g))}))};
Sidebar.prototype.addPalette=function(a,c,f,e){c=this.createTitle(c);this.container.appendChild(c);var g=document.createElement("div");g.className="geSidebar";mxClient.IS_POINTER&&(g.style.touchAction="none");f?(e(g),e=null):g.style.display="none";this.addFoldingHandler(c,g,e);f=document.createElement("div");f.appendChild(g);this.container.appendChild(f);null!=a&&(this.palettes[a]=[c,f]);return g};
Sidebar.prototype.addFoldingHandler=function(a,c,f){var e=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==c.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if("none"==c.style.display){if(e)c.style.display="block";else if(e=!0,null!=f){a.style.cursor="wait";var d=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){c.style.display="block";a.style.cursor="";a.innerHTML=d;var k=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;f(c,a);mxClient.NO_FO=k},mxClient.IS_FF?20:0)}else c.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",c.style.display="none";mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(g){g.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var c=this.palettes[a];if(null!=c){this.palettes[a]=null;for(a=0;a<c.length;a++)this.container.removeChild(c[a]);return!0}return!1};
Sidebar.prototype.addImagePalette=function(a,c,f,e,g,d,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var A=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=A?A:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+e,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=d?d[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,c,!1,n)};
Sidebar.prototype.getTagsForStencil=function(a,c,f){a=a.split(".");for(var e=1;e<a.length;e++)a[e]=a[e].replace(/_/g," ");a.push(c.replace(/_/g," "));null!=f&&a.push(f);return a.slice(1,a.length)};
Sidebar.prototype.addStencilPalette=function(a,c,f,e,g,d,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,A,C,F,K){if(null==g||0>mxUtils.indexOf(g,A)){C=this.getTagsForStencil(x,A);var E=null!=n?n[A]:null;null!=E&&C.push(E);r.push(this.createVertexTemplateEntry("shape="+x+A.toLowerCase()+e,Math.round(F*k),Math.round(K*k),"",A.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
!0,!0);this.addPaletteFunctions(a,c,!1,r)}else this.addPalette(a,c,!1,mxUtils.bind(this,function(x){null==e&&(e="");null!=d&&d.call(this,x);if(null!=u)for(var A=0;A<u.length;A++)u[A](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,F,K,E,O){(null==g||0>mxUtils.indexOf(g,F))&&x.appendChild(this.createVertexTemplate("shape="+C+F.toLowerCase()+e,Math.round(E*k),Math.round(O*k),"",F.replace(/_/g," "),!0))}),!0)}))};
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};(function(){var a=[["nbsp","160"],["shy","173"]],c=mxUtils.parseXml;mxUtils.parseXml=function(f){for(var e=0;e<a.length;e++)f=f.replace(new RegExp("&"+a[e][0]+";","g"),"&#"+a[e][1]+";");return c(f)}})();
Date.prototype.toISOString||function(){function a(c){c=String(c);1===c.length&&(c="0"+c);return c}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,c=function(e){return"function"===typeof e||"[object Function]"===a.call(e)},f=Math.pow(2,53)-1;return function(e){var g=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var d=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof d){if(!c(d))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
arguments[2])}var n=Number(g.length);n=isNaN(n)?0:0!==n&&isFinite(n)?(0<n?1:-1)*Math.floor(Math.abs(n)):n;n=Math.min(Math.max(n,0),f);for(var u=c(this)?Object(new this(n)):Array(n),m=0,r;m<n;)r=g[m],u[m]=d?"undefined"===typeof k?d(r,m):d.call(k,r,m):r,m+=1;u.length=n;return u}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(c){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,c,f){return null};
Graph=function(a,c,f,e,g,d){mxGraph.call(this,a,c,f,e);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=d?d:!1;a=this.baseUrl;c=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=a.indexOf("/",c+2),0<c&&(this.domainUrl=a.substring(0,c)),c=a.lastIndexOf("/"),0<c&&(this.domainPathUrl=a.substring(0,c+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
Graph.createOffscreenGraph=function(a){var c=new Graph(document.createElement("div"));c.stylesheet.styles=mxUtils.clone(a.styles);c.resetViewOnRootChange=!1;c.setConnectable(!1);c.gridEnabled=!1;c.autoScroll=!1;c.setTooltips(!1);c.setEnabled(!1);c.container.style.visibility="hidden";c.container.style.position="absolute";c.container.style.overflow="hidden";c.container.style.height="1px";c.container.style.width="1px";return c};
Graph.createSvgImage=function(a,c,f,e,g){f=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" '+(null!=e&&null!=g?'viewBox="0 0 '+e+" "+g+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,c)};
Graph.createSvgNode=function(a,c,f,e,g){var d=mxUtils.createXmlDocument(),k=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"svg"):d.createElement("svg");null!=g&&(null!=k.style?k.style.backgroundColor=g:k.setAttribute("style","background-color:"+g));null==d.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);k.setAttribute("version","1.1");
k.setAttribute("width",f+"px");k.setAttribute("height",e+"px");k.setAttribute("viewBox",a+" "+c+" "+f+" "+e);d.appendChild(k);return k};Graph.htmlToPng=function(a,c,f,e){var g=document.createElement("canvas");g.width=c;g.height=f;var d=document.createElement("img");d.onload=mxUtils.bind(this,function(){g.getContext("2d").drawImage(d,0,0);e(g.toDataURL())});d.src="data:image/svg+xml,"+encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml"><style>em{color:red;}</style><em>I</em> lick <span>cheese</span></div></foreignObject></svg>')};
Graph.zapGremlins=function(a){for(var c=0,f=[],e=0;e<a.length;e++){var g=a.charCodeAt(e);(32<=g||9==g||10==g||13==g)&&65535!=g&&65534!=g||(f.push(a.substring(c,e)),c=e+1)}0<c&&c<a.length&&f.push(a.substring(c));return 0==f.length?a:f.join("")};Graph.stringToBytes=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=a.charCodeAt(f);return c};Graph.bytesToString=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=String.fromCharCode(a[f]);return c.join("")};
Graph.base64EncodeUnicode=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(c,f){return String.fromCharCode(parseInt(f,16))}))};Graph.base64DecodeUnicode=function(a){return decodeURIComponent(Array.prototype.map.call(atob(a),function(c){return"%"+("00"+c.charCodeAt(0).toString(16)).slice(-2)}).join(""))};Graph.compressNode=function(a,c){a=mxUtils.getXml(a);return Graph.compress(c?a:Graph.zapGremlins(a))};
Graph.arrayBufferToString=function(a){var c="";a=new Uint8Array(a);for(var f=a.byteLength,e=0;e<f;e++)c+=String.fromCharCode(a[e]);return c};Graph.stringToArrayBuffer=function(a){return Uint8Array.from(a,function(c){return c.charCodeAt(0)})};
Graph.arrayBufferIndexOfString=function(a,c,f){var e=c.charCodeAt(0),g=1,d=-1;for(f=f||0;f<a.byteLength;f++)if(a[f]==e){d=f;break}for(f=d+1;-1<d&&f<a.byteLength&&f<d+c.length-1;f++){if(a[f]!=c.charCodeAt(g))return Graph.arrayBufferIndexOfString(a,c,d+1);g++}return g==c.length-1?d:-1};Graph.compress=function(a,c){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=c?pako.deflate(encodeURIComponent(a)):pako.deflateRaw(encodeURIComponent(a));return btoa(Graph.arrayBufferToString(new Uint8Array(a)))};
Graph.decompress=function(a,c,f){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=Graph.stringToArrayBuffer(atob(a));c=decodeURIComponent(c?pako.inflate(a,{to:"string"}):pako.inflateRaw(a,{to:"string"}));return f?c:Graph.zapGremlins(c)};
Graph.fadeNodes=function(a,c,f,e,g){g=null!=g?g:1E3;Graph.setTransitionForNodes(a,null);Graph.setOpacityForNodes(a,c);window.setTimeout(function(){Graph.setTransitionForNodes(a,"all "+g+"ms ease-in-out");Graph.setOpacityForNodes(a,f);window.setTimeout(function(){Graph.setTransitionForNodes(a,null);null!=e&&e()},g)},0)};Graph.removeKeys=function(a,c){for(var f in a)c(f)&&delete a[f]};
Graph.setTransitionForNodes=function(a,c){for(var f=0;f<a.length;f++)mxUtils.setPrefixedStyle(a[f].style,"transition",c)};Graph.setOpacityForNodes=function(a,c){for(var f=0;f<a.length;f++)a[f].style.opacity=c};Graph.removePasteFormatting=function(a){for(;null!=a;)null!=a.firstChild&&Graph.removePasteFormatting(a.firstChild),a.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=a.style&&(a.style.whiteSpace="","#000000"==a.style.color&&(a.style.color="")),a=a.nextSibling};
Graph.sanitizeHtml=function(a,c){return Graph.domPurify(a,!1)};Graph.sanitizeLink=function(a){var c=document.createElement("a");c.setAttribute("href",a);Graph.sanitizeNode(c);return c.getAttribute("href")};Graph.sanitizeNode=function(a){return Graph.domPurify(a,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(a){a.hasAttribute("xlink:href")&&!a.getAttribute("xlink:href").match(/^#/)&&a.remove()});
Graph.domPurify=function(a,c){window.DOM_PURIFY_CONFIG.IN_PLACE=c;return DOMPurify.sanitize(a,window.DOM_PURIFY_CONFIG)};
Graph.clipSvgDataUri=function(a,c){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=a&&"data:image/svg+xml;base64,"==a.substring(0,26))try{var f=document.createElement("div");f.style.position="absolute";f.style.visibility="hidden";var e=decodeURIComponent(escape(atob(a.substring(26)))),g=e.indexOf("<svg");if(0<=g){f.innerHTML=e.substring(g);Graph.sanitizeNode(f);var d=f.getElementsByTagName("svg");if(0<d.length){if(c||null!=d[0].getAttribute("preserveAspectRatio")){document.body.appendChild(f);try{e=
c=1;var k=d[0].getAttribute("width"),n=d[0].getAttribute("height");k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN;n=null!=n&&"%"!=n.charAt(n.length-1)?parseFloat(n):NaN;var u=d[0].getAttribute("viewBox");if(null!=u&&!isNaN(k)&&!isNaN(n)){var m=u.split(" ");4<=u.length&&(c=parseFloat(m[2])/k,e=parseFloat(m[3])/n)}var r=d[0].getBBox();0<r.width&&0<r.height&&(f.getElementsByTagName("svg")[0].setAttribute("viewBox",r.x+" "+r.y+" "+r.width+" "+r.height),f.getElementsByTagName("svg")[0].setAttribute("width",
r.width/c),f.getElementsByTagName("svg")[0].setAttribute("height",r.height/e))}catch(x){}finally{document.body.removeChild(f)}}a=Editor.createSvgDataUri(mxUtils.getXml(d[0]))}}}catch(x){}return a};Graph.stripQuotes=function(a){null!=a&&("'"==a.charAt(0)&&(a=a.substring(1)),"'"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)),'"'==a.charAt(0)&&(a=a.substring(1)),'"'==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)));return a};
Graph.createRemoveIcon=function(a,c){var f=document.createElement("img");f.setAttribute("src",Dialog.prototype.clearImage);f.setAttribute("title",a);f.setAttribute("width","13");f.setAttribute("height","10");f.style.marginLeft="4px";f.style.marginBottom="-1px";f.style.cursor="pointer";mxEvent.addListener(f,"click",c);return f};Graph.isPageLink=function(a){return null!=a&&"data:page/id,"==a.substring(0,13)};Graph.isLink=function(a){return null!=a&&Graph.linkPattern.test(a)};
x&&x!=e.node;){if("a"==x.nodeName.toLowerCase()){f.view.graph.labelLinkClicked(f,x,r);break}x=x.parentNode}});mxEvent.addGestureListeners(e.node,n,u,m);mxEvent.addListener(e.node,"click",function(r){mxEvent.consume(r)})};if(null!=this.tooltipHandler){var c=this.tooltipHandler.init;this.tooltipHandler.init=function(){c.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(f){var e=mxEvent.getSource(f);"A"==e.nodeName&&(e=e.getAttribute("href"),null!=
u)}return k};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(k){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);c.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),
Graph.prototype.labelLinkClicked=function(a,c,f){c=c.getAttribute("href");if(null!=c&&!this.isCustomLink(c)&&(mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(c)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(c),a);mxEvent.consume(f)}};
Graph.prototype.openLink=function(a,c,f){var e=window;try{if(a=Graph.sanitizeLink(a),null!=a)if("_self"==c&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top){var g=a.split("#")[1];window.location.hash=="#"+g&&(window.location.hash="");window.location.hash=g}else e=window.open(a,null!=c?c:"_blank"),null==e||f||(e.opener=null)}catch(d){}return e};
Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.hasLayout=function(a){return null!=this.graph.getCellStyle(a).childLayout};this.layoutManager.getLayout=function(a,c){var f=this.graph.model.getParent(a);if(!this.graph.isCellCollapsed(a)&&(c!=mxEvent.BEGIN_UPDATE||this.hasLayout(f,c))){a=this.graph.getCellStyle(a);if("stackLayout"==a.childLayout)return c=new mxStackLayout(this.graph,!0),c.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax",
"1"),c.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),c.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),c.resizeLast="1"==mxUtils.getValue(a,"resizeLast","0"),c.spacing=a.stackSpacing||c.spacing,c.border=a.stackBorder||c.border,c.marginLeft=a.marginLeft||0,c.marginRight=a.marginRight||0,c.marginTop=a.marginTop||0,c.marginBottom=a.marginBottom||0,c.allowGaps=a.allowGaps||0,c.fill=!0,c.allowGaps&&(c.gridSize=parseFloat(mxUtils.getValue(a,"stackUnitSize",20))),c;if("treeLayout"==
a.childLayout)return c=new mxCompactTreeLayout(this.graph),c.horizontal="1"==mxUtils.getValue(a,"horizontalTree","1"),c.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),c.groupPadding=mxUtils.getValue(a,"parentPadding",20),c.levelDistance=mxUtils.getValue(a,"treeLevelDistance",30),c.maintainParentLocation=!0,c.edgeRouting=!1,c.resetEdges=!1,c;if("flowLayout"==a.childLayout)return c=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),c.resizeParent=
"1"==mxUtils.getValue(a,"resizeParent","1"),c.parentBorder=mxUtils.getValue(a,"parentPadding",20),c.maintainParentLocation=!0,c.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),c.interRankCellSpacing=mxUtils.getValue(a,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),c.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),c.parallelEdgeSpacing=mxUtils.getValue(a,
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),c;if("circleLayout"==a.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==a.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==a.childLayout)return new TableLayout(this.graph)}return null}};
Graph.prototype.getDataForCells=function(a){for(var c=[],f=0;f<a.length;f++){var e=null!=a[f].value?a[f].value.attributes:null,g={};g.id=a[f].id;if(null!=e)for(var d=0;d<e.length;d++)g[e[d].nodeName]=e[d].nodeValue;else g.label=this.convertValueToString(a[f]);c.push(g)}return c};
Graph.prototype.getNodesForCells=function(a){for(var c=[],f=0;f<a.length;f++){var e=this.view.getState(a[f]);if(null!=e){for(var g=this.cellRenderer.getShapesForState(e),d=0;d<g.length;d++)null!=g[d]&&null!=g[d].node&&c.push(g[d].node);null!=e.control&&null!=e.control.node&&c.push(e.control.node)}}return c};
Graph.prototype.createWipeAnimations=function(a,c){for(var f=[],e=0;e<a.length;e++){var g=this.view.getState(a[e]);null!=g&&null!=g.shape&&(this.model.isEdge(g.cell)&&null!=g.absolutePoints&&1<g.absolutePoints.length?f.push(this.createEdgeWipeAnimation(g,c)):this.model.isVertex(g.cell)&&null!=g.shape.bounds&&f.push(this.createVertexWipeAnimation(g,c)))}return f};
Graph.prototype.createEdgeWipeAnimation=function(a,c){var f=a.absolutePoints.slice(),e=a.segments,g=a.length,d=f.length;return{execute:mxUtils.bind(this,function(k,n){if(null!=a.shape){var u=[f[0]];n=k/n;c||(n=1-n);for(var m=g*n,r=1;r<d;r++)if(m<=e[r-1]){u.push(new mxPoint(f[r-1].x+(f[r].x-f[r-1].x)*m/e[r-1],f[r-1].y+(f[r].y-f[r-1].y)*m/e[r-1]));break}else m-=e[r-1],u.push(f[r]);a.shape.points=u;a.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=
a.text.node&&(a.text.node.style.opacity=n)}}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.points=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),c?1:0))})}};
Graph.prototype.createVertexWipeAnimation=function(a,c){var f=new mxRectangle.fromRectangle(a.shape.bounds);return{execute:mxUtils.bind(this,function(e,g){null!=a.shape&&(g=e/g,c||(g=1-g),a.shape.bounds=new mxRectangle(f.x,f.y,f.width*g,f.height),a.shape.redraw(),0==e&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=g))}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.bounds=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&
(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),c?1:0))})}};Graph.prototype.executeAnimations=function(a,c,f,e){f=null!=f?f:30;e=null!=e?e:30;var g=null,d=0,k=mxUtils.bind(this,function(){if(d==f||this.stoppingCustomActions){window.clearInterval(g);for(var n=0;n<a.length;n++)a[n].stop();null!=c&&c()}else for(n=0;n<a.length;n++)a[n].execute(d,f);d++});g=window.setInterval(k,e);k()};
Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),c=this.getGraphBounds();if(0==c.width||0==c.height)return new mxRectangle(0,0,1,1);var f=Math.floor(Math.ceil(c.x/this.view.scale-this.view.translate.x)/a.width),e=Math.floor(Math.ceil(c.y/this.view.scale-this.view.translate.y)/a.height);return new mxRectangle(f,e,Math.ceil((Math.floor((c.x+c.width)/this.view.scale)-this.view.translate.x)/a.width)-f,Math.ceil((Math.floor((c.y+c.height)/this.view.scale)-this.view.translate.y)/a.height)-
e)};Graph.prototype.sanitizeHtml=function(a,c){return Graph.sanitizeHtml(a,c)};Graph.prototype.updatePlaceholders=function(){var a=!1,c;for(c in this.model.cells){var f=this.model.cells[c];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")};
Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isAltDown(a)&&!mxEvent.isShiftDown(a)&&!mxEvent.isControlDown(a)&&!mxEvent.isMetaDown(a)};Graph.prototype.isEdgeIgnored=function(a){var c=!1;null!=a&&(a=this.getCurrentCellStyle(a),c="1"==mxUtils.getValue(a,"ignoreEdge","0"));return c};Graph.prototype.isSplitTarget=function(a,c,f){return!this.model.isEdge(c[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};
Graph.prototype.getLabel=function(a){var c=mxGraph.prototype.getLabel.apply(this,arguments);null!=c&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(c=this.replacePlaceholders(a,c));return c};Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(c,"labelMovable","0")))};
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var c=this.getLinkForCell(a);if(null!=c)return c;a=this.model.getParent(a)}while(null!=a);return null};
Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
Graph.prototype.formatDate=function(a,c,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(e.masks[c]||c||e.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),A=a[n+"Hours"](),C=a[n+"Minutes"](),F=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var K=f?0:a.getTimezoneOffset(),E={d:u,dd:k(u),ddd:e.i18n.dayNames[m],dddd:e.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:e.i18n.monthNames[r],mmmm:e.i18n.monthNames[r+
12],yy:String(x).slice(2),yyyy:x,h:A%12||12,hh:k(A%12||12),H:A,HH:k(A),M:C,MM:k(C),s:F,ss:k(F),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>A?"a":"p",tt:12>A?"am":"pm",T:12>A?"A":"P",TT:12>A?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(d,""),o:(0<K?"-":"+")+k(100*Math.floor(Math.abs(K)/60)+Math.abs(K)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(O){return O in E?E[O]:O.slice(1,
O.length-1)})};Graph.prototype.getLayerForCells=function(a){var c=null;if(0<a.length){for(c=a[0];!this.model.isLayer(c);)c=this.model.getParent(c);for(var f=1;f<a.length;f++)if(!this.model.isAncestor(c,a[f])){c=null;break}}return c};
Graph.prototype.createLayersDialog=function(a,c){var f=document.createElement("div");f.style.position="absolute";for(var e=this.getModel(),g=e.getChildCount(e.root),d=0;d<g;d++)mxUtils.bind(this,function(k){function n(){e.isVisible(k)?(r.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(m,75)):(r.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(m,25))}var u=this.convertValueToString(k)||mxResources.get("background")||"Background",m=document.createElement("div");m.style.overflow=
"hidden";m.style.textOverflow="ellipsis";m.style.padding="2px";m.style.whiteSpace="nowrap";m.style.cursor="pointer";m.setAttribute("title",mxResources.get(e.isVisible(k)?"hideIt":"show",[u]));var r=document.createElement("img");r.setAttribute("draggable","false");r.setAttribute("align","absmiddle");r.setAttribute("border","0");r.style.position="relative";r.style.width="16px";r.style.padding="0px 6px 0 4px";c&&(r.style.filter="invert(100%)",r.style.top="-2px");m.appendChild(r);mxUtils.write(m,u);f.appendChild(m);
Graph.prototype.replacePlaceholders=function(a,c,f,e){e=[];if(null!=c){for(var g=0;match=this.placeholderPattern.exec(c);){var d=match[0];if(2<d.length&&"%label%"!=d&&"%tooltip%"!=d){var k=null;if(match.index>g&&"%"==c.charAt(match.index-1))k=d.substring(1);else{var n=d.substring(1,d.length-1);if("id"==n)k=a.id;else if(0>n.indexOf("{"))for(var u=a;null==k&&null!=u;)null!=u.value&&"object"==typeof u.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=u.getAttribute(n+"_"+Graph.diagramLanguage)),
null==k&&(k=u.hasAttribute(n)?null!=u.getAttribute(n)?u.getAttribute(n):"":null)),u=this.model.getParent(u);null==k&&(k=this.getGlobalVariable(n));null==k&&null!=f&&(k=f[n])}e.push(c.substring(g,match.index)+(null!=k?k:d));g=match.index+d.length}}e.push(c.substring(g))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],f=0;f<a.length;f++){var e=this.model.getCell(a[f].id);null!=e&&c.push(e)}this.setSelectionCells(c)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(a,c){mxEvent.isShiftDown(c)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),a)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(a,c){var f=!1;if(this.isTableCell(a)&&this.isTableCell(c)){var e=this.model.getParent(a),g=this.model.getParent(e),d=this.model.getParent(c);if(g==this.model.getParent(d)){a=e.getIndex(a);e=g.getIndex(e);var k=d.getIndex(c),n=g.getIndex(d);d=Math.max(e,n);c=Math.min(a,k);a=Math.max(a,k);k=[];for(e=Math.min(e,n);e<=d;e++){n=this.model.getChildAt(g,e);for(var u=c;u<=a;u++)k.push(this.model.getChildAt(n,u))}0<k.length&&(1<k.length||1<this.getSelectionCount()||
Graph.prototype.snapCellsToGrid=function(a,c){this.getModel().beginUpdate();try{for(var f=0;f<a.length;f++){var e=a[f],g=this.getCellGeometry(e);if(null!=g){g=g.clone();if(this.getModel().isVertex(e))g.x=Math.round(g.x/c)*c,g.y=Math.round(g.y/c)*c,g.width=Math.round(g.width/c)*c,g.height=Math.round(g.height/c)*c;else if(this.getModel().isEdge(e)&&null!=g.points)for(var d=0;d<g.points.length;d++)g.points[d].x=Math.round(g.points[d].x/c)*c,g.points[d].y=Math.round(g.points[d].y/c)*c;this.getModel().setGeometry(e,
g)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,c,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(c)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};
Graph.prototype.isCloneConnectSource=function(a){var c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(a)));return this.isTableRow(a)||this.isTableCell(a)||null!=c&&c.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(a,c,f,e,g,d,k,n){d=d?d:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var u=this.isCloneConnectSource(a),m=u?a:this.getCompositeParent(a),r=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(m.geometry.x,m.geometry.y);c==mxConstants.DIRECTION_NORTH?(r.x+=m.geometry.width/2,r.y-=f):c==
mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=c==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var A=this.view.translate;m=A.x*f;A=A.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,A=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);d=d?null:(new mxRectangle(m+r.x*f,A+r.y*f)).grow(40*f);d=null!=d?
!mxEvent.isShiftDown(e)||mxEvent.isControlDown(e)||g;O&&("1"!=urlParams.sketch||g)&&(c==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=c==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var R=[],Q=F;F=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==F&&u){this.model.beginUpdate();try{if(null==Q&&O){var aa=this.getAbsoluteParent(null!=P?P:a);aa=u?a:this.getCompositeParent(aa);Q=null!=P?P:this.duplicateCells([aa],
!1)[0];null!=P&&this.addCells([Q],this.model.getParent(a),null,null,null,!0);var T=this.getCellGeometry(Q);null!=T&&(null!=P&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?r.y-=T.height/2:c==mxConstants.DIRECTION_SOUTH?r.y+=T.height/2:r.x=c==mxConstants.DIRECTION_WEST?r.x-T.width/2:r.x+T.width/2),T.x=r.x-T.width/2,T.y=r.y-T.height/2);null!=C?(this.addCells([Q],C,null,null,null,!0),F=null):O&&!u&&this.addCells([Q],this.getDefaultParent(),null,null,null,!0)}var U=mxEvent.isControlDown(e)&&
mxEvent.isShiftDown(e)&&O||null==F&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,Q,this.createCurrentEdgeStyle());if(null!=U&&this.connectionHandler.insertBeforeSource){var fa=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=U.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==U.parent&&(fa=P.parent.getIndex(P),this.model.add(P.parent,U,fa))}null==F&&null!=Q&&null!=a.parent&&u&&c==mxConstants.DIRECTION_WEST&&(fa=a.parent.getIndex(a),this.model.add(a.parent,
Graph.prototype.getIndexableText=function(a){a=null!=a?a:this.model.getDescendants(this.model.root);for(var c=document.createElement("div"),f=[],e,g=0;g<a.length;g++)if(e=a[g],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(c.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([c])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&f.push(e);return f.join(" ")};
Graph.prototype.convertValueToString=function(a){var c=this.model.getValue(a);if(null!=c&&"object"==typeof c){var f=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){c=a.getAttribute("placeholder");for(var e=a;null==f&&null!=e;)null!=e.value&&"object"==typeof e.value&&(f=e.hasAttribute(c)?null!=e.getAttribute(c)?e.getAttribute(c):"":null),e=this.model.getParent(e)}else f=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=c.getAttribute("label_"+Graph.diagramLanguage)),
null==f&&(f=c.getAttribute("label")||"");return f||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getLinkTargetForCell=function(a){return null!=a.value&&"object"==typeof a.value?a.value.getAttribute("linkTarget"):null};Graph.prototype.postProcessCellStyle=function(a,c){return this.updateHorizontalStyle(a,this.replaceDefaultColors(a,mxGraph.prototype.postProcessCellStyle.apply(this,arguments)))};
Graph.prototype.updateHorizontalStyle=function(a,c){if(null!=a&&null!=c&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(a=this.layoutManager.getLayout(f),null!=a&&a.constructor==mxStackLayout&&(c[mxConstants.STYLE_HORIZONTAL]=!a.horizontal))}return c};
Graph.prototype.replaceDefaultColors=function(a,c){if(null!=c){a=mxUtils.hex2rgb(this.shapeBackgroundColor);var f=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(c,mxConstants.STYLE_FONTCOLOR,f);this.replaceDefaultColor(c,mxConstants.STYLE_FILLCOLOR,a);this.replaceDefaultColor(c,mxConstants.STYLE_STROKECOLOR,f);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BORDER,f);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BACKGROUND,a);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BORDERCOLOR,
f);this.replaceDefaultColor(c,mxConstants.STYLE_SWIMLANE_FILLCOLOR,a);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,a)}return c};Graph.prototype.replaceDefaultColor=function(a,c,f){null!=a&&"default"==a[c]&&null!=f&&(a[c]=f)};
Graph.prototype.updateAlternateBounds=function(a,c,f){if(null!=a&&null!=c&&null!=this.layoutManager&&null!=c.alternateBounds){var e=this.layoutManager.getLayout(this.model.getParent(a));null!=e&&e.constructor==mxStackLayout&&(e.horizontal?c.alternateBounds.height=0:c.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a,c){return mxEvent.isShiftDown(a)||"1"==mxUtils.getValue(c.style,"moveCells","0")};
Graph.prototype.foldCells=function(a,c,f,e,g){c=null!=c?c:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var d=0;d<f.length;d++){var k=this.view.getState(f[d]),n=this.getCellGeometry(f[d]);if(null!=k&&null!=n){var u=Math.round(n.width-k.width/this.view.scale),m=Math.round(n.height-k.height/this.view.scale);if(0!=m||0!=u){var r=this.model.getParent(f[d]),x=this.layoutManager.getLayout(r);
Graph.prototype.moveSiblings=function(a,c,f,e){this.model.beginUpdate();try{var g=this.getCellsBeyond(a.x,a.y,c,!0,!0);for(c=0;c<g.length;c++)if(g[c]!=a.cell){var d=this.view.getState(g[c]),k=this.getCellGeometry(g[c]);null!=d&&null!=k&&(k=k.clone(),k.translate(Math.round(f*Math.max(0,Math.min(1,(d.x-a.x)/a.width))),Math.round(e*Math.max(0,Math.min(1,(d.y-a.y)/a.height)))),this.model.setGeometry(g[c],k))}}finally{this.model.endUpdate()}};
Graph.prototype.resizeParentStacks=function(a,c,f,e){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var g=c.horizontal;null!=a&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==g&&!c.resizeLast;){var d=this.getCellGeometry(a),k=this.view.getState(a);null!=k&&null!=d&&(d=d.clone(),c.horizontal?d.width+=f+Math.min(0,k.width/this.view.scale-d.width):d.height+=e+Math.min(0,k.height/this.view.scale-d.height),this.model.setGeometry(a,
d));a=this.model.getParent(a);c=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var c=this.getCurrentCellStyle(a);return this.isSwimlane(a)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(a){var c=this.getCurrentCellStyle(a);return null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);return null!=c.movableLabel?"0"!=c.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,c,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(a,c,f){var e=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(e)&&(e=null);return e};Graph.prototype.isCellFoldable=function(a){var c=this.getCurrentCellStyle(a);return this.foldingEnabled&&"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&("1"==c.treeFolding||!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=c.collapsible||!this.isContainer(a)&&"1"==c.collapsible))};
Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};Graph.prototype.zoom=function(a,c){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};
Graph.prototype.fitWindow=function(a,c){c=null!=c?c:10;var f=this.container.clientWidth-c,e=this.container.clientHeight-c,g=Math.floor(20*Math.min(f/a.width,e/a.height))/20;this.zoomTo(g);if(mxUtils.hasScrollbars(this.container)){var d=this.view.translate;this.container.scrollTop=(a.y+d.y)*g-Math.max((e-a.height*g)/2+c/2,0);this.container.scrollLeft=(a.x+d.x)*g-Math.max((f-a.width*g)/2+c/2,0)}};
Graph.prototype.getTooltipForCell=function(a){var c="";if(mxUtils.isNode(a.value)){var f=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=a.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==f&&(f=a.value.getAttribute("tooltip"));if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),c=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var e=[];this.isEnabled()&&(f.push("linkTarget"),f.push("link"));for(var g=0;g<a.length;g++)0>
mxUtils.indexOf(f,a[g].nodeName)&&0<a[g].nodeValue.length&&e.push({name:a[g].nodeName,value:a[g].nodeValue});e.sort(function(d,k){return d.name<k.name?-1:d.name>k.name?1:0});for(g=0;g<e.length;g++)"link"==e[g].name&&this.isCustomLink(e[g].value)||(c+=("link"!=e[g].name?"<b>"+e[g].name+":</b> ":"")+mxUtils.htmlEntities(e[g].value)+"\n");0<c.length&&(c=c.substring(0,c.length-1),mxClient.IS_SVG&&(c='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+c+"</div>"))}}return c};
Graph.prototype.getFlowAnimationStyle=function(){var a=document.getElementsByTagName("head")[0];if(null!=a&&null==this.flowAnimationStyle){this.flowAnimationStyle=document.createElement("style");this.flowAnimationStyle.setAttribute("id","geEditorFlowAnimation-"+Editor.guid());this.flowAnimationStyle.type="text/css";var c=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(c);a.appendChild(this.flowAnimationStyle)}return this.flowAnimationStyle};
Graph.prototype.getFlowAnimationStyleCss=function(a){return"."+a+" {\nanimation: "+a+" 0.5s linear;\nanimation-iteration-count: infinite;\n}\n@keyframes "+a+" {\nto {\nstroke-dashoffset: "+-16*this.view.scale+";\n}\n}"};Graph.prototype.stringToBytes=function(a){return Graph.stringToBytes(a)};Graph.prototype.bytesToString=function(a){return Graph.bytesToString(a)};Graph.prototype.compressNode=function(a){return Graph.compressNode(a)};Graph.prototype.compress=function(a,c){return Graph.compress(a,c)};
Graph.prototype.decompress=function(a,c){return Graph.decompress(a,c)};Graph.prototype.zapGremlins=function(a){return Graph.zapGremlins(a)};HoverIcons=function(a){mxEventSource.call(this);this.graph=a;this.init()};mxUtils.extend(HoverIcons,mxEventSource);HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
mxEvent.getSource(f)==this.graph.container&&this.setDisplay("none")}));this.graph.addListener(mxEvent.START_EDITING,mxUtils.bind(this,function(f){this.reset()}));var a=this.graph.click;this.graph.click=mxUtils.bind(this,function(f){a.apply(this.graph,arguments);null==this.currentState||this.graph.isCellSelected(this.currentState.cell)||!mxEvent.isTouchEvent(f.getEvent())||this.graph.model.isVertex(f.getCell())||this.reset()});var c=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(f,
e){c=!1;f=e.getEvent();this.isResetEvent(f)?this.reset():this.isActive()||(e=this.getState(e.getState()),null==e&&mxEvent.isTouchEvent(f)||this.update(e));this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(f,e){f=e.getEvent();this.isResetEvent(f)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(f)||this.update(this.getState(e.getState()),e.getGraphX(),e.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(c=!0)}),mouseUp:mxUtils.bind(this,
function(f,e){f=e.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(f),mxEvent.getClientY(f));this.isResetEvent(f)?this.reset():this.isActive()&&!c&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),e):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())?this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(e.getGraphX(),e.getGraphY())))):mxEvent.isTouchEvent(f)||null!=
this.bbox&&mxUtils.contains(this.bbox,e.getGraphX(),e.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(f)||this.reset();c=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,c){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isPopupTrigger(a)&&!this.graph.isCloneEvent(a)};
HoverIcons.prototype.createArrow=function(a,c,f){var e=null;e=mxUtils.createImage(a.src);e.style.width=a.width+"px";e.style.height=a.height+"px";e.style.padding=this.tolerance+"px";null!=c&&e.setAttribute("title",c);e.style.position="absolute";e.style.cursor=this.cssCursor;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(g){null==this.currentState||this.isResetEvent(g)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(g),mxEvent.getClientY(g)),this.drag(g,
HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a};HoverIcons.prototype.visitNodes=function(a){for(var c=0;c<this.elts.length;c++)null!=this.elts[c]&&a(this.elts[c])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};
HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(c){c.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
HoverIcons.prototype.drag=function(a,c,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,c,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=c&&c.setHandlesVisible(!1),c=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=c&&"orthogonalEdgeStyle"===
mxUtils.getValue(c.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),c.cell.style=mxUtils.setStyle(c.cell.style,"sourcePortConstraint",a),c.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,c,f){return this.graph.view.getState(this.graph.getCellAt(c,f))};
HoverIcons.prototype.click=function(a,c,f){var e=f.getEvent(),g=f.getGraphX(),d=f.getGraphY();g=this.getStateAt(a,g,d);null==g||!this.graph.model.isEdge(g.cell)||this.graph.isCloneEvent(e)||g.getVisibleTerminalState(!0)!=a&&g.getVisibleTerminalState(!1)!=a?null!=a&&this.execute(a,c,f):(this.graph.setSelectionCell(g.cell),this.reset());f.consume()};
HoverIcons.prototype.execute=function(a,c,f){f=f.getEvent();this.graph.selectCellsForConnectVertex(this.graph.connectVertex(a.cell,c,this.graph.defaultEdgeLength,f,this.graph.isCloneEvent(f),this.graph.isCloneEvent(f)),f,this)};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null;this.fireEvent(new mxEventObject("reset"))};
var c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(c=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var f=null;null!=c&&(a.x-=c.horizontalOffset/2,a.y-=c.verticalOffset/2,a.width+=c.horizontalOffset,a.height+=c.verticalOffset,null!=c.rotationShape&&null!=c.rotationShape.node&&"hidden"!=c.rotationShape.node.style.visibility&&"none"!=c.rotationShape.node.style.display&&null!=c.rotationShape.boundingBox&&
(f=c.rotationShape.boundingBox));c=mxUtils.bind(this,function(n,u,m){if(null!=f){var r=new mxRectangle(u,m,n.clientWidth,n.clientHeight);mxUtils.intersects(r,f)&&(n==this.arrowUp?m-=r.y+r.height-f.y:n==this.arrowRight?u+=f.x+f.width-r.x:n==this.arrowDown?m+=f.y+f.height-r.y:n==this.arrowLeft&&(u-=r.x+r.width-f.x))}n.style.left=u+"px";n.style.top=m+"px";mxUtils.setOpacity(n,this.inactiveOpacity)});c(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(a.y-
this.triangleUp.height-this.tolerance));c(this.arrowRight,Math.round(a.x+a.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));c(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(a.y+a.height-this.tolerance));c(this.arrowLeft,Math.round(a.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){c=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY());
var e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),g=this.graph.getCellAt(this.currentState.getCenterX(),a.y-this.triangleUp.height/2);a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=c&&c==e&&e==g&&g==a&&(a=g=e=c=null);var d=this.graph.getCellGeometry(this.currentState.cell),k=mxUtils.bind(this,function(n,u){var m=this.graph.model.isVertex(n)&&this.graph.getCellGeometry(n);null==n||this.graph.model.isAncestor(n,
this.currentState.cell)||this.graph.isSwimlane(n)||!(null==m||null==d||m.height<3*d.height&&m.width<3*d.width)?u.style.visibility="visible":u.style.visibility="hidden"});k(c,this.arrowRight);k(e,this.arrowLeft);k(g,this.arrowUp);k(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(c){null!=c.parentNode&&(c=new mxRectangle(c.offsetLeft,c.offsetTop,c.offsetWidth,c.offsetHeight),null==a?a=c:a.add(c))});return a};
HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var c=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(a=c)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a};
HoverIcons.prototype.update=function(a,c,f){if(!this.graph.connectionArrowsEnabled||null!=a&&"0"==mxUtils.getValue(a.style,"allowArrows","1"))this.reset();else{null!=a&&null!=a.cell.geometry&&a.cell.geometry.relative&&this.graph.model.isEdge(a.cell.parent)&&(a=null);var e=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,e=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,c,f))}),this.updateDelay+10))):null!=this.startTime&&(e=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=a&&e<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,c,f)?this.reset(!1):(null!=this.currentState||e>this.activationDelay)&&this.currentState!=a&&(e>this.updateDelay&&null!=a||null==this.bbox||null==c||null==f||!mxUtils.contains(this.bbox,
c,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};Graph.prototype.createParent=function(a,c,f,e,g){a=this.cloneCell(a);for(var d=0;d<f;d++){var k=this.cloneCell(c),n=this.getCellGeometry(k);null!=n&&(n.x+=d*e,n.y+=d*g);a.insert(k)}return a};
Graph.prototype.createTable=function(a,c,f,e,g,d,k,n,u){f=null!=f?f:60;e=null!=e?e:40;d=null!=d?d:30;n=null!=n?n:"shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";u=null!=u?u:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,
null,null!=g?g:"",0,0,c*f,a*e+(null!=g?d:0),null!=k?k:"shape=table;startSize="+(null!=g?d:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,c*f,e,n),this.createVertex(null,null,"",0,0,f,e,u),c,f,0),a,0,e)};
Graph.prototype.setTableValues=function(a,c,f){for(var e=this.model.getChildCells(a,!0),g=0;g<e.length;g++)if(null!=f&&(e[g].value=f[g]),null!=c)for(var d=this.model.getChildCells(e[g],!0),k=0;k<d.length;k++)null!=c[g][k]&&(d[k].value=c[g][k]);return a};
Graph.prototype.createCrossFunctionalSwimlane=function(a,c,f,e,g,d,k,n,u){f=null!=f?f:120;e=null!=e?e:120;k=null!=k?k:"shape=tableRow;horizontal=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;fontStyle=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;startSize=40;collapsible=0;recursiveResize=0;expand=0;";n=null!=n?n:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;";
u=null!=u?u:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=0;collapsible=0;recursiveResize=0;expand=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,c*f,a*e,null!=d?d:"shape=table;childLayout=tableLayout;"+(null==g?"startSize=0;fillColor=none;":"startSize=40;")+"collapsible=0;recursiveResize=0;expand=0;");d=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=d;g.geometry.height+=d;k=this.createVertex(null,
null,"",0,d,c*f+d,e,k);g.insert(this.createParent(k,this.createVertex(null,null,"",d,0,f,e,n),c,f,0));return 1<a?(k.geometry.y=e+d,this.createParent(g,this.createParent(k,this.createVertex(null,null,"",d,0,f,e,u),c,f,0),a-1,0,e)):g};
Graph.prototype.visitTableCells=function(a,c){var f=null,e=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<e.length;g++){for(var d=this.getActualStartSize(e[g],!0),k=this.model.getChildCells(e[g],!0),n=this.getCellStyle(e[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),A={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;A.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+d.x),x.height+(null!=f&&null!=
f[0]?f[0].point.y:a.y+d.y));A.actual=A;null!=f&&null!=f[r]&&1<f[r].rowspan?(A.rowspan=f[r].rowspan-1,A.colspan=f[r].colspan,A.actual=f[r].actual):null!=u&&1<u.colspan?(A.rowspan=u.rowspan,A.colspan=u.colspan-1,A.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(A.rowspan=parseInt(u.rowspan||1),A.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;c(A,k.length,
e.length,a.x+(u?d.x:0),a.y+(u?d.y:0));m.push(A);u=A}f=m}};Graph.prototype.getTableLines=function(a,c,f){var e=[],g=[];(c||f)&&this.visitTableCells(a,mxUtils.bind(this,function(d,k,n,u,m){c&&d.row<n-1&&(null==e[d.row]&&(e[d.row]=[new mxPoint(u,d.point.y)]),1<d.rowspan&&e[d.row].push(null),e[d.row].push(d.point));f&&d.col<k-1&&(null==g[d.col]&&(g[d.col]=[new mxPoint(d.point.x,m)]),1<d.colspan&&g[d.col].push(null),g[d.col].push(d.point))}));return e.concat(g)};
Graph.prototype.setTableRowHeight=function(a,c,f){f=null!=f?f:!0;var e=this.getModel();e.beginUpdate();try{var g=this.getCellGeometry(a);if(null!=g){g=g.clone();g.height+=c;e.setGeometry(a,g);var d=e.getParent(a),k=e.getChildCells(d,!0);if(!f){var n=mxUtils.indexOf(k,a);if(n<k.length-1){var u=k[n+1],m=this.getCellGeometry(u);null!=m&&(m=m.clone(),m.y+=c,m.height-=c,e.setGeometry(u,m))}}var r=this.getCellGeometry(d);null!=r&&(f||(f=a==k[k.length-1]),f&&(r=r.clone(),r.height+=c,e.setGeometry(d,r)))}}finally{e.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(a,c,f){f=null!=f?f:!1;var e=this.getModel(),g=e.getParent(a),d=e.getParent(g),k=e.getChildCells(g,!0);a=mxUtils.indexOf(k,a);var n=a==k.length-1;e.beginUpdate();try{for(var u=e.getChildCells(d,!0),m=0;m<u.length;m++){g=u[m];k=e.getChildCells(g,!0);var r=k[a],x=this.getCellGeometry(r);null!=x&&(x=x.clone(),x.width+=c,null!=x.alternateBounds&&(x.alternateBounds.width+=c),e.setGeometry(r,x));a<k.length-1&&(r=k[a+1],x=this.getCellGeometry(r),null!=x&&(x=x.clone(),
x.x+=c,f||(x.width-=c,null!=x.alternateBounds&&(x.alternateBounds.width-=c)),e.setGeometry(r,x)))}if(n||f){var A=this.getCellGeometry(d);null!=A&&(A=A.clone(),A.width+=c,e.setGeometry(d,A))}null!=this.layoutManager&&this.layoutManager.executeLayout(d)}finally{e.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};TableLayout.prototype.getSize=function(a,c){for(var f=0,e=0;e<a.length;e++)if(!this.isVertexIgnored(a[e])){var g=this.graph.getCellGeometry(a[e]);null!=g&&(f+=c?g.width:g.height)}return f};
TableLayout.prototype.getRowLayout=function(a,c){var f=this.graph.model.getChildCells(a,!0),e=this.graph.getActualStartSize(a,!0);a=this.getSize(f,!0);c=c-e.x-e.width;var g=[];e=e.x;for(var d=0;d<f.length;d++){var k=this.graph.getCellGeometry(f[d]);null!=k&&(e+=(null!=k.alternateBounds?k.alternateBounds.width:k.width)*c/a,g.push(Math.round(e)))}return g};
TableLayout.prototype.layoutRow=function(a,c,f,e){var g=this.graph.getModel(),d=g.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,n=0;null!=c&&(c=c.slice(),c.splice(0,0,a.x));for(var u=0;u<d.length;u++){var m=this.graph.getCellGeometry(d[u]);null!=m&&(m=m.clone(),m.y=a.y,m.height=f-a.y-a.height,null!=c?(m.x=c[u],m.width=c[u+1]-m.x,u==d.length-1&&u<c.length-2&&(m.width=e-m.x-a.x-a.width)):(m.x=k,k+=m.width,u==d.length-1?m.width=e-a.x-a.width-n:n+=m.width),m.alternateBounds=new mxRectangle(0,
TableLayout.prototype.execute=function(a){if(null!=a){var c=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),e=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(e,"resizeLastRow","0"),d="1"==mxUtils.getValue(e,"resizeLast","0");e="1"==mxUtils.getValue(e,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-c.y-c.height,m=f.width-c.x-c.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var A=this.getSize(r,!1);if(0<u&&0<m&&0<
r.length&&0<A){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-A+C.height,k.setGeometry(r[r.length-1],C))}var F=d?null:this.getRowLayout(r[0],m),K=[],E=c.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=c.x,C.width=m,C.y=Math.round(E),E=g||e?E+C.height:E+C.height/A*u,C.height=Math.round(E)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],F,C.height,m,K));e&&u<A&&(f=f.clone(),f.height=E+c.height,k.setGeometry(a,
f));d&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+c.width+c.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(O){k.setVisible(O.cell,O.actual.cell==O.cell);if(O.actual.cell!=O.cell){if(O.actual.row==O.row){var R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo;O.actual.geo.width+=R.width}O.actual.col==O.col&&(R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo,O.actual.geo.height+=R.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(r,x){x=null!=x?x:!0;var A=this.getState(r);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&!A.invalid&&this.updateLineJumps(A)&&this.graph.cellRenderer.redraw(A,!1,this.isRendering());A=c.apply(this,
mxStencilRegistry.getStencil=function(a){var c=mxStencilRegistry.stencils[a];if(null==c&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){c=mxStencilRegistry.libraries[f];if(null!=c){if(null==mxStencilRegistry.packages[f]){for(var e=0;e<c.length;e++){var g=c[e];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var d=mxUtils.load(g);null!=d&&200<=d.getStatus()&&299>=d.getStatus()&&eval.call(window,d.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,f,c,g,k)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);c=mxStencilRegistry.stencils[a]}}return c};
mxStencilRegistry.getBasenameForStencil=function(a){var c=null;if(null!=a&&"string"===typeof a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0])){c=a[1];for(var f=2;f<a.length-1;f++)c+="/"+a[f]}return c};
mxStencilRegistry.loadStencilSet=function(a,c,f,e){var g=mxStencilRegistry.packages[a];if(null!=f&&f||null==g){var d=!1;if(null==g)try{if(e){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(k){null!=k&&null!=k.documentElement&&(mxStencilRegistry.packages[a]=k,d=!0,mxStencilRegistry.parseStencilSet(k.documentElement,c,d))}));return}g=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=g;d=!0}catch(k){null!=window.console&&console.log("error in loadStencilSet:",a,k)}null!=g&&null!=
g.documentElement&&mxStencilRegistry.parseStencilSet(g.documentElement,c,d)}};mxStencilRegistry.loadStencil=function(a,c){if(null!=c)mxUtils.get(a,mxUtils.bind(this,function(f){c(200<=f.getStatus()&&299>=f.getStatus()?f.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var c=0;c<a.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[c]).documentElement)};
mxStencilRegistry.parseStencilSet=function(a,c,f){if("stencils"==a.nodeName)for(var e=a.firstChild;null!=e;)"shapes"==e.nodeName&&mxStencilRegistry.parseStencilSet(e,c,f),e=e.nextSibling;else{f=null!=f?f:!0;e=a.firstChild;var g="";a=a.getAttribute("name");for(null!=a&&(g=a+".");null!=e;){if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=e.getAttribute("name"),null!=a)){g=g.toLowerCase();var d=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(g+d.toLowerCase(),new mxStencil(e));if(null!=c){var k=e.getAttribute("w"),
n=e.getAttribute("h");k=null==k?80:parseInt(k,10);n=null==n?80:parseInt(n,10);c(g,d,a,k,n)}}e=e.nextSibling}}};
"undefined"!==typeof mxVertexHandler&&function(){function a(){var t=document.createElement("div");t.className="geHint";t.style.whiteSpace="nowrap";t.style.position="absolute";return t}function c(t,z){switch(z){case mxConstants.POINTS:return t;case mxConstants.MILLIMETERS:return(t/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(t/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(t/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(b){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var Za=this.backgroundImage;if(null!=Za){t=Ea/z;var pb=this.view.translate;Da=new mxRectangle((Za.x+pb.x)*t,(Za.y+pb.y)*t,Za.width*t,Za.height*t);mxUtils.intersects(Ia,Da)&&Na.image(Za.x+pb.x,Za.y+pb.y,Za.width,Za.height,Za.src,!0)}Na.scale(D);Na.textEnabled=X;ia=null!=ia?ia:this.createSvgImageExport();var ub=ia.drawCellState,vb=ia.getLinkForCellState;ia.getLinkForCellState=
function(t){var z=this.graph.getView().scale;return new mxRectangle(0,0,null==t.text?30:t.text.size*z+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(t,z){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(z.getEvent)};mxGraphView.prototype.formatUnitText=function(t){return t?c(t,this.unit):t};mxGraphHandler.prototype.updateHint=function(t){if(null!=this.pBounds&&(null!=this.shape||
this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,B=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/B-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/B-z.y);B=this.graph.view.unit;this.hint.innerHTML=c(t,B)+", "+c(z,B);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+
z):t=V.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/t),z)+" x "+c(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var B=this.graph.view.translate,D=this.graph.view.scale,G=this.roundLength(z.x/D-B.x);B=this.roundLength(z.y/D-B.y);D=this.graph.view.unit;this.hint.innerHTML=c(G,D)+", "+c(B,D);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(G=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*G.x)+
null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,c){this.editorUi=a;this.container=c};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.doubleBlockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 8 8 L 16 2 L 16 14 Z M 16 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.processMenuIcon=function(a,c){var f=a.getElementsByTagName("img");0<f.length&&(Editor.isDarkMode()&&(f[0].style.filter="invert(100%)"),f[0].className="geIcon",f[0].style.padding="0px",f[0].style.margin="0 0 0 2px",null!=c&&mxUtils.setPrefixedStyle(f[0].style,"transform",c));return a};
Format.prototype.init=function(){var a=this.editorUi,c=a.editor,f=c.graph;this.update=mxUtils.bind(this,function(e,g){this.refresh()});f.getSelectionModel().addListener(mxEvent.CHANGE,this.update);f.getModel().addListener(mxEvent.CHANGE,this.update);f.addListener(mxEvent.EDITING_STARTED,this.update);f.addListener(mxEvent.EDITING_STOPPED,this.update);f.getView().addListener("unitChanged",this.update);c.addListener("autosaveChanged",this.update);f.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,c=a.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.color="rgb(112, 112, 112)";f.style.textAlign="left";f.style.cursor="default";var e=document.createElement("div");e.className="geFormatSection";e.style.textAlign="center";e.style.fontWeight="bold";e.style.paddingTop="8px";e.style.fontSize="13px";e.style.borderWidth="0px 0px 1px 1px";e.style.borderStyle=
"solid";e.style.display="inline-block";e.style.height="25px";e.style.overflow="hidden";e.style.width="100%";this.container.appendChild(f);mxEvent.addListener(e,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),d=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,F,K,E){var O=mxUtils.bind(this,function(R){k!=C&&(d?this.labelIndex=K:c.isSelectionEmpty()?this.diagramIndex=K:this.currentIndex=K,null!=k&&(k.style.backgroundColor=
Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=F&&(null!=n&&(n.style.display="none"),n=F,n.style.display=""))});mxEvent.addListener(C,"click",O);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(R){R.preventDefault()}));(E&&null==k||K==(d?this.labelIndex:c.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&O()}),m=0;if(c.isSelectionEmpty()){mxUtils.write(e,mxResources.get("diagram"));
Dialog.prototype.closeImage),u.setAttribute("title",mxResources.get("hide")),u.style.position="absolute",u.style.display="block",u.style.right="0px",u.style.top="8px",u.style.cursor="pointer",u.style.marginTop="1px",u.style.marginRight="6px",u.style.border="1px solid transparent",u.style.padding="1px",u.style.opacity=.5,r.appendChild(u),mxEvent.addListener(u,"click",function(){a.actions.get("formatPanel").funct()}),f.appendChild(r))}else if(c.isEditing())mxUtils.write(e,mxResources.get("text")),f.appendChild(e),
"none";u(A,f,m++,!0)}}};BaseFormatPanel=function(a,c,f){this.format=a;this.editorUi=c;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
BaseFormatPanel.prototype.installInputHandler=function(a,c,f,e,g,d,k,n){d=null!=d?d:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;e=null!=e?e:1;g=null!=g?g:999;var r=null,x=!1,A=mxUtils.bind(this,function(C){var F=n?parseFloat(a.value):parseInt(a.value);isNaN(F)||c!=mxConstants.STYLE_ROTATION||(F=mxUtils.mod(Math.round(100*F),36E3)/100);F=Math.min(g,Math.max(e,isNaN(F)?f:F));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(F),a.value=F+d,
x=!1);else if(F!=mxUtils.getValue(u.getSelectionState().style,c,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var K=u.getSelectionState().cells;m.setCellStyles(c,F,K);c==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(K,function(O){O.style.fontSize=F+"px";O.removeAttribute("size")});for(var E=0;E<K.length;E++)0==m.model.getChildCount(K[E])&&m.autoSizeCell(K[E],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[F],"cells",K))}finally{m.getModel().endUpdate()}}a.value=
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 14px";return a};BaseFormatPanel.prototype.createTitle=function(a){var c=document.createElement("div");c.style.padding="0px 0px 6px 0px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.width="200px";c.style.fontWeight="bold";mxUtils.write(c,a);return c};
BaseFormatPanel.prototype.addAction=function(a,c){var f=this.editorUi.actions.get(c);c=null;null!=f&&f.isEnabled()&&(c=mxUtils.button(f.label,function(e){f.funct(e,e)}),c.setAttribute("title",f.label+(null!=f.shortcut?" ("+f.shortcut+")":"")),c.style.marginBottom="2px",c.style.width="210px",a.appendChild(c),result=!0);return c};
BaseFormatPanel.prototype.addActions=function(a,c){for(var f=null,e=null,g=0,d=0;d<c.length;d++){var k=this.addAction(a,c[d]);null!=k&&(g++,0==mxUtils.mod(g,2)&&(e.style.marginRight="2px",e.style.width="104px",k.style.width="104px",f.parentNode.removeChild(f)),f=mxUtils.br(a),e=k)}return g};
BaseFormatPanel.prototype.createStepper=function(a,c,f,e,g,d,k){f=null!=f?f:1;e=null!=e?e:9;var n=10*f,u=document.createElement("div");mxUtils.setPrefixedStyle(u.style,"borderRadius","3px");u.style.border="1px solid rgb(192, 192, 192)";u.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=e+"px";m.style.width="10px";m.className="geBtnUp";u.appendChild(m);var r=m.cloneNode(!1);r.style.border="none";
r.style.height=e+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(A)?n:f),null!=c&&c(A));mxEvent.consume(A)});mxEvent.addGestureListeners(m,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(A)?
n:f),null!=c&&c(A));mxEvent.consume(A)});if(g){var x=null;mxEvent.addGestureListeners(u,function(A){mxEvent.consume(A)},null,function(A){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(A)}})}else mxEvent.addListener(u,"click",function(A){mxEvent.consume(A)});return u};
BaseFormatPanel.prototype.createOption=function(a,c,f,e,g){var d=document.createElement("div");d.style.padding="3px 0px 3px 0px";d.style.whiteSpace="nowrap";d.style.textOverflow="ellipsis";d.style.overflow="hidden";d.style.width="200px";d.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";d.appendChild(k);var n=document.createElement("span");n.style.verticalAlign="top";n.style.userSelect="none";mxUtils.write(n,
a);d.appendChild(n);var u=!1,m=c(),r=function(x,A){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,c()!=m&&f(m,A)),u=!1)};mxEvent.addListener(d,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var A=mxEvent.getSource(x);if(A==d||A==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=e&&(e.install(r),this.listeners.push(e));null!=g&&g(d);return d};
BaseFormatPanel.prototype.createCellOption=function(a,c,f,e,g,d,k,n,u){var m=this.editorUi,r=m.editor.graph;e=null!=e?"null"==e?null:e:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,c,f)!=g},function(A){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;A=A?e:g;r.setCellStyles(c,A,C);null!=d&&d(C,A);m.fireEvent(new mxEventObject("styleChanged",
"keys",[c],"values",[A],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(A){this.listener=function(){A(mxUtils.getValue(x,c,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,c,f,e,g,d,k,n){var u=document.createElement("div");u.style.padding="3px 0px 3px 0px";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.width="200px";u.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||u.appendChild(m);var r=document.createElement("span");r.style.verticalAlign="top";mxUtils.write(r,a);u.appendChild(r);var x=c(),
null!=Q?Q+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=E&&E!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=d&&d("null"==E?null:E);x=E;O||(R||k||c()!=x)&&f("null"==x?null:x,x);A=!1}},K=document.createElement("input");K.setAttribute("type","color");K.style.visibility="hidden";K.style.width="0px";K.style.height="0px";K.style.border=
BaseFormatPanel.prototype.createCellColorOption=function(a,c,f,e,g,d){var k=this.editorUi,n=k.editor.graph;return this.createColorOption(a,function(){var u=n.view.getState(k.getSelectionState().cells[0]);return null!=u?mxUtils.getValue(u.style,c,null):null},function(u,m){n.getModel().beginUpdate();try{var r=k.getSelectionState().cells;n.setCellStyles(c,u,r);null!=g&&g(u);k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[u],"cells",r))}finally{n.getModel().endUpdate()}},f||mxConstants.NONE,
{install:function(u){this.listener=function(){var m=n.view.getState(k.getSelectionState().cells[0]);null!=m&&u(mxUtils.getValue(m.style,c,null),!0)};n.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){n.getModel().removeListener(this.listener)}},e,null,d)};
BaseFormatPanel.prototype.addArrow=function(a,c){c=null!=c?c:10;var f=document.createElement("div");f.style.display="inline-block";f.style.paddingRight="4px";f.style.padding="6px";var e=10-c;2==e?f.style.paddingTop="6px":0<e?f.style.paddingTop=6-e+"px":f.style.marginTop="-2px";f.style.height=c+"px";f.style.borderLeft="1px solid #a0a0a0";c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("valign","middle");c.setAttribute("src",Toolbar.prototype.dropDownImage);f.appendChild(c);
c=f.getElementsByTagName("img")[0];c.style.position="relative";c.style.left="1px";c.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(f,70);c=a.getElementsByTagName("div")[0];null!=c&&(c.style.paddingRight="6px",c.style.marginLeft="4px",c.style.marginTop="-1px",c.style.display="inline-block",mxUtils.setOpacity(c,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage="none";a.style.width="auto";a.className+=
" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(f);return c};
BaseFormatPanel.prototype.addUnitInput=function(a,c,f,e,g,d,k,n,u){k=null!=k?k:0;c=document.createElement("input");c.style.position="absolute";c.style.textAlign="right";c.style.marginTop="-2px";c.style.left=228-f-e+"px";c.style.width=e+"px";c.style.height="21px";c.style.border="1px solid rgb(160, 160, 160)";c.style.borderRadius="4px";c.style.boxSizing="border-box";a.appendChild(c);e=this.createStepper(c,g,d,null,n,null,u);e.style.marginTop=k-2+"px";e.style.left=228-f+"px";a.appendChild(e);return c};
BaseFormatPanel.prototype.createRelativeOption=function(a,c,f,e,g){f=null!=f?f:52;var d=this.editorUi,k=d.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=e)e(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var A=k.view.getState(d.getSelectionState().cells[0]);null!=A&&x!=mxUtils.getValue(A.style,c,100)&&(100==x&&(x=null),A=d.getSelectionState().cells,
k.setCellStyles(c,x,A),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[x],"cells",A)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=e);if(null!=c){var m=mxUtils.bind(this,function(r,x,A){if(A||u!=document.activeElement)r=d.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,c,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
BaseFormatPanel.prototype.addLabel=function(a,c,f,e){e=null!=e?e:61;var g=document.createElement("div");mxUtils.write(g,c);g.style.position="absolute";g.style.left=240-f-e+"px";g.style.width=e+"px";g.style.marginTop="6px";g.style.textAlign="center";a.appendChild(g)};
BaseFormatPanel.prototype.addKeyHandler=function(a,c){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(f){13==f.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(f)):27==f.keyCode&&(null!=c&&c(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(f))}))};
BaseFormatPanel.prototype.styleButtons=function(a){for(var c=0;c<a.length;c++)mxUtils.setPrefixedStyle(a[c].style,"borderRadius","3px"),mxUtils.setOpacity(a[c],100),a[c].style.border="1px solid #a0a0a0",a[c].style.padding="4px",a[c].style.paddingTop="3px",a[c].style.paddingRight="1px",a[c].style.margin="1px",a[c].style.marginRight="2px",a[c].style.width="24px",a[c].style.height="20px",a[c].className+=" geColorBtn"};
BaseFormatPanel.prototype.destroy=function(){if(null!=this.listeners){for(var a=0;a<this.listeners.length;a++)this.listeners[a].destroy();this.listeners=null}};ArrangePanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};mxUtils.extend(ArrangePanel,BaseFormatPanel);
ArrangePanel.prototype.addTable=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var g=document.createElement("div");g.style.marginTop="0px";g.style.marginBottom="6px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("table"));a.appendChild(g);g=document.createElement("div");g.style.position="relative";g.style.paddingLeft="0px";g.style.borderWidth="0px";g.style.width="220px";g.className="geToolbarContainer";var d=
e.vertices[0];1<f.getSelectionCount()&&(f.isTableCell(d)&&(d=f.model.getParent(d)),f.isTableRow(d)&&(d=f.model.getParent(d)));var k=e.table||e.row||e.cell,n=f.isStack(d)||f.isStackChild(d),u=k;n&&(k="0"==(f.isStack(d)?e.style:f.getCellStyle(f.model.getParent(d))).horizontalStack,u=!k);var m=[];u&&(m=m.concat([c.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!0):f.insertTableColumn(d,!0)}catch(r){c.handleError(r)}}),
g),c.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableColumn(d,!1)}catch(r){c.handleError(r)}}),g),c.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableColumn(d)}catch(r){c.handleError(r)}}),g)]));k&&(m=m.concat([c.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,
function(){try{n?f.insertLane(d,!0):f.insertTableRow(d,!0)}catch(r){c.handleError(r)}}),g),c.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableRow(d,!1)}catch(r){c.handleError(r)}}),g),c.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableRow(d)}catch(r){c.handleError(r)}}),g)]));if(0<m.length){this.styleButtons(m);a.appendChild(g);
ArrangePanel.prototype.addGroupOps=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="8px";a.style.paddingBottom="6px";var g=0;e.cell||e.row||(g+=this.addActions(a,["group","ungroup","copySize","pasteSize"])+this.addActions(a,["removeFromGroup"]));var d=null;1!=e.cells.length||null==e.cells[0].value||isNaN(e.cells[0].value.nodeType)||(d=mxUtils.button(mxResources.get("copyData"),function(n){if(mxEvent.isShiftDown(n)){var u=f.getDataForCells(f.getSelectionCells());
n=new EmbedDialog(c,JSON.stringify(u,null,2),null,null,function(){console.log(u);c.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");c.showDialog(n.container,450,240,!0,!0);n.init()}else c.actions.get("copyData").funct(n)}),d.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+") Shift+Click to Extract Data"),d.style.marginBottom="2px",d.style.width="210px",a.appendChild(d),g++);var k=null;null!=c.copiedValue&&
0<e.cells.length&&(k=mxUtils.button(mxResources.get("pasteData"),function(n){c.actions.get("pasteData").funct(n)}),k.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),k.style.marginBottom="2px",k.style.width="210px",a.appendChild(k),g++,null!=d&&(d.style.width="104px",k.style.width="104px",k.style.marginBottom="2px",d.style.marginBottom="2px",d.style.marginRight="2px"));null==d&&null==k||mxUtils.br(a);e=this.addAction(a,"clearWaypoints");null!=
ArrangePanel.prototype.addAlign=function(a){var c=this.editorUi.getSelectionState(),f=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="8px";a.appendChild(this.createTitle(mxResources.get("align")));var e=document.createElement("div");e.style.position="relative";e.style.whiteSpace="nowrap";e.style.paddingLeft="0px";e.style.paddingBottom="2px";e.style.borderWidth="0px";e.style.width="220px";e.className="geToolbarContainer";if(1<c.vertices.length){c=this.editorUi.toolbar.addButton("geSprite-alignleft",
mxResources.get("middle"),function(){f.alignCells(mxConstants.ALIGN_MIDDLE)},e),u=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){f.alignCells(mxConstants.ALIGN_BOTTOM)},e);this.styleButtons([c,g,d,k,n,u]);d.style.marginRight="10px"}a.appendChild(e);this.addActions(a,["snapToGrid"]);return a};
ArrangePanel.prototype.addFlip=function(a){var c=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var f=this.editorUi.getSelectionState(),e=document.createElement("div");e.style.marginTop="2px";e.style.marginBottom="8px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("flip"));a.appendChild(e);e=mxUtils.button(mxResources.get("horizontal"),function(g){c.flipCells(f.cells,!0)});e.setAttribute("title",mxResources.get("horizontal"));e.style.width="104px";e.style.marginRight=
"2px";a.appendChild(e);e=mxUtils.button(mxResources.get("vertical"),function(g){c.flipCells(f.cells,!1)});e.setAttribute("title",mxResources.get("vertical"));e.style.width="104px";a.appendChild(e);return a};
ArrangePanel.prototype.addDistribute=function(a){var c=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("distribute")));var f=mxUtils.button(mxResources.get("horizontal"),function(e){c.distributeCells(!0)});f.setAttribute("title",mxResources.get("horizontal"));f.style.width="104px";f.style.marginRight="2px";a.appendChild(f);f=mxUtils.button(mxResources.get("vertical"),function(e){c.distributeCells(!1)});f.setAttribute("title",
ArrangePanel.prototype.addAngle=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingBottom="8px";var g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";var d=null,k=null,n=null;!e.rotatable||e.table||e.row||e.cell?a.style.paddingTop="8px":(mxUtils.write(g,mxResources.get("angle")),a.appendChild(g),d=this.addUnitInput(a,"°",16,52,function(){k.apply(this,arguments)}),mxUtils.br(a),a.style.paddingTop=
"10px");e.containsLabel||(g=mxResources.get("reverse"),0<e.vertices.length&&0<e.edges.length?g=mxResources.get("turn")+" / "+g:0<e.vertices.length&&(g=mxResources.get("turn")),n=mxUtils.button(g,function(m){c.actions.get("turn").funct(m)}),n.setAttribute("title",g+" ("+this.editorUi.actions.get("turn").shortcut+")"),n.style.width="210px",a.appendChild(n),null!=d&&(n.style.marginTop="8px"));if(null!=d){var u=mxUtils.bind(this,function(m,r,x){if(x||document.activeElement!=d)e=c.getSelectionState(),
ArrangePanel.prototype.addGeometry=function(a){var c=this,f=this.editorUi,e=f.editor.graph,g=e.getModel(),d=f.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var n=document.createElement("div");n.style.position="absolute";n.style.width="50px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("size"));k.appendChild(n);var u=this.addUnitInput(k,this.getUnit(),87,52,function(){C.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);d.cell||d.row?r.style.visibility="hidden":k.appendChild(n);var A=x.getElementsByTagName("input")[0];this.addKeyHandler(u,R);this.addKeyHandler(m,R);var C=this.addGeometryHandler(u,function(T,U,fa){if(e.isTableCell(fa))return e.setTableColumnWidth(fa,U-T.width,!0),!0;0<T.width&&(U=Math.max(1,c.fromUnit(U)),A.checked&&(T.height=Math.round(T.height*U*100/T.width)/100),T.width=U)});var F=this.addGeometryHandler(m,function(T,
U,fa){e.isTableCell(fa)&&(fa=e.model.getParent(fa));if(e.isTableRow(fa))return e.setTableRowHeight(fa,U-T.height),!0;0<T.height&&(U=Math.max(1,c.fromUnit(U)),A.checked&&(T.width=Math.round(T.width*U*100/T.height)/100),T.height=U)});(d.resizable||d.row||d.cell)&&a.appendChild(k);var K=this.createPanel();K.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
(""==d.y?"":" "+this.getUnit())}else K.style.display="none"});this.addKeyHandler(E,R);this.addKeyHandler(O,R);g.addListener(mxEvent.CHANGE,R);this.listeners.push({destroy:function(){g.removeListener(R)}});R();var Q=this.addGeometryHandler(E,function(T,U){U=c.fromUnit(U);T.relative?T.offset.x=U:T.x=U});var P=this.addGeometryHandler(O,function(T,U){U=c.fromUnit(U);T.relative?T.offset.y=U:T.y=U});if(d.movable){if(0==d.edges.length&&1==d.vertices.length&&g.isEdge(g.getParent(d.vertices[0]))){var aa=e.getCellGeometry(d.vertices[0]);
ArrangePanel.prototype.addGeometryHandler=function(a,c){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=d+" "+k.getUnit();else if(u!=d){g.getModel().beginUpdate();try{for(var m=e.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!c(x,u,m[r]))){var A=g.view.getState(m[r]);null!=A&&g.isRecursiveVertexResize(A)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}d=
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,c){function f(k){if(""!=a.value){var n=parseFloat(a.value);if(isNaN(n))a.value=d+" pt";else if(n!=d){g.getModel().beginUpdate();try{for(var u=e.getSelectionState().cells,m=0;m<u.length;m++)if(g.getModel().isEdge(u[m])){var r=g.getCellGeometry(u[m]);null!=r&&(r=r.clone(),c(r,n),g.getModel().setGeometry(u[m],r))}}finally{g.getModel().endUpdate()}d=n;a.value=n+" pt"}}mxEvent.consume(k)}var e=this.editorUi,g=e.editor.graph,d=null;mxEvent.addListener(a,
ArrangePanel.prototype.addEdgeGeometry=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState(),g=this.createPanel(),d=document.createElement("div");d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("width"));g.appendChild(d);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,F);var n=mxUtils.bind(this,function(Q){var P=parseInt(k.value);P=Math.min(999,
Math.max(1,isNaN(P)?1:P));if(P!=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var aa=c.getSelectionState().cells;f.setCellStyles("width",P,aa);c.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[P],"cells",aa))}k.value=P+" pt";mxEvent.consume(Q)});mxEvent.addListener(k,"blur",n);mxEvent.addListener(k,"change",n);a.appendChild(g);var u=this.createPanel();u.style.paddingBottom="30px";d=document.createElement("div");d.style.position=
d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";mxUtils.write(d,mxResources.get("lineend"));x.appendChild(d);var A=this.addUnitInput(x,"pt",87,52,function(){O.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){R.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(A,F);this.addKeyHandler(C,F);var F=mxUtils.bind(this,function(Q,P,aa){e=c.getSelectionState();
F()};TextFormatPanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
TextFormatPanel.prototype.addFont=function(a){function c(ca,t){ca.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,e=f.editor.graph,g=f.getSelectionState(),d=this.createTitle(mxResources.get("font"));d.style.paddingLeft="14px";d.style.paddingTop="10px";d.style.paddingBottom="6px";a.appendChild(d);d=this.createPanel();d.style.paddingTop="2px";d.style.paddingBottom="2px";d.style.position=
a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);var Ua=mxUtils.bind(this,function(ca,t,z){g=f.getSelectionState();ca=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(ca&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(ca&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);c(m[2],(ca&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=
mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);c(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=V)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),V.value=isNaN(ca)?"":ca+" pt";ca=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);c(C,ca==mxConstants.ALIGN_LEFT);c(F,ca==mxConstants.ALIGN_CENTER);c(K,ca==mxConstants.ALIGN_RIGHT);ca=mxUtils.getValue(g.style,
mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(O,ca==mxConstants.ALIGN_TOP);c(R,ca==mxConstants.ALIGN_MIDDLE);c(Q,ca==mxConstants.ALIGN_BOTTOM);ca=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=ca==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_TOP?"topLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":ca==mxConstants.ALIGN_RIGHT&&
0;ja<ia.length;ja++)if(da.containsNode(ia[ja],!0)){temp=mxUtils.getCurrentStyle(ia[ja]);M=Math.max(B(temp),M);var ta=D(M,temp,ia[ja]);if(ta!=X||isNaN(ta))X=""}null!=G&&(c(m[0],"bold"==G.fontWeight||400<G.fontWeight||z("B")||z("STRONG")),c(m[1],"italic"==G.fontStyle||z("I")||z("EM")),c(m[2],z("U")),c(aa,z("SUP")),c(P,z("SUB")),e.cellEditor.isTableSelected()?(c(ha,t(G.textAlign,"justify")),c(C,t(G.textAlign,"left")),c(F,t(G.textAlign,"center")),c(K,t(G.textAlign,"right"))):(z=e.cellEditor.align||mxUtils.getValue(g.style,
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(G.textAlign,"justify")?(c(ha,t(G.textAlign,"justify")),c(C,!1),c(F,!1),c(K,!1)):(c(ha,!1),c(C,z==mxConstants.ALIGN_LEFT),c(F,z==mxConstants.ALIGN_CENTER),c(K,z==mxConstants.ALIGN_RIGHT))),T=e.getParentByName(ca,"TABLE",e.cellEditor.textarea),fa=null==T?null:e.getParentByName(ca,"TR",T),U=null==T?null:e.getParentByNames(ca,["TD","TH"],T),db.style.display=null!=T?"":"none",document.activeElement!=V&&("FONT"==ca.nodeName&&"4"==ca.getAttribute("size")&&
!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(e.cellEditor.textarea,"DOMSubtreeModified",d);mxEvent.addListener(e.cellEditor.textarea,"input",d);mxEvent.addListener(e.cellEditor.textarea,"touchend",d);mxEvent.addListener(e.cellEditor.textarea,"mouseup",d);mxEvent.addListener(e.cellEditor.textarea,"keyup",d);this.listeners.push({destroy:function(){}});d()}return a};StyleFormatPanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};
StyleFormatPanel.prototype.getCssRules=function(a){var c=document.implementation.createHTMLDocument(""),f=document.createElement("style");mxUtils.setTextContent(f,a);c.body.appendChild(f);return f.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var c=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var f=c.style.editableCssRules;if(null!=f){var e=new RegExp(f),g=c.style.image.substring(c.style.image.indexOf(",")+1),d=window.atob?atob(g):Base64.decode(g,!0),k=mxUtils.parseXml(d);if(null!=k){var n=k.getElementsByTagName("style");for(c=0;c<n.length;c++){var u=this.getCssRules(mxUtils.getTextContent(n[c]));
for(f=0;f<u.length;f++)this.addSvgRule(a,u[f],k,n[c],u,f,e)}}}}catch(m){}return a};
StyleFormatPanel.prototype.addSvgRule=function(a,c,f,e,g,d,k){var n=this.editorUi,u=n.editor.graph;k.test(c.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var A=mxUtils.trim(m.style[r]);""!=A&&"url("!=A.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=A;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[d].style[r]=C;C="";for(var F=0;F<g.length;F++)C+=g[F].cssText+" ";e.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(c,"fill",mxResources.get("fill")),k(c,"stroke",mxResources.get("line")),k(c,"stop-color",
StyleFormatPanel.prototype.addEditOps=function(a){var c=this.editorUi.getSelectionState(),f=null;1==c.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(e){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",a.appendChild(f));c.image&&0<c.cells.length&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(e){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==f?c.style.width="210px":(f.style.width="104px",c.style.width="104px",c.style.marginLeft="2px"),a.appendChild(c));return a};
StyleFormatPanel.prototype.addFill=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var g=document.createElement("select");g.style.position="absolute";g.style.left="104px";g.style.width="70px";g.style.height="22px";g.style.padding="0px";g.style.marginTop="-3px";g.style.borderRadius="4px";g.style.border="1px solid rgb(160, 160, 160)";g.style.boxSizing="border-box";var d=g.cloneNode(!1);mxEvent.addListener(g,"click",function(C){mxEvent.consume(C)});
for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),d.appendChild(r);k.appendChild(d);var A=mxUtils.bind(this,function(){e=c.getSelectionState();var C=mxUtils.getValue(e.style,mxConstants.STYLE_GRADIENT_DIRECTION,
A();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,e.cells);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",e.cells));mxEvent.consume(C)});mxEvent.addListener(d,"change",function(C){f.setCellStyles("fillStyle",d.value,e.cells);c.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[d.value],"cells",e.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
StyleFormatPanel.prototype.addStroke=function(a){function c(W){var Z=parseFloat(E.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,Z,d.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[Z],"cells",d.cells)));E.value=Z+" pt";mxEvent.consume(W)}function f(W){var Z=parseFloat(O.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,
A.appendChild(E);var O=E.cloneNode(!0);F.appendChild(O);var R=this.createStepper(E,c,1,9);R.style.display=E.style.display;R.style.marginTop="2px";R.style.left="198px";A.appendChild(R);R=this.createStepper(O,f,1,9);R.style.display=O.style.display;R.style.marginTop="2px";O.style.position="absolute";R.style.left="198px";F.appendChild(R);mxEvent.addListener(E,"blur",c);mxEvent.addListener(E,"change",c);mxEvent.addListener(O,"blur",f);mxEvent.addListener(O,"change",f);var Q=this.editorUi.toolbar.addMenuFunctionInContainer(u,
StyleFormatPanel.prototype.addLineJumps=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();if(Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps){a.style.padding="2px 0px 24px 14px";var g=document.createElement("div");g.style.position="absolute";g.style.maxWidth="82px";g.style.overflow="hidden";g.style.textOverflow="ellipsis";mxUtils.write(g,mxResources.get("lineJumps"));a.appendChild(g);var d=document.createElement("select");d.style.position="absolute";
d.value,e.cells),c.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[d.value],"cells",e.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(d,"click",function(x){mxEvent.consume(x)});a.appendChild(d);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,A,C){e=c.getSelectionState();d.value=mxUtils.getValue(e.style,
StyleFormatPanel.prototype.addEffects=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";g.style.tableLayout="fixed";var d=document.createElement("tbody"),k=document.createElement("tr");k.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","top");var u=n.cloneNode(!0);u.style.paddingLeft=
"8px";k.appendChild(n);k.appendChild(u);d.appendChild(k);g.appendChild(d);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,F,K){C=this.createCellOption(C,F,K);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),A=mxUtils.bind(this,function(C,F,K){e=c.getSelectionState();n.innerHTML="";u.innerHTML="";m=n;e.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);e.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);e.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
0);e.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});A();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};
DiagramStylePanel.prototype.addView=function(a){var c=this.editorUi,f=c.editor.graph,e=f.getModel(),g=f.view.gridColor;a.style.whiteSpace="normal";var d="1"==f.currentVertexStyle.sketch&&"1"==f.currentEdgeStyle.sketch,k="1"==f.currentVertexStyle.rounded,n="1"==f.currentEdgeStyle.curved,u=document.createElement("div");u.style.marginRight="16px";a.style.paddingTop="8px";var m=document.createElement("table");m.style.width="210px";m.style.fontWeight="bold";var r=document.createElement("tbody"),x=document.createElement("tr");
I||null!=qa[S]&&qa[S]!=mxConstants.NONE||S!=mxConstants.STYLE_FILLCOLOR&&S!=mxConstants.STYLE_STROKECOLOR)qa[S]=ba[S]}});"1"!=urlParams.sketch&&(A=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){e.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{e.endUpdate()}}c.clearDefaultStyle()})),A.setAttribute("title",mxResources.get("reset")),A.style.textOverflow=
O(I,f.currentEdgeStyle);"1"==urlParams.sketch&&(d=Editor.sketchMode);d?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";e.beginUpdate();try{var ea=F.slice(),ka;for(ka in ba)ea.push(ka);K(ea,L);var wa=new ChangePageSetup(c,null!=L?L.background:null);wa.ignoreImage=!0;e.execute(wa);e.execute(new ChangeGridColor(c,null!=
aa))})),m(A),m(C))}else U();return a};DiagramStylePanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.darkModeChangedListener&&(this.editorUi.removeListener(this.darkModeChangedListener),this.darkModeChangedListener=null)};DiagramFormatPanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.addView=function(a){var c=this.editorUi,f=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return f.pageVisible},function(d){c.actions.get("pageView").funct()},{install:function(d){this.listener=function(){d(f.pageVisible)};c.addListener("pageViewChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}}));
if(f.isEnabled()){var e=this.createColorOption(mxResources.get("background"),function(){return f.background},function(d){var k=new ChangePageSetup(c,d);k.ignoreImage=null!=d&&d!=mxConstants.NONE;f.model.execute(k)},"#ffffff",{install:function(d){this.listener=function(){d(f.background)};c.addListener("backgroundColorChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});if(this.showBackgroundImageOption){var g=e.getElementsByTagName("span")[0];g.style.display="inline-block";
g.style.textOverflow="ellipsis";g.style.overflow="hidden";g.style.maxWidth="68px";mxClient.IS_FF&&(g.style.marginTop="1px");g=mxUtils.button(mxResources.get("change"),function(d){c.showBackgroundImageDialog(null,c.editor.graph.backgroundImage);mxEvent.consume(d)});g.className="geColorBtn";g.style.position="absolute";g.style.marginTop="-3px";g.style.height="22px";g.style.left="118px";g.style.width="56px";e.appendChild(g)}a.appendChild(e)}return a};
DiagramFormatPanel.prototype.addOptions=function(a){var c=this.editorUi,f=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("options")));f.isEnabled()&&(a.appendChild(this.createOption(mxResources.get("connectionArrows"),function(){return f.connectionArrowsEnabled},function(e){c.actions.get("connectionArrows").funct()},{install:function(e){this.listener=function(){e(f.connectionArrowsEnabled)};c.addListener("connectionArrowsChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}})),
a.appendChild(this.createOption(mxResources.get("connectionPoints"),function(){return f.connectionHandler.isEnabled()},function(e){c.actions.get("connectionPoints").funct()},{install:function(e){this.listener=function(){e(f.connectionHandler.isEnabled())};c.addListener("connectionPointsChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}})),a.appendChild(this.createOption(mxResources.get("guides"),function(){return f.graphHandler.guidesEnabled},function(e){c.actions.get("guides").funct()},
{install:function(e){this.listener=function(){e(f.graphHandler.guidesEnabled)};c.addListener("guidesEnabledChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}})));return a};
DiagramFormatPanel.prototype.addGridOption=function(a){function c(u){var m=f.isFloatUnit()?parseFloat(d.value):parseInt(d.value);m=f.fromUnit(Math.max(f.inUnit(1),isNaN(m)?f.inUnit(10):m));m!=g.getGridSize()&&(mxGraph.prototype.gridSize=m,g.setGridSize(m));d.value=f.inUnit(m)+" "+f.getUnit();mxEvent.consume(u)}var f=this,e=this.editorUi,g=e.editor.graph,d=document.createElement("input");d.style.position="absolute";d.style.textAlign="right";d.style.width="48px";d.style.marginTop="-2px";d.style.height=
"21px";d.style.border="1px solid rgb(160, 160, 160)";d.style.borderRadius="4px";d.style.boxSizing="border-box";d.value=this.inUnit(g.getGridSize())+" "+this.getUnit();var k=this.createStepper(d,c,this.getUnitStep(),null,null,null,this.isFloatUnit());d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;mxEvent.addListener(d,"keydown",function(u){13==u.keyCode?(g.container.focus(),mxEvent.consume(u)):27==u.keyCode&&(d.value=g.getGridSize(),g.container.focus(),mxEvent.consume(u))});
mxEvent.addListener(d,"blur",c);mxEvent.addListener(d,"change",c);d.style.right="78px";k.style.marginTop="-17px";k.style.right="66px";var n=this.createColorOption(mxResources.get("grid"),function(){var u=g.view.gridColor;return g.isGridEnabled()?u:null},function(u){var m=g.isGridEnabled();u==mxConstants.NONE?g.setGridEnabled(!1):(g.setGridEnabled(!0),e.setGridColor(u));d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;m!=g.isGridEnabled()&&(g.defaultGridEnabled=g.isGridEnabled(),
DiagramFormatPanel.prototype.addPaperSize=function(a){var c=this.editorUi,f=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var e=PageSetupDialog.addPageFormatPanel(a,"formatpanel",f.pageFormat,function(d){if(null==f.pageFormat||f.pageFormat.width!=d.width||f.pageFormat.height!=d.height)d=new ChangePageSetup(c,null,null,d),d.ignoreColor=!0,d.ignoreImage=!0,f.model.execute(d)});this.addKeyHandler(e.widthInput,function(){e.set(f.pageFormat)});this.addKeyHandler(e.heightInput,
function(){e.set(f.pageFormat)});var g=function(){e.set(f.pageFormat)};c.addListener("pageFormatChanged",g);this.listeners.push({destroy:function(){c.removeListener(g)}});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});return a};DiagramFormatPanel.prototype.addStyleOps=function(a){this.addActions(a,["editData"]);this.addActions(a,["clearDefaultStyle"]);return a};
DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(b,h,q){mxShape.call(this);this.line=b;this.stroke=h;this.strokewidth=null!=q?q:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function f(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function d(){mxActor.call(this)}function k(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function m(){mxCylinder.call(this)}function r(){mxShape.call(this)}function x(){mxShape.call(this)}
function A(b,h,q,l){mxShape.call(this);this.bounds=b;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function F(){mxCylinder.call(this)}function K(){mxCylinder.call(this)}function E(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function Q(){mxActor.call(this)}function P(){mxActor.call(this)}function aa(){mxActor.call(this)}function T(){mxActor.call(this)}function U(b,h){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
function ja(){mxRhombus.call(this)}function ta(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Ea(){mxActor.call(this)}function Fa(b,h,q,l){mxShape.call(this);this.bounds=b;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
function Pa(b,h,q,l,p,v,w,J,y,Y){w+=y;var N=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){b.ellipse(N.x-p-w,N.y-v-w,2*w,2*w);Y?b.fillAndStroke():b.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==b?b=q:b.add(q))}this.bounds=null!=b?b:new mxRectangle};a.prototype.paintVertexShape=function(b,
h,q,l,p){this.paintTableLine(b,this.line,0,0)};a.prototype.paintTableLine=function(b,h,q,l){if(null!=h){var p=null;b.begin();for(var v=0;v<h.length;v++){var w=h[v];null!=w&&(null==p?b.moveTo(w.x+q,w.y+l):null!=p&&b.lineTo(w.x+q,w.y+l));p=w}b.end();b.stroke()}};a.prototype.intersectsRectangle=function(b){var h=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var q=null,l=0;l<this.line.length&&!h;l++){var p=this.line[l];null!=p&&null!=q&&(h=mxUtils.rectangleIntersectsSegment(b,
q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(c,mxSwimlane);c.prototype.getLabelBounds=function(b){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};c.prototype.paintVertexShape=function(b,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),J=this.getTitleSize();0==J||this.outline?Da.prototype.paintVertexShape.apply(this,
arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),b.translate(-h,-q));v||this.outline||!(w&&J<p||!w&&J<l)||this.paintForeground(b,h,q,l,p)};c.prototype.paintForeground=function(b,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var J=v;v=w;w=J}b.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
s;this.paintTableForeground(b,h,q,l,p)}};c.prototype.paintTableForeground=function(b,h,q,l,p){l=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(p=0;p<l.length;p++)a.prototype.paintTableLine(b,l[p],h,q)};c.prototype.configurePointerEvents=function(b){0==this.getTitleSize()?b.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
c);mxUtils.extend(f,c);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),J=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"darkOpacity2",this.darkOpacity2))));b.translate(h,q);b.begin();b.moveTo(0,0);b.lineTo(l-v,0);b.lineTo(l,v);b.lineTo(l,p);b.lineTo(v,p);b.lineTo(0,p-v);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=w&&(b.setFillAlpha(Math.abs(w)),b.setFillColor(0>w?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(l-v,0),b.lineTo(l,v),b.lineTo(v,v),b.close(),b.fill()),0!=J&&(b.setFillAlpha(Math.abs(J)),b.setFillColor(0>J?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(v,
v),b.lineTo(v,p),b.lineTo(0,p-v),b.close(),b.fill()),b.begin(),b.moveTo(v,p),b.lineTo(v,v),b.lineTo(0,0),b.moveTo(v,v),b.lineTo(l,v),b.end(),b.stroke())};e.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?(b=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(b,b,0,0)):null};mxCellRenderer.registerShape("cube",e);var Na=Math.tan(mxUtils.toRadians(30)),Sa=(.5-Na)/2;mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(g,
mxCylinder);g.prototype.size=6;g.prototype.paintVertexShape=function(b,h,q,l,p){b.setFillColor(this.stroke);var v=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;b.ellipse(h+.5*(l-v),q+.5*(p-v),v,v);b.fill();b.setFillColor(mxConstants.NONE);b.rect(h,q,l,p);b.fill()};mxCellRenderer.registerShape("waypoint",g);mxUtils.extend(d,mxActor);d.prototype.size=20;d.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(l,p/Na);b.translate((l-h)/2,(p-h)/2+h/4);b.moveTo(0,
.25*h);b.lineTo(.5*h,h*Sa);b.lineTo(h,.25*h);b.lineTo(.5*h,(.5-Sa)*h);b.lineTo(0,.25*h);b.close();b.end()};mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(k,mxCylinder);k.prototype.size=20;k.prototype.redrawPath=function(b,h,q,l,p,v){h=Math.min(l,p/(.5+Na));v?(b.moveTo(0,.25*h),b.lineTo(.5*h,(.5-Sa)*h),b.lineTo(h,.25*h),b.moveTo(.5*h,(.5-Sa)*h),b.lineTo(.5*h,(1-Sa)*h)):(b.translate((l-h)/2,(p-h)/2),b.moveTo(0,.25*h),b.lineTo(.5*h,h*Sa),b.lineTo(h,.25*h),b.lineTo(h,.75*h),b.lineTo(.5*
h,(1-Sa)*h),b.lineTo(0,.75*h),b.close());b.end()};mxCellRenderer.registerShape("isoCube",k);mxUtils.extend(n,mxCylinder);n.prototype.redrawPath=function(b,h,q,l,p,v){h=Math.min(p/2,Math.round(p/8)+this.strokewidth-1);if(v&&null!=this.fill||!v&&null==this.fill)b.moveTo(0,h),b.curveTo(0,2*h,l,2*h,l,h),v||(b.stroke(),b.begin()),b.translate(0,h/2),b.moveTo(0,h),b.curveTo(0,2*h,l,2*h,l,h),v||(b.stroke(),b.begin()),b.translate(0,h/2),b.moveTo(0,h),b.curveTo(0,2*h,l,2*h,l,h),v||(b.stroke(),b.begin()),b.translate(0,
-h);v||(b.moveTo(0,h),b.curveTo(0,-h/3,l,-h/3,l,h),b.lineTo(l,p-h),b.curveTo(l,p+h/3,0,p+h/3,0,p-h),b.close())};n.prototype.getLabelMargins=function(b){return new mxRectangle(0,2.5*Math.min(b.height/2,Math.round(b.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",n);mxUtils.extend(u,mxCylinder);u.prototype.size=30;u.prototype.darkOpacity=0;u.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",
this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));b.translate(h,q);b.begin();b.moveTo(0,0);b.lineTo(l-v,0);b.lineTo(l,v);b.lineTo(l,p);b.lineTo(0,p);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=w&&(b.setFillAlpha(Math.abs(w)),b.setFillColor(0>w?"#FFFFFF":"#000000"),b.begin(),b.moveTo(l-v,0),b.lineTo(l-v,v),b.lineTo(l,v),b.close(),b.fill()),b.begin(),b.moveTo(l-v,0),b.lineTo(l-v,v),b.lineTo(l,v),
b.end(),b.stroke())};mxCellRenderer.registerShape("note",u);mxUtils.extend(m,u);mxCellRenderer.registerShape("note2",m);m.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,h*this.scale),0,0)}return null};mxUtils.extend(r,mxShape);r.prototype.isoAngle=15;r.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
"isoAngle",this.isoAngle))))*Math.PI/200;v=Math.min(l*Math.tan(v),.5*p);b.translate(h,q);b.begin();b.moveTo(.5*l,0);b.lineTo(l,v);b.lineTo(l,p-v);b.lineTo(.5*l,p);b.lineTo(0,p-v);b.lineTo(0,v);b.close();b.fillAndStroke();b.setShadow(!1);b.begin();b.moveTo(0,v);b.lineTo(.5*l,2*v);b.lineTo(l,v);b.moveTo(.5*l,2*v);b.lineTo(.5*l,p);b.stroke()};mxCellRenderer.registerShape("isoCube2",r);mxUtils.extend(x,mxShape);x.prototype.size=15;x.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(.5*
p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.translate(h,q);0==v?(b.rect(0,0,l,p),b.fillAndStroke()):(b.begin(),b.moveTo(0,v),b.arcTo(.5*l,v,0,0,1,.5*l,0),b.arcTo(.5*l,v,0,0,1,l,v),b.lineTo(l,p-v),b.arcTo(.5*l,v,0,0,1,.5*l,p),b.arcTo(.5*l,v,0,0,1,0,p-v),b.close(),b.fillAndStroke(),b.setShadow(!1),b.begin(),b.moveTo(l,v),b.arcTo(.5*l,v,0,0,1,.5*l,2*v),b.arcTo(.5*l,v,0,0,1,0,v),b.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(A,mxCylinder);A.prototype.size=
15;A.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);b.translate(h,q);0==v?(b.rect(0,0,l,p),b.fillAndStroke()):(b.begin(),w?(b.moveTo(0,v),b.arcTo(.5*l,v,0,0,1,.5*l,0),b.arcTo(.5*l,v,0,0,1,l,v)):(b.moveTo(0,0),b.arcTo(.5*l,v,0,0,0,.5*l,v),b.arcTo(.5*l,v,0,0,0,l,0)),b.lineTo(l,p-v),b.arcTo(.5*l,v,0,0,1,.5*l,p),b.arcTo(.5*l,v,0,0,1,0,p-v),b.close(),b.fillAndStroke(),b.setShadow(!1),
w&&(b.begin(),b.moveTo(l,v),b.arcTo(.5*l,v,0,0,1,.5*l,2*v),b.arcTo(.5*l,v,0,0,1,0,v),b.stroke()))};mxCellRenderer.registerShape("cylinder3",A);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(b,h,q,l,p){b.moveTo(0,0);b.quadTo(l/2,.5*p,l,0);b.quadTo(.5*l,p/2,l,p);b.quadTo(l/2,.5*p,0,p);b.quadTo(.5*l,p/2,0,0);b.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(F,mxCylinder);F.prototype.tabWidth=60;F.prototype.tabHeight=20;F.prototype.tabPosition="right";F.prototype.arcSize=.1;
F.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),J=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));J||(y*=Math.min(l,p));
y=Math.min(y,.5*l,.5*(p-q));h=Math.max(h,y);h=Math.min(l-y,h);w||(y=0);b.begin();"left"==v?(b.moveTo(Math.max(y,0),q),b.lineTo(Math.max(y,0),0),b.lineTo(h,0),b.lineTo(h,q)):(b.moveTo(l-h,q),b.lineTo(l-h,0),b.lineTo(l-Math.max(y,0),0),b.lineTo(l-Math.max(y,0),q));w?(b.moveTo(0,y+q),b.arcTo(y,y,0,0,1,y,q),b.lineTo(l-y,q),b.arcTo(y,y,0,0,1,l,y+q),b.lineTo(l,p-y),b.arcTo(y,y,0,0,1,l-y,p),b.lineTo(y,p),b.arcTo(y,y,0,0,1,0,p-y)):(b.moveTo(0,q),b.lineTo(l,q),b.lineTo(l,p),b.lineTo(0,p));b.close();b.fillAndStroke();
b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(l-30,q+20),b.lineTo(l-20,q+10),b.lineTo(l-10,q+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",F);F.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(b.width,b.height));v=Math.min(v,.5*b.width,.5*(b.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(v,0,Math.min(b.width,b.width-q),Math.min(b.height,b.height-h)):new mxRectangle(Math.min(b.width,b.width-q),0,v,Math.min(b.height,b.height-
h))}return new mxRectangle(0,Math.min(b.height,h),0,0)}return null};mxUtils.extend(K,mxCylinder);K.prototype.arcSize=.1;K.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);b.begin();b.moveTo(v,
h);b.arcTo(h,h,0,0,1,v+h,0);b.lineTo(l-h,0);b.arcTo(h,h,0,0,1,l,h);b.lineTo(l,p-h);b.arcTo(h,h,0,0,1,l-h,p);b.lineTo(v+h,p);b.arcTo(h,h,0,0,1,v,p-h);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(l-40,p-20,10,10,3,3),b.stroke(),b.roundrect(l-20,p-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(l-30,p-15),b.lineTo(l-20,p-15),b.stroke());"connPointRefEntry"==q?(b.ellipse(0,.5*p-10,20,20),b.fillAndStroke()):"connPointRefExit"==
q&&(b.ellipse(0,.5*p-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*p-5),b.lineTo(15,.5*p+5),b.moveTo(15,.5*p-5),b.lineTo(5,.5*p+5),b.stroke())};K.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",K);mxUtils.extend(E,mxActor);E.prototype.size=30;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=
function(b,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("card",E);mxUtils.extend(O,mxActor);O.prototype.size=.4;O.prototype.redrawPath=function(b,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));b.moveTo(0,h/2);b.quadTo(l/4,1.4*h,l/2,h/2);b.quadTo(3*l/4,h*(1-1.4),l,h/2);b.lineTo(l,p-h/2);b.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);b.quadTo(l/4,p-h*(1-1.4),0,p-h/2);b.lineTo(0,h/2);b.close();b.end()};O.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=b.width,l=b.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
l,new mxRectangle(b.x,b.y+h,q,l-2*h);h*=q;return new mxRectangle(b.x+h,b.y,q-2*h,l)}return b};mxCellRenderer.registerShape("tape",O);mxUtils.extend(R,mxActor);R.prototype.size=.3;R.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*b.height):null};R.prototype.redrawPath=function(b,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(0,
0);b.lineTo(l,0);b.lineTo(l,p-h/2);b.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);b.quadTo(l/4,p-h*(1-1.4),0,p-h/2);b.lineTo(0,h/2);b.close();b.end()};mxCellRenderer.registerShape("document",R);var eb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(b,h,q,l){var p=mxUtils.getValue(this.style,"size");return null!=p?l*Math.max(0,Math.min(1,p)):eb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=2*mxUtils.getValue(this.style,
"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,b.height*h),0,0)}return null};A.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(b.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};F.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(b.width,b.height));v=Math.min(v,.5*b.width,.5*(b.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
this.tabPosition)?new mxRectangle(v,0,Math.min(b.width,b.width-q),Math.min(b.height,b.height-h)):new mxRectangle(Math.min(b.width,b.width-q),0,v,Math.min(b.height,b.height-h))}return new mxRectangle(0,Math.min(b.height,h),0,0)}return null};K.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,h*this.scale),0,Math.max(0,h*this.scale))}return null};mxUtils.extend(Q,mxActor);Q.prototype.size=.2;Q.prototype.fixedSize=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l-h,p)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("parallelogram",Q);mxUtils.extend(P,mxActor);P.prototype.size=.2;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("trapezoid",P);mxUtils.extend(aa,mxActor);aa.prototype.size=.5;aa.prototype.redrawPath=function(b,h,q,l,p){b.setFillColor(null);
h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",aa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(b,h,q,l,p){b.setStrokeWidth(1);b.setFillColor(this.stroke);
h=l/5;b.rect(0,0,h,p);b.fillAndStroke();b.rect(2*h,0,h,p);b.fillAndStroke();b.rect(4*h,0,h,p);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",T);U.prototype.moveTo=function(b,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=h;this.firstX=b;this.firstY=h};U.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
U.prototype.quadTo=function(b,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};U.prototype.curveTo=function(b,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};U.prototype.arcTo=function(b,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};U.prototype.lineTo=function(b,h){if(null!=this.lastX&&null!=this.lastY){var q=function(N){return"number"===typeof N?N?0>N?-1:1:N===N?0:NaN:NaN},l=Math.abs(b-
this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=h;return}var w=Math.round(v/10),J=this.defaultVariation;5>w&&(w=5,J/=3);var y=q(b-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*J;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,b,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=
h};U.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Za=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){Za.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};var pb=mxShape.prototype.afterPaint;
mxShape.prototype.afterPaint=function(b){pb.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new U(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var ub=mxRectangleShape.prototype.isHtmlAllowed;
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,h,q,l,p){if(null==b.handJiggle||b.handJiggle.constructor!=U)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(v||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)v||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?v=Math.min(l/2,Math.min(p/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,v=Math.min(l*
v,p*v)),b.moveTo(h+v,q),b.lineTo(h+l-v,q),b.quadTo(h+l,q,h+l,q+v),b.lineTo(h+l,q+p-v),b.quadTo(h+l,q+p,h+l-v,q+p),b.lineTo(h+v,q+p),b.quadTo(h,q+p,h,q+p-v),b.lineTo(h,q+v),b.quadTo(h,q,h+v,q)):(b.moveTo(h,q),b.lineTo(h+l,q),b.lineTo(h+l,q+p),b.lineTo(h,q+p),b.lineTo(h,q)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var h=b.width,q=b.height;b=new mxRectangle(b.x,b.y,h,q);var l=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var p=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;l=Math.max(l,Math.min(h*p,q*p))}b.x+=Math.round(l);b.width-=Math.round(2*l);return b}return b};
fa.prototype.paintForeground=function(b,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);b.begin();b.moveTo(h+w,q);b.lineTo(h+w,q+p);b.moveTo(h+l-w,q);b.lineTo(h+l-w,q+p);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(b,h,q,l,p){b.setFillColor(mxConstants.NONE);b.rect(h,q,l,p);b.fill()};ha.prototype.paintForeground=function(b,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(b,h,q,l,p){h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),w=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),J=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+J),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(b,h,
q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(0,p),new mxPoint(h,p/2)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("step",
qa);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(h,
0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(b,h,q,l,p){var v=Math.min(l/5,p/5)+1;b.begin();b.moveTo(h+l/2,q+v);b.lineTo(h+l/2,q+p-v);b.moveTo(h+v,q+p/2);b.lineTo(h+l-v,q+p/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
L);var ab=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+h,b.y+h,b.width-2*h,b.height-2*h)}return b};mxRhombus.prototype.paintVertexShape=function(b,h,q,l,p){ab.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(b.setShadow(!1),ab.apply(this,[b,h,q,l,p]))}};mxUtils.extend(H,mxRectangleShape);H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+h,b.y+h,b.width-2*h,b.height-2*h)}return b};H.prototype.paintForeground=function(b,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var J=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],N=this.style["symbol"+v+"Height"],Ca=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ca,
Ka=this.style["symbol"+v+"ArcSpacing"];null!=Ka&&(Ka*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ca+=Ka,Qa+=Ka);Ka=h;var la=q;Ka=J==mxConstants.ALIGN_CENTER?Ka+(l-Y)/2:J==mxConstants.ALIGN_RIGHT?Ka+(l-Y-Ca):Ka+Ca;la=y==mxConstants.ALIGN_MIDDLE?la+(p-N)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-N-Qa):la+Qa;b.save();J=new w;J.style=this.style;w.prototype.paintVertexShape.call(J,b,Ka,la,Y,N);b.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
H);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(b,h,q,l,p,v){v?(b.moveTo(0,0),b.lineTo(l/2,p/2),b.lineTo(l,0),b.end()):(b.moveTo(0,0),b.lineTo(l,0),b.lineTo(l,p),b.lineTo(0,p),b.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(V,mxShape);V.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.ellipse(l/4,0,l/2,p/4);b.fillAndStroke();b.begin();b.moveTo(l/2,p/4);b.lineTo(l/2,2*p/3);b.moveTo(l/2,p/3);b.lineTo(0,p/3);b.moveTo(l/2,p/3);b.lineTo(l,p/3);b.moveTo(l/
2,2*p/3);b.lineTo(0,p);b.moveTo(l/2,2*p/3);b.lineTo(l,p);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",V);mxUtils.extend(ea,mxShape);ea.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};ea.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(0,p/4);b.lineTo(0,3*p/4);b.end();b.stroke();b.begin();b.moveTo(0,p/2);b.lineTo(l/6,p/2);b.end();b.stroke();b.ellipse(l/6,0,5*l/6,p);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
ea);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(h+l/8,q+p);b.lineTo(h+7*l/8,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",ka);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(l,0);b.lineTo(0,p);b.moveTo(0,0);b.lineTo(l,p);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
mxShape);W.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};W.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(3*l/8,p/8*1.1);b.lineTo(5*l/8,0);b.end();b.stroke();b.ellipse(0,p/8,l,7*p/8);b.fillAndStroke()};W.prototype.paintForeground=function(b,h,q,l,p){b.begin();b.moveTo(3*l/8,p/8*1.1);b.lineTo(5*l/8,p/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",W);mxUtils.extend(Z,mxRectangleShape);Z.prototype.size=
40;Z.prototype.isHtmlAllowed=function(){return!1};Z.prototype.getLabelBounds=function(b){var h=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,h)};Z.prototype.paintBackground=function(b,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"participant");null==w||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,h,
q,l,v):(w=this.state.view.graph.cellRenderer.getShape(w),null!=w&&w!=Z&&(w=new w,w.apply(this.state),b.save(),w.paintVertexShape(b,h,q,l,v),b.restore()));v<p&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(h+l/2,q+v),b.lineTo(h+l/2,q+p),b.end(),b.stroke())};Z.prototype.paintForeground=function(b,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,h,q,l,Math.min(p,
v))};mxCellRenderer.registerShape("umlLifeline",Z);mxUtils.extend(oa,mxShape);oa.prototype.width=60;oa.prototype.height=30;oa.prototype.corner=10;oa.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};oa.prototype.paintBackground=function(b,h,q,l,p){var v=this.corner,w=Math.min(l,Math.max(v,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),J=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(b.setFillColor(y),b.rect(h,q,l,p),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,h,q,l,p),b.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
b.moveTo(h,q);b.lineTo(h+w,q);b.lineTo(h+w,q+Math.max(0,J-1.5*v));b.lineTo(h+Math.max(0,w-v),q+J);b.lineTo(h,q+J);b.close();b.fillAndStroke();b.begin();b.moveTo(h+w,q);b.lineTo(h+l,q);b.lineTo(h+l,q+p);b.lineTo(h,q+p);b.lineTo(h,q+J);b.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(b,h,q,l){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,h,
q,l){l=Z.prototype.size;null!=h&&(l=mxUtils.getValue(h.style,"size",l)*h.view.scale);h=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;q.x<b.getCenterX()&&(h=-1*(h+1));return new mxPoint(b.getCenterX()+h,Math.min(b.y+b.height,Math.max(b.y+l,q.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,h,q,l){l=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,h,q,l){l=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;null!=h.style.backboneSize&&(l+=parseFloat(h.style.backboneSize)*h.view.scale/2-1);if("south"==h.style[mxConstants.STYLE_DIRECTION]||"north"==h.style[mxConstants.STYLE_DIRECTION])return q.x<b.getCenterX()&&(l=-1*(l+1)),new mxPoint(b.getCenterX()+l,Math.min(b.y+b.height,Math.max(b.y,q.y)));q.y<b.getCenterY()&&(l=-1*(l+1));return new mxPoint(Math.min(b.x+
b.width,Math.max(b.x,q.x)),b.getCenterY()+l)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,h,q,l){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(h.style,"size",ba.prototype.size))*h.view.scale))),h.style),h,q,l)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?Q.prototype.fixedSize:Q.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+
y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]);Y=b.getCenterX();b=b.getCenterY();b=new mxPoint(Y,b);l&&(q.x<w||q.x>w+y?b.y=q.y:b.x=q.x);return mxUtils.getPerimeterPoint(J,b,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,h,q,l){var p="0"!=mxUtils.getValue(h.style,
"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_WEST?
J)]);Y=b.getCenterX();b=b.getCenterY();b=new mxPoint(Y,b);l&&(q.x<w||q.x>w+y?b.y=q.y:b.x=q.x);return mxUtils.getPerimeterPoint(J,b,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height,N=b.getCenterX();b=b.getCenterY();h=null!=
h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y-p,J),new mxPoint(w+y,b),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,b),new mxPoint(w,J)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,b),new mxPoint(w+
y,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,b),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y),new mxPoint(N,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(N,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]);N=new mxPoint(N,
b);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?I.prototype.fixedSize:I.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height,N=b.getCenterX();b=b.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p),new mxPoint(N,J)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,b),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,b),new mxPoint(w+p,J)]);N=new mxPoint(N,
b);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(va,mxShape);va.prototype.size=10;va.prototype.paintBackground=function(b,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(h,q);b.ellipse((l-v)/2,0,v,v);b.fillAndStroke();b.begin();b.moveTo(l/2,v);b.lineTo(l/2,p);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",va);mxUtils.extend(Ja,
mxShape);Ja.prototype.size=10;Ja.prototype.inset=2;Ja.prototype.paintBackground=function(b,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(h,q);b.begin();b.moveTo(l/2,v+w);b.lineTo(l/2,p);b.end();b.stroke();b.begin();b.moveTo((l-v)/2-w,v/2);b.quadTo((l-v)/2-w,v+w,l/2,v+w);b.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",Ja);mxUtils.extend(Ga,
mxShape);Ga.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(0,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,0,p);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",Ga);mxUtils.extend(sa,mxShape);sa.prototype.inset=2;sa.prototype.paintBackground=function(b,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(h,q);b.ellipse(0,v,l-2*v,p-2*v);b.fillAndStroke();b.begin();b.moveTo(l/2,0);b.quadTo(l,0,l,p/2);b.quadTo(l,
p,l/2,p);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",sa);mxUtils.extend(za,mxCylinder);za.prototype.jettyWidth=20;za.prototype.jettyHeight=10;za.prototype.redrawPath=function(b,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=Math.min(h,p-h),y=Math.min(J+2*h,p-h);v?(b.moveTo(q,J),b.lineTo(w,J),b.lineTo(w,J+h),b.lineTo(q,J+h),b.moveTo(q,
y),b.lineTo(w,y),b.lineTo(w,y+h),b.lineTo(q,y+h)):(b.moveTo(q,0),b.lineTo(l,0),b.lineTo(l,p),b.lineTo(q,p),b.lineTo(q,y+h),b.lineTo(0,y+h),b.lineTo(0,y),b.lineTo(q,y),b.lineTo(q,J+h),b.lineTo(0,J+h),b.lineTo(0,J),b.lineTo(q,J),b.close());b.end()};mxCellRenderer.registerShape("module",za);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(b,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=.3*p-h/2,y=.7*p-h/2;v?(b.moveTo(q,J),b.lineTo(w,J),b.lineTo(w,J+h),b.lineTo(q,J+h),b.moveTo(q,y),b.lineTo(w,y),b.lineTo(w,y+h),b.lineTo(q,y+h)):(b.moveTo(q,0),b.lineTo(l,0),b.lineTo(l,p),b.lineTo(q,p),b.lineTo(q,y+h),b.lineTo(0,y+h),b.lineTo(0,y),b.lineTo(q,y),b.lineTo(q,J+h),b.lineTo(0,J+h),b.lineTo(0,J),b.lineTo(q,J),b.close());b.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Ha,mxRectangleShape);Ha.prototype.paintForeground=
function(b,h,q,l,p){var v=l/2,w=p/2,J=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,J,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Ha);mxUtils.extend(Ta,mxDoubleEllipse);Ta.prototype.outerStroke=!0;Ta.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.min(4,
Math.min(l/5,p/5));0<l&&0<p&&(b.ellipse(h+v,q+v,l-2*v,p-2*v),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(h,q,l,p),b.stroke())};mxCellRenderer.registerShape("endState",Ta);mxUtils.extend(db,Ta);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ua,mxArrowConnector);Ua.prototype.defaultWidth=4;Ua.prototype.isOpenEnded=function(){return!0};Ua.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.size=30;Ya.prototype.isRoundable=function(){return!0};Ya.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
0),new mxPoint(l,p)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("manualInput",Ya);mxUtils.extend(bb,mxRectangleShape);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.isHtmlAllowed=function(){return!1};bb.prototype.paintForeground=function(b,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(h,q+v);b.lineTo(h+l,q+v);b.end();b.stroke();b.begin();b.moveTo(h+w,q);b.lineTo(h+w,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",bb);mxUtils.extend(cb,mxActor);cb.prototype.dx=20;cb.prototype.dy=20;cb.prototype.redrawPath=function(b,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);b.end()};mxCellRenderer.registerShape("corner",cb);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(b,h,q,
l,p){b.moveTo(0,0);b.lineTo(0,p);b.end();b.moveTo(l,0);b.lineTo(l,p);b.end();b.moveTo(0,p/2);b.lineTo(l,p/2);b.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(b,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);b.end()};mxCellRenderer.registerShape("tee",$a);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(b,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);b.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(b,
h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
v),new mxPoint(h,p)],this.isRounded,w,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",t);mxUtils.extend(z,mxActor);z.prototype.size=.1;z.prototype.fixedSize=20;z.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(h,0);b.lineTo(l,0);b.quadTo(l-2*h,p/2,l,p);b.lineTo(h,p);b.quadTo(h-
2*h,p/2,h,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(b,h,q,l,p){b.moveTo(0,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,0,p);b.close();b.end()};mxCellRenderer.registerShape("or",B);mxUtils.extend(D,mxActor);D.prototype.redrawPath=function(b,h,q,l,p){b.moveTo(0,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,0,p);b.quadTo(l/2,p/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",D);mxUtils.extend(G,mxActor);G.prototype.size=20;
G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("loopLimit",G);mxUtils.extend(M,mxActor);M.prototype.size=
.375;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",M);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(h+l/2,q+p);b.lineTo(h+l,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(h,q+p/2);b.lineTo(h+l,q+p/2);b.end();b.stroke();b.begin();b.moveTo(h+l/2,q);b.lineTo(h+l/2,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("orEllipse",
ia);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(h+.145*l,q+.145*p);b.lineTo(h+.855*l,q+.855*p);b.end();b.stroke();b.begin();b.moveTo(h+.855*l,q+.145*p);b.lineTo(h+.145*l,q+.855*p);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",da);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(b,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
arguments);b.setShadow(!1);b.begin();b.moveTo(h,q+p/2);b.lineTo(h+l,q+p/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(b,h,q,l,p){b.begin();b.moveTo(h,q);b.lineTo(h+l,q);b.lineTo(h+l/2,q+p/2);b.close();b.fillAndStroke();b.begin();b.moveTo(h,q+p);b.lineTo(h+l,q+p);b.lineTo(h+l/2,q+p/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",ta);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
function(b,h,q,l,p){var v=b.state.strokeWidth/2,w=10+2*v,J=q+p-w/2;b.begin();b.moveTo(h,q);b.lineTo(h,q+p);b.moveTo(h+v,J);b.lineTo(h+v+w,J-w/2);b.moveTo(h+v,J);b.lineTo(h+v+w,J+w/2);b.moveTo(h+v,J);b.lineTo(h+l-v,J);b.moveTo(h+l,q);b.lineTo(h+l,q+p);b.moveTo(h+l-v,J);b.lineTo(h+l-w-v,J-w/2);b.moveTo(h+l-v,J);b.lineTo(h+l-w-v,J+w/2);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Da,mxEllipse);Da.prototype.drawHidden=!0;Da.prototype.paintVertexShape=function(b,h,q,
l,p){this.outline||b.setStrokeColor(null);if(null!=this.style){var v=b.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(b.pointerEvents=!1);var J="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),N="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||J||Y||N||y?(b.rect(h,q,l,p),b.fill(),b.pointerEvents=
v,b.setStrokeColor(this.stroke),b.setLineCap("square"),b.begin(),b.moveTo(h,q),this.outline||J?b.lineTo(h+l,q):b.moveTo(h+l,q),this.outline||Y?b.lineTo(h+l,q+p):b.moveTo(h+l,q+p),this.outline||N?b.lineTo(h,q+p):b.moveTo(h,q+p),(this.outline||y)&&b.lineTo(h,q),b.end(),b.stroke(),b.setLineCap("flat")):b.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);b.setShadow(!1);b.begin();"vertical"==mxUtils.getValue(this.style,"line")?(b.moveTo(h+l/2,q),b.lineTo(h+l/2,q+p)):(b.moveTo(h,q+p/2),b.lineTo(h+l,q+p/2));b.end();b.stroke()};mxCellRenderer.registerShape("lineEllipse",Ma);mxUtils.extend(La,mxActor);La.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(l,p/2);b.moveTo(0,0);b.lineTo(l-h,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,l-h,p);b.lineTo(0,p);b.close();b.end()};mxCellRenderer.registerShape("delay",La);mxUtils.extend(Ia,mxActor);Ia.prototype.size=
.2;Ia.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;b.moveTo(0,h);b.lineTo(w,h);b.lineTo(w,0);b.lineTo(v,0);b.lineTo(v,h);b.lineTo(l,h);b.lineTo(l,q);b.lineTo(v,q);b.lineTo(v,p);b.lineTo(w,p);b.lineTo(w,q);b.lineTo(0,q);b.close();b.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Ea,mxActor);Ea.prototype.size=.25;Ea.prototype.redrawPath=function(b,
h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);b.moveTo(0,p/2);b.lineTo(q,0);b.lineTo(l-h,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,l-h,p);b.lineTo(q,p);b.close();b.end()};mxCellRenderer.registerShape("display",Ea);mxUtils.extend(Fa,mxActor);Fa.prototype.cst={RECT2:"mxgraph.basic.rect"};Fa.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",
enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Fa.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);this.strictDrawShape(b,0,0,l,p)};Fa.prototype.strictDrawShape=function(b,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),J=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Fa.prototype;b.setDashed(Ca);Qa&&""!=Qa&&b.setDashPattern(Qa);b.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);J||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));J||(N=Math.min(Ka*Math.min(l,p)/100));N=Math.min(N,.5*Math.min(l,
p)-y);(la||pa||na||ma)&&"frame"!=Y&&(b.begin(),la?v.moveNW(b,h,q,l,p,w,ua,y,ma):b.moveTo(0,0),la&&v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),na&&v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),ma&&v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(wb),Ca=J=Cb,"none"==wb&&(J=0),"none"==yb&&(Ca=0),b.setGradient(wb,yb,0,0,l,p,Bb,J,Ca),
b.begin(),la?v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma):b.moveTo(N,0),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),ma&&na&&v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),na&&pa&&v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),pa&&la&&v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),la&&ma&&v.paintNWInner(b,h,q,l,p,w,ua,y,N),b.fill(),"none"==zb&&(b.begin(),v.paintFolds(b,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma),b.stroke()));
la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,
h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma)),b.stroke(),b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,
p,w,ya,y,na),"double"==Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close(),b.fillAndStroke(),b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):!la&&pa&&na&&
!ma?"frame"!=Y?(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,
h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),
v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),
v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,
ma)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close(),b.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,
h,q,l,p,w,ua,y,N,ma,la)),b.stroke(),b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke(),b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,h,q,l,p,w,
Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,
h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,
l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),
v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),
v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,
h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close(),b.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,
h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,
w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),b.close(),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,
y,N,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close()),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,
l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),b.close(),v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,
na,ma),b.close(),b.fillAndStroke())):"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke()):"frame"!=Y?(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),"double"==
Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):"frame"!=Y?(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveSE(b,
h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,
w,Aa,y,N,na,ma),b.close(),b.fillAndStroke());b.begin();v.paintFolds(b,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma);b.stroke()};Fa.prototype.moveNW=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(0,0):b.moveTo(0,J)};Fa.prototype.moveNE=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(l,0):b.moveTo(l-J,0)};Fa.prototype.moveSE=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(l,p):b.moveTo(l,p-J)};Fa.prototype.moveSW=
function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(0,p):b.moveTo(J,p)};Fa.prototype.paintNW=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,J,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(J,0);else b.lineTo(0,0)};Fa.prototype.paintTop=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==
w&&"square"==v||!y?b.lineTo(l,0):b.lineTo(l-J,0)};Fa.prototype.paintNE=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,l,J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l,J);else b.lineTo(l,0)};Fa.prototype.paintRight=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.lineTo(l,p):b.lineTo(l,p-
J)};Fa.prototype.paintLeft=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.lineTo(0,0):b.lineTo(0,J)};Fa.prototype.paintSE=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,l-J,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l-J,p);else b.lineTo(l,p)};Fa.prototype.paintBottom=function(b,h,q,
l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.lineTo(0,p):b.lineTo(J,p)};Fa.prototype.paintSW=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,0,p-J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(0,p-J);else b.lineTo(0,p)};Fa.prototype.paintNWInner=function(b,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==
w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,y,.5*y+J);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+y,J+y,0,0,1,y,y+J);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(y,.5*y+J);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(y+J,y+J),b.lineTo(y,y+J)};Fa.prototype.paintTopInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(0,y):Y&&!N?b.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?b.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
v?b.lineTo(J+.5*y,y):b.lineTo(J+y,y):b.lineTo(0,y):b.lineTo(0,0)};Fa.prototype.paintNEInner=function(b,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,l-J-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+y,J+y,0,0,1,l-J-y,y);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(l-J-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(l-J-y,J+y),b.lineTo(l-J-y,y)};Fa.prototype.paintRightInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&
N?b.lineTo(l-y,0):Y&&!N?b.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?b.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-y,J+.5*y):b.lineTo(l-y,J+y):b.lineTo(l-y,0):b.lineTo(l,0)};Fa.prototype.paintLeftInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(y,p):Y&&!N?b.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?b.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(y,p-J-.5*
y):b.lineTo(y,p-J-y):b.lineTo(y,p):b.lineTo(0,p)};Fa.prototype.paintSEInner=function(b,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,l-y,p-J-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+y,J+y,0,0,1,l-y,p-J-y);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(l-y,p-J-.5*y);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(l-J-y,p-J-y),b.lineTo(l-y,p-J-y)};Fa.prototype.paintBottomInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(l,
p-y):Y&&!N?b.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?b.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-J-.5*y,p-y):b.lineTo(l-J-y,p-y):b.lineTo(l,p)};Fa.prototype.paintSWInner=function(b,h,q,l,p,v,w,J,y,Y){if(!Y)b.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)b.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,J+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+
y,J+y,0,0,1,J+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(J+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(y+J,p-J-y),b.lineTo(y+J,p-y)};Fa.prototype.moveSWInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(y,p-J-y):b.moveTo(0,p-y)};Fa.prototype.lineSWInner=
function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(y,p-J-y):b.lineTo(0,p-y)};Fa.prototype.moveSEInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(l-
y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(l-y,p-J-y):b.moveTo(l-y,p)};Fa.prototype.lineSEInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l-y,p-J-y):b.lineTo(l-y,p)};Fa.prototype.moveNEInner=function(b,h,
q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?b.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(l-y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(l-y,J+y):b.moveTo(l,y)};Fa.prototype.lineNEInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?b.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-y,J+.5*y):
("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l-y,J+y):b.lineTo(l,y)};Fa.prototype.moveNWInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.moveTo(y,0):Y&&!N?b.moveTo(0,y):"square"==w||"default"==w&&"square"==v?b.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(y,J+y):b.moveTo(0,0)};Fa.prototype.lineNWInner=
function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(y,0):Y&&!N?b.lineTo(0,y):"square"==w||"default"==w&&"square"==v?b.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(y,J+y):b.lineTo(0,0)};Fa.prototype.paintFolds=function(b,h,q,l,p,v,w,J,y,Y,N,Ca,Qa,Ka,la){if("fold"==v||"fold"==w||"fold"==J||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
Ca&&la&&(b.moveTo(0,N),b.lineTo(N,N),b.lineTo(N,0)),("fold"==J||"default"==J&&"fold"==v)&&Ca&&Qa&&(b.moveTo(l-N,0),b.lineTo(l-N,N),b.lineTo(l,N)),("fold"==y||"default"==y&&"fold"==v)&&Ka&&Qa&&(b.moveTo(l-N,p),b.lineTo(l-N,p-N),b.lineTo(l,p-N)),("fold"==Y||"default"==Y&&"fold"==v)&&Ka&&la&&(b.moveTo(0,p-N),b.lineTo(N,p-N),b.lineTo(N,p))};mxCellRenderer.registerShape(Fa.prototype.cst.RECT2,Fa);Fa.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
Oa.prototype.paintEdgeShape=function(b,h,q){for(var l=[],p=0;p<h.length;p++)l.push(mxUtils.clone(h[p]));p=b.state.dashed;var v=b.state.fixDash;Oa.prototype.origPaintEdgeShape.apply(this,[b,l,q]);3<=b.state.strokeWidth&&(l=mxUtils.getValue(this.style,"fillColor",null),null!=l&&(b.setStrokeColor(l),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(p,v),Oa.prototype.origPaintEdgeShape.apply(this,[b,h,q])))};mxCellRenderer.registerShape("filledEdge",Oa);"undefined"!==typeof StyleFormatPanel&&function(){var b=
StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=b.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(b,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){b.begin();b.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);b.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);b.stroke()}});mxMarker.addMarker("box",
function(b,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.x+N/2,Ka=l.y+Ca/2;l.x-=N;l.y-=Ca;return function(){b.begin();b.moveTo(Qa-N/2-Ca/2,Ka-Ca/2+N/2);b.lineTo(Qa-N/2+Ca/2,Ka-Ca/2-N/2);b.lineTo(Qa+Ca/2-3*N/2,Ka-3*Ca/2-N/2);b.lineTo(Qa-Ca/2-3*N/2,Ka-3*Ca/2+N/2);b.close();Y?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){b.begin();b.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);b.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);
b.moveTo(l.x-N/2+Ca/2,l.y-Ca/2-N/2);b.lineTo(l.x-Ca/2-3*N/2,l.y-3*Ca/2+N/2);b.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(b,h,q,l,p,v,w,J,y,Y){var N=l.clone(),Ca=Pa.apply(this,arguments),Qa=p*(w+2*y),Ka=v*(w+2*y);return function(){Ca.apply(this,arguments);b.begin();b.moveTo(N.x-p*y,N.y-v*y);b.lineTo(N.x-2*Qa+p*y,N.y-2*Ka+v*y);b.moveTo(N.x-Qa-Ka+v*y,N.y-Ka+Qa-p*y);b.lineTo(N.x+Ka-Qa-v*y,N.y-Ka-Qa+p*y);b.stroke()}});mxMarker.addMarker("halfCircle",function(b,
h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.clone();l.x-=N;l.y-=Ca;return function(){b.begin();b.moveTo(Qa.x-Ca,Qa.y+N);b.quadTo(l.x-Ca,l.y+N,l.x,l.y);b.quadTo(l.x+Ca,l.y-N,Qa.x+Ca,Qa.y-N);b.stroke()}});mxMarker.addMarker("async",function(b,h,q,l,p,v,w,J,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var N=l.clone();N.x-=h;N.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){b.begin();b.moveTo(N.x,N.y);J?b.lineTo(N.x-p-v/2,N.y-v+p/2):b.lineTo(N.x+v/2-p,N.y-v-p/2);b.lineTo(N.x-p,N.y-v);b.close();Y?b.fillAndStroke():
b.stroke()}});mxMarker.addMarker("openAsync",function(b){b=null!=b?b:2;return function(h,q,l,p,v,w,J,y,Y,N){v*=J+Y;w*=J+Y;var Ca=p.clone();return function(){h.begin();h.moveTo(Ca.x,Ca.y);y?h.lineTo(Ca.x-v-w/b,Ca.y-w+v/b):h.lineTo(Ca.x+w/b-v,Ca.y-w-v/b);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(b,h,q){return Xa(b,["width"],h,function(l,p,v,w,J){J=b.shape.getEdgeWidth()*b.view.scale+q;return new mxPoint(w.x+p*l/4+v*J/2,w.y+v*l/4-p*J/2)},function(l,p,v,w,J,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
w.y,J.x,J.y,y.x,y.y));b.style.width=Math.round(2*l)/b.view.scale-q})},Xa=function(b,h,q,l,p){return Ra(b,h,function(v){var w=b.absolutePoints,J=w.length-1;v=b.view.translate;var y=b.view.scale,Y=q?w[0]:w[J];w=q?w[1]:w[J-1];J=w.x-Y.x;var N=w.y-Y.y,Ca=Math.sqrt(J*J+N*N);Y=l.call(this,Ca,J/Ca,N/Ca,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,J){var y=b.absolutePoints,Y=y.length-1;v=b.view.translate;var N=b.view.scale,Ca=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ca.x;var Qa=y.y-Ca.y,Ka=Math.sqrt(Y*
Y+Qa*Qa);w.x=(w.x+v.x)*N;w.y=(w.y+v.y)*N;p.call(this,Ka,Y/Ka,Qa/Ka,Ca,y,w,J)})},ib=function(b){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),p=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
2-l.y)/q.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(q.x+q.width-l.x)/q.width))})]}},gb=function(b){return function(h){return[Ra(h,["size"],function(q){var l=Math.max(0,Math.min(.5*q.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(q.x,q.y+l)},function(q,l){this.state.style.size=Math.max(0,l.y-q.y)},!0)]}},Wa=function(b,h,q){return function(l){var p=[Ra(l,["size"],function(v){var w=Math.max(0,Math.min(v.width,Math.min(v.height,parseFloat(mxUtils.getValue(this.state.style,
"size",h)))))*b;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/b)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(b,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(J){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:b));return new mxPoint(J.x+
Math.max(0,Math.min(.5*J.width,Y*(y?1:J.width))),J.getCenterY())},function(J,y,Y){J=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-J.x:Math.max(0,Math.min(q,(y.x-J.x)/J.width));this.state.style.size=J},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(b,h,q){b=null!=b?b:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,J=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*b,J*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(b,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(b){var h=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(b));return h}},fb=function(b,h){return Ra(b,
[mxConstants.STYLE_ARCSIZE],function(q){var l=null!=h?h:q.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var p=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(q.x+q.width-Math.min(q.width/2,p),q.y+l)}p=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(q.x+q.width-Math.min(Math.max(q.width/2,q.height/2),Math.min(q.width,q.height)*
p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(b,h,q,l,p,v,w){var J=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);J.execute=function(Y){for(var N=0;N<h.length;N++)this.copyStyle(h[N]);
w&&w(Y)};J.getPosition=q;J.setPosition=l;J.ignoreGrid=null!=p?p:!0;if(v){var y=J.positionChanged;J.positionChanged=function(){y.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return J},rb={link:function(b){return[mb(b,!0,10),mb(b,!1,10)]},flexArrow:function(b){var h=b.view.graph.gridSize/b.view.scale,q=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*b.view.scale)+v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-b.shape.strokewidth)/
3)/100/b.view.scale;b.style.width=Math.round(2*l)/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),q.push(Xa(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(b.shape.getStartArrowWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*b.view.scale)+v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-b.shape.strokewidth)/
3)/100/b.view.scale;b.style.startWidth=Math.max(0,Math.round(2*l)-b.shape.getEdgeWidth())/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE],b.style.endWidth=b.style.startWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]),
Math.abs(parseFloat(b.style.startWidth)-parseFloat(b.style.endWidth))<h&&(b.style.startWidth=b.style.endWidth))})));mxUtils.getValue(b.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*
b.view.scale)-v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*l)/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),q.push(Xa(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*
b.view.scale)-v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*l)-b.shape.getEdgeWidth())/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE],
b.style.startWidth=b.style.endWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<h&&(b.style.endWidth=b.style.startWidth))})));return q},swimlane:function(b){var h=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var q=parseFloat(mxUtils.getValue(b.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));h.push(fb(b,q/2))}h.push(Ra(b,[mxConstants.STYLE_STARTSIZE],function(l){var p=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(l.getCenterX(),l.y+Math.max(0,Math.min(l.height,p))):new mxPoint(l.x+Math.max(0,Math.min(l.width,p)),l.getCenterY())},function(l,p){b.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=b.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(b.cell)||p.isTableCell(b.cell))){l=p.getSwimlaneDirection(b.style);var v=p.model.getParent(b.cell);v=p.model.getChildCells(v,!0);for(var w=[],J=0;J<v.length;J++)v[J]!=b.cell&&p.isSwimlane(v[J])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[J]))==
l&&w.push(v[J]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(b){return[Ra(b,
!1)]},process:function(b){var h=[Ra(b,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
!1)&&h.push(fb(b));return h},cross:function(b){return[Ra(b,["size"],function(h){var q=Math.min(h.width,h.height);q=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ia.prototype.size)))*q/2;return new mxPoint(h.getCenterX()-q,h.getCenterY()-q)},function(h,q){var l=Math.min(h.width,h.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,h.getCenterY()-q.y)/l*2,Math.max(0,h.getCenterX()-q.x)/l*2)))})]},note:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,
Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",u.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},note2:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",m.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},
function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(b){var h=[Ra(b,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Ya.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(b));
return h},dataStorage:function(b){return[Ra(b,["size"],function(h){var q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),l=parseFloat(mxUtils.getValue(this.state.style,"size",q?z.prototype.fixedSize:z.prototype.size));return new mxPoint(h.x+h.width-l*(q?1:h.width),h.getCenterY())},function(h,q){h="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(h.width,h.x+h.width-q.x)):Math.max(0,Math.min(1,(h.x+h.width-q.x)/h.width));this.state.style.size=h},!1)]},callout:function(b){var h=
[Ra(b,["size","position"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));mxUtils.getValue(this.state.style,"base",ba.prototype.base);return new mxPoint(q.x+p*q.width,q.y+q.height-l)},function(q,l){mxUtils.getValue(this.state.style,"base",ba.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(q.height,q.y+q.height-l.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(b,["position2"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ba.prototype.position2)));return new mxPoint(q.x+l*q.width,q.y+q.height)},function(q,l){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(b,["base"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,
mxUtils.getValue(this.state.style,"position",ba.prototype.position))),v=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"base",ba.prototype.base)));return new mxPoint(q.x+Math.min(q.width,p*q.width+v),q.y+q.height-l)},function(q,l){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(q.width,l.x-q.x-p*q.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(b));
return h},internalStorage:function(b){var h=[Ra(b,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&
h.push(fb(b));return h},module:function(b){return[Ra(b,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",za.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",za.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
q.y-h.y))/2)})]},corner:function(b){return[Ra(b,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",cb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",cb.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(b){return[Ra(b,["dx","dy"],function(h){var q=
Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",$a.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(b){return[Ra(b,["tabWidth","tabHeight"],function(h){var q=
(l=h.width-l);this.state.style.tabWidth=Math.round(l);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},document:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",R.prototype.size))));return new mxPoint(h.x+3*h.width/4,h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},tape:function(b){return[Ra(b,["size"],function(h){var q=
Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",O.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(b){return[Ra(b,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(A.prototype.size),offPageConnector:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(b){var h=[Graph.createHandle(b,["size"],function(q){var l=
Math.max(0,Math.min(q.width/2,q.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(q.x+l,q.y+l)},function(q,l){this.state.style.size=Math.round(100*Math.max(0,Math.min(q.height/2,q.width/2,l.x-q.x)))/100})];b=Graph.createHandle(b,["indent"],function(q){var l=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(q.x+.75*q.width,q.y+l*q.height/200)},function(q,l){this.state.style.indent=Math.round(100*
Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(b);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:qb(aa.prototype.size,!1),display:qb(Ea.prototype.size,!1),cube:Wa(1,e.prototype.size,!1),card:Wa(.5,E.prototype.size,!0),loopLimit:Wa(.5,G.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,Q.prototype.size,Q.prototype.fixedSize)};Graph.createHandle=
Ra;Graph.handleFactory=rb;var xb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var b=xb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var h=this.state.style.shape;null==mxCellRenderer.defaultShapes[h]&&null==mxStencilRegistry.getStencil(h)?h=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(h=mxConstants.SHAPE_SWIMLANE);h=rb[h];null==h&&null!=this.state.shape&&this.state.shape.isRoundable()&&
(h=rb[mxConstants.SHAPE_RECTANGLE]);null!=h&&(h=h(this.state),null!=h&&(b=null==b?h:b.concat(h)))}return b};mxEdgeHandler.prototype.createCustomHandles=function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);b=rb[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var kb=new mxPoint(1,0),hb=new mxPoint(1,0),ob=mxUtils.toRadians(-30);kb=mxUtils.getRotatedPoint(kb,
Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(b,h,q,l,p){var v=b.view;l=null!=l&&0<l.length?l[0]:null;var w=b.absolutePoints,J=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(b,l));null==J&&null!=h&&(J=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,N=hb.x,Ca=hb.y,Qa="horizontal"==mxUtils.getValue(b.style,
"elbow","horizontal");if(null!=w&&null!=J){b=function(la,pa,na){la-=Ka.x;var ma=pa-Ka.y;pa=(Ca*la-N*ma)/(y*Ca-Y*N);la=(Y*la-y*ma)/(Y*N-y*Ca);Qa?(na&&(Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa),p.push(Ka)),Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la)):(na&&(Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la),p.push(Ka)),Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa));p.push(Ka)};var Ka=J;null==l&&(l=new mxPoint(J.x+(w.x-J.x)/2,J.y+(w.y-J.y)/2));b(l.x,l.y,!0);b(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
var sb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,h){if(h==mxEdgeStyle.IsometricConnector){var q=new mxElbowEdgeHandler(b);q.snapToTerminals=!1;return q}return sb.apply(this,arguments)};d.prototype.constraints=[];k.prototype.getConstraints=function(b,h,q){b=[];var l=Math.tan(mxUtils.toRadians(30)),p=(.5-l)/2;l=Math.min(h,q/(.5+l));h=(h-l)/2;q=(q-l)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.25*l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h+.5*l,q+l*p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.25*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.75*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+.5*l,q+(1-p)*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.75*l));return b};r.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;l=Math.min(h*
Math.tan(l),.5*q);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
0,l));return b};ba.prototype.getConstraints=function(b,h,q){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var l=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));b.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q-l)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));h>=2*l&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,
mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,h-l,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));h>=2*l&&b.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return b};E.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,.5*(q+l)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));h>=2*l&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};e.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return b};A.prototype.getConstraints=function(b,h,q){b=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-h));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-h));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h+.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h+.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,q-h-.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));b.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));b.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return b};F.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
"tabWidth",this.tabWidth)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(h+l),p))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,p)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.25*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.75*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,q));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};bb.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
mxEllipse.prototype.constraints;Ya.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.getConstraints=function(b,h,q){b=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(p+h-l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return b};za.prototype.getConstraints=function(b,h,q){h=parseFloat(mxUtils.getValue(b,"jettyWidth",za.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,
h),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*b,3.5*b))];q>5*b&&l.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,h));q>8*b&&l.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h));q>
15*b&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};G.prototype.constraints=mxRectangleShape.prototype.constraints;M.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;$a.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*h+.25*l,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(h+l),.5*(q+p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),.5*(q+p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*h-.25*l,p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return b};cb.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(q+p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return b};jb.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ca.prototype.getConstraints=
function(b,h,q){b=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));l=(q-l)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));b.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return b};t.prototype.getConstraints=function(b,h,q){b=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));l=(q-l)/2;b.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return b};Ia.prototype.getConstraints=
function(b,h,q){b=[];var l=Math.min(q,h),p=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(q-p)/2;var v=l+p,w=(h-p)/2;p=w+p;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q-.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q-.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return b};Z.prototype.constraints=null;B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
Actions.prototype.init=function(){function a(m){d.escape();m=d.deleteCells(d.getDeletableCells(d.getSelectionCells()),m);null!=m&&d.setSelectionCells(m)}function c(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{for(var m=d.getSelectionCells(),r=0;r<m.length;r++)d.cellLabelChanged(m[r],"")}finally{d.getModel().endUpdate()}}}function f(m,r,x,A,C){C.getModel().beginUpdate();try{var F=C.getCellGeometry(m);null!=F&&x&&A&&(x/=A,F=F.clone(),1<x?F.height=F.width/x:F.width=F.height*x,C.getModel().setGeometry(m,
try{var C=d.getEditableCells(d.getSelectionCells());if(0==C.length)x(A.getRoot(),e.copiedValue);else for(r=0;r<C.length;r++)x(C[r],e.copiedValue)}finally{A.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?c():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){c()},null,null,Editor.ctrlKey+
m);e.showDialog(r.container,350,450,!0,!1,function(){r.destroy()});r.init()}}).isEnabled=k};Actions.prototype.addAction=function(a,c,f,e,g){if("..."==a.substring(a.length-3)){a=a.substring(0,a.length-3);var d=mxResources.get(a)+"..."}else d=mxResources.get(a);return this.put(a,new Action(d,c,f,e,g))};Actions.prototype.put=function(a,c){return this.actions[a]=c};Actions.prototype.get=function(a){return this.actions[a]};
function Action(a,c,f,e,g){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(c);this.enabled=null!=f?f:!0;this.iconCls=e;this.shortcut=g;this.visible=!0}mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};
Menus.prototype.init=function(){var a=this.editorUi,c=a.editor.graph,f=mxUtils.bind(c,c.isEnabled);this.customFonts=[];this.customFontSizes=[];this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,g){for(var d=mxUtils.bind(this,function(n){this.styleChange(e,n,[mxConstants.STYLE_FONTFAMILY],[n],null,g,function(){document.execCommand("fontname",!1,n);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTFAMILY],"values",[n],"cells",[c.cellEditor.getEditingCell()]))},function(){c.updateLabelElements(c.getSelectionCells(),
function(u){u.removeAttribute("face");u.style.fontFamily=null;"PRE"==u.nodeName&&c.replaceElement(u,"div")})}).firstChild.nextSibling.style.fontFamily=n}),k=0;k<this.defaultFonts.length;k++)d(this.defaultFonts[k]);e.addSeparator(g);if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)d(this.customFonts[k]);e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[];this.editorUi.fireEvent(new mxEventObject("customFontsChanged"))}),g);e.addSeparator(g)}this.promptChange(e,
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,g,!0,mxUtils.bind(this,function(n){0>mxUtils.indexOf(this.customFonts,n)&&(this.customFonts.push(n),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(e,g){function d(k,n){return e.addItem(k,null,mxUtils.bind(this,function(){null!=c.cellEditor.textarea&&(c.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(d,this.defaultFontSize)&&(d.push(this.defaultFontSize),d.sort(function(x,A){return x-A}));for(var k=mxUtils.bind(this,function(x){if(null!=c.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var A=c.cellEditor.textarea.getElementsByTagName("font"),C=0;C<A.length;C++)if("3"==A[C].getAttribute("size")){A[C].removeAttribute("size");A[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[x],"cells",[c.cellEditor.getEditingCell()]))}}),n=mxUtils.bind(this,function(x){this.styleChange(e,x,[mxConstants.STYLE_FONTSIZE],[x],null,g,function(){k(x)})}),u=0;u<d.length;u++)n(d[u]);e.addSeparator(g);if(0<this.customFontSizes.length){var m=0;for(u=0;u<this.customFontSizes.length;u++)0>mxUtils.indexOf(d,this.customFontSizes[u])&&(n(this.customFontSizes[u]),m++);0<m&&e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),g);e.addSeparator(g)}var r=
null;this.promptChange(e,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,g,!0,mxUtils.bind(this,function(x){null!=r&&null!=c.cellEditor.textarea&&(c.cellEditor.textarea.focus(),c.cellEditor.restoreSelection(r));null!=x&&0<x.length&&(this.customFontSizes.push(x),k(x))}),null,function(){r=c.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("flipH"),null,function(){c.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},g);e.addItem(mxResources.get("flipV"),null,function(){c.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},g);this.addMenuItems(e,["-","rotation"],g)})));this.put("align",new Menu(mxUtils.bind(this,function(e,g){var d=1<this.editorUi.getSelectionState().vertices.length;e.addItem(mxResources.get("leftAlign"),null,function(){c.alignCells(mxConstants.ALIGN_LEFT)},g,null,d);e.addItem(mxResources.get("center"),null,function(){c.alignCells(mxConstants.ALIGN_CENTER)},g,null,d);e.addItem(mxResources.get("rightAlign"),
null,function(){c.alignCells(mxConstants.ALIGN_RIGHT)},g,null,d);e.addSeparator(g);e.addItem(mxResources.get("topAlign"),null,function(){c.alignCells(mxConstants.ALIGN_TOP)},g,null,d);e.addItem(mxResources.get("middle"),null,function(){c.alignCells(mxConstants.ALIGN_MIDDLE)},g,null,d);e.addItem(mxResources.get("bottomAlign"),null,function(){c.alignCells(mxConstants.ALIGN_BOTTOM)},g,null,d);this.addMenuItems(e,["-","snapToGrid"],g)})));this.put("distribute",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("horizontal"),
null,function(){c.distributeCells(!0)},g);e.addItem(mxResources.get("vertical"),null,function(){c.distributeCells(!1)},g)})));this.put("line",new Menu(mxUtils.bind(this,function(e,g){var d=c.view.getState(c.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(e,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",g,!0).setAttribute("title",mxResources.get("straight")),
mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",g,!0,null,!0).setAttribute("title",mxResources.get("simpleArrow")))})));this.put("layout",new Menu(mxUtils.bind(this,function(e,g){var d=mxUtils.bind(this,function(n,u){n=new FilenameDialog(this.editorUi,n,mxResources.get("apply"),function(m){u(parseFloat(m))},mxResources.get("spacing"));this.editorUi.showDialog(n.container,300,80,!0,!0);n.init()}),k=mxUtils.bind(this,function(n){var u=c.getSelectionCell(),
m=null;null==u||0==c.getModel().getChildCount(u)?0==c.getModel().getEdgeCount(u)&&(m=c.findTreeRoots(c.getDefaultParent())):m=c.findTreeRoots(u);null!=m&&0<m.length&&(u=m[0]);null!=u&&this.editorUi.executeLayout(function(){n.execute(c.getDefaultParent(),u);c.isSelectionEmpty()||(u=c.getModel().getParent(u),c.getModel().isVertex(u)&&c.updateGroupBounds([u],2*c.gridSize,!0))},!0)});e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(c,mxConstants.DIRECTION_WEST);
this.editorUi.executeLayout(function(){var u=c.getSelectionCells();n.execute(c.getDefaultParent(),0==u.length?null:u)},!0)}),g);e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(c,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var u=c.getSelectionCells();n.execute(c.getDefaultParent(),0==u.length?null:u)},!0)}),g);e.addSeparator(g);e.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(c,
!0);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(c,!1);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var n=new mxRadialTreeLayout(c);n.levelDistance=80;n.autoRadius=
!0;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addSeparator(g);e.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var n=new mxFastOrganicLayout(c);d(n.forceConstant,mxUtils.bind(this,function(u){n.forceConstant=u;this.editorUi.executeLayout(function(){var m=c.getSelectionCell();if(null==m||0==c.getModel().getChildCount(m))m=c.getDefaultParent();n.execute(m);c.getModel().isVertex(m)&&c.updateGroupBounds([m],2*c.gridSize,!0)},!0)}))}),
g);e.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var n=new mxCircleLayout(c);this.editorUi.executeLayout(function(){var u=c.getSelectionCell();if(null==u||0==c.getModel().getChildCount(u))u=c.getDefaultParent();n.execute(u);c.getModel().isVertex(u)&&c.updateGroupBounds([u],2*c.gridSize,!0)},!0)}),g)})));this.put("navigation",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "),g)})));this.put("arrange",
new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["toFront","toBack","bringForward","sendBackward","-"],g);this.addSubmenu("direction",e,g);this.addMenuItems(e,["turn","-"],g);this.addSubmenu("align",e,g);this.addSubmenu("distribute",e,g);e.addSeparator(g);this.addSubmenu("navigation",e,g);this.addSubmenu("insert",e,g);this.addSubmenu("layout",e,g);this.addMenuItems(e,"- group ungroup removeFromGroup - clearWaypoints autosize".split(" "),g)}))).isEnabled=f;this.put("insert",new Menu(mxUtils.bind(this,
function(e,g){this.addMenuItems(e,["insertLink","insertImage"],g)})));this.put("view",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,(null!=this.editorUi.format?["formatPanel"]:[]).concat("outline layers - pageView pageScale - scrollbars tooltips - grid guides - connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),g))})));this.put("viewPanels",new Menu(mxUtils.bind(this,function(e,g){null!=this.editorUi.format&&this.addMenuItems(e,["formatPanel"],g);this.addMenuItems(e,
["outline","layers"],g)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["resetView","-"],g);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],k=0;k<d.length;k++)(function(n){e.addItem(100*n+"%",null,function(){c.zoomTo(n)},g)})(d[k]);this.addMenuItems(e,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),g)})));this.put("file",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"new open - save saveAs - import export - pageSetup print".split(" "),
g)})));this.put("edit",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["help","-","about"])})))};
Menus.prototype.put=function(a,c){return this.menus[a]=c};Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,c,f,e){var g=this.get(a);null!=g&&(g=g.isEnabled(),c.showDisabled||g)&&(f=c.addItem(e||mxResources.get(a),null,null,f,null,g),this.addMenu(a,c,f))};Menus.prototype.addMenu=function(a,c,f){var e=this.get(a);null!=e&&(c.showDisabled||e.isEnabled())&&this.get(a).execute(c,f)};
Menus.prototype.addInsertTableCellItem=function(a,c){var f=this.editorUi.editor.graph,e=f.getSelectionCell(),g=f.getCurrentCellStyle(e);1<f.getSelectionCount()&&(f.isTableCell(e)&&(e=f.model.getParent(e)),f.isTableRow(e)&&(e=f.model.getParent(e)));var d=f.isTable(e)||f.isTableRow(e)||f.isTableCell(e),k=f.isStack(e)||f.isStackChild(e),n=d,u=d;k&&(g=f.isStack(e)?g:f.getCellStyle(f.model.getParent(e)),u="0"==g.horizontalStack,n=!u);null!=c||!d&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(m,
x&&0<x.length&&(f.scrollCellToVisible(x[0]),f.setSelectionCells(x))}),c):(n&&(c=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableColumn(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),c.setAttribute("title",mxResources.get("insertColumnBefore")),c=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableColumn(e,!1)}catch(m){this.editorUi.handleError(m)}}),
null,"geIcon geSprite geSprite-insertcolumnafter"),c.setAttribute("title",mxResources.get("insertColumnAfter")),c=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=e)try{k?f.deleteLane(e):f.deleteTableColumn(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),c.setAttribute("title",mxResources.get("deleteColumn"))),u&&(c=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableRow(e,
!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),c.setAttribute("title",mxResources.get("insertRowBefore")),c=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableRow(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),c.setAttribute("title",mxResources.get("insertRowAfter")),c=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?
f.deleteLane(e):f.deleteTableRow(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),c.setAttribute("title",mxResources.get("deleteRow")),u=this.editorUi.getSelectionState(),null!=u.mergeCell?this.addMenuItem(a,"mergeCells"):(1<u.style.colspan||1<u.style.rowspan)&&this.addMenuItem(a,"unmergeCells")))};
Menus.prototype.addInsertTableItem=function(a,c,f,e){function g(C){n=d.getParentByName(mxEvent.getSource(C),"TD");var F=!1;if(null!=n){k=d.getParentByName(n,"TR");var K=mxEvent.isMouseEvent(C)?2:4,E=x,O=Math.min(20,k.sectionRowIndex+K);K=Math.min(20,n.cellIndex+K);for(var R=E.rows.length;R<O;R++)for(var Q=E.insertRow(R),P=0;P<E.rows[0].cells.length;P++)Q.insertCell(-1);for(R=0;R<E.rows.length;R++)for(Q=E.rows[R],P=Q.cells.length;P<K;P++)Q.insertCell(-1);A.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
1);for(E=0;E<x.rows.length;E++)for(O=x.rows[E],K=0;K<O.cells.length;K++)R=O.cells[K],E==k.sectionRowIndex&&K==n.cellIndex&&(F="blue"==R.style.backgroundColor),R.style.backgroundColor=E<=k.sectionRowIndex&&K<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return F}e=null!=e?e:!0;c=null!=c?c:mxUtils.bind(this,function(C,F,K){var E=this.editorUi.editor.graph;C=E.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=E.cellEditor.textarea){E.getParentByName(C,"TR");var O=E.cellEditor.textarea.getElementsByTagName("table");
"4px";A.innerHTML="1x1";a.firstChild.appendChild(A);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var F=g(C);null!=n&&null!=k&&F&&(c(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
Menus.prototype.edgeStyleChange=function(a,c,f,e,g,d,k,n){return this.showIconOnly(a.addItem(c,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var A=m[x];if(u.getModel().isEdge(A)){if(k){var C=u.getCellGeometry(A);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(A,C))}for(var F=0;F<f.length;F++)u.setCellStyles(f[F],e[F],[A]);r.push(A)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",f,"values",e,"cells",r))}finally{u.getModel().endUpdate()}}),d,g))};Menus.prototype.showIconOnly=function(a){var c=a.getElementsByTagName("td");for(i=0;i<c.length;i++)"mxPopupMenuItem"==c[i].getAttribute("class")&&(c[i].style.display="none");return a};
Menus.prototype.styleChange=function(a,c,f,e,g,d,k,n,u){var m=this.createStyleChangeFunction(f,e);a=a.addItem(c,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph;null!=k&&r.cellEditor.isContentEditing()?k():m(n)}),d,g);u&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,c){return mxUtils.bind(this,function(f){var e=this.editorUi.editor.graph;e.stopEditing(!1);e.getModel().beginUpdate();try{for(var g=e.getEditableCells(e.getSelectionCells()),d=!1,k=0;k<a.length;k++)if(e.setCellStyles(a[k],c[k],g),a[k]==mxConstants.STYLE_ALIGN&&e.updateLabelElements(g,function(n){n.removeAttribute("align");n.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])d=!0;if(d)for(d=0;d<g.length;d++)0==e.model.getChildCount(g[d])&&
e.autoSizeCell(g[d],!1);null!=f&&f();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",c,"cells",g))}finally{e.getModel().endUpdate()}})};
Menus.prototype.promptChange=function(a,c,f,e,g,d,k,n,u,m){return a.addItem(c,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=e,A=r.getView().getState(r.getSelectionCell());null!=A&&(x=A.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(F){if(null!=F&&0<F.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,F)}finally{r.getModel().endUpdate()}}null!=n&&n(F)}}),mxResources.get("enterValue")+
Menus.prototype.pickColor=function(a,c,f){var e=this.editorUi,g=e.editor.graph,d=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=c&&g.cellEditor.isContentEditing()){var k=g.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,f||g.shapeForegroundColor,mxUtils.bind(this,function(u){g.cellEditor.restoreSelection(k);document.execCommand(c,!1,u!=mxConstants.NONE?u:"transparent");var m={forecolor:mxConstants.STYLE_FONTCOLOR,
backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[c];null!=m&&e.fireEvent(new mxEventObject("styleChanged","keys",[m],"values",[u],"cells",[g.cellEditor.getEditingCell()]))}),function(){g.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,d,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;f=g.getView().getState(g.getSelectionCell());var n=mxConstants.NONE;null!=f&&(n=f.style[a]||n);n==mxConstants.NONE?
(n=g.shapeBackgroundColor.substring(1),this.colorDialog.picker.fromString(n),this.colorDialog.colorInput.value=mxConstants.NONE):this.colorDialog.picker.fromString(mxUtils.rgba2hex(n));this.editorUi.showDialog(this.colorDialog.container,230,d,!0,!0);this.colorDialog.init()}};Menus.prototype.toggleStyle=function(a,c){var f=this.editorUi.editor.graph;c=f.toggleCellStyles(a,c);this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[a],"values",[c],"cells",f.getSelectionCells()))};
Menus.prototype.addMenuItem=function(a,c,f,e,g,d){var k=this.editorUi.actions.get(c);return null!=k&&(a.showDisabled||k.isEnabled())&&k.visible?(c=a.addItem(d||k.label,null,function(n){k.funct(e,n)},f,g,k.isEnabled()),k.toggleAction&&k.isSelected()&&a.addCheckmark(c,Editor.checkmarkImage),this.addShortcut(c,k),c):null};
Menus.prototype.addShortcut=function(a,c){if(null!=c.shortcut){a=a.firstChild.nextSibling.nextSibling;var f=document.createElement("span");f.style.color="gray";mxUtils.write(f,c.shortcut);a.appendChild(f)}};Menus.prototype.addMenuItems=function(a,c,f,e,g){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(f):this.addMenuItem(a,c[d],f,e,null!=g?g[d]:null)};
Menus.prototype.createPopupMenu=function(a,c,f){a.smartSeparators=!0;this.addPopupMenuHistoryItems(a,c,f);this.addPopupMenuEditItems(a,c,f);this.addPopupMenuStyleItems(a,c,f);this.addPopupMenuArrangeItems(a,c,f);this.addPopupMenuCellItems(a,c,f);this.addPopupMenuSelectionItems(a,c,f)};Menus.prototype.addPopupMenuHistoryItems=function(a,c,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["undo","redo"],null,f)};
Menus.prototype.addPopupMenuEditItems=function(a,c,f){this.editorUi.editor.graph.isSelectionEmpty()?this.addMenuItems(a,["pasteHere"],null,f):this.addMenuItems(a,"delete - cut copy - duplicate".split(" "),null,f)};Menus.prototype.addPopupMenuStyleItems=function(a,c,f){1==this.editorUi.editor.graph.getSelectionCount()?this.addMenuItems(a,["-","setAsDefaultStyle"],null,f):this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","clearDefaultStyle"],null,f)};
Menus.prototype.addPopupMenuArrangeItems=function(a,c,f){var e=this.editorUi.editor.graph;0<e.getEditableCells(e.getSelectionCells()).length&&(this.addMenuItems(a,["-","toFront","toBack"],null,f),1==e.getSelectionCount()&&this.addMenuItems(a,["bringForward","sendBackward"],null,f));1<e.getSelectionCount()?this.addMenuItems(a,["-","group"],null,f):1==e.getSelectionCount()&&!e.getModel().isEdge(c)&&!e.isSwimlane(c)&&0<e.getModel().getChildCount(c)&&e.isCellEditable(c)&&this.addMenuItems(a,["-","ungroup"],
Menus.prototype.addPopupMenuCellItems=function(a,c,f){var e=this.editorUi.editor.graph,g=e.view.getState(c);a.addSeparator();if(null!=g){var d=!1;1==e.getSelectionCount()&&e.getModel().isEdge(c)&&(a.addSeparator(),this.addSubmenu("line",a));if(e.getModel().isEdge(c)&&"entityRelationEdgeStyle"!=mxUtils.getValue(g.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(g.style,mxConstants.STYLE_SHAPE,null)){g=e.selectionCellsHandler.getHandler(c);var k=!1;g instanceof mxEdgeHandler&&null!=g.bends&&
2<g.bends.length&&(d=g.getHandleForEvent(e.updateMouseEvent(new mxMouseEvent(f))),0<d&&d<g.bends.length-1&&(null==g.bends[d]||null==g.bends[d].node||""==g.bends[d].node.style.opacity)&&(k=this.editorUi.actions.get("removeWaypoint"),k.handler=g,k.index=d,k=!0));a.addSeparator();this.addMenuItem(a,"turn",null,f,null,mxResources.get("reverse"));this.addMenuItems(a,[k?"removeWaypoint":"addWaypoint"],null,f);g=e.getModel().getGeometry(c);d=null!=g&&null!=g.points&&0<g.points.length}1==e.getSelectionCount()&&
(d||e.getModel().isVertex(c)&&0<e.getModel().getEdgeCount(c))&&this.addMenuItems(a,["-","clearWaypoints"],null,f);1==e.getSelectionCount()&&e.isCellEditable(c)&&this.addPopupMenuCellEditItems(a,c,f)}};
Menus.prototype.addPopupMenuCellEditItems=function(a,c,f,e){var g=this.editorUi.editor.graph,d=g.view.getState(c);this.addMenuItems(a,["-","editStyle","editData","editLink"],e,f);g.getModel().isVertex(c)&&null!=mxUtils.getValue(d.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",e,f).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...",this.addMenuItem(a,"crop",e,f));(g.getModel().isVertex(c)&&0==g.getModel().getChildCount(c)||g.isContainer(c))&&this.addMenuItem(a,
"editConnectionPoints",e,f)};Menus.prototype.addPopupMenuSelectionItems=function(a,c,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","selectVertices","selectEdges","selectAll"],null,f)};
Menus.prototype.createMenubar=function(a){for(var c=new Menubar(this.editorUi,a),f=this.defaultMenuItems,e=0;e<f.length;e++)mxUtils.bind(this,function(g){var d=c.addMenu(mxResources.get(f[e]),mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));this.menuCreated(g,d)})(this.get(f[e]));return c};
Menus.prototype.menuCreated=function(a,c,f){null!=c&&(f=null!=f?f:"geItem",a.addListener("stateChanged",function(){(c.enabled=a.enabled)?(c.className=f,8==document.documentMode&&(c.style.color="")):(c.className=f+" mxDisabled",8==document.documentMode&&(c.style.color="#c3c3c3"))}))};function Menubar(a,c){this.editorUi=a;this.container=c}Menubar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};
Menubar.prototype.addMenu=function(a,c,f){var e=document.createElement("a");e.className="geItem";mxUtils.write(e,a);this.addMenuHandler(e,c);null!=f?this.container.insertBefore(e,f):this.container.appendChild(e);return e};
Menubar.prototype.addMenuHandler=function(a,c){if(null!=c){var f=!0,e=mxUtils.bind(this,function(g){if(f&&(null==a.enabled||a.enabled)){this.editorUi.editor.graph.popupMenuHandler.hideMenu();var d=new mxPopupMenu(c);d.div.className+=" geMenubarMenu";d.smartSeparators=!0;d.showDisabled=!0;d.autoExpand=!0;d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();d.destroy()});var k=mxUtils.getOffset(a);d.popup(k.x,k.y+a.offsetHeight,null,
function Menu(a,c){mxEventSource.call(this);this.funct=a;this.enabled=null!=c?c:!0}mxUtils.extend(Menu,mxEventSource);Menu.prototype.isEnabled=function(){return this.enabled};Menu.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Menu.prototype.execute=function(a,c){this.funct(a,c)};EditorUi.prototype.createMenus=function(){return new Menus(this)};function Toolbar(a,c){this.editorUi=a;this.container=c;this.staticElements=[];this.init();this.gestureHandler=mxUtils.bind(this,function(f){null!=this.editorUi.currentMenu&&mxEvent.getSource(f)!=this.editorUi.currentMenu.div&&this.hideMenu()});mxEvent.addGestureListeners(document,this.gestureHandler)}
Toolbar.prototype.init=function(){var a=screen.width;a-=740<screen.height?56:0;if(700<=a){var c=this.addMenu("",mxResources.get("view")+" ("+mxResources.get("panTooltip")+")",!0,"viewPanels",null,!0);this.addDropDownArrow(c,"geSprite-formatpanel",38,50,-4,-3,36,-8);this.addSeparator()}var f=this.addMenu("",mxResources.get("zoom")+" (Alt+Mousewheel)",!0,"viewZoom",null,!0);f.showDisabled=!0;f.style.whiteSpace="nowrap";f.style.position="relative";f.style.overflow="hidden";f.style.width=EditorUi.compactUi?
"50px":"36px";420<=a&&(this.addSeparator(),c=this.addItems(["zoomIn","zoomOut"]),c[0].setAttribute("title",mxResources.get("zoomIn")+" ("+this.editorUi.actions.get("zoomIn").shortcut+")"),c[1].setAttribute("title",mxResources.get("zoomOut")+" ("+this.editorUi.actions.get("zoomOut").shortcut+")"));this.updateZoom=mxUtils.bind(this,function(){f.innerHTML=Math.round(100*this.editorUi.editor.graph.view.scale)+"%";this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.getElementsByTagName("img")[0].style.right=
"1px",f.getElementsByTagName("img")[0].style.top="5px")});this.editorUi.editor.graph.view.addListener(mxEvent.EVENT_SCALE,this.updateZoom);this.editorUi.editor.addListener("resetGraphView",this.updateZoom);c=this.addItems(["-","undo","redo"]);c[1].setAttribute("title",mxResources.get("undo")+" ("+this.editorUi.actions.get("undo").shortcut+")");c[2].setAttribute("title",mxResources.get("redo")+" ("+this.editorUi.actions.get("redo").shortcut+")");320<=a&&(c=this.addItems(["-","delete"]),c[1].setAttribute("title",
Toolbar.prototype.appendDropDownImageHtml=function(a){var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("valign","middle");c.setAttribute("src",Toolbar.prototype.dropDownImage);a.appendChild(c);c.style.position="absolute";c.style.right="4px";c.style.top=(EditorUi.compactUi?6:8)+"px"};
"22px",a.getElementsByTagName("img")[0].style.top="5px");var c=this.editorUi.menus.get("insert");null!=c&&"function"===typeof a.setEnabled&&c.addListener("stateChanged",function(){a.setEnabled(c.enabled)});return a};
Toolbar.prototype.addDropDownArrow=function(a,c,f,e,g,d,k,n){g=EditorUi.compactUi?g:n;a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.position="relative";a.style.width=e-(null!=k?k:32)+"px";a.innerHTML='<div class="geSprite '+c+'"></div>';this.appendDropDownImageHtml(a);c=a.getElementsByTagName("div")[0];c.style.marginLeft=g+"px";c.style.marginTop=d+"px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left="24px",a.getElementsByTagName("img")[0].style.top="5px",a.style.width=
f-10+"px")};Toolbar.prototype.setFontName=function(a){if(null!=this.fontMenu){this.fontMenu.innerHTML="";var c=document.createElement("div");c.style.display="inline-block";c.style.overflow="hidden";c.style.textOverflow="ellipsis";c.style.maxWidth="66px";mxUtils.write(c,a);this.fontMenu.appendChild(c);this.appendDropDownImageHtml(this.fontMenu)}};
Toolbar.prototype.setFontSize=function(a){if(null!=this.sizeMenu){this.sizeMenu.innerHTML="";var c=document.createElement("div");c.style.display="inline-block";c.style.overflow="hidden";c.style.textOverflow="ellipsis";c.style.maxWidth="24px";mxUtils.write(c,a);this.sizeMenu.appendChild(c);this.appendDropDownImageHtml(this.sizeMenu)}};
Toolbar.prototype.createTextToolbar=function(){var a=this.editorUi,c=a.editor.graph,f=this.addMenu("",mxResources.get("style"),!0,"formatBlock");f.style.position="relative";f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.innerHTML=mxResources.get("style");this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.style.paddingRight="18px",f.getElementsByTagName("img")[0].style.right="1px",f.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.fontMenu=this.addMenu("",mxResources.get("fontFamily"),
d.addItem("",null,mxUtils.bind(this,function(k){c.cellEditor.alignText(mxConstants.ALIGN_LEFT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",[c.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-left");g.setAttribute("title",mxResources.get("left"));g=d.addItem("",null,mxUtils.bind(this,function(k){c.cellEditor.alignText(mxConstants.ALIGN_CENTER,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],
"values",[mxConstants.ALIGN_CENTER],"cells",[c.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-center");g.setAttribute("title",mxResources.get("center"));g=d.addItem("",null,mxUtils.bind(this,function(k){c.cellEditor.alignText(mxConstants.ALIGN_RIGHT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",[c.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-right");g.setAttribute("title",mxResources.get("right"));
"-2px";e.appendChild(f);this.appendDropDownImageHtml(e);EditorUi.compactUi&&(e.getElementsByTagName("img")[0].style.left="22px",e.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.addButton("geIcon geSprite geSprite-code",mxResources.get("html"),function(){c.cellEditor.toggleViewMode();0<c.cellEditor.textarea.innerHTML.length&&("&nbsp;"!=c.cellEditor.textarea.innerHTML||!c.cellEditor.clearOnChange)&&window.setTimeout(function(){document.execCommand("selectAll",!1,null)})});
!1,mxUtils.bind(this,function(d){var k=c.getSelectedElement(),n=c.getParentByNames(k,["TD","TH"],c.cellEditor.text2),u=c.getParentByName(k,"TR",c.cellEditor.text2);if(null==u)this.editorUi.menus.addInsertTableItem(d);else{var m=c.getParentByName(u,"TABLE",c.cellEditor.text2);k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertColumn(m,null!=n?n.cellIndex:0))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnbefore");k.setAttribute("title",mxResources.get("insertColumnBefore"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertColumn(m,null!=n?n.cellIndex+1:-1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnafter");k.setAttribute("title",mxResources.get("insertColumnAfter"));k=d.addItem("Delete column",null,mxUtils.bind(this,function(){if(null!=n)try{c.deleteColumn(m,n.cellIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deletecolumn");k.setAttribute("title",mxResources.get("deleteColumn"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertRow(m,u.sectionRowIndex))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowbefore");k.setAttribute("title",mxResources.get("insertRowBefore"));k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertRow(m,u.sectionRowIndex+1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowafter");k.setAttribute("title",mxResources.get("insertRowAfter"));k=d.addItem("",
null,mxUtils.bind(this,function(){try{c.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=d.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,
(g.getElementsByTagName("img")[0].style.left="22px",g.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,c,f,e,g,d,k){var n=this.editorUi.menus.get(e),u=this.addMenuFunction(a,c,f,function(){n.funct.apply(n,arguments)},g,d);k||"function"!==typeof u.setEnabled||n.addListener("stateChanged",function(){u.setEnabled(n.enabled)});return u};
Toolbar.prototype.addMenuFunction=function(a,c,f,e,g,d){return this.addMenuFunctionInContainer(null!=g?g:this.container,a,c,f,e,d)};Toolbar.prototype.addMenuFunctionInContainer=function(a,c,f,e,g,d){c=e?this.createLabel(c):this.createButton(c);this.initElement(c,f);this.addMenuHandler(c,e,g,d);a.appendChild(c);return c};Toolbar.prototype.addSeparator=function(a){a=null!=a?a:this.container;var c=document.createElement("div");c.className="geSeparator";a.appendChild(c);return c};
Toolbar.prototype.addItems=function(a,c,f){for(var e=[],g=0;g<a.length;g++){var d=a[g];"-"==d?e.push(this.addSeparator(c)):e.push(this.addItem("geSprite-"+d.toLowerCase(),d,c,f))}return e};Toolbar.prototype.addItem=function(a,c,f,e){var g=this.editorUi.actions.get(c),d=null;null!=g&&(c=g.label,null!=g.shortcut&&(c+=" ("+g.shortcut+")"),d=this.addButton(a,c,g.funct,f),e||"function"!==typeof d.setEnabled||(d.setEnabled(g.enabled),g.addListener("stateChanged",function(){d.setEnabled(g.enabled)})));return d};
Toolbar.prototype.addButton=function(a,c,f,e){a=this.createButton(a);e=null!=e?e:this.container;this.initElement(a,c);this.addClickHandler(a,f);e.appendChild(a);return a};Toolbar.prototype.initElement=function(a,c){null!=c&&a.setAttribute("title",c);this.addEnabledState(a)};Toolbar.prototype.addEnabledState=function(a){var c=a.className;a.setEnabled=function(f){a.enabled=f;a.className=f?c:c+" mxDisabled"};a.setEnabled(!0)};
Toolbar.prototype.addClickHandler=function(a,c){null!=c&&(mxEvent.addListener(a,"click",function(f){a.enabled&&c(f);mxEvent.consume(f)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(f){f.preventDefault()})))};Toolbar.prototype.createButton=function(a){var c=document.createElement("a");c.className="geButton";var f=document.createElement("div");null!=a&&(f.className="geSprite "+a);c.appendChild(f);return c};
Toolbar.prototype.createLabel=function(a,c){c=document.createElement("a");c.className="geLabel";mxUtils.write(c,a);return c};
Toolbar.prototype.addMenuHandler=function(a,c,f,e){if(null!=f){var g=this.editorUi.editor.graph,d=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(n){if(k&&(null==a.enabled||a.enabled)){g.popupMenuHandler.hideMenu();d=new mxPopupMenu(f);d.div.className+=" geToolbarMenu";d.showDisabled=e;d.labels=c;d.autoExpand=!0;!c&&d.div.scrollHeight>d.div.clientHeight&&(d.div.style.width="40px");d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();
d.destroy()});var u=mxUtils.getOffset(a);d.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(d,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==d||null==d.div||null==d.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,c,f,e){function g(){var K=k.value;/(^#?[a-zA-Z0-9]*$)/.test(K)?("none"!=K&&"#"!=
A=r(this.defaultColors);A.style.marginBottom="16px";f.appendChild(m);A=document.createElement("div");A.style.textAlign="right";A.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});C.className="geBtn";a.editor.cancelFirst&&A.appendChild(C);var F=mxUtils.button(mxResources.get("apply"),g);F.className="geBtn gePrimaryBtn";A.appendChild(F);a.editor.cancelFirst||A.appendChild(C);null!=c&&("none"==c?(u.fromString("ffffff"),k.value="none"):u.fromString(c));
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var c=this.editorUi.editor.graph;c.getModel().beginUpdate();try{c.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=c&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var f=document.createElement("h3");mxUtils.write(f,mxResources.get("about")+" GraphEditor");c.appendChild(f);f=document.createElement("img");f.style.border="0px";f.setAttribute("width","176");f.setAttribute("width","151");f.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(f);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);f=document.createElement("a");f.setAttribute("href",
"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");c.appendChild(f);mxUtils.br(c);mxUtils.br(c);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";c.appendChild(f);this.container=c},TextareaDialog=function(a,c,f,e,g,d,k,n,u,m,r,x,A,C,F){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
n.style.position="absolute";n.style.left="0px";n.style.right="0px";var K=n.cloneNode(!1),E=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";K.style.top="20px";K.style.bottom="64px";E.style.bottom="0px";E.style.height="60px";E.style.textAlign="center";mxUtils.write(n,c);k.appendChild(n);k.appendChild(K);k.appendChild(E);null!=F&&n.appendChild(F);var O=document.createElement("textarea");r&&O.setAttribute("wrap","off");O.setAttribute("spellcheck","false");O.setAttribute("autocorrect","off");O.setAttribute("autocomplete",
"off");O.setAttribute("autocapitalize","off");mxUtils.write(O,f||"");O.style.resize="none";O.style.outline="none";O.style.position="absolute";O.style.boxSizing="border-box";O.style.top="0px";O.style.left="0px";O.style.height="100%";O.style.width="100%";this.textarea=O;this.init=function(){O.focus();O.scrollTop=0};K.appendChild(O);null!=A&&(c=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(A)}),c.className="geBtn",E.appendChild(c));if(null!=C)for(c=0;c<C.length;c++)(function(Q,
P,aa){Q=mxUtils.button(Q,function(T){P(T,O)});null!=aa&&Q.setAttribute("title",aa);Q.className="geBtn";E.appendChild(Q)})(C[c][0],C[c][1],C[c][2]);d=mxUtils.button(d||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});d.setAttribute("title","Escape");d.className="geBtn";a.editor.cancelFirst&&E.appendChild(d);null!=u&&u(E,O);if(null!=e){var R=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();e(O.value)});R.setAttribute("title","Ctrl+Enter");R.className="geBtn gePrimaryBtn";
E.appendChild(R);mxEvent.addListener(O,"keypress",function(Q){13==Q.keyCode&&mxEvent.isControlDown(Q)&&R.click()})}a.editor.cancelFirst||E.appendChild(d);this.container=k},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
f.style.resize="none";f.style.width="600px";f.style.height="360px";f.style.marginBottom="16px";f.value=mxUtils.getPrettyXml(a.editor.getGraphXml());c.appendChild(f);this.init=function(){f.focus()};Graph.fileSupport&&(f.addEventListener("dragover",function(k){k.stopPropagation();k.preventDefault()},!1),f.addEventListener("drop",function(k){k.stopPropagation();k.preventDefault();if(0<k.dataTransfer.files.length){k=k.dataTransfer.files[0];var n=new FileReader;n.onload=function(u){f.value=u.target.result};
n.readAsText(k)}else f.value=a.extractGraphModelFromEvent(k)},!1));var e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";a.editor.cancelFirst&&c.appendChild(e);var g=document.createElement("select");g.style.width="180px";g.className="geBtn";if(a.editor.graph.isEnabled()){var d=document.createElement("option");d.setAttribute("value","replace");mxUtils.write(d,mxResources.get("replaceExistingDrawing"));g.appendChild(d)}d=document.createElement("option");d.setAttribute("value",
"new");mxUtils.write(d,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&g.appendChild(d);a.editor.graph.isEnabled()&&(d=document.createElement("option"),d.setAttribute("value","import"),mxUtils.write(d,mxResources.get("addToExistingDrawing")),g.appendChild(d));c.appendChild(g);d=mxUtils.button(mxResources.get("ok"),function(){var k=Graph.zapGremlins(mxUtils.trim(f.value)),n=null;if("new"==g.value)a.hideDialog(),a.editor.editAsNew(k);else if("replace"==g.value){a.editor.graph.model.beginUpdate();
d.className="geBtn gePrimaryBtn";c.appendChild(d);a.editor.cancelFirst||c.appendChild(e);this.container=c};EditDiagramDialog.showNewWindowOption=!0;
var ExportDialog=function(a){function c(){var U=r.value,fa=U.lastIndexOf(".");r.value=0<fa?U.substring(0,fa+1)+x.value:U+"."+x.value;"xml"===x.value?(A.setAttribute("disabled","true"),C.setAttribute("disabled","true"),F.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(A.removeAttribute("disabled"),C.removeAttribute("disabled"),F.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled",
d.appendChild(u);mxEvent.addListener(x,"change",c);c();mxEvent.addListener(A,"change",function(){O=!0;var U=Math.max(0,parseFloat(A.value)||100)/100;A.value=parseFloat((100*U).toFixed(2));0<k?(C.value=Math.floor(k*U),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(C,"change",function(){var U=parseInt(C.value)/k;0<U?(A.value=parseFloat((100*U).toFixed(2)),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(F,"change",function(){var U=
ExportDialog.exportFile=function(a,c,f,e,g,d,k,n){n=a.editor.graph;if("xml"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,f);else if("svg"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(n.getSvg(e,g,d)),c,f);else{var u=n.getGraphBounds(),m=mxUtils.createXmlDocument(),r=m.createElement("output");m.appendChild(r);m=new mxXmlCanvas2D(r);m.translate(Math.floor((d/g-u.x)/n.view.scale),Math.floor((d/g-u.y)/n.view.scale));m.scale(g/n.view.scale);(new mxImageExport).drawState(n.getView().getState(n.model.root),
m);r="xml="+encodeURIComponent(mxUtils.getXml(r));m=Math.ceil(u.width*g/n.view.scale+2*d);g=Math.ceil(u.height*g/n.view.scale+2*d);r.length<=MAX_REQUEST_SIZE&&m*g<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+f+"&filename="+encodeURIComponent(c)+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+g+"&"+r+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,c,f,e){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(f)+"&format="+e)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
var EditDataDialog=function(a,c){function f(){0<Q.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var e=document.createElement("div"),g=a.editor.graph,d=g.getModel().getValue(c);if(!mxUtils.isNode(d)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",d||"");d=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(c),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(T){}var m=new mxForm("properties");m.table.style.width=
"100%";var r=d.attributes,x=[],A=[],C=0,F=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,c):null,K=function(T,U){var fa=document.createElement("div");fa.style.position="relative";fa.style.paddingRight="20px";fa.style.boxSizing="border-box";fa.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
fa){x[T]=U;A[T]=m.addTextarea(x[C]+":",fa,2);A[T].style.width="100%";0<fa.indexOf("\n")&&A[T].setAttribute("rows","2");K(A[T],U);null!=n[U]&&0==n[U].editable&&A[T].setAttribute("disabled","disabled")};u=[];for(var E=g.getModel().getParent(c)==g.getModel().getRoot(),O=0;O<r.length;O++)!E&&"label"==r[O].nodeName||"placeholders"==r[O].nodeName||u.push({name:r[O].nodeName,value:r[O].nodeValue});u.sort(function(T,U){return T.name<U.name?-1:T.name>U.name?1:0});if(null!=F){r=document.createElement("div");
r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,F);var R=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(T){mxEvent.isShiftDown(T)&&(T=new FilenameDialog(a,F,mxResources.get("apply"),mxUtils.bind(this,function(U){null!=U&&0<U.length&&U!=F&&(null==g.getModel().getCell(U)?(g.getModel().cellRemoved(c),c.setId(U),F=U,R.innerHTML=mxUtils.htmlEntities(U),g.getModel().cellAdded(c)):a.handleError({message:mxResources.get("alreadyExst",
U=0;U<x.length;U++)null==A[U]?d.removeAttribute(x[U]):(d.setAttribute(x[U],A[U].value),T=T||"placeholder"==x[U]&&"1"==d.getAttribute("placeholders"));T&&d.removeAttribute("label");g.getModel().setValue(c,d)}catch(fa){mxUtils.alert(fa)}});aa.setAttribute("title","Ctrl+Enter");aa.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(T){13==T.keyCode&&mxEvent.isControlDown(T)&&aa.click()});mxEvent.addListener(Q,"keyup",f);mxEvent.addListener(Q,"change",f);k=document.createElement("div");
k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(c)||a.editor.graph.getModel().isEdge(c))r=document.createElement("span"),r.style.marginRight="10px",E=document.createElement("input"),E.setAttribute("type","checkbox"),E.style.marginRight="6px","1"==d.getAttribute("placeholders")&&(E.setAttribute("checked","checked"),E.defaultChecked=!0),mxEvent.addListener(E,"click",function(){"1"==d.getAttribute("placeholders")?
"0"),O.setAttribute("valign","middle"),O.style.marginTop=mxClient.IS_IE11?"0px":"-4px",O.setAttribute("src",Editor.helpImage),E.appendChild(O),r.appendChild(E)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(aa)):(k.appendChild(aa),k.appendChild(u));e.appendChild(k);this.container=e};EditDataDialog.getDisplayIdForCell=function(a,c){var f=null;null!=a.editor.graph.getModel().getParent(c)&&(f=c.getId());return f};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,c,f,e){var g=document.createElement("div");mxUtils.write(g,mxResources.get("editLink")+":");var d=document.createElement("div");d.className="geTitle";d.style.backgroundColor="transparent";d.style.borderColor="transparent";d.style.whiteSpace="nowrap";d.style.textOverflow="clip";d.style.cursor="default";d.style.paddingRight="20px";var k=document.createElement("input");k.setAttribute("value",c);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.style.paddingRight="14px";c=document.createElement("div");c.setAttribute("title",mxResources.get("reset"));c.style.position="relative";c.style.left="-16px";c.style.width="12px";c.style.height="14px";c.style.cursor="pointer";c.style.display="inline-block";c.style.top="3px";c.style.background="url("+IMAGE_PATH+"/transparent.gif)";
mxEvent.addListener(c,"click",function(){k.value="";k.focus()});d.appendChild(k);d.appendChild(c);g.appendChild(d);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="right";mxEvent.addListener(k,"keypress",function(n){13==n.keyCode&&(a.hideDialog(),e(k.value))});c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);f=mxUtils.button(f,function(){a.hideDialog();e(k.value)});f.className="geBtn gePrimaryBtn";d.appendChild(f);a.editor.cancelFirst||d.appendChild(c);g.appendChild(d);this.container=g},OutlineWindow=function(a,c,f,e,g){var d=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,c,f,e,g,!0,!0);this.window.minimumSize=
20*(x-1)),d.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,c,f,e,g){function d(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=T.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(U):null!=
new mxWindow(mxResources.get("layers"),m,c,f,e,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){x.scrollTop=x.scrollHeight-x.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=n;this.window.setLocation=function(ha,ba){var qa=window.innerHeight||document.body.clientHeight||
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null!=A.buttonKey?mxResources.get(A.buttonKey):A.button);null!=A.modified&&(this.editor.modified=A.modified);return}if("layout"==A.action){this.executeLayoutList(A.layouts);return}if("prompt"==A.action){this.spinner.stop();var u=new FilenameDialog(this,A.defaultValue||"",null!=A.okKey?mxResources.get(A.okKey):A.ok,function(Q){null!=Q?x.postMessage(JSON.stringify({event:"prompt",value:Q,message:A}),"*"):x.postMessage(JSON.stringify({event:"prompt-cancel",message:A}),"*")},null!=A.titleKey?mxResources.get(A.titleKey):
A.title);this.showDialog(u.container,300,80,!0,!1);u.init();return}if("draft"==A.action){var D=P(A.xml);this.spinner.stop();u=new DraftDialog(this,mxResources.get("draftFound",[A.name||this.defaultFilename]),D,mxUtils.bind(this,function(){this.hideDialog();x.postMessage(JSON.stringify({event:"draft",result:"edit",message:A}),"*")}),mxUtils.bind(this,function(){this.hideDialog();x.postMessage(JSON.stringify({event:"draft",result:"discard",message:A}),"*")}),A.editKey?mxResources.get(A.editKey):null,
A.discardKey?mxResources.get(A.discardKey):null,A.ignore?mxUtils.bind(this,function(){this.hideDialog();x.postMessage(JSON.stringify({event:"draft",result:"ignore",message:A}),"*")}):null);this.showDialog(u.container,640,480,!0,!1,mxUtils.bind(this,function(Q){Q&&this.actions.get("exit").funct()}));try{u.init()}catch(Q){x.postMessage(JSON.stringify({event:"draft",error:Q.toString(),message:A}),"*")}return}if("template"==A.action){this.spinner.stop();var B=1==A.enableRecent,C=1==A.enableSearch,G=1==
A.enableCustomTemp;if("1"==urlParams.newTempDlg&&!A.templatesOnly&&null!=A.callback){var N=this.getCurrentUser(),I=new TemplatesDialog(this,function(Q,S,Y){Q=Q||this.emptyDiagramXml;x.postMessage(JSON.stringify({event:"template",xml:Q,blank:Q==this.emptyDiagramXml,name:S,tempUrl:Y.url,libs:Y.libs,builtIn:null!=Y.info&&null!=Y.info.custContentId,message:A}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=N?N.id:null,B?mxUtils.bind(this,function(Q,S,Y){this.remoteInvoke("getRecentDiagrams",
[Y],null,Q,S)}):null,C?mxUtils.bind(this,function(Q,S,Y,ba){this.remoteInvoke("searchDiagrams",[Q,ba],null,S,Y)}):null,mxUtils.bind(this,function(Q,S,Y){this.remoteInvoke("getFileContent",[Q.url],null,S,Y)}),null,G?mxUtils.bind(this,function(Q){this.remoteInvoke("getCustomTemplates",null,null,Q,function(){Q({},0)})}):null,!1,!1,!0,!0);this.showDialog(I.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}u=new NewDialog(this,!1,A.templatesOnly?!1:null!=A.callback,mxUtils.bind(this,
function(Q,S,Y,ba){Q=Q||this.emptyDiagramXml;null!=A.callback?x.postMessage(JSON.stringify({event:"template",xml:Q,blank:Q==this.emptyDiagramXml,name:S,tempUrl:Y,libs:ba,builtIn:!0,message:A}),"*"):(d(Q,z,Q!=this.emptyDiagramXml,A.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,B?mxUtils.bind(this,function(Q){this.remoteInvoke("getRecentDiagrams",[null],null,Q,function(){Q(null,"Network Error!")})}):null,C?mxUtils.bind(this,function(Q,S){this.remoteInvoke("searchDiagrams",
[Q,null],null,S,function(){S(null,"Network Error!")})}):null,mxUtils.bind(this,function(Q,S,Y){x.postMessage(JSON.stringify({event:"template",docUrl:Q,info:S,name:Y}),"*")}),null,null,G?mxUtils.bind(this,function(Q){this.remoteInvoke("getCustomTemplates",null,null,Q,function(){Q({},0)})}):null,1==A.withoutType);this.showDialog(u.container,620,460,!0,!1,mxUtils.bind(this,function(Q){this.sidebar.hideTooltip();Q&&this.actions.get("exit").funct()}));u.init();return}if("textContent"==A.action){var F=
this.getDiagramTextContent();x.postMessage(JSON.stringify({event:"textContent",data:F,message:A}),"*");return}if("status"==A.action){null!=A.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(A.messageKey))):null!=A.message&&this.editor.setStatus(mxUtils.htmlEntities(A.message));null!=A.modified&&(this.editor.modified=A.modified);return}if("spinner"==A.action){var H=null!=A.messageKey?mxResources.get(A.messageKey):A.message;null==A.show||A.show?this.spinner.spin(document.body,H):
this.spinner.stop();return}if("exit"==A.action){this.actions.get("exit").funct();return}if("viewport"==A.action){null!=A.viewport&&(this.embedViewport=A.viewport);return}if("snapshot"==A.action){this.sendEmbeddedSvgExport(!0);return}if("export"==A.action){if("png"==A.format||"xmlpng"==A.format){if(null==A.spin&&null==A.spinKey||this.spinner.spin(document.body,null!=A.spinKey?mxResources.get(A.spinKey):A.spin)){var R=null!=A.xml?A.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var W=this.editor.graph,
J=mxUtils.bind(this,function(Q){this.editor.graph.setEnabled(!0);this.spinner.stop();var S=this.createLoadMessage("export");S.format=A.format;S.message=A;S.data=Q;S.xml=R;x.postMessage(JSON.stringify(S),"*")}),V=mxUtils.bind(this,function(Q){null==Q&&(Q=Editor.blankImage);"xmlpng"==A.format&&(Q=Editor.writeGraphModelToPng(Q,"tEXt","mxfile",encodeURIComponent(R)));W!=this.editor.graph&&W.container.parentNode.removeChild(W.container);J(Q)}),U=A.pageId||(null!=this.pages?A.currentPage?this.currentPage.getId():
this.pages[0].getId():null);if(this.isExportToCanvas()){var X=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=U){var Q=W.getGlobalVariable;W=this.createTemporaryGraph(W.getStylesheet());for(var S,Y=0;Y<this.pages.length;Y++)if(this.pages[Y].getId()==U){S=this.updatePageRoot(this.pages[Y]);break}null==S&&(S=this.currentPage);W.getGlobalVariable=function(fa){return"page"==fa?S.getName():"pagenumber"==fa?1:Q.apply(this,arguments)};document.body.appendChild(W.container);W.model.setRoot(S.root)}if(null!=
A.layerIds){var ba=W.model,ea=ba.getChildCells(ba.getRoot()),Z={};for(Y=0;Y<A.layerIds.length;Y++)Z[A.layerIds[Y]]=!0;for(Y=0;Y<ea.length;Y++)ba.setVisible(ea[Y],Z[ea[Y].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(fa){V(fa.toDataURL("image/png"))}),A.width,null,A.background,mxUtils.bind(this,function(){V(null)}),null,null,A.scale,A.transparent,A.shadow,null,W,A.border,null,A.grid,A.keepTheme)});null!=A.xml&&0<A.xml.length?(k=!0,this.setFileData(R),k=!1,this.editor.graph.mathEnabled?
window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==A.format?"1":"0")+(null!=U?"&pageId="+U:"")+(null!=A.layerIds&&0<A.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:A.layerIds})):"")+(null!=A.scale?"&scale="+A.scale:"")+"&base64=1&xml="+encodeURIComponent(R))).send(mxUtils.bind(this,function(Q){200<=Q.getStatus()&&299>=Q.getStatus()?J("data:image/png;base64,"+Q.getText()):V(null)}),mxUtils.bind(this,
function(){V(null)}))}}else X=mxUtils.bind(this,function(){var Q=this.createLoadMessage("export");Q.message=A;if("html2"==A.format||"html"==A.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var S=this.getXmlFileData();Q.xml=mxUtils.getXml(S);Q.data=this.getFileData(null,null,!0,null,null,null,S);Q.format=A.format}else if("html"==A.format)S=this.editor.getGraphXml(),Q.data=this.getHtml(S,this.editor.graph),Q.xml=mxUtils.getXml(S),Q.format=A.format;else{mxSvgCanvas2D.prototype.foAltText=
null;S=null!=A.background?A.background:this.editor.graph.background;S==mxConstants.NONE&&(S=null);Q.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);Q.format="svg";var Y=mxUtils.bind(this,function(ba){this.editor.graph.setEnabled(!0);this.spinner.stop();Q.data=Editor.createSvgDataUri(ba);x.postMessage(JSON.stringify(Q),"*")});if("xmlsvg"==A.format)(null==A.spin&&null==A.spinKey||this.spinner.spin(document.body,null!=A.spinKey?mxResources.get(A.spinKey):A.spin))&&this.getEmbeddedSvg(Q.xml,
this.editor.graph,null,!0,Y,null,null,A.embedImages,S,A.scale,A.border,A.shadow,A.keepTheme);else if(null==A.spin&&null==A.spinKey||this.spinner.spin(document.body,null!=A.spinKey?mxResources.get(A.spinKey):A.spin))this.editor.graph.setEnabled(!1),S=this.editor.graph.getSvg(S,A.scale,A.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||A.shadow,null,A.keepTheme),(this.editor.graph.shadowVisible||A.shadow)&&this.editor.graph.addSvgShadow(S),this.embedFonts(S,mxUtils.bind(this,function(ba){A.embedImages||
null==A.embedImages?this.editor.convertImages(ba,mxUtils.bind(this,function(ea){Y(mxUtils.getXml(ea))})):Y(mxUtils.getXml(ba))}));return}x.postMessage(JSON.stringify(Q),"*")}),null!=A.xml&&0<A.xml.length?(k=!0,this.setFileData(A.xml),k=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X();return}if("load"==A.action){L=A.toSketch;l=1==A.autosave;this.hideDialog();null!=A.modified&&null==urlParams.modified&&(urlParams.modified=A.modified);null!=A.saveAndExit&&
null==urlParams.saveAndExit&&(urlParams.saveAndExit=A.saveAndExit);null!=A.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=A.noSaveBtn);if(null!=A.rough){var t=Editor.sketchMode;this.doSetSketchMode(A.rough);t!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=A.dark&&(t=Editor.darkMode,this.doSetDarkMode(A.dark),t!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=A.border&&(this.embedExportBorder=A.border);null!=A.background&&(this.embedExportBackground=
A.background);null!=A.viewport&&(this.embedViewport=A.viewport);this.embedExitPoint=null;if(null!=A.rect){var E=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=A.rect.top+"px";this.diagramContainer.style.left=A.rect.left+"px";this.diagramContainer.style.height=A.rect.height+"px";this.diagramContainer.style.width=A.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";K=mxUtils.bind(this,function(){var Q=
this.editor.graph,S=Q.maxFitScale;Q.maxFitScale=A.maxFitScale;Q.fit(2*E);Q.maxFitScale=S;Q.container.scrollTop-=2*E;Q.container.scrollLeft-=2*E;this.fireEvent(new mxEventObject("editInlineStart","data",[A]))})}null!=A.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=A.noExitBtn);null!=A.title&&null!=this.buttonContainer&&(D=document.createElement("span"),mxUtils.write(D,A.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(D),
this.embedFilenameSpan=D);try{A.libs&&this.sidebar.showEntries(A.libs)}catch(Q){}A=null!=A.xmlpng?this.extractGraphModelFromPng(A.xmlpng):null!=A.descriptor?A.descriptor:A.xml}else{if("merge"==A.action){var M=this.getCurrentFile();null!=M&&(D=P(A.xml),null!=D&&""!=D&&M.mergeFile(new LocalFile(this,D),function(){x.postMessage(JSON.stringify({event:"merge",message:A}),"*")},function(Q){x.postMessage(JSON.stringify({event:"merge",message:A,error:Q}),"*")}))}else"remoteInvokeReady"==A.action?this.handleRemoteInvokeReady(x):
"remoteInvoke"==A.action?this.handleRemoteInvoke(A,z.origin):"remoteInvokeResponse"==A.action?this.handleRemoteInvokeResponse(A):x.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(A)}),"*");return}}catch(Q){this.handleError(Q)}}var T=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),O=mxUtils.bind(this,function(Q,S){k=!0;try{d(Q,S,null,L)}catch(Y){this.handleError(Y)}k=
!1;null!=urlParams.modified&&this.editor.setStatus("");p=T();l&&null==g&&(g=mxUtils.bind(this,function(Y,ba){Y=T();Y==p||k||(ba=this.createLoadMessage("autosave"),ba.xml=Y,(window.opener||window.parent).postMessage(JSON.stringify(ba),"*"));p=Y}),this.editor.graph.model.addListener(mxEvent.CHANGE,g),this.editor.graph.addListener("gridSizeChanged",g),this.editor.graph.addListener("shadowVisibleChanged",g),this.addListener("pageFormatChanged",g),this.addListener("pageScaleChanged",g),this.addListener("backgroundColorChanged",
g),this.addListener("backgroundImageChanged",g),this.addListener("foldingEnabledChanged",g),this.addListener("mathEnabledChanged",g),this.addListener("gridEnabledChanged",g),this.addListener("guidesEnabledChanged",g),this.addListener("pageViewChanged",g));if("1"==urlParams.returnbounds||"json"==urlParams.proto)S=this.createLoadMessage("load"),S.xml=Q,x.postMessage(JSON.stringify(S),"*");null!=K&&K()});null!=A&&"function"===typeof A.substring&&"data:application/vnd.visio;base64,"==A.substring(0,34)?
(P="0M8R4KGxGuE"==A.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(A.substring(A.indexOf(",")+1)),function(Q){O(Q,z)},mxUtils.bind(this,function(Q){this.handleError(Q)}),P)):null!=A&&"function"===typeof A.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(A,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(A,mxUtils.bind(this,function(Q){4==Q.readyState&&200<=Q.status&&299>=Q.status&&"<mxGraphModel"==
Q.responseText.substring(0,13)&&O(Q.responseText,z)}),""):null!=A&&"function"===typeof A.substring&&this.isLucidChartData(A)?this.convertLucidChart(A,mxUtils.bind(this,function(Q){O(Q)}),mxUtils.bind(this,function(Q){this.handleError(Q)})):null==A||"object"!==typeof A||null==A.format||null==A.data&&null==A.url?(A=P(A),O(A,z)):this.loadDescriptor(A,mxUtils.bind(this,function(Q){O(T(),z)}),mxUtils.bind(this,function(Q){this.handleError(Q,mxResources.get("errorLoadingFile"))}))}}));var x=window.opener||
window.parent;q="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";x.postMessage(q,"*");if("json"==urlParams.proto){var y=this.editor.graph.openLink;this.editor.graph.openLink=function(z,A,K){y.apply(this,arguments);x.postMessage(JSON.stringify({event:"openLink",href:z,target:A,allowOpener:K}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position=
"absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var g=document.createElement("button");g.className="geBigButton";var k=g;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var l="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(g,l);g.setAttribute("title",l);mxEvent.addListener(g,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));
640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(d,g){for(var k=this.editor.graph,l=k.getSelectionCells(),p=0;p<d.length;p++){var q=new window[d[p].layout](k);if(null!=d[p].config)for(var x in d[p].config)q[x]=d[p].config[x];this.executeLayout(function(){q.execute(k.getDefaultParent(),0==l.length?null:l)},p==d.length-1,g)}};EditorUi.prototype.importCsv=function(d,g){try{var k=d.split("\n"),l=[],p=[],q=[],x={};if(0<k.length){var y={},
z=this.editor.graph,A=null,K=null,P=null,L=null,u=null,D=null,B=null,C="whiteSpace=wrap;html=1;",G=null,N=null,I="",F="auto",H="auto",R=null,W=null,J=40,V=40,U=100,X=0,t=function(){null!=g?g(ta):(z.setSelectionCells(ta),z.scrollCellToVisible(z.getSelectionCell()))},E=z.getFreeInsertPoint(),M=E.x,T=E.y;E=T;var O=null,Q="auto";N=null;for(var S=[],Y=null,ba=null,ea=0;ea<k.length&&"#"==k[ea].charAt(0);){d=k[ea].replace(/\r$/,"");for(ea++;ea<k.length&&"\\"==d.charAt(d.length-1)&&"#"==k[ea].charAt(0);)d=
d.substring(0,d.length-1)+mxUtils.trim(k[ea].substring(1)),ea++;if("#"!=d.charAt(1)){var Z=d.indexOf(":");if(0<Z){var fa=mxUtils.trim(d.substring(1,Z)),aa=mxUtils.trim(d.substring(Z+1));"label"==fa?O=z.sanitizeHtml(aa):"labelname"==fa&&0<aa.length&&"-"!=aa?u=aa:"labels"==fa&&0<aa.length&&"-"!=aa?B=JSON.parse(aa):"style"==fa?K=aa:"parentstyle"==fa?C=aa:"unknownStyle"==fa&&"-"!=aa?D=aa:"stylename"==fa&&0<aa.length&&"-"!=aa?L=aa:"styles"==fa&&0<aa.length&&"-"!=aa?P=JSON.parse(aa):"vars"==fa&&0<aa.length&&
"-"!=aa?A=JSON.parse(aa):"identity"==fa&&0<aa.length&&"-"!=aa?G=aa:"parent"==fa&&0<aa.length&&"-"!=aa?N=aa:"namespace"==fa&&0<aa.length&&"-"!=aa?I=aa:"width"==fa?F=aa:"height"==fa?H=aa:"left"==fa&&0<aa.length?R=aa:"top"==fa&&0<aa.length?W=aa:"ignore"==fa?ba=aa.split(","):"connect"==fa?S.push(JSON.parse(aa)):"link"==fa?Y=aa:"padding"==fa?X=parseFloat(aa):"edgespacing"==fa?J=parseFloat(aa):"nodespacing"==fa?V=parseFloat(aa):"levelspacing"==fa?U=parseFloat(aa):"layout"==fa&&(Q=aa)}}}if(null==k[ea])throw Error(mxResources.get("invalidOrMissingFile"));
var va=this.editor.csvToArray(k[ea].replace(/\r$/,""));Z=d=null;fa=[];for(aa=0;aa<va.length;aa++)G==va[aa]&&(d=aa),N==va[aa]&&(Z=aa),fa.push(mxUtils.trim(va[aa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==O&&(O="%"+fa[0]+"%");if(null!=S)for(var ja=0;ja<S.length;ja++)null==y[S[ja].to]&&(y[S[ja].to]={});G=[];for(aa=ea+1;aa<k.length;aa++){var Ba=this.editor.csvToArray(k[aa].replace(/\r$/,""));if(null==Ba){var Da=40<k[aa].length?k[aa].substring(0,40)+"...":k[aa];throw Error(Da+
" ("+aa+"):\n"+mxResources.get("containsValidationErrors"));}0<Ba.length&&G.push(Ba)}z.model.beginUpdate();try{for(aa=0;aa<G.length;aa++){Ba=G[aa];var qa=null,Ca=null!=d?I+Ba[d]:null;null!=Ca&&(qa=z.model.getCell(Ca));k=null!=qa;var Aa=new mxCell(O,new mxGeometry(M,E,0,0),K||"whiteSpace=wrap;html=1;");Aa.vertex=!0;Aa.id=Ca;Da=null!=qa?qa:Aa;for(var Ha=0;Ha<Ba.length;Ha++)z.setAttributeForCell(Da,fa[Ha],Ba[Ha]);if(null!=u&&null!=B){var Na=B[Da.getAttribute(u)];null!=Na&&z.labelChanged(Da,Na)}if(null!=
L&&null!=P){var Ga=P[Da.getAttribute(L)];null!=Ga&&(Da.style=Ga)}z.setAttributeForCell(Da,"placeholders","1");Da.style=z.replacePlaceholders(Da,Da.style,A);k?(0>mxUtils.indexOf(q,qa)&&q.push(qa),z.fireEvent(new mxEventObject("cellsInserted","cells",[qa]))):z.fireEvent(new mxEventObject("cellsInserted","cells",[Aa]));qa=Aa;if(!k)for(ja=0;ja<S.length;ja++)y[S[ja].to][qa.getAttribute(S[ja].to)]=qa;null!=Y&&"link"!=Y&&(z.setLinkForCell(qa,qa.getAttribute(Y)),z.setAttributeForCell(qa,Y,null));var Fa=this.editor.graph.getPreferredSizeForCell(qa);
N=null!=Z?z.model.getCell(I+Ba[Z]):null;if(qa.vertex){Da=null!=N?0:M;ea=null!=N?0:T;null!=R&&null!=qa.getAttribute(R)&&(qa.geometry.x=Da+parseFloat(qa.getAttribute(R)));null!=W&&null!=qa.getAttribute(W)&&(qa.geometry.y=ea+parseFloat(qa.getAttribute(W)));var Ea="@"==F.charAt(0)?qa.getAttribute(F.substring(1)):null;qa.geometry.width=null!=Ea&&"auto"!=Ea?parseFloat(qa.getAttribute(F.substring(1))):"auto"==F||"auto"==Ea?Fa.width+X:parseFloat(F);var La="@"==H.charAt(0)?qa.getAttribute(H.substring(1)):
null;qa.geometry.height=null!=La&&"auto"!=La?parseFloat(La):"auto"==H||"auto"==La?Fa.height+X:parseFloat(H);E+=qa.geometry.height+V}k?(null==x[Ca]&&(x[Ca]=[]),x[Ca].push(qa)):(l.push(qa),null!=N?(N.style=z.replacePlaceholders(N,C,A),z.addCell(qa,N),p.push(N)):q.push(z.addCell(qa)))}for(aa=0;aa<p.length;aa++)Ea="@"==F.charAt(0)?p[aa].getAttribute(F.substring(1)):null,La="@"==H.charAt(0)?p[aa].getAttribute(H.substring(1)):null,"auto"!=F&&"auto"!=Ea||"auto"!=H&&"auto"!=La||z.updateGroupBounds([p[aa]],
X,!0);var za=q.slice(),ta=q.slice();for(ja=0;ja<S.length;ja++){var ka=S[ja];for(aa=0;aa<l.length;aa++){qa=l[aa];var oa=mxUtils.bind(this,function(ia,ma,ra){var pa=ma.getAttribute(ra.from);if(null!=pa&&""!=pa){pa=pa.split(",");for(var na=0;na<pa.length;na++){var Ka=y[ra.to][pa[na]];if(null==Ka&&null!=D){Ka=new mxCell(pa[na],new mxGeometry(M,T,0,0),D);Ka.style=z.replacePlaceholders(ma,Ka.style,A);var Ia=this.editor.graph.getPreferredSizeForCell(Ka);Ka.geometry.width=Ia.width+X;Ka.geometry.height=Ia.height+
X;y[ra.to][pa[na]]=Ka;Ka.vertex=!0;Ka.id=pa[na];q.push(z.addCell(Ka))}if(null!=Ka){Ia=ra.label;null!=ra.fromlabel&&(Ia=(ma.getAttribute(ra.fromlabel)||"")+(Ia||""));null!=ra.sourcelabel&&(Ia=z.replacePlaceholders(ma,ra.sourcelabel,A)+(Ia||""));null!=ra.tolabel&&(Ia=(Ia||"")+(Ka.getAttribute(ra.tolabel)||""));null!=ra.targetlabel&&(Ia=(Ia||"")+z.replacePlaceholders(Ka,ra.targetlabel,A));var Ra="target"==ra.placeholders==!ra.invert?Ka:ia;Ra=null!=ra.style?z.replacePlaceholders(Ra,ra.style,A):z.createCurrentEdgeStyle();
Ia=z.insertEdge(null,null,Ia||"",ra.invert?Ka:ia,ra.invert?ia:Ka,Ra);if(null!=ra.labels)for(Ra=0;Ra<ra.labels.length;Ra++){var Sa=ra.labels[Ra],Ja=new mxCell(Sa.label||Ra,new mxGeometry(null!=Sa.x?Sa.x:0,null!=Sa.y?Sa.y:0,0,0),"resizable=0;html=1;");Ja.vertex=!0;Ja.connectable=!1;Ja.geometry.relative=!0;null!=Sa.placeholders&&(Ja.value=z.replacePlaceholders("target"==Sa.placeholders==!ra.invert?Ka:ia,Ja.value,A));if(null!=Sa.dx||null!=Sa.dy)Ja.geometry.offset=new mxPoint(null!=Sa.dx?Sa.dx:0,null!=
Sa.dy?Sa.dy:0);Ia.insert(Ja)}ta.push(Ia);mxUtils.remove(ra.invert?ia:Ka,za)}}}});oa(qa,qa,ka);if(null!=x[qa.id])for(Ha=0;Ha<x[qa.id].length;Ha++)oa(qa,x[qa.id][Ha],ka)}}if(null!=ba)for(aa=0;aa<l.length;aa++)for(qa=l[aa],Ha=0;Ha<ba.length;Ha++)z.setAttributeForCell(qa,mxUtils.trim(ba[Ha]),null);if(0<q.length){var sa=new mxParallelEdgeLayout(z);sa.spacing=J;sa.checkOverlap=!0;var ya=function(){0<sa.spacing&&sa.execute(z.getDefaultParent());for(var ia=0;ia<q.length;ia++){var ma=z.getCellGeometry(q[ia]);
ma.x=Math.round(z.snap(ma.x));ma.y=Math.round(z.snap(ma.y));"auto"==F&&(ma.width=Math.round(z.snap(ma.width)));"auto"==H&&(ma.height=Math.round(z.snap(ma.height)))}};if("["==Q.charAt(0)){var wa=t;z.view.validate();this.executeLayoutList(JSON.parse(Q),function(){ya();wa()});t=null}else if("circle"==Q){var ua=new mxCircleLayout(z);ua.disableEdgeStyle=!1;ua.resetEdges=!1;var xa=ua.isVertexIgnored;ua.isVertexIgnored=function(ia){return xa.apply(this,arguments)||0>mxUtils.indexOf(q,ia)};this.executeLayout(function(){ua.execute(z.getDefaultParent());
ya()},!0,t);t=null}else if("horizontaltree"==Q||"verticaltree"==Q||"auto"==Q&&ta.length==2*q.length-1&&1==za.length){z.view.validate();var ha=new mxCompactTreeLayout(z,"horizontaltree"==Q);ha.levelDistance=V;ha.edgeRouting=!1;ha.resetEdges=!1;this.executeLayout(function(){ha.execute(z.getDefaultParent(),0<za.length?za[0]:null)},!0,t);t=null}else if("horizontalflow"==Q||"verticalflow"==Q||"auto"==Q&&1==za.length){z.view.validate();var da=new mxHierarchicalLayout(z,"horizontalflow"==Q?mxConstants.DIRECTION_WEST:
mxConstants.DIRECTION_NORTH);da.intraCellSpacing=V;da.parallelEdgeSpacing=J;da.interRankCellSpacing=U;da.disableEdgeStyle=!1;this.executeLayout(function(){da.execute(z.getDefaultParent(),ta);z.moveCells(ta,M,T)},!0,t);t=null}else if("organic"==Q||"auto"==Q&&ta.length>q.length){z.view.validate();var ca=new mxFastOrganicLayout(z);ca.forceConstant=3*V;ca.disableEdgeStyle=!1;ca.resetEdges=!1;var la=ca.isVertexIgnored;ca.isVertexIgnored=function(ia){return la.apply(this,arguments)||0>mxUtils.indexOf(q,
ia)};this.executeLayout(function(){ca.execute(z.getDefaultParent());ya()},!0,t);t=null}}this.hideDialog()}finally{z.model.endUpdate()}null!=t&&t()}}catch(ia){this.handleError(ia)}};EditorUi.prototype.getSearch=function(d){var g="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var k="?",l;for(l in urlParams)0>mxUtils.indexOf(d,l)&&null!=urlParams[l]&&(g+=k+l+"="+urlParams[l],k="&")}else g=window.location.search;return g};EditorUi.prototype.getUrl=function(d){d=
null!=d?d:window.location.pathname;var g=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var k="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),l;for(l in urlParams)0>mxUtils.indexOf(k,l)&&(d=0==g?d+"?":d+"&",null!=urlParams[l]&&(d+=l+"="+urlParams[l],g++))}return d};EditorUi.prototype.showLinkDialog=function(d,g,k,l,p){d=new LinkDialog(this,d,g,k,!0,l,p);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=
function(d){var g=1;null==this.drive&&"function"!==typeof window.DriveClient||g++;null==this.dropbox&&"function"!==typeof window.DropboxClient||g++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||g++;null!=this.gitHub&&g++;null!=this.gitLab&&g++;d&&isLocalStorage&&"1"==urlParams.browser&&g++;return g};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),g=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();
this.menus.get("viewPanels").setEnabled(g);this.menus.get("viewZoom").setEnabled(g);var k=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!k);this.actions.get("print").setEnabled(!k);this.menus.get("exportAs").setEnabled(!k);this.menus.get("embed").setEnabled(!k);k="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(k);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(k),
this.menus.get("newLibrary").setEnabled(k));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(g);this.actions.get("zoomIn").setEnabled(g);this.actions.get("zoomOut").setEnabled(g);this.actions.get("resetView").setEnabled(g);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(g);this.menus.get("view").setEnabled(g);this.menus.get("importFrom").setEnabled(d);
this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();
return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var n=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){n.apply(this,arguments);var d=this.editor.graph,g=this.getCurrentFile(),k=this.getSelectionState(),l=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(l);this.actions.get("autosave").setEnabled(null!=g&&g.isEditable()&&g.isAutosaveOptional());this.actions.get("guides").setEnabled(l);this.actions.get("editData").setEnabled(d.isEnabled());
this.actions.get("shadowVisible").setEnabled(l);this.actions.get("connectionArrows").setEnabled(l);this.actions.get("connectionPoints").setEnabled(l);this.actions.get("copyStyle").setEnabled(l&&!d.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(l&&0<k.cells.length);this.actions.get("editGeometry").setEnabled(0<k.vertices.length);this.actions.get("createShape").setEnabled(l);this.actions.get("createRevision").setEnabled(l);this.actions.get("moveToFolder").setEnabled(null!=g);this.actions.get("makeCopy").setEnabled(null!=
g&&!g.isRestricted());this.actions.get("editDiagram").setEnabled(l&&(null==g||!g.isRestricted()));this.actions.get("publishLink").setEnabled(null!=g&&!g.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=g&&g.isRenamable()||"1"==
urlParams.embed);this.actions.get("close").setEnabled(null!=g);this.menus.get("publish").setEnabled(null!=g&&!g.isRestricted());g=this.actions.get("findReplace");g.setEnabled("hidden"!=this.diagramContainer.style.visibility);g.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(l&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var v=EditorUi.prototype.destroy;EditorUi.prototype.destroy=
function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);v.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(d,g,k,l,p,q,x,y){var z=d.editor.graph;if("xml"==k)d.hideDialog(),d.saveData(g,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==k)d.hideDialog(),d.saveData(g,"svg",mxUtils.getXml(z.getSvg(l,p,q)),"image/svg+xml");
else{var A=d.getFileData(!0,null,null,null,null,!0),K=z.getGraphBounds(),P=Math.floor(K.width*p/z.view.scale),L=Math.floor(K.height*p/z.view.scale);if(A.length<=MAX_REQUEST_SIZE&&P*L<MAX_AREA)if(d.hideDialog(),"png"!=k&&"jpg"!=k&&"jpeg"!=k||!d.isExportToCanvas()){var u={globalVars:z.getExportVariables()};y&&(u.grid={size:z.gridSize,steps:z.view.gridSteps,color:z.view.gridColor});d.saveRequest(g,k,function(D,B){return new mxXmlRequest(EXPORT_URL,"format="+k+"&base64="+(B||"0")+(null!=D?"&filename="+
encodeURIComponent(D):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<x?"&dpi="+x:"")+"&bg="+(null!=l?l:"none")+"&w="+P+"&h="+L+"&border="+q+"&xml="+encodeURIComponent(A))})}else"png"==k?d.exportImage(p,null==l||"none"==l,!0,!1,!1,q,!0,!1,null,y,x):d.exportImage(p,!1,!0,!1,!1,q,!0,!1,"jpeg",y);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,g="";if(null!=this.pages)for(var k=
0;k<this.pages.length;k++){var l=d;this.currentPage!=this.pages[k]&&(l=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[k]),l.model.setRoot(this.pages[k].root));g+=this.pages[k].getName()+" "+l.getIndexableText()+" "}else g=d.getIndexableText();this.editor.graph.setEnabled(!0);return g};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var g={},k=document.createElement("div");k.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxUtils.htmlEntities(d));
l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(l);var p=document.createElement("div");p.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";p.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var q={};try{var x=mxSettings.getCustomLibraries();for(d=0;d<x.length;d++){var y=x[d];if("R"==y.substring(0,1)){var z=JSON.parse(decodeURIComponent(y.substring(1)));q[z[0]]={id:z[0],title:z[1],downloadUrl:z[2]}}}}catch(A){}this.remoteInvoke("getCustomLibraries",
null,null,function(A){p.innerHTML="";if(0==A.length)p.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var K=0;K<A.length;K++){var P=A[K];q[P.id]&&(g[P.id]=P);var L=this.addCheckbox(p,P.title,q[P.id]);(function(u,D){mxEvent.addListener(D,"change",function(){this.checked?g[u.id]=u:delete g[u.id]})})(P,L)}},mxUtils.bind(this,function(A){p.innerHTML="";var K=document.createElement("div");K.style.padding="8px";
K.style.textAlign="center";mxUtils.write(K,mxResources.get("error")+": ");mxUtils.write(K,null!=A&&null!=A.message?A.message:mxResources.get("unknownError"));p.appendChild(K)}));k.appendChild(p);k=new CustomDialog(this,k,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var A=0,K;for(K in g)null==q[K]&&(A++,mxUtils.bind(this,function(P){this.remoteInvoke("getFileContent",[P.downloadUrl],null,mxUtils.bind(this,function(L){A--;0==A&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,
L,P))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){A--;0==A&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(g[K]));for(K in q)g[K]||this.closeLibrary(new RemoteLibrary(this,null,q[K]));0==A&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(k.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},
getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var g=0;g<this.remoteInvokeQueue.length;g++)d.postMessage(this.remoteInvokeQueue[g],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=
function(d){var g=d.msgMarkers,k=this.remoteInvokeCallbacks[g.callbackId];if(null==k)throw Error("No callback for "+(null!=g?g.callbackId:"null"));d.error?k.error&&k.error(d.error.errResp):k.callback&&k.callback.apply(this,d.resp);this.remoteInvokeCallbacks[g.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,g,k,l,p){var q=!0,x=window.setTimeout(mxUtils.bind(this,function(){q=!1;p({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),y=mxUtils.bind(this,function(){window.clearTimeout(x);
q&&l.apply(this,arguments)}),z=mxUtils.bind(this,function(){window.clearTimeout(x);q&&p.apply(this,arguments)});k=k||{};k.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:y,error:z});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:g,msgMarkers:k});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,g){var k=mxUtils.bind(this,function(A,K){var P={event:"remoteInvokeResponse",
msgMarkers:d.msgMarkers};null!=K?P.error={errResp:K}:null!=A&&(P.resp=A);this.remoteWin.postMessage(JSON.stringify(P),"*")});try{var l=d.funtionName,p=this.remoteInvokableFns[l];if(null!=p&&"function"===typeof this[l]){if(p.allowedDomains){for(var q=!1,x=0;x<p.allowedDomains.length;x++)if(g=="https://"+p.allowedDomains[x]){q=!0;break}if(!q){k(null,"Invalid Call: "+l+" is not allowed.");return}}var y=d.functionArgs;Array.isArray(y)||(y=[]);if(p.isAsync)y.push(function(){k(Array.prototype.slice.apply(arguments))}),
y.push(function(A){k(null,A||"Unkown Error")}),this[l].apply(this,y);else{var z=this[l].apply(this,y);k([z])}}else k(null,"Invalid Call: "+l+" is not found.")}catch(A){k(null,"Invalid Call: An error occurred, "+A.message)}};EditorUi.prototype.openDatabase=function(d,g){if(null==this.database){var k=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=k)try{var l=k.open("database",2);l.onupgradeneeded=function(p){try{var q=l.result;1>p.oldVersion&&q.createObjectStore("objects",{keyPath:"key"});
2>p.oldVersion&&(q.createObjectStore("files",{keyPath:"title"}),q.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(x){null!=g&&g(x)}};l.onsuccess=mxUtils.bind(this,function(p){var q=l.result;this.database=q;EditorUi.migrateStorageFiles&&(StorageFile.migrate(q),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(x){if(!x||
"1"==urlParams.forceMigration){var y=document.createElement("iframe");y.style.display="none";y.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(y);var z=!0,A=!1,K,P=0,L=mxUtils.bind(this,function(){A=!0;this.setDatabaseItem(".drawioMigrated3",!0);y.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),u=mxUtils.bind(this,function(){P++;D()}),D=mxUtils.bind(this,function(){try{if(P>=
K.length)L();else{var C=K[P];StorageFile.getFileContent(this,C,mxUtils.bind(this,function(G){null==G||".scratchpad"==C&&G==this.emptyLibraryXml?y.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[C]}),"*"):u()}),u)}}catch(G){console.log(G)}}),B=mxUtils.bind(this,function(C){try{this.setDatabaseItem(null,[{title:C.title,size:C.data.length,lastModified:Date.now(),type:C.isLib?"L":"F"},{title:C.title,data:C.data}],u,u,["filesInfo","files"])}catch(G){console.log(G)}});
x=mxUtils.bind(this,function(C){try{if(C.source==y.contentWindow){var G={};try{G=JSON.parse(C.data)}catch(N){}"init"==G.event?(y.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),y.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=G.event||A||(z?null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?(K=G.resp[0],z=!1,D()):L():null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?B(G.resp[0]):u())}}catch(N){console.log(N)}});
window.addEventListener("message",x)}})));d(q);q.onversionchange=function(){q.close()}});l.onerror=g;l.onblocked=function(){}}catch(p){null!=g&&g(p)}else null!=g&&g()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,g,k,l,p){this.openDatabase(mxUtils.bind(this,function(q){try{p=p||"objects";Array.isArray(p)||(p=[p],d=[d],g=[g]);var x=q.transaction(p,"readwrite");x.oncomplete=k;x.onerror=l;for(q=0;q<p.length;q++)x.objectStore(p[q]).put(null!=d&&null!=d[q]?{key:d[q],data:g[q]}:g[q])}catch(y){null!=
l&&l(y)}}),l)};EditorUi.prototype.removeDatabaseItem=function(d,g,k,l){this.openDatabase(mxUtils.bind(this,function(p){l=l||"objects";Array.isArray(l)||(l=[l],d=[d]);p=p.transaction(l,"readwrite");p.oncomplete=g;p.onerror=k;for(var q=0;q<l.length;q++)p.objectStore(l[q]).delete(d[q])}),k)};EditorUi.prototype.getDatabaseItem=function(d,g,k,l){this.openDatabase(mxUtils.bind(this,function(p){try{l=l||"objects";var q=p.transaction([l],"readonly").objectStore(l).get(d);q.onsuccess=function(){g(q.result)};
q.onerror=k}catch(x){null!=k&&k(x)}}),k)};EditorUi.prototype.getDatabaseItems=function(d,g,k){this.openDatabase(mxUtils.bind(this,function(l){try{k=k||"objects";var p=l.transaction([k],"readonly").objectStore(k).openCursor(IDBKeyRange.lowerBound(0)),q=[];p.onsuccess=function(x){null==x.target.result?d(q):(q.push(x.target.result.value),x.target.result.continue())};p.onerror=g}catch(x){null!=g&&g(x)}}),g)};EditorUi.prototype.getDatabaseItemKeys=function(d,g,k){this.openDatabase(mxUtils.bind(this,function(l){try{k=
k||"objects";var p=l.transaction([k],"readonly").objectStore(k).getAllKeys();p.onsuccess=function(){d(p.result)};p.onerror=g}catch(q){null!=g&&g(q)}}),g)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():
!1};EditorUi.prototype.getComments=function(d,g){var k=this.getCurrentFile();null!=k?k.getComments(d,g):d([])};EditorUi.prototype.addComment=function(d,g,k){var l=this.getCurrentFile();null!=l?l.addComment(d,g,k):g(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,g){var k=this.getCurrentFile();
return null!=k?k.newComment(d,g):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,g)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,g){var k=this.getCurrentFile();null!=k&&k.getRevisions?k.getRevisions(d,g):g({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==
DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,g,k,l,p,q,x,y){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,g,k,l,p,q,x,y)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};
EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,g){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,g)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,g,k,l,p,q,x,y,z,A,K,P,L,u,D,B){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");
return this.editor.exportToCanvas(d,g,k,l,p,q,x,y,z,A,K,P,L,u,D,B)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,g,k,l){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,g,k,l)};EditorUi.prototype.convertImageToDataUri=function(d,g){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");
return this.editor.convertImageToDataUri(d,g)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,g,k,l){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,g,k,l)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=function(d,g,k,l,p){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");
return Editor.writeGraphModelToPng(d,g,k,l,p)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],g=0;g<localStorage.length;g++){var k=localStorage.key(g),l=localStorage.getItem(k);if(0<k.length&&(".scratchpad"==k||"."!=k.charAt(0))&&0<l.length){var p="<mxfile "===l.substring(0,8)||"<?xml"===l.substring(0,5)||"\x3c!--[if IE]>"===l.substring(0,12);l="<mxlibrary>"===l.substring(0,11);(p||
l)&&d.push(k)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var g=localStorage.getItem(d);return{title:d,data:g,isLib:"<mxlibrary>"===g.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
c.executeLayoutList(B);c.customLayoutConfig=B}catch(C){c.handleError(C),null!=window.console&&console.error(C)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");c.showDialog(u.container,620,460,!0,!0);u.init()});l=this.get("layout");var y=l.funct;l.funct=function(u,D){y.apply(this,arguments);u.addItem(mxResources.get("orgChart"),null,function(){function B(){"undefined"!==typeof mxOrgChartLayout||c.loadingOrgChart||c.isOffline(!0)?F():c.spinner.spin(document.body,
mxResources.get("loading"))&&(c.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",F)})})}):mxscript("js/extensions.min.js",F))}var C=null,G=20,N=20,I=!0,F=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=C&&I){var t=c.editor.graph,E=new mxOrgChartLayout(t,C,
G,N),M=t.getDefaultParent();1<t.model.getChildCount(t.getSelectionCell())&&(M=t.getSelectionCell());E.execute(M);I=!1}},H=document.createElement("div"),R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("orgChartType")+": ");H.appendChild(R);var W=document.createElement("select");W.style.width="200px";W.style.boxSizing="border-box";R=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),
mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")];for(var J=0;J<R.length;J++){var V=document.createElement("option");mxUtils.write(V,R[J]);V.value=J;2==J&&V.setAttribute("selected","selected");W.appendChild(V)}mxEvent.addListener(W,"change",function(){C=W.value});H.appendChild(W);R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,
mxResources.get("parentChildSpacing")+": ");H.appendChild(R);var U=document.createElement("input");U.type="number";U.value=G;U.style.width="200px";U.style.boxSizing="border-box";H.appendChild(U);mxEvent.addListener(U,"change",function(){G=U.value});R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("siblingSpacing")+": ");H.appendChild(R);var X=document.createElement("input");X.type="number";X.value=N;X.style.width=
"200px";X.style.boxSizing="border-box";H.appendChild(X);mxEvent.addListener(X,"change",function(){N=X.value});H=new CustomDialog(c,H,function(){null==C&&(C=2);B()});c.showDialog(H.container,355,140,!0,!0)},D,null,n());u.addSeparator(D);u.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var B=new mxParallelEdgeLayout(m);B.checkOverlap=!0;B.spacing=20;c.executeLayout(function(){B.execute(m.getDefaultParent(),m.isSelectionEmpty()?null:m.getSelectionCells())},!1)}),D);u.addSeparator(D);
c.menus.addMenuItem(u,"runLayout",D,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(u,D){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(u,["about"],D);else{var B=u.addItem("Search:",null,null,D,null,null,!1);B.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";B.style.cursor="default";var C=document.createElement("input");C.setAttribute("type","text");C.setAttribute("size","25");C.style.marginLeft="8px";mxEvent.addListener(C,
"keydown",mxUtils.bind(this,function(G){var N=mxUtils.trim(C.value);13==G.keyCode&&0<N.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(N)),C.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:N}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==G.keyCode&&(C.value="")}));B.firstChild.nextSibling.appendChild(C);mxEvent.addGestureListeners(C,
function(G){document.activeElement!=C&&C.focus();mxEvent.consume(G)},function(G){mxEvent.consume(G)},function(G){mxEvent.consume(G)});window.setTimeout(function(){C.focus()},0);EditorUi.isElectronApp?(c.actions.addAction("website...",function(){c.openLink("https://www.diagrams.net")}),c.actions.addAction("check4Updates",function(){c.checkForUpdates()}),this.addMenuItems(u,"- keyboardShortcuts quickStart website support -".split(" "),D),"1"!=urlParams.disableUpdate&&this.addMenuItems(u,["check4Updates",
"-"],D),this.addMenuItems(u,["forkme","-","about"],D)):this.addMenuItems(u,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),D)}"1"==urlParams.test&&(u.addSeparator(D),this.addSubmenu("testDevelop",u,D))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var u=prompt("Language Code",Graph.diagramLanguage||"");null!=u&&(Graph.diagramLanguage=0<u.length?u:null,m.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");
X){"1"==urlParams.sketch?(B.insertTemplateEnabled&&!B.isOffline()&&B.menus.addMenuItems(U,["insertTemplate"],X),B.menus.addMenuItems(U,["insertImage","insertLink","-"],X),B.menus.addSubmenu("insertLayout",U,X,mxResources.get("layout")),B.menus.addSubmenu("insertAdvanced",U,X,mxResources.get("advanced"))):(V.apply(this,arguments),B.menus.addSubmenu("table",U,X))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(J,V,U,X){J.addItem(U,
null,mxUtils.bind(this,function(){var t=new CreateGraphDialog(B,U,X);B.showDialog(t.container,620,420,!0,!1);t.init()}),V)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(J,V){for(var U=0;U<R.length;U++)"-"==R[U]?J.addSeparator(V):W(J,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(B){var C=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
						this.executeLayoutList(data.layouts)


	/**
	 * Runs the layout from the given JavaScript array which is of the form [{layout: name, config: obj}, ...]
	 * where name is the layout constructor name and config contains the properties of the layout instance.
	 */
	EditorUi.prototype.executeLayoutList = function(layoutList, done)
	{
		var graph = this.editor.graph;
		var cells = graph.getSelectionCells();

		for (var i = 0; i < layoutList.length; i++)
		{
			var layout = new window[layoutList[i].layout](graph);
			
			if (layoutList[i].config != null)
			{
				for (var key in layoutList[i].config)
				{
					layout[key] = layoutList[i].config[key];
				}
			}
			
			this.executeLayout(function()
			{
				layout.execute(graph.getDefaultParent(), cells.length == 0 ? null : cells);
			}, i == layoutList.length - 1, done);
		}
	};
							this.executeLayoutList(JSON.parse(layout), function()
						var layoutList = JSON.parse(newValue);
						editorUi.executeLayoutList(layoutList)
						editorUi.customLayoutConfig = layoutList;
						
						if (window.console != null)
						{
							console.error(e);
						}
						
		
				// Keeps parallel edges apart
				layout.spacing = 20;
	    		editorUi.executeLayout(function()
	    		{
	    			layout.execute(graph.getDefaultParent(), (!graph.isSelectionEmpty()) ?
	    				graph.getSelectionCells() : null);
	    		}, false);
					ui.menus.addSubmenu('insertLayout', menu, parent, mxResources.get('layout'));
	if (node.hasAttribute('xlink:href') && !node.getAttribute('xlink:href').match(/^#/))
				div.innerHTML = data.substring(idx);

				// Removes all attributes starting with on
				Graph.sanitizeNode(div);
    ALLOWED_URI_REGEXP: /^(?:(?:https?|mailto|tel|callto|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i};
			var dlg = new FilenameDialog(this.editorUi, defaultValue, mxResources.get('apply'), function(newValue)
			{
				fn(parseFloat(newValue));
			}, mxResources.get('spacing'));
			this.editorUi.showDialog(dlg.container, 300, 80, true, true);
			dlg.init();
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|callto|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";
window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";
window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
Editor=function(a,c,f,e,g){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=e||this.createGraph(c,f);this.editable=null!=g?g:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(d){this.status=d;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
(function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(c){}})();Editor.defaultHtmlFont='-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"';Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.extractGraphModelFromPng=function(a){var c=null;try{var f=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0);EditorUi.parsePng(e,mxUtils.bind(this,function(g,d,k){g=e.substring(g+8,g+8+k);"zTXt"==d?(k=g.indexOf(String.fromCharCode(0)),"mxGraphModel"==g.substring(0,k)&&(g=pako.inflateRaw(Graph.stringToArrayBuffer(g.substring(k+2)),{to:"string"}).replace(/\+/g," "),null!=g&&0<g.length&&(c=g))):"tEXt"==d&&(g=g.split(String.fromCharCode(0)),1<g.length&&("mxGraphModel"==
g[0]||"mxfile"==g[0])&&(c=g[1]));if(null!=c||"IDAT"==d)return!0}))}catch(g){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c};Editor.isDarkMode=function(a){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.editAsNew=function(a,c){c=null!=c?"?title="+encodeURIComponent(c):"";null!=urlParams.ui&&(c+=(0<c.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var f=null,e=mxUtils.bind(this,function(g){"ready"==g.data&&g.source==f&&(mxEvent.removeListener(window,"message",e),f.postMessage(a,"*"))});mxEvent.addListener(window,"message",e);f=this.graph.openLink(this.getEditBlankUrl(c+(0<c.length?"&":"?")+"client=1"),
null,!0)}else this.graph.openLink(this.getEditBlankUrl(c)+"#R"+encodeURIComponent(a))};Editor.prototype.createGraph=function(a,c){a=new Graph(null,c,null,null,a);a.transparentBackground=!1;var f=a.isCssTransformsSupported,e=this;a.isCssTransformsSupported=function(){return f.apply(this,arguments)&&(!e.chromeless||!mxClient.IS_SF)};this.chromeless||(a.isBlankLink=function(g){return!this.isExternalProtocol(g)});return a};
Editor.prototype.readGraphState=function(a){var c=a.getAttribute("grid");if(null==c||""==c)c=this.graph.defaultGridEnabled?"1":"0";this.graph.gridEnabled="0"!=c&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=a.getAttribute("guides");this.graph.setTooltips("0"!=a.getAttribute("tooltips"));this.graph.setConnectable("0"!=a.getAttribute("connect"));this.graph.connectionArrowsEnabled=
"0"!=a.getAttribute("arrows");this.graph.foldingEnabled="0"!=a.getAttribute("fold");this.isChromelessView()&&this.graph.foldingEnabled&&(this.graph.foldingEnabled="1"==urlParams.nav,this.graph.cellRenderer.forceControlClickHandler=this.graph.foldingEnabled);c=parseFloat(a.getAttribute("pageScale"));!isNaN(c)&&0<c?this.graph.pageScale=c:this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.isLightboxView()||this.graph.isViewer()?this.graph.pageVisible=!1:(c=a.getAttribute("page"),this.graph.pageVisible=
null!=c?"0"!=c:this.graph.defaultPageVisible);this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;c=parseFloat(a.getAttribute("pageWidth"));var f=parseFloat(a.getAttribute("pageHeight"));isNaN(c)||isNaN(f)||(this.graph.pageFormat=new mxRectangle(0,0,c,f));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null};
Editor.prototype.setGraphXml=function(a){if(null!=a){var c=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),c.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var f=c.document.createElement("mxGraphModel");f.appendChild(a);c.decode(f,this.graph.getModel());
Editor.prototype.createUndoManager=function(){var a=this.graph,c=new mxUndoManager;this.undoListener=function(e,g){c.undoableEditHappened(g.getProperty("edit"))};var f=mxUtils.bind(this,function(e,g){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(e,g){e=a.getSelectionCellsForChanges(g.getProperty("edit").changes,function(k){return!(k instanceof mxChildChange)});if(0<e.length){a.getModel();g=[];for(var d=0;d<e.length;d++)null!=
a.view.getState(e[d])&&g.push(e[d]);a.setSelectionCells(g)}};c.addListener(mxEvent.UNDO,f);c.addListener(mxEvent.REDO,f);return c};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};
function Dialog(a,c,f,e,g,d,k,n,u,m,r){var x=u?57:0,A=f,C=e,F=u?0:64,K=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(K.height=window.innerHeight);var E=K.height,O=Math.max(1,Math.round((K.width-f-F)/2)),R=Math.max(1,Math.round((E-e-a.footerHeight)/3));c.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-F):f;e=Math.min(e,E-F);0<a.dialogs.length&&(this.zIndex+=
R+=a.embedViewport.y,O+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var Q=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(O,R,f,e);O=g.x;R=g.y;Q.style.width=f+"px";Q.style.height=e+"px";Q.style.left=O+"px";Q.style.top=R+"px";Q.style.zIndex=this.zIndex;Q.appendChild(c);document.body.appendChild(Q);!n&&c.clientHeight>Q.clientHeight-F&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(d&&(d=document.createElement("img"),d.setAttribute("src",Dialog.prototype.closeImage),
"px";!n&&c.clientHeight>Q.clientHeight-F&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=R+14+"px",this.dialogImg.style.left=O+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=Q;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,c){return new mxPoint(a,c)};Dialog.prototype.close=function(a,c){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,c))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
var ErrorDialog=function(a,c,f,e,g,d,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=c){var A=document.createElement("div");A.style.padding="0px";A.style.margin="0px";A.style.fontSize="18px";A.style.paddingBottom="16px";A.style.marginBottom="10px";A.style.borderBottom="1px solid #c0c0c0";A.style.color="gray";A.style.whiteSpace="nowrap";A.style.textOverflow="ellipsis";A.style.overflow="hidden";mxUtils.write(A,c);A.setAttribute("title",c);x.appendChild(A)}c=
document.createElement("div");c.style.lineHeight="1.2em";c.style.padding="6px";c.innerHTML=f;x.appendChild(c);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=d&&(c=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();d()}),c.className="geBtn",f.appendChild(c),f.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=r&&r()}),m.className="geBtn",f.appendChild(m));var C=mxUtils.button(e,function(){u&&a.hideDialog();null!=g&&g()});
C.className="geBtn";f.appendChild(C);null!=k&&(e=mxUtils.button(k,function(){u&&a.hideDialog();null!=n&&n()}),e.className="geBtn gePrimaryBtn",f.appendChild(e));this.init=function(){C.focus()};x.appendChild(f);this.container=x},PrintDialog=function(a,c){this.create(a,c)};
PrintDialog.prototype.create=function(a){function c(C){var F=k.checked||m.checked,K=parseInt(x.value)/100;isNaN(K)&&(K=1,x.value="100%");K*=.75;var E=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,O=1/f.pageScale;if(F){var R=k.checked?1:parseInt(r.value);isNaN(R)||(O=mxUtils.getScaleForPageCount(R,f,E))}f.getGraphBounds();var Q=R=0;E=mxRectangle.fromRectangle(E);E.width=Math.ceil(E.width*K);E.height=Math.ceil(E.height*K);O*=K;!F&&f.pageVisible?(K=f.getPageLayout(),R-=K.x*E.width,Q-=K.y*E.height):
n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)});A.className="geBtn";n.appendChild(A)}A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});A.className="geBtn gePrimaryBtn";n.appendChild(A);a.editor.cancelFirst||
n.appendChild(u);d.appendChild(n);g.appendChild(d);e.appendChild(g);this.container=e};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var c=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(c,500):c()}}catch(f){}};
PrintDialog.createPrintPreview=function(a,c,f,e,g,d,k){c=new mxPrintPreview(a,c,f,e,g,d);c.title=mxResources.get("preview");c.printBackgroundImage=!0;c.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";c.backgroundColor=a;var n=c.writeHead;c.writeHead=function(u){n.apply(this,arguments);u.writeln('<style type="text/css">');u.writeln("@media screen {");u.writeln("  body > div { padding:30px;box-sizing:content-box; }");u.writeln("}");u.writeln("</style>")};return c};
var PageSetupDialog=function(a){function c(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var E=F;null!=E&&Graph.isPageLink(E.src)&&(E=a.createImageForPageLink(E.src,null));null!=E&&null!=E.src?(C.setAttribute("src",E.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var e=a.editor.graph,g=document.createElement("table");g.style.width=
mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var r=e.background;c();mxEvent.addListener(m,
"click",function(E){a.pickColor(r||"none",function(O){r=O;c()});mxEvent.consume(E)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=e.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var E=parseInt(x.value);x.value=Math.max(1,isNaN(E)?e.getGridSize():E)});k.appendChild(n);d.appendChild(k);k=document.createElement("tr");
PageSetupDialog.addPageFormatPanel=function(a,c,f,e){function g(aa,T,U){if(U||x!=document.activeElement&&A!=document.activeElement){aa=!1;for(T=0;T<F.length;T++)U=F[T],R?"custom"==U.key&&(n.value=U.key,R=!1):null!=U.format&&("a4"==U.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==U.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==U.format.width&&
n.value="custom",u.style.display="none",r.style.display="")}}c="format-"+c;var d=document.createElement("input");d.setAttribute("name",c);d.setAttribute("type","radio");d.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",c);k.setAttribute("type","radio");k.setAttribute("value","landscape");var n=document.createElement("select");n.style.marginBottom="8px";n.style.borderRadius="4px";n.style.border="1px solid rgb(160, 160, 160)";n.style.width="206px";var u=
document.createElement("div");u.style.marginLeft="4px";u.style.width="210px";u.style.height="24px";d.style.marginRight="6px";u.appendChild(d);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));u.appendChild(c);k.style.marginLeft="10px";k.style.marginRight="6px";u.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));u.appendChild(m);var r=document.createElement("div");r.style.marginLeft=
Math.floor(100*parseFloat(A.value)));"custom"!=n.value&&k.checked&&(aa=new mxRectangle(0,0,aa.height,aa.width));T&&R||aa.width==Q.width&&aa.height==Q.height||(Q=aa,null!=e&&e(Q))};mxEvent.addListener(c,"click",function(aa){d.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(m,"click",function(aa){k.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(A,"blur",P);mxEvent.addListener(A,"click",P);mxEvent.addListener(k,"change",
var FilenameDialog=function(a,c,f,e,g,d,k,n,u,m,r,x){u=null!=u?u:!0;var A=document.createElement("table"),C=document.createElement("tbody");A.style.position="absolute";A.style.top="30px";A.style.left="20px";var F=document.createElement("tr");var K=document.createElement("td");K.style.textOverflow="ellipsis";K.style.textAlign="right";K.style.maxWidth="100px";K.style.fontSize="10pt";K.style.width="84px";mxUtils.write(K,(g||mxResources.get("filename"))+":");F.appendChild(K);var E=document.createElement("input");
E.setAttribute("value",c||"");E.style.marginLeft="4px";E.style.width=null!=x?x+"px":"180px";var O=mxUtils.button(f,function(){if(null==d||d(E.value))u&&a.hideDialog(),e(E.value)});O.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(E.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?E.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=A.parentNode;if(null!=R){var Q=null;mxEvent.addListener(R,"dragleave",function(P){null!=Q&&(Q.style.backgroundColor=
K=document.createElement("td"),K.style.whiteSpace="nowrap",F.appendChild(K),c=FilenameDialog.createFileTypes(a,E,a.editor.diagramFileTypes),c.style.marginLeft="4px",c.style.width="198px",K.appendChild(c),E.style.width=null!=x?x-40+"px":"190px",F.appendChild(K),C.appendChild(F)));null!=k&&(F=document.createElement("tr"),K=document.createElement("td"),K.colSpan=2,K.appendChild(k),F.appendChild(K),C.appendChild(F));F=document.createElement("tr");K=document.createElement("td");K.colSpan=2;K.style.paddingTop=
FilenameDialog.createTypeHint=function(a,c,f){var e=document.createElement("img");e.style.backgroundPosition="center bottom";e.style.backgroundRepeat="no-repeat";e.style.margin="2px 0 0 4px";e.style.verticalAlign="top";e.style.cursor="pointer";e.style.height="16px";e.style.width="16px";mxUtils.setOpacity(e,70);var g=function(){e.setAttribute("src",Editor.helpImage);e.setAttribute("title",mxResources.get("help"));for(var d=0;d<f.length;d++)if(0<f[d].ext.length&&c.value.toLowerCase().substring(c.value.length-
f[d].ext.length-1)=="."+f[d].ext){e.setAttribute("title",mxResources.get(f[d].title));break}};mxEvent.addListener(c,"keyup",g);mxEvent.addListener(c,"change",g);mxEvent.addListener(e,"click",function(d){var k=e.getAttribute("title");e.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=k&&a.showError(null,k,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(d)});
FilenameDialog.createFileTypes=function(a,c,f){var e=document.createElement("select");for(a=0;a<f.length;a++){var g=document.createElement("option");g.setAttribute("value",a);mxUtils.write(g,mxResources.get(f[a].description)+" (."+f[a].extension+")");e.appendChild(g)}mxEvent.addListener(e,"change",function(d){d=f[e.value].extension;var k=c.value.lastIndexOf(".drawio.");k=0<k?k:c.value.lastIndexOf(".");"drawio"!=d&&(d="drawio."+d);c.value=0<k?c.value.substring(0,k+1)+d:c.value+"."+d;"createEvent"in
document?(d=document.createEvent("HTMLEvents"),d.initEvent("change",!1,!0),c.dispatchEvent(d)):c.fireEvent("onchange")});a=function(d){d=c.value.toLowerCase();for(var k=0,n=0;n<f.length;n++){var u=f[n].extension,m=null;"drawio"!=u&&(m=u,u=".drawio."+u);if(d.substring(d.length-u.length-1)=="."+u||null!=m&&d.substring(d.length-m.length-1)=="."+m){k=n;break}}e.value=k};mxEvent.addListener(c,"change",a);mxEvent.addListener(c,"keyup",a);a();return e};
k(this.verticalPageBreaks)};var c=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(k,n,u){for(var m=0;m<n.length;m++){if(this.graph.isTableCell(n[m])||this.graph.isTableRow(n[m]))return!1;if(this.graph.getModel().isVertex(n[m])){var r=this.graph.getCellGeometry(n[m]);if(null!=r&&r.relative)return!1}}return c.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var k=
this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,c,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=c||document.body;var e=this.editor.graph;e.lightbox=f;var g=e.getGraphBounds;e.getGraphBounds=function(){var I=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var H=this.view.translate,S=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((H.x+L.x)*S,(H.y+L.y)*S,L.width*S,L.height*S))}return I};e.useCssTransforms&&(this.lazyZoomDelay=
e.currentVertexStyle=mxUtils.clone(e.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<u.length;c++)0>mxUtils.indexOf(d,u[c])&&d.push(u[c]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),r=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<r.length;c++)for(f=0;f<r[c].length;f++)d.push(r[c][f]);for(c=0;c<k.length;c++)0>mxUtils.indexOf(d,k[c])&&d.push(k[c]);var x=function(I,L,H,S,V,ea,ka){S=null!=S?S:e.currentVertexStyle;V=null!=V?V:e.currentEdgeStyle;ea=null!=ea?ea:!0;H=null!=H?H:e.getModel();if(ka){ka=[];for(var wa=0;wa<I.length;wa++)ka=ka.concat(H.getDescendants(I[wa]));I=ka}H.beginUpdate();try{for(wa=0;wa<I.length;wa++){var W=I[wa];if(L)var Z=["fontSize",
A,this.footerContainer.onselectstart=A,this.footerContainer.onmousedown=A,null!=this.tabContainer&&(this.tabContainer.onselectstart=A));!this.editor.chromeless||this.editor.editable?(c=function(I){if(null!=I){var L=mxEvent.getSource(I);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return A(I)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",c):this.diagramContainer.oncontextmenu=
c):e.panningHandler.usePopupTrigger=!1;e.init(this.diagramContainer);mxClient.IS_SVG&&null!=e.view.getDrawPane()&&(c=e.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=e.graphHandler){var C=e.graphHandler.start;e.graphHandler.start=function(){null!=fa.hoverIcons&&fa.hoverIcons.reset();C.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(I){var L=mxUtils.getOffset(this.diagramContainer);
EditorUi.parsePng=function(a,c,f){function e(n,u){var m=d;d+=u;return n.substring(m,d)}function g(n){n=e(n,4);return n.charCodeAt(3)+(n.charCodeAt(2)<<8)+(n.charCodeAt(1)<<16)+(n.charCodeAt(0)<<24)}var d=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(e(a,4),"IHDR"!=e(a,4))null!=f&&f();else{e(a,17);do{f=g(a);var k=e(a,4);if(null!=c&&c(d-8,k,f))break;value=e(a,f);e(a,4);if("IEND"==k)break}while(f)}};mxUtils.extend(EditorUi,mxEventSource);
"keydown",mxUtils.bind(this,function(e){this.onKeyDown(e)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(e){this.onKeyPress(e)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var c=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){c.apply(this,
EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,c=a.getSelectionCells(),f=this.initSelectionState(),e=!0,g=0;g<c.length;g++){var d=a.getCurrentCellStyle(c[g]);"0"!=mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(f,c[g],c,e),e=!1)}this.updateSelectionStateForTableCells(f);return f};
EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var c=mxUtils.sortCells(a.cells),f=this.editor.graph.model,e=f.getParent(c[0]),g=f.getParent(e),d=e.getIndex(c[0]),k=g.getIndex(e),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),d):null;r<c.length-1;){var A=c[++r];null==x||x!=A||null!=n&&u!=n||(n=u,u=0,m++,e=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),d):null);var C=this.editor.graph.view.getState(A);
if(A==f.getChildAt(e,d+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=c[0],a.colspan=u,a.rowspan=m)}};
EditorUi.prototype.updateSelectionStateForCell=function(a,c,f,e){f=this.editor.graph;a.cells.push(c);if(f.getModel().isVertex(c)){a.connections=0<f.model.getEdgeCount(c);a.unlocked=a.unlocked&&!f.isCellLocked(c);a.resizable=a.resizable&&f.isCellResizable(c);a.rotatable=a.rotatable&&f.isCellRotatable(c);a.movable=a.movable&&f.isCellMovable(c)&&!f.isTableRow(c)&&!f.isTableCell(c);a.swimlane=a.swimlane||f.isSwimlane(c);a.table=a.table||f.isTable(c);a.cell=a.cell||f.isTableCell(c);a.row=a.row||f.isTableRow(c);
a.vertices.push(c);var g=f.getCellGeometry(c);if(null!=g&&(0<g.width?null==a.width?a.width=g.width:a.width!=g.width&&(a.width=""):a.containsLabel=!0,0<g.height?null==a.height?a.height=g.height:a.height!=g.height&&(a.height=""):a.containsLabel=!0,!g.relative||null!=g.offset)){var d=g.relative?g.offset.x:g.x;g=g.relative?g.offset.y:g.y;null==a.x?a.x=d:a.x!=d&&(a.x="");null==a.y?a.y=g:a.y!=g&&(a.y="")}}else f.getModel().isEdge(c)&&(a.edges.push(c),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=
!1);c=f.view.getState(c);null!=c&&(a.autoSize=a.autoSize||f.isAutoSizeState(c),a.glass=a.glass&&f.isGlassState(c),a.rounded=a.rounded&&f.isRoundedState(c),a.lineJumps=a.lineJumps&&f.isLineJumpState(c),a.image=a.image&&f.isImageState(c),a.shadow=a.shadow&&f.isShadowState(c),a.fill=a.fill&&f.isFillState(c),a.stroke=a.stroke&&f.isStrokeState(c),d=mxUtils.getValue(c.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==d,f.mergeStyle(c.style,a.style,e))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,c=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(u,m){"mouseDown"==m.getProperty("eventName")&&c.hideShapePicker()}));var f=mxUtils.bind(this,function(){c.hideShapePicker(!0)});a.addListener("wheel",f);a.addListener(mxEvent.ESCAPE,f);a.view.addListener(mxEvent.SCALE,f);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,f);a.getSelectionModel().addListener(mxEvent.CHANGE,f);var e=a.popupMenuHandler.isMenuShowing;
a.popupMenuHandler.isMenuShowing=function(){return e.apply(this,arguments)||null!=c.shapePicker};var g=a.dblClick;a.dblClick=function(u,m){if(this.isEnabled())if(null!=m||null==c.sidebar||mxEvent.isShiftDown(u)||a.isCellLocked(a.getDefaultParent()))g.apply(this,arguments);else{var r=mxUtils.convertPoint(this.container,mxEvent.getClientX(u),mxEvent.getClientY(u));mxEvent.consume(u);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(r.x,r.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
f);var d=this.hoverIcons.drag;this.hoverIcons.drag=function(){c.hideShapePicker();d.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(A,C,F){var K=a.getCompositeParent(u.cell);A=a.getCellGeometry(K);for(r.consume();null!=K&&a.model.isVertex(K)&&null!=A&&A.relative;)cell=
K,K=a.model.getParent(cell),A=a.getCellGeometry(K);window.setTimeout(mxUtils.bind(this,function(){c.showShapePicker(r.getGraphX(),r.getGraphY(),K,mxUtils.bind(this,function(E){F(E);null!=c.hoverIcons&&c.hoverIcons.update(a.view.getState(E))}),m)}),30)}),mxUtils.bind(this,function(A){this.graph.selectCellsForConnectVertex(A,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
m.getProperty("arrow"),x=m.getProperty("direction"),A=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),F=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var K=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),E=c.showShapePicker(F,C,K,mxUtils.bind(this,function(O){null!=O&&a.connectVertex(K,x,a.defaultEdgeLength,A,!0,!0,function(R,Q,P){P(O);null!=c.hoverIcons&&c.hoverIcons.update(a.view.getState(O))},
function(R){a.selectCellsForConnectVertex(R)},A,this.hoverIcons)}),x,!0);this.centerShapePicker(E,r,F,C,x);mxUtils.setOpacity(E,30);mxEvent.addListener(E,"mouseenter",function(){mxUtils.setOpacity(E,100)});mxEvent.addListener(E,"mouseleave",function(){c.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
EditorUi.prototype.centerShapePicker=function(a,c,f,e,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)a.style.width="40px";var d=a.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(f-=d.width/2-10,e-=d.height+6):g==mxConstants.DIRECTION_SOUTH?(f-=d.width/2-10,e+=c.height+6):g==mxConstants.DIRECTION_WEST?(f-=d.width+6,e-=d.height/2-10):g==mxConstants.DIRECTION_EAST&&(f+=c.width+6,e-=d.height/2-10);a.style.left=f+"px";a.style.top=e+"px"};
EditorUi.prototype.showShapePicker=function(a,c,f,e,g,d){a=this.createShapePicker(a,c,f,e,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(f,d),d);null!=a&&(null==this.hoverIcons||d||this.hoverIcons.reset(),d=this.editor.graph,d.popupMenuHandler.hideMenu(),d.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=e,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,c,f,e,g,d,k,n){var u=null;if(null!=k&&0<k.length){var m=this,r=this.editor.graph;u=document.createElement("div");g=r.view.getState(f);var x=null==f||null!=g&&r.isTransparentState(g)?null:r.copyStyle(f);f=6>k.length?35*k.length:140;u.className="geToolbarContainer geSidebarContainer";u.style.cssText="position:absolute;left:"+a+"px;top:"+c+"px;width:"+f+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
this.sidebar.graph.pasteStyle(x,[A]):m.insertHandler([A],""!=A.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([A],25,25,C,null,!0,!1,A.geometry.width,A.geometry.height);mxEvent.addListener(C,"click",function(){var F=r.cloneCell(A);if(null!=e)e(F);else{F.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-A.geometry.width/2);F.geometry.y=r.snap(Math.round(c/r.view.scale)-r.view.translate.y-A.geometry.height/2);r.model.beginUpdate();try{r.addCell(F)}finally{r.model.endUpdate()}r.setSelectionCell(F);
r.scrollCellToVisible(F);r.startEditingAtCell(F);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(F))}null!=d&&d()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,c-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
EditorUi.prototype.getCellsForShapePicker=function(a,c){c=mxUtils.bind(this,function(f,e,g,d){return this.editor.graph.createVertex(null,null,d||"",0,0,e||120,g||60,f,!1)});return[null!=a?this.editor.graph.cloneCell(a):c("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),c("whiteSpace=wrap;html=1;"),c("ellipse;whiteSpace=wrap;html=1;"),c("rhombus;whiteSpace=wrap;html=1;",80,80),c("rounded=1;whiteSpace=wrap;html=1;"),c("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),
c("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),c("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),c("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),c("triangle;whiteSpace=wrap;html=1;",60,80),c("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),c("shape=tape;whiteSpace=wrap;html=1;",120,100),c("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80),c("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),c("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
EditorUi.prototype.onKeyDown=function(a){var c=this.editor.graph;if(9==a.which&&c.isEnabled()&&!mxEvent.isControlDown(a)){if(c.isEditing())if(mxEvent.isAltDown(a))c.stopEditing(!1);else try{var f=c.cellEditor.isContentEditing()&&c.cellEditor.isTextSelected();if(window.getSelection&&c.cellEditor.isContentEditing()&&!f&&!mxClient.IS_IE&&!mxClient.IS_IE11){var e=window.getSelection(),g=0<e.rangeCount?e.getRangeAt(0).commonAncestorContainer:null;f=null!=g&&("LI"==g.nodeName||null!=g.parentNode&&"LI"==
g.parentNode.nodeName)}f?document.execCommand(mxEvent.isShiftDown(a)?"outdent":"indent",!1,null):mxEvent.isShiftDown(a)?c.stopEditing(!1):c.cellEditor.insertTab(c.cellEditor.isContentEditing()?null:4)}catch(d){}else mxEvent.isAltDown(a)?c.selectParentCell():c.selectCell(!mxEvent.isShiftDown(a));mxEvent.consume(a)}};
EditorUi.prototype.onKeyPress=function(a){var c=this.editor.graph;!this.isImmediateEditingEvent(a)||c.isEditing()||c.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(c.escape(),c.startEditing(),mxClient.IS_FF&&(c=c.cellEditor,null!=c.textarea&&(c.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(c.textarea),a.collapse(!1),c=window.getSelection(),c.removeAllRanges(),c.addRange(a))))};
EditorUi.prototype.getCssClassForMarker=function(a,c,f,e){return"flexArrow"==c?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==f||"halfCircle"==f?"geSprite geSvgSprite geSprite-"+f+("end"==a?" geFlipSprite":""):f==mxConstants.ARROW_CLASSIC?"1"==e?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==e?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,c=this.actions.get("paste"),f=this.actions.get("pasteHere");c.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(c.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,c=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):c.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(d){var k=null;if(d.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{k=k||d.getSelectionCells();k=d.getExportableCells(d.model.getTopmostCells(k));for(var n={},u=d.createCellLookup(k),m=d.cloneCells(k,null,n),r=new mxGraphModel,x=r.getChildAt(r.getRoot(),
this.scale*H.height*S.height)};a.getPreferredPageSize=function(H,S,V){H=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,H.width*S.width,H.height*S.height)};var c=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=c=mxUtils.bind(this,function(H,S,V,ea){if(null!=a.container&&!a.isViewer()){V=null!=V?V:0;ea=null!=ea?ea:0;var ka=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,Z=a.view.scale,
20:null);a.view.scale!=ea&&(null!=ba&&(ka+=S.x-ba.x,wa+=S.y-ba.y),null!=c&&f.chromelessResize(!1,null,ka*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==ka&&0==wa||(a.container.scrollLeft-=ka*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=I&&U.setAttribute("filter",I);a.cumulativeZoomFactor=1;I=qa=ha=ba=fa=null}),null!=H?H:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(H,S,
20*(V-1):null!=H.movementY&&"pointermove"==H.type&&(V=1+Math.max(1,Math.abs(H.movementY))/20*(V-1),ea=-1),a.lazyZoom(S,null,ea,V),mxEvent.consume(H),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(H){a.cumulativeZoomFactor=H.scale;a.lazyZoom(0<H.scale,!0);mxEvent.consume(H)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(c){this.actions.get("print").funct();mxEvent.consume(c)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var c=urlParams.border,f=60;null!=c&&(f=parseInt(c));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))};
EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,c){try{var f=mxUtils.parseXml(a);this.editor.setGraphXml(f.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=c&&(this.editor.setFilename(c),this.updateDocumentTitle())}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange();
this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(a,c,f,e){this.editor.graph.popupMenuHandler.hideMenu();var g=new mxPopupMenu(a);g.div.className+=" geMenubarMenu";g.smartSeparators=!0;g.showDisabled=!0;g.autoExpand=!0;g.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(g,arguments);g.destroy()});g.popup(c,f,null,e);this.setCurrentMenu(g)};
EditorUi.prototype.setCurrentMenu=function(a,c){this.currentMenuElt=c;this.currentMenu=a};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())};EditorUi.prototype.updateDocumentTitle=function(){var a=this.editor.getOrCreateFilename();null!=this.editor.appName&&(a+=" - "+this.editor.appName);document.title=a};
EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(a){}};EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var c=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);c==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(f){}};
EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()};EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var c=0<a.indexOf("?")?1:0,f;for(f in urlParams)a=0==c?a+"?":a+"&",a+=f+"="+urlParams[f],c++;return a};
EditorUi.prototype.setScrollbars=function(a){var c=this.editor.graph,f=c.container.style.overflow;c.scrollbars=a;this.editor.updateGraphComponents();f!=c.container.style.overflow&&(c.container.scrollTop=0,c.container.scrollLeft=0,c.view.scaleAndTranslate(1,0,0),this.resetScrollbars());this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars};
EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.editor.extendCanvas)a.container.scrollTop=0,a.container.scrollLeft=0,mxUtils.hasScrollbars(a.container)||a.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(a.container))if(a.pageVisible){var c=a.getPagePadding();a.container.scrollTop=Math.floor(c.y-this.editor.initialTopSpacing)-1;a.container.scrollLeft=Math.floor(Math.min(c.x,(a.container.scrollWidth-a.container.clientWidth)/2))-
1;c=a.getGraphBounds();0<c.width&&0<c.height&&(c.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(c.x+c.width-a.container.clientWidth,c.x-10)),c.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(c.y+c.height-a.container.clientHeight,c.y-10)))}else{c=a.getGraphBounds();var f=Math.max(c.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,c.y-Math.max(20,(a.container.clientHeight-Math.max(c.height,
a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,c.x-Math.max(0,(a.container.clientWidth-f)/2)))}else{c=mxRectangle.fromRectangle(a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds());f=a.view.translate;var e=a.view.scale;c.x=c.x/e-f.x;c.y=c.y/e-f.y;c.width/=e;c.height/=e;a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-c.width)/2)-c.x+2),Math.floor((a.pageVisible?0:Math.max(0,(a.container.clientHeight-c.height)/4))-c.y+1))}};
EditorUi.prototype.setPageVisible=function(a){var c=this.editor.graph,f=mxUtils.hasScrollbars(c.container),e=0,g=0;f&&(e=c.view.translate.x*c.view.scale-c.container.scrollLeft,g=c.view.translate.y*c.view.scale-c.container.scrollTop);c.pageVisible=a;c.pageBreaksVisible=a;c.preferPageSize=a;c.view.validateBackground();if(f){var d=c.getSelectionCells();c.clearSelection();c.setSelectionCells(d)}c.sizeDidChange();f&&(c.container.scrollLeft=c.view.translate.x*c.view.scale-e,c.container.scrollTop=c.view.translate.y*
c.view.scale-g);c.defaultPageVisible=a;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(a,c){this.ui=a;this.color=c}ChangeGridColor.prototype.execute=function(){var a=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=a};(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(a)})();
function ChangePageSetup(a,c,f,e,g){this.ui=a;this.previousColor=this.color=c;this.previousImage=this.image=f;this.previousFormat=this.format=e;this.previousPageScale=this.pageScale=g;this.ignoreImage=this.ignoreColor=!1}
ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var c=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=c}if(!this.ignoreImage){this.image=this.previousImage;c=a.backgroundImage;var f=this.previousImage;null!=f&&null!=f.src&&"data:page/id,"==f.src.substring(0,13)&&(f=this.ui.createImageForPageLink(f.src,this.ui.currentPage));this.ui.setBackgroundImage(f);this.previousImage=c}null!=this.previousFormat&&
(this.format=this.previousFormat,c=a.pageFormat,this.previousFormat.width!=c.width||this.previousFormat.height!=c.height)&&(this.ui.setPageFormat(this.previousFormat),this.previousFormat=c);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled);null!=this.previousPageScale&&(a=this.ui.editor.graph.pageScale,this.previousPageScale!=a&&(this.ui.setPageScale(this.previousPageScale),
this.previousPageScale=a))};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat","previousPageScale"]);a.afterDecode=function(c,f,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;e.previousPageScale=e.pageScale;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);return e};mxCodecRegistry.register(a)})();
EditorUi.prototype.setPageFormat=function(a,c){c=null!=c?c:"1"==urlParams.sketch;this.editor.graph.pageFormat=a;c||(this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct());this.fireEvent(new mxEventObject("pageFormatChanged"))};
EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),c=this.actions.get("redo"),f=this.editor.undoManager,e=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());c.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,e);f.addListener(mxEvent.UNDO,e);f.addListener(mxEvent.REDO,e);f.addListener(mxEvent.CLEAR,e);var g=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){g.apply(this,arguments);e()};var d=this.editor.graph.cellEditor.stopEditing;
EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,c=this.getSelectionState(),f=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),e="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),g=0;g<e.length;g++)this.actions.get(e[g]).setEnabled(0<c.cells.length);
this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<c.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<c.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==c.cells.length);this.actions.get("sendBackward").setEnabled(1==
c.cells.length);this.actions.get("rotation").setEnabled(1==c.vertices.length);this.actions.get("wordWrap").setEnabled(1==c.vertices.length);this.actions.get("autosize").setEnabled(1==c.vertices.length);this.actions.get("copySize").setEnabled(1==c.vertices.length);this.actions.get("clearWaypoints").setEnabled(c.connections);this.actions.get("curved").setEnabled(0<c.edges.length);this.actions.get("turn").setEnabled(0<c.cells.length);this.actions.get("group").setEnabled(!c.row&&!c.cell&&(1<c.cells.length||
1==c.vertices.length&&0==a.model.getChildCount(c.cells[0])&&!a.isContainer(c.vertices[0])));this.actions.get("ungroup").setEnabled(!c.row&&!c.cell&&!c.table&&0<c.vertices.length&&(a.isContainer(c.vertices[0])||0<a.getModel().getChildCount(c.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==c.cells.length&&a.getModel().isVertex(a.getModel().getParent(c.cells[0])));this.actions.get("collapsible").setEnabled(1==c.vertices.length&&(0<a.model.getChildCount(c.vertices[0])||a.isContainer(c.vertices[0])));
this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==c.cells.length&&a.isValidRoot(c.cells[0]));this.actions.get("editLink").setEnabled(1==c.cells.length);this.actions.get("openLink").setEnabled(1==c.cells.length&&null!=a.getLinkForCell(c.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(f);this.actions.get("selectEdges").setEnabled(f);
this.actions.get("selectAll").setEnabled(f);this.actions.get("selectNone").setEnabled(f);e=1==c.vertices.length&&a.isCellFoldable(c.vertices[0]);this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.menus.get("navigation").setEnabled(0<c.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(f);this.menus.get("insert").setEnabled(f);this.menus.get("direction").setEnabled(c.unlocked&&1==c.vertices.length);this.menus.get("distribute").setEnabled(c.unlocked&&
1<c.vertices.length);this.menus.get("align").setEnabled(c.unlocked&&0<c.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var c=this.container.clientWidth,f=this.container.clientHeight;this.container==document.body&&(c=document.body.clientWidth||document.documentElement.clientWidth,f=document.documentElement.clientHeight);var e=0;mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&window.innerHeight!=document.documentElement.clientHeight&&(e=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var g=Math.max(0,Math.min(this.hsplitPosition,
c-this.splitSize-20));c=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",c+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",c+=this.toolbarHeight);0<c&&(c+=1);var d=0;if(null!=this.sidebarFooterContainer){var k=this.footerHeight+e;d=Math.max(0,Math.min(f-c-k,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=g+"px";this.sidebarFooterContainer.style.height=
d+"px";this.sidebarFooterContainer.style.bottom=k+"px"}f=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=c+"px";this.sidebarContainer.style.width=g+"px";this.formatContainer.style.top=c+"px";this.formatContainer.style.width=f+"px";this.formatContainer.style.display=null!=this.format?"":"none";k=this.getDiagramContainerOffset();var n=null!=this.hsplit.parentNode?g+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
d+e+"px";this.formatContainer.style.bottom=this.footerHeight+e+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=n+k.x+"px",this.diagramContainer.style.top=c+k.y+"px",this.diagramContainer.style.right=f+"px",this.diagramContainer.style.bottom=this.footerHeight+e+g+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
!0,0,mxUtils.bind(this,function(c){this.hsplitPosition=c;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a;0==this.statusContainer.getElementsByTagName("div").length&&(this.statusContainer.innerHTML="",a=this.createStatusDiv(a),this.statusContainer.appendChild(a))};
EditorUi.prototype.createStatusDiv=function(a){var c=document.createElement("div");c.setAttribute("title",a);c.innerHTML=a;return c};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};
EditorUi.prototype.createDiv=function(a){var c=document.createElement("div");c.className=a;return c};
EditorUi.prototype.addSplitHandler=function(a,c,f,e){function g(x){if(null!=k){var A=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));e(Math.max(0,n+(c?A.x-k.x:k.y-A.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function d(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(c?a.style.left:a.style.bottom);c||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
EditorUi.prototype.handleError=function(a,c,f,e,g){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=c){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var d=mxResources.get("ok");c=null!=c?c:mxResources.get("error");null!=a&&null!=a.message&&(g=mxUtils.htmlEntities(a.message));this.showError(c,g,d,f,null,null,null,null,null,null,null,null,e?f:null)}else null!=f&&f()};
EditorUi.prototype.showError=function(a,c,f,e,g,d,k,n,u,m,r,x,A){a=new ErrorDialog(this,a,c,f||mxResources.get("ok"),e,g,d,k,x,n,u);c=Math.ceil(null!=c?c.length/50:1);this.showDialog(a.container,m||340,r||100+20*c,!0,!1,A);a.init()};EditorUi.prototype.showDialog=function(a,c,f,e,g,d,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,c,f,e,g,d,k,n,u,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,c,f){null!=this.dialogs&&0<this.dialogs.length&&(null==f||f==this.dialog.container.firstChild)&&(f=this.dialogs.pop(),0==f.close(a,c)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var c=a.getSelectionCells(),f=new mxDictionary,e=[],g=0;g<c.length;g++){var d=a.isTableCell(c[g])?a.model.getParent(c[g]):c[g];null==d||f.get(d)||(f.put(d,!0),e.push(d))}a.setSelectionCells(a.duplicateCells(e,!1))}catch(k){this.handleError(k)}};
EditorUi.prototype.pickColor=function(a,c){var f=this.editor.graph,e=f.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));a=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(d){f.cellEditor.restoreSelection(e);c(d)},function(){f.cellEditor.restoreSelection(e)});this.showDialog(a.container,230,g,!0,!1);a.init()};
EditorUi.prototype.extractGraphModelFromHtml=function(a){var c=null;try{var f=a.indexOf("&lt;mxGraphModel ");if(0<=f){var e=a.lastIndexOf("&lt;/mxGraphModel&gt;");e>f&&(c=a.substring(f,e+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(g){}return c};
EditorUi.prototype.readGraphModelFromClipboard=function(a){this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(c){null!=c?a(c):this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(f){if(null!=f){var e=decodeURIComponent(f);this.isCompatibleString(e)&&(f=e)}a(f)}),"text")}),"html")};
EditorUi.prototype.readGraphModelFromClipboardWithType=function(a,c){navigator.clipboard.read().then(mxUtils.bind(this,function(f){if(null!=f&&0<f.length&&"html"==c&&0<=mxUtils.indexOf(f[0].types,"text/html"))f[0].getType("text/html").then(mxUtils.bind(this,function(e){e.text().then(mxUtils.bind(this,function(g){try{var d=this.parseHtmlData(g),k="text/plain"!=d.getAttribute("data-type")?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);try{var n=k.lastIndexOf("%3E");
0<=n&&n<k.length-3&&(k=k.substring(0,n+3))}catch(r){}try{var u=d.getElementsByTagName("span"),m=null!=u&&0<u.length?mxUtils.trim(decodeURIComponent(u[0].textContent)):decodeURIComponent(k);this.isCompatibleString(m)&&(k=m)}catch(r){}}catch(r){}a(this.isCompatibleString(k)?k:null)}))["catch"](function(g){a(null)})}))["catch"](function(e){a(null)});else if(null!=f&&0<f.length&&"text"==c&&0<=mxUtils.indexOf(f[0].types,"text/plain"))f[0].getType("text/plain").then(function(e){e.text().then(function(g){a(g)})["catch"](function(){a(null)})})["catch"](function(){a(null)});
EditorUi.prototype.parseHtmlData=function(a){var c=null;if(null!=a&&0<a.length){var f="<meta "==a.substring(0,6);c=document.createElement("div");c.innerHTML=(f?'<meta charset="utf-8">':"")+this.editor.graph.sanitizeHtml(a);asHtml=!0;a=c.getElementsByTagName("style");if(null!=a)for(;0<a.length;)a[0].parentNode.removeChild(a[0]);null!=c.firstChild&&c.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=c.firstChild.nextSibling&&c.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==
c.firstChild.nodeName&&"A"==c.firstChild.nextSibling.nodeName&&null==c.firstChild.nextSibling.nextSibling&&(a=null==c.firstChild.nextSibling.innerText?mxUtils.getTextContent(c.firstChild.nextSibling):c.firstChild.nextSibling.innerText,a==c.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(c,a),asHtml=!1));f=f&&null!=c.firstChild?c.firstChild.nextSibling:c.firstChild;null!=f&&null==f.nextSibling&&f.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==f.nodeName?(a=f.getAttribute("src"),
null!=a&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(c,a),asHtml=!1)):(f=c.getElementsByTagName("img"),1==f.length&&(f=f[0],a=f.getAttribute("src"),null!=a&&f.parentNode==c&&1==c.children.length&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(c,a),asHtml=!1)));asHtml&&Graph.removePasteFormatting(c)}asHtml||c.setAttribute("data-type","text/plain");return c};
EditorUi.prototype.extractGraphModelFromEvent=function(a){var c=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,0<=mxUtils.indexOf(a.types,"text/plain")&&(null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=Graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&&
(c=f);return c};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(c){this.save(c)}),null,mxUtils.bind(this,function(c){if(null!=c&&0<c.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())};
EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var c=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,c);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(c.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(c))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(c);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
EditorUi.prototype.executeLayout=function(a,c,f){var e=this.editor.graph;if(e.isEnabled()){e.getModel().beginUpdate();try{a()}catch(g){throw g;}finally{this.allowAnimation&&c&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(a=new mxMorphing(e),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){e.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(e.getModel().endUpdate(),null!=f&&f())}}};
EditorUi.prototype.showImageDialog=function(a,c,f,e){e=this.editor.graph.cellEditor;var g=e.saveSelection(),d=mxUtils.prompt(a,c);e.restoreSelection(g);if(null!=d&&0<d.length){var k=new Image;k.onload=function(){f(d,k.width,k.height)};k.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};k.src=d}else f(null)};EditorUi.prototype.showLinkDialog=function(a,c,f){a=new LinkDialog(this,a,c,f);this.showDialog(a.container,420,90,!0,!0);a.init()};
EditorUi.prototype.showBackgroundImageDialog=function(a,c){a=null!=a?a:mxUtils.bind(this,function(e){e=new ChangePageSetup(this,null,e);e.ignoreColor=!0;this.editor.graph.model.execute(e)});var f=mxUtils.prompt(mxResources.get("backgroundImage"),null!=c?c.src:"");null!=f&&0<f.length?(c=new Image,c.onload=function(){a(new mxImage(f,c.width,c.height),!1)},c.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},c.src=f):a(null)};
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,c,f){mxUtils.confirm(a)?null!=c&&c():null!=f&&f()};EditorUi.prototype.createOutline=function(a){var c=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){c.update(!1)});return c};
EditorUi.prototype.createKeyHandler=function(a){function c(x,A,C){if(!e.isSelectionEmpty()&&e.isEnabled()){A=null!=A?A:1;var F=e.getCompositeParents(e.getSelectionCells()),K=0<F.length?F[0]:null;if(null!=K)if(C){e.getModel().beginUpdate();try{for(K=0;K<F.length;K++)if(e.getModel().isVertex(F[K])&&e.isCellResizable(F[K])){var E=e.getCellGeometry(F[K]);null!=E&&(E=E.clone(),37==x?E.width=Math.max(0,E.width-A):38==x?E.height=Math.max(0,E.height-A):39==x?E.width+=A:40==x&&(E.height+=A),e.getModel().setGeometry(F[K],
e.defaultEdgeLength,x,!0);null!=C&&0<C.length&&(1==C.length&&e.model.isEdge(C[0])?e.setSelectionCell(e.model.getTerminal(C[0],!1)):e.setSelectionCell(C[C.length-1]),e.scrollCellToVisible(e.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(e.view.getState(e.getSelectionCell())))}}else return this.isControlDown(x)?function(){c(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null,!0)}:function(){c(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null)}}return u.apply(this,arguments)};g.bindAction=mxUtils.bind(this,
this.scrollHandler=null);if(null!=this.destroyFunctions){for(a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}var c=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog];for(a=0;a<c.length;a++)null!=c[a]&&null!=c[a].parentNode&&c[a].parentNode.removeChild(c[a])};function Sidebar(a,c){this.editorUi=a;this.container=c;this.palettes={};this.taglist={};this.lastCreated=0;this.showTooltips=!0;this.graph=a.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());this.graph.cellRenderer.minSvgStrokeWidth=this.minThumbStrokeWidth;this.graph.cellRenderer.antiAlias=this.thumbAntiAlias;this.graph.container.style.visibility="hidden";this.graph.foldingEnabled=!1;document.body.appendChild(this.graph.container);this.pointerUpHandler=mxUtils.bind(this,function(){if(null==
"pointerout":"mouseout",this.pointerOutHandler);mxEvent.addListener(c,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0;this.hideTooltip()}));this.init()}
Sidebar.prototype.getTooltipOffset=function(a,c){c=c.height+2*this.tooltipBorder;return new mxPoint(this.container.offsetWidth+this.editorUi.splitSize+10+this.editorUi.container.offsetLeft,Math.min(Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)-c-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop-c/2+16)))};
Sidebar.prototype.createTooltip=function(a,c,f,e,g,d,k,n,u,m,r){r=null!=r?r:!0;this.tooltipMouseDown=u;null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.userSelect="none",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),mxEvent.addMouseWheelListener(mxUtils.bind(this,function(x){this.hideTooltip()}),this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),
c=this.graph2.cloneCells(c);this.editorUi.insertHandler(c,null,this.graph2.model,r?null:this.editorUi.editor.graph.defaultVertexStyle,r?null:this.editorUi.editor.graph.defaultEdgeStyle,r,!0);this.graph2.addCells(c);mxClient.NO_FO=d;r=this.graph2.getGraphBounds();n&&0<f&&0<e&&(r.width>f||r.height>e)?(f=Math.round(100*Math.min(f/r.width,e/r.height))/100,mxClient.NO_FO?(this.graph2.view.setScale(Math.round(100*Math.min(this.maxTooltipWidth/r.width,this.maxTooltipHeight/r.height))/100),r=this.graph2.getGraphBounds()):
Sidebar.prototype.showTooltip=function(a,c,f,e,g,d){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=a){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var k=mxUtils.bind(this,function(){this.createTooltip(a,c,f,e,g,d)});null!=this.tooltip&&"none"!=this.tooltip.style.display?k():this.thread=window.setTimeout(k,this.tooltipDelay);this.currentElt=a}};
Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.currentElt=null);this.tooltipMouseDown=null};Sidebar.prototype.addDataEntry=function(a,c,f,e,g){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(g,c,f,e)}))};
Sidebar.prototype.addEntries=function(a){for(var c=0;c<a.length;c++)mxUtils.bind(this,function(f){var e=f.data,g=null!=f.title?f.title:"";null!=f.tags&&(g+=" "+f.tags);null!=e&&0<g.length?this.addEntry(g,mxUtils.bind(this,function(){e=this.editorUi.convertDataUri(e);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==f.aspect&&(d+="aspect=fixed;");return this.createVertexTemplate(d+"image="+e,f.w,f.h,"",f.title||"",!1,!1,!0)})):null!=f.xml&&0<g.length&&this.addEntry(g,
mxUtils.bind(this,function(){var d=this.editorUi.stringToCells(Graph.decompress(f.xml));return this.createVertexTemplateFromCells(d,f.w,f.h,f.title||"",!0,!1,!0)}))})(a[c])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,c){this.currentSearchEntryLibrary=null!=a?{id:a,lib:c}:null};
Sidebar.prototype.addEntry=function(a,c){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(c.parentLibraries=[this.currentSearchEntryLibrary]);a=a.toLowerCase().replace(/[\/,\(\)]/g," ").split(" ");for(var f=[],e={},g=0;g<a.length;g++){null==e[a[g]]&&(e[a[g]]=!0,f.push(a[g]));var d=a[g].replace(/\.*\d*$/,"");d!=a[g]&&null==e[d]&&(e[d]=!0,f.push(d))}for(g=0;g<f.length;g++)this.addEntryForTag(f[g],c)}return c};
Sidebar.prototype.addEntryForTag=function(a,c){if(null!=a&&1<a.length){var f=this.taglist[a];"object"!==typeof f&&(f={entries:[]},this.taglist[a]=f);f.entries.push(c)}};
Sidebar.prototype.searchEntries=function(a,c,f,e,g){if(null!=this.taglist&&null!=a){var d=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*c;a=[];for(var n=0,u=0;u<d.length;u++)if(0<d[u].length){var m=this.taglist[d[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var A=0;A<x.length;A++)if(m=x[A],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==d.length-1&&a.length==k)){e(a.slice(f*c,k),k,!0,d);return}}else a=[];g=r;n++}g=a.length;e(a.slice(f*c,(f+1)*c),g,!1,d)}else e([],null,
null,d)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var c=[],f={},e=0;e<a.length;e++)null==f[a[e]]&&(f[a[e]]="1",c.push(a[e]));return c.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,c){a=a.clone();null!=c&&(a.value=c);return a};Sidebar.prototype.showPopupMenuForEntry=function(a,c,f){};
Sidebar.prototype.addSearchPalette=function(a){var c=document.createElement("div");c.style.visibility="hidden";this.container.appendChild(c);var f=document.createElement("div");f.className="geSidebar";f.style.boxSizing="border-box";f.style.overflow="hidden";f.style.width="100%";f.style.padding="8px";f.style.paddingTop="14px";f.style.paddingBottom="0px";a||(f.style.display="none");var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.paddingBottom="8px";
E.stopPropagation();E.cancelBubble=!0});a=document.createElement("div");a.appendChild(f);this.container.appendChild(a);this.palettes.search=[c,a]};
Sidebar.prototype.insertSearchHint=function(a,c,f,e,g,d,k,n){0==g.length&&1==e&&(f=document.createElement("div"),f.className="geTitle",f.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(f,mxResources.get("noResultsFor",[c])),a.appendChild(f))};
Sidebar.prototype.addGeneralPalette=function(a){this.setCurrentSearchEntryLibrary("general","general");var c=this,f=parseInt(this.editorUi.editor.graph.defaultVertexStyle.fontSize);f=isNaN(f)?"":"fontSize="+Math.min(16,f)+";";var e=new mxCell("List Item",new mxGeometry(0,0,80,30),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;"+f);e.vertex=!0;f=[this.createVertexTemplateEntry("rounded=0;whiteSpace=wrap;html=1;",
g.vertex=!0;g.insert(c.cloneCell(e,"Item 1"));g.insert(c.cloneCell(e,"Item 2"));g.insert(c.cloneCell(e,"Item 3"));return c.createVertexTemplateFromCells([g],g.geometry.width,g.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return c.createVertexTemplateFromCells([c.cloneCell(e,"List Item")],e.geometry.width,e.geometry.height,"List Item")}),this.addEntry("curve",mxUtils.bind(this,function(){var g=new mxCell("",new mxGeometry(0,0,50,50),"curved=1;endArrow=classic;html=1;");
Sidebar.prototype.addMiscPalette=function(a){var c=this;this.setCurrentSearchEntryLibrary("general","misc");var f=[this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;",100,40,"Title","Title",null,null,"text heading title"),this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;",100,80,"<ul><li>Value 1</li><li>Value 2</li><li>Value 3</li></ul>",
this.addEntry("shape group container",function(){var e=new mxCell("Label",new mxGeometry(0,0,160,70),"html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;");e.vertex=!0;var g=new mxCell("",new mxGeometry(20,20,20,30),"triangle;html=1;whiteSpace=wrap;");g.vertex=!0;e.insert(g);return c.createVertexTemplateFromCells([e],e.geometry.width,e.geometry.height,"Shape Group")}),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;",120,
Sidebar.prototype.createAdvancedShapes=function(){var a=this,c=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");c.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(c,"Item 1"));f.insert(a.cloneCell(c,"Item 2"));
f.insert(a.cloneCell(c,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(c,"List Item")],c.geometry.width,c.geometry.height,"List Item")})]};
Sidebar.prototype.createAdvancedShapes=function(){var a=this,c=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");c.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(c,"Item 1"));f.insert(a.cloneCell(c,"Item 2"));
f.insert(a.cloneCell(c,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(c,"List Item")],c.geometry.width,c.geometry.height,"List Item")})]};
Sidebar.prototype.addUmlPalette=function(a){var c=this,f=new mxCell("+ field: type",new mxGeometry(0,0,100,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");f.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");
d.vertex=!0;d.insert(f.clone());d.insert(e.clone());d.insert(c.cloneCell(f,"+ method(type): type"));return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class")}),this.addEntry("uml static class section subsection",function(){var d=new mxCell("Classname",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");d.vertex=
!0;d.insert(f.clone());d.insert(f.clone());d.insert(f.clone());return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class 2")}),this.addEntry("uml static class item member method function variable field attribute label",function(){return c.createVertexTemplateFromCells([c.cloneCell(f,"+ item: attribute")],f.geometry.width,f.geometry.height,"Item 1")}),this.addEntry("uml static class item member method function variable field attribute label",function(){var d=new mxCell("item: attribute",
new mxGeometry(0,0,120,f.geometry.height),"label;fontStyle=0;strokeColor=none;fillColor=none;align=left;verticalAlign=top;overflow=hidden;spacingLeft=28;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;imageWidth=16;imageHeight=16;image="+c.gearImage);d.vertex=!0;return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Item 2")}),this.addEntry("uml static class divider hline line separator",function(){return c.createVertexTemplateFromCells([e.clone()],
e.geometry.width,e.geometry.height,"Divider")}),this.addEntry("uml static class spacer space gap separator",function(){var d=new mxCell("",new mxGeometry(0,0,20,14),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=4;spacingRight=4;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Spacer")}),this.createVertexTemplateEntry("text;align=center;fontStyle=1;verticalAlign=middle;spacingLeft=3;spacingRight=3;strokeColor=none;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;",
80,26,"Title","Title",null,null,"uml static class title label"),this.addEntry("uml static class component",function(){var d=new mxCell("&laquo;Annotation&raquo;<br/><b>Component</b>",new mxGeometry(0,0,180,90),"html=1;dropTarget=0;");d.vertex=!0;var k=new mxCell("",new mxGeometry(1,0,20,20),"shape=module;jettyWidth=8;jettyHeight=4;");k.vertex=!0;k.geometry.relative=!0;k.geometry.offset=new mxPoint(-27,7);d.insert(k);return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component")}),
return c.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component with Attributes")}),this.createVertexTemplateEntry("verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;html=1;",180,120,"Block","Block",null,null,"uml static class block"),this.createVertexTemplateEntry("shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;",100,50,"Module","Module",null,null,"uml static class module component"),
function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div>',new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 3")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div><hr size="1"/><div style="height:2px;"></div>',
new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 4")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method(): Type</p>',
new mxGeometry(0,0,160,90),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 5")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;Interface&gt;&gt;</i><br/><b>Interface</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field1: Type<br/>+ field2: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method1(Type): Type<br/>+ method2(Type, Type): Type</p>',
new mxGeometry(0,0,190,140),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return c.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Interface 2")}),this.createVertexTemplateEntry("shape=providedRequiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",20,20,"","Provided/Required Interface",null,null,"uml provided required interface lollipop notation"),this.createVertexTemplateEntry("shape=requiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",
10,20,"","Required Interface",null,null,"uml required interface lollipop notation"),this.addEntry("uml lollipop notation provided required interface",function(){return c.createVertexTemplateFromData("zVRNT8MwDP01uaLSMu6sfFxAmrQDcAytaQJZXLnu2u7XkzQZXTUmuIA4VIqf/ZzkvdQiyzf9HclaPWAJRmQ3IssJkcNq0+dgjEgTXYrsWqRp4j6R3p7Ino/ZpJYEln9CSANhK00LAQlAw4OJAGFrS/D1iciWSKywQivNPWLtwHMHvgHzsNY7z5Ato4MUb0zMgi2viLBzoUULAbnVxsSWzTtwofYBtlTACkhvgIHWtSy0rWKSJVXAJ5Lh4FBWMNMicAJ0cSzPWBW1uQN0fWlwJQRGst7OW8kmhNVn3Sd1hdp1TJMhVCzmhHipUDO54RYHm07Q6NHXfmV/65eS5jXXVJhj15yCNDz54GyxD58PwjL2v/SmMuE7POqSVdxj5vm/cK6PG4X/5deNvPjeSEfQdeOV75Rm8K/dZzo3LOaGSaMr69aF0wbIA00NhZfpVff+JSwJGr2TL2Nnr3jtbzDeabEUi2v/Tlo22kKO1gbq0Z8ZDwzE0J+cNidM2ROinF18CR6KeivQleI59pVrM8knfV04Dc1gx+FM/QA=",
k.geometry.setTerminalPoint(new mxPoint(15,90),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return c.createVertexTemplateFromCells([d,k],30,90,"Start")}),this.addEntry("uml activity state",function(){var d=new mxCell("Activity",new mxGeometry(0,0,120,40),"rounded=1;whiteSpace=wrap;html=1;arcSize=40;fontColor=#000000;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");
k.geometry.setTerminalPoint(new mxPoint(60,100),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return c.createVertexTemplateFromCells([d,k],120,100,"Activity")}),this.addEntry("uml activity composite state",function(){var d=new mxCell("Composite State",new mxGeometry(0,0,160,60),"swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=0;resizeLast=1;container=0;fontColor=#000000;collapsible=0;rounded=1;arcSize=30;strokeColor=#ff0000;fillColor=#ffffc0;swimlaneFillColor=#ffffc0;dropTarget=0;");
!0);return c.createVertexTemplateFromCells([d,k],160,120,"Composite State")}),this.addEntry("uml activity condition",function(){var d=new mxCell("Condition",new mxGeometry(0,0,80,40),"rhombus;whiteSpace=wrap;html=1;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("no",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(180,20),!1);k.geometry.relative=
!0;k.geometry.x=-1;k.edge=!0;d.insertEdge(k,!0);var n=new mxCell("yes",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=top;endArrow=open;endSize=8;strokeColor=#ff0000;");n.geometry.setTerminalPoint(new mxPoint(40,100),!1);n.geometry.relative=!0;n.geometry.x=-1;n.edge=!0;d.insertEdge(n,!0);return c.createVertexTemplateFromCells([d,k,n],180,100,"Condition")}),this.addEntry("uml activity fork join",function(){var d=new mxCell("",new mxGeometry(0,0,200,10),"shape=line;html=1;strokeWidth=6;strokeColor=#ff0000;");
d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(100,80),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return c.createVertexTemplateFromCells([d,k],200,80,"Fork/Join")}),this.createVertexTemplateEntry("ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;",30,30,"","End",null,null,"uml activity state end"),this.createVertexTemplateEntry("shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;",
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;startArrow=oval;endArrow=block;startSize=8;");k.geometry.setTerminalPoint(new mxPoint(-60,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);return c.createVertexTemplateFromCells([d,k],10,80,"Found Message")}),this.addEntry("uml sequence invoke call delegation synchronous invocation activation",function(){var d=new mxCell("",new mxGeometry(0,0,10,80),"html=1;points=[];perimeter=orthogonalPerimeter;");
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;");k.geometry.setTerminalPoint(new mxPoint(-70,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);var n=new mxCell("return",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;exitX=0;exitY=0.95;");n.geometry.setTerminalPoint(new mxPoint(-70,76),!1);n.geometry.relative=!0;n.edge=!0;d.insertEdge(n,!0);return c.createVertexTemplateFromCells([d,
!0;k.edge=!0;d.insertEdge(k,!1);return c.createVertexTemplateFromCells([d,k],10,60,"Self Call")}),this.addEntry("uml sequence invoke call delegation callback activation",function(){return c.createVertexTemplateFromData("xZRNT8MwDIZ/Ta6oaymD47rBTkiTuMAxW6wmIm0q19s6fj1OE3V0Y2iCA4dK8euP2I+riGxedUuUjX52CqzIHkU2R+conKpuDtaKNDFKZAuRpgl/In264J303qSRCDVdk5CGhJ20WwhKEFo62ChoqritxURkReNMTa2X80LkC68AmgoIkEWHpF3pamlXR7WIFwASdBeb7KXY4RIc5+KBQ/ZGkY4RYY5Egyl1zLqLmmyDXQ6Zx4n5EIf+HkB2BmAjrV3LzftPIPw4hgNn1pQ1a2tH5Cp2QK1miG7vNeu4iJe4pdeY2BtvbCQDGlAljMCQxBJotJ8rWCFYSWY3LvUdmZi68rvkkLiU6QnL1m1xAzHoBOdw61WEb88II9AW67/ydQ2wq1Cy1aAGvOrFfPh6997qDA3g+dxzv3nIL6MPU/8T+kMw8+m4QPgdfrEJNo8PSQj/+s58Ag==",
!0;d.edge=!0;return c.createEdgeTemplateFromCells([d],80,0,"Return")}),this.addEntry("uml relation",function(){var d=new mxCell("name",new mxGeometry(0,0,0,0),"endArrow=block;endFill=1;html=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.edge=!0;var k=new mxCell("1",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return c.createEdgeTemplateFromCells([d],160,0,"Relation 1")}),this.addEntry("uml association",function(){var d=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.edge=!0;var k=new mxCell("parent",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("child",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=bottom;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return c.createEdgeTemplateFromCells([d],160,0,"Association 1")}),this.addEntry("uml aggregation",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");
d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return c.createEdgeTemplateFromCells([d],160,0,"Aggregation 1")}),this.addEntry("uml composition",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");d.geometry.setTerminalPoint(new mxPoint(0,
0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return c.createEdgeTemplateFromCells([d],160,0,"Composition 1")}),this.addEntry("uml relation",function(){var d=new mxCell("Relation",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=
!0;d.edge=!0;var k=new mxCell("0..n",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("1",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return c.createEdgeTemplateFromCells([d],160,0,"Relation 2")}),this.createEdgeTemplateEntry("endArrow=open;endSize=12;dashed=1;html=1;",160,
160,0,"","Association 3",null,"uml association")];this.addPaletteFunctions("uml",mxResources.get("uml"),a||!1,g);this.setCurrentSearchEntryLibrary()};Sidebar.prototype.createTitle=function(a){var c=document.createElement("a");c.setAttribute("title",mxResources.get("sidebarTooltip"));c.className="geTitle";mxUtils.write(c,a);return c};
Sidebar.prototype.createThumb=function(a,c,f,e,g,d,k){this.graph.labelsVisible=null==d||d;d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;this.graph.view.scaleAndTranslate(1,0,0);this.graph.addCells(a);a=this.graph.getGraphBounds();var n=Math.floor(100*Math.min((c-2*this.thumbBorder)/a.width,(f-2*this.thumbBorder)/a.height))/100;this.graph.view.scaleAndTranslate(n,Math.floor((c-a.width*n)/2/n-a.x),Math.floor((f-a.height*n)/2/n-a.y));this.graph.dialect!=mxConstants.DIALECT_SVG||
mxClient.NO_FO||null==this.graph.view.getCanvas().ownerSVGElement?(n=this.graph.container.cloneNode(!1),n.innerHTML=this.graph.container.innerHTML):n=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0);this.graph.getModel().clear();mxClient.NO_FO=d;n.style.position="relative";n.style.overflow="hidden";n.style.left=this.thumbBorder+"px";n.style.top=this.thumbBorder+"px";n.style.width=c+"px";n.style.height=f+"px";n.style.visibility="";n.style.minWidth="";n.style.minHeight="";e.appendChild(n);
this.sidebarTitles&&null!=g&&0!=k&&(e.style.height=this.thumbHeight+0+this.sidebarTitleSize+8+"px",c=document.createElement("div"),c.style.color=Editor.isDarkMode()?"#A0A0A0":"#303030",c.style.fontSize=this.sidebarTitleSize+"px",c.style.textAlign="center",c.style.whiteSpace="nowrap",c.style.overflow="hidden",c.style.textOverflow="ellipsis",mxClient.IS_IE&&(c.style.height=this.sidebarTitleSize+12+"px"),c.style.paddingTop="4px",mxUtils.write(c,g),e.appendChild(c));return a};
Sidebar.prototype.createSection=function(a){return mxUtils.bind(this,function(){var c=document.createElement("div");c.setAttribute("title",a);c.style.textOverflow="ellipsis";c.style.whiteSpace="nowrap";c.style.textAlign="center";c.style.overflow="hidden";c.style.width="100%";c.style.padding="14px 0";mxUtils.write(c,a);return c})};
Sidebar.prototype.createItem=function(a,c,f,e,g,d,k,n){n=null!=n?n:!0;var u=document.createElement("a");u.className="geItem";u.style.overflow="hidden";var m=2*this.thumbBorder;u.style.width=this.thumbWidth+m+"px";u.style.height=this.thumbHeight+m+"px";u.style.padding=this.thumbPadding+"px";mxEvent.addListener(u,"click",function(x){mxEvent.consume(x)});m=a;a=this.graph.cloneCells(a);this.editorUi.insertHandler(m,null,this.graph.model,this.editorUi.editor.graph.defaultVertexStyle,this.editorUi.editor.graph.defaultEdgeStyle,
!0,!0);this.createThumb(m,this.thumbWidth,this.thumbHeight,u,c,f,e,g,d);var r=new mxRectangle(0,0,g,d);1<a.length||a[0].vertex?(e=this.createDragSource(u,this.createDropHandler(a,!0,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a),e.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})):null!=a[0]&&a[0].edge&&(e=this.createDragSource(u,this.createDropHandler(a,!1,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a));
!mxClient.IS_IOS&&n&&mxEvent.addGestureListeners(u,null,mxUtils.bind(this,function(x){mxEvent.isMouseEvent(x)&&this.showTooltip(u,a,r.width,r.height,c,f)}));return u};
Sidebar.prototype.updateShapes=function(a,c){var f=this.editorUi.editor.graph,e=f.getCellStyle(a),g=[];f.model.beginUpdate();try{for(var d=f.getModel().getStyle(a),k="shadow dashed dashPattern fontFamily fontSize fontColor align startFill startSize endFill endSize strokeColor strokeWidth fillColor gradientColor html part noEdgeStyle edgeStyle elbow childLayout recursiveResize container collapsible connectable comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),n=
0;n<c.length;n++){var u=c[n];if(f.getModel().isVertex(u)==f.getModel().isVertex(a)||f.getModel().isEdge(u)==f.getModel().isEdge(a)){var m=f.getCellStyle(c[n],!1);f.getModel().setStyle(u,d);if("1"==mxUtils.getValue(m,"composite","0"))for(var r=f.model.getChildCount(u);0<=r;r--)f.model.remove(f.model.getChildAt(u,r));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=e[mxConstants.STYLE_SHAPE]&&(f.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[u]),f.setCellStyles("participant",e[mxConstants.STYLE_SHAPE],
Sidebar.prototype.createDropHandler=function(a,c,f,e){f=null!=f?f:!0;return mxUtils.bind(this,function(g,d,k,n,u,m){for(m=m?null:mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d)?document.elementFromPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)):mxEvent.getSource(d);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&g.isEnabled()){a=g.getImportableCells(a);if(0<a.length){g.stopEditing();m=null==k||mxEvent.isAltDown(d)?!1:g.isValidDropTarget(k,a,d);var r=null;null==k||m||(k=null);if(!g.isCellLocked(k||
g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(c&&g.isSplitTarget(k,a,d)){var x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,K=g.cloneCells(a);g.splitEdge(k,K,null,n-e.width/2,u-e.height/2,C,F);r=K}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var E=g.layoutManager.getLayout(k);if(null!=E)for(x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,k=0;k<r.length;k++)E.moveCell(r[k],C,F)}!f||null!=d&&mxEvent.isShiftDown(d)||
Sidebar.prototype.createDragPreview=function(a,c){var f=document.createElement("div");f.className="geDragPreview";f.style.width=a+"px";f.style.height=c+"px";return f};
Sidebar.prototype.dropAndConnect=function(a,c,f,e,g){var d=this.getDropAndConnectGeometry(a,c[e],f,c),k=[];if(null!=d){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(c[e]),x=n.model.getParent(a),A=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(A=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var F=C=0;if(null!=k){var K=k.origin;C=K.x;F=K.y;var E=d.getTerminalPoint(!1);null!=
E&&(E.x+=K.x,E.y+=K.y)}var O=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&A),R=n.getCellAt((d.x+C+n.view.translate.x)*n.view.scale,(d.y+F+n.view.translate.y)*n.view.scale,null,null,null,function(aa,T,U){return!n.isContainer(aa.cell)});if(null!=R&&R!=x)k=n.view.getState(R),null!=k&&(K=k.origin,x=R,O=!0,n.model.isEdge(a)||(d.x-=K.x-C,d.y-=K.y-F));else if(!A||n.isTableRow(a)||n.isTableCell(a))d.x+=C,d.y+=F;C=r.x;F=r.y;n.model.isEdge(c[e])&&(F=C=0);k=c=n.importCells(c,
d.x-(O?C:0),d.y-(O?F:0),O?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,c[e],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(c[e])){n.model.setTerminal(c[e],a,!0);var Q=n.getCellGeometry(c[e]);Q.points=null;if(null!=Q.getTerminalPoint(!1))Q.setTerminalPoint(d.getTerminalPoint(!1),!1);else if(O&&n.model.isVertex(x)){var P=n.view.getState(x);K=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(c,K.x,K.y,null,null,!0)}}else r=n.getCellGeometry(c[e]),C=d.x-Math.round(r.x),F=
d.y-Math.round(r.y),d.x=Math.round(r.x),d.y=Math.round(r.y),n.model.setGeometry(c[e],d),n.cellsMoved(c,C,F,null,null,!0),k=c.slice(),u=1==k.length?k[0]:null,c.push(n.insertEdge(null,null,"",a,c[e],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",c))}catch(aa){this.editorUi.handleError(aa)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
Sidebar.prototype.getDropAndConnectGeometry=function(a,c,f,e){var g=this.editorUi.editor.graph,d=g.view,k=1<e.length,n=g.getCellGeometry(a);e=g.getCellGeometry(c);null!=n&&null!=e&&(e=e.clone(),g.model.isEdge(a)?(a=g.view.getState(a),n=a.absolutePoints,c=n[0],g=n[n.length-1],f==mxConstants.DIRECTION_NORTH?(e.x=c.x/d.scale-d.translate.x-e.width/2,e.y=c.y/d.scale-d.translate.y-e.height/2):(e.x=g.x/d.scale-d.translate.x-e.width/2,e.y=g.y/d.scale-d.translate.y-e.height/2)):(n.relative&&(a=g.view.getState(a),
n=n.clone(),n.x=(a.x-d.translate.x)/d.scale,n.y=(a.y-d.translate.y)/d.scale),d=g.defaultEdgeLength,g.model.isEdge(c)&&null!=e.getTerminalPoint(!0)&&null!=e.getTerminalPoint(!1)?(c=e.getTerminalPoint(!0),g=e.getTerminalPoint(!1),d=g.x-c.x,c=g.y-c.y,d=Math.sqrt(d*d+c*c),e.x=n.getCenterX(),e.y=n.getCenterY(),e.width=1,e.height=1,f==mxConstants.DIRECTION_NORTH?(e.height=d,e.y=n.y-d,e.setTerminalPoint(new mxPoint(e.x,e.y),!1)):f==mxConstants.DIRECTION_EAST?(e.width=d,e.x=n.x+n.width,e.setTerminalPoint(new mxPoint(e.x+
e.width/2+d:f==mxConstants.DIRECTION_SOUTH?e.y=e.y+n.height/2+e.height/2+d:f==mxConstants.DIRECTION_WEST&&(e.x=e.x-n.width/2-e.width/2-d),g.model.isEdge(c)&&null!=e.getTerminalPoint(!0)&&null!=c.getTerminal(!1)&&(n=g.getCellGeometry(c.getTerminal(!1)),null!=n&&(f==mxConstants.DIRECTION_NORTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()+n.height/2):f==mxConstants.DIRECTION_EAST?(e.x-=n.getCenterX()-n.width/2,e.y-=n.getCenterY()):f==mxConstants.DIRECTION_SOUTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()-n.height/
2):f==mxConstants.DIRECTION_WEST&&(e.x-=n.getCenterX()+n.width/2,e.y-=n.getCenterY()))))));return e};Sidebar.prototype.isDropStyleEnabled=function(a,c){var f=!0;null!=c&&1==a.length&&(a=this.graph.getCellStyle(a[c]),null!=a&&(f=mxUtils.getValue(a,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(a,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE));return f};
Sidebar.prototype.createDragSource=function(a,c,f,e,g){function d(Z,oa){var va=mxUtils.createImage(Z.src);va.style.width=Z.width+"px";va.style.height=Z.height+"px";null!=oa&&va.setAttribute("title",oa);mxUtils.setOpacity(va,Z==this.refreshTarget?30:20);va.style.position="absolute";va.style.cursor="crosshair";return va}function k(Z,oa,va,Ja){null!=Ja.parentNode&&(mxUtils.contains(va,Z,oa)?(mxUtils.setOpacity(Ja,100),L=Ja):mxUtils.setOpacity(Ja,Ja==fa?30:20));return va}for(var n=this.editorUi,u=n.editor.graph,
e&&null!=L&&null!=E&&L!=fa?(sa=Z.model.isEdge(E.cell)||null==m?r:m,Z.setSelectionCells(this.dropAndConnect(E.cell,e,I,sa,oa))):c.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(Z.view.getState(Z.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(Z,oa){F.isActive()&&F.reset()});var K=F.mouseDown;F.mouseDown=function(Z){mxEvent.isPopupTrigger(Z)||mxEvent.isMultiTouchEvent(Z)||u.isCellLocked(u.getDefaultParent())||(u.stopEditing(),
Sidebar.prototype.itemClicked=function(a,c,f,e){e=this.editorUi.editor.graph;e.container.focus();if(mxEvent.isAltDown(f)&&1==e.getSelectionCount()&&e.model.isVertex(e.getSelectionCell())){c=null;for(var g=0;g<a.length&&null==c;g++)e.model.isVertex(a[g])&&(c=g);null!=c&&(e.setSelectionCells(this.dropAndConnect(e.getSelectionCell(),a,mxEvent.isMetaDown(f)||mxEvent.isControlDown(f)?mxEvent.isShiftDown(f)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(f)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,c,f)),e.scrollCellToVisible(e.getSelectionCell()))}else mxEvent.isShiftDown(f)&&!e.isSelectionEmpty()?(f=e.getEditableCells(e.getSelectionCells()),this.updateShapes(a[0],f),e.scrollCellToVisible(f)):(a=mxEvent.isAltDown(f)?e.getFreeInsertPoint():e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(a,!0)),c.drop(e,f,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,c,f){var e=c.mouseDown,g=c.mouseMove,d=c.mouseUp,k=this.editorUi.editor.graph.tolerance,n=null,u=this;c.mouseDown=function(m){e.apply(this,arguments);n=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};c.mouseMove=function(m){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=n&&(Math.abs(n.x-mxEvent.getClientX(m))>k||Math.abs(n.y-mxEvent.getClientY(m))>
k)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));g.apply(this,arguments)};c.mouseUp=function(m){try{mxEvent.isPopupTrigger(m)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||u.itemClicked(f,c,m,a),d.apply(c,arguments),mxUtils.setOpacity(a,100),n=null,u.currentElt=a}catch(r){c.reset(),u.editorUi.handleError(r)}}};
Sidebar.prototype.createVertexTemplateEntry=function(a,c,f,e,g,d,k,n){null!=n&&null!=g&&(n+=" "+g);n=null!=n&&0<n.length?n:null!=g?g.toLowerCase():"";return this.addEntry(n,mxUtils.bind(this,function(){return this.createVertexTemplate(a,c,f,e,g,d,k)}))};Sidebar.prototype.createVertexTemplate=function(a,c,f,e,g,d,k,n,u){a=[new mxCell(null!=e?e:"",new mxGeometry(0,0,c,f),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,c,f,g,d,k,n,u)};
Sidebar.prototype.createVertexTemplateFromData=function(a,c,f,e,g,d,k,n){a=mxUtils.parseXml(Graph.decompress(a));var u=new mxCodec(a),m=new mxGraphModel;u.decode(a.documentElement,m);a=this.graph.cloneCells(m.root.getChildAt(0).children);return this.createVertexTemplateFromCells(a,c,f,e,g,d,k,n)};Sidebar.prototype.createVertexTemplateFromCells=function(a,c,f,e,g,d,k,n){return this.createItem(a,e,g,d,c,f,k,n)};
Sidebar.prototype.createEdgeTemplateEntry=function(a,c,f,e,g,d,k,n,u){k=null!=k&&0<k.length?k:g.toLowerCase();return this.addEntry(k,mxUtils.bind(this,function(){return this.createEdgeTemplate(a,c,f,e,g,d,n,u)}))};
Sidebar.prototype.createEdgeTemplate=function(a,c,f,e,g,d,k,n){a=new mxCell(null!=e?e:"",new mxGeometry(0,0,c,f),a);a.geometry.setTerminalPoint(new mxPoint(0,f),!0);a.geometry.setTerminalPoint(new mxPoint(c,0),!1);a.geometry.relative=!0;a.edge=!0;return this.createEdgeTemplateFromCells([a],c,f,g,d,k,n)};Sidebar.prototype.createEdgeTemplateFromCells=function(a,c,f,e,g,d,k,n){return this.createItem(a,e,g,null!=n?n:!0,c,f,d,k)};
Sidebar.prototype.addPaletteFunctions=function(a,c,f,e){this.addPalette(a,c,f,mxUtils.bind(this,function(g){for(var d=0;d<e.length;d++)g.appendChild(e[d](g))}))};
Sidebar.prototype.addPalette=function(a,c,f,e){c=this.createTitle(c);this.container.appendChild(c);var g=document.createElement("div");g.className="geSidebar";mxClient.IS_POINTER&&(g.style.touchAction="none");f?(e(g),e=null):g.style.display="none";this.addFoldingHandler(c,g,e);f=document.createElement("div");f.appendChild(g);this.container.appendChild(f);null!=a&&(this.palettes[a]=[c,f]);return g};
Sidebar.prototype.addFoldingHandler=function(a,c,f){var e=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==c.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if("none"==c.style.display){if(e)c.style.display="block";else if(e=!0,null!=f){a.style.cursor="wait";var d=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){c.style.display="block";a.style.cursor="";a.innerHTML=d;var k=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;f(c,a);mxClient.NO_FO=k},mxClient.IS_FF?20:0)}else c.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",c.style.display="none";mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(g){g.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var c=this.palettes[a];if(null!=c){this.palettes[a]=null;for(a=0;a<c.length;a++)this.container.removeChild(c[a]);return!0}return!1};
Sidebar.prototype.addImagePalette=function(a,c,f,e,g,d,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var A=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=A?A:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+e,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=d?d[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,c,!1,n)};
Sidebar.prototype.getTagsForStencil=function(a,c,f){a=a.split(".");for(var e=1;e<a.length;e++)a[e]=a[e].replace(/_/g," ");a.push(c.replace(/_/g," "));null!=f&&a.push(f);return a.slice(1,a.length)};
Sidebar.prototype.addStencilPalette=function(a,c,f,e,g,d,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,A,C,F,K){if(null==g||0>mxUtils.indexOf(g,A)){C=this.getTagsForStencil(x,A);var E=null!=n?n[A]:null;null!=E&&C.push(E);r.push(this.createVertexTemplateEntry("shape="+x+A.toLowerCase()+e,Math.round(F*k),Math.round(K*k),"",A.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
!0,!0);this.addPaletteFunctions(a,c,!1,r)}else this.addPalette(a,c,!1,mxUtils.bind(this,function(x){null==e&&(e="");null!=d&&d.call(this,x);if(null!=u)for(var A=0;A<u.length;A++)u[A](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,F,K,E,O){(null==g||0>mxUtils.indexOf(g,F))&&x.appendChild(this.createVertexTemplate("shape="+C+F.toLowerCase()+e,Math.round(E*k),Math.round(O*k),"",F.replace(/_/g," "),!0))}),!0)}))};
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};(function(){var a=[["nbsp","160"],["shy","173"]],c=mxUtils.parseXml;mxUtils.parseXml=function(f){for(var e=0;e<a.length;e++)f=f.replace(new RegExp("&"+a[e][0]+";","g"),"&#"+a[e][1]+";");return c(f)}})();
Date.prototype.toISOString||function(){function a(c){c=String(c);1===c.length&&(c="0"+c);return c}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,c=function(e){return"function"===typeof e||"[object Function]"===a.call(e)},f=Math.pow(2,53)-1;return function(e){var g=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var d=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof d){if(!c(d))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
arguments[2])}var n=Number(g.length);n=isNaN(n)?0:0!==n&&isFinite(n)?(0<n?1:-1)*Math.floor(Math.abs(n)):n;n=Math.min(Math.max(n,0),f);for(var u=c(this)?Object(new this(n)):Array(n),m=0,r;m<n;)r=g[m],u[m]=d?"undefined"===typeof k?d(r,m):d.call(k,r,m):r,m+=1;u.length=n;return u}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(c){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,c,f){return null};
Graph=function(a,c,f,e,g,d){mxGraph.call(this,a,c,f,e);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=d?d:!1;a=this.baseUrl;c=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<c&&(c=a.indexOf("/",c+2),0<c&&(this.domainUrl=a.substring(0,c)),c=a.lastIndexOf("/"),0<c&&(this.domainPathUrl=a.substring(0,c+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
Graph.createOffscreenGraph=function(a){var c=new Graph(document.createElement("div"));c.stylesheet.styles=mxUtils.clone(a.styles);c.resetViewOnRootChange=!1;c.setConnectable(!1);c.gridEnabled=!1;c.autoScroll=!1;c.setTooltips(!1);c.setEnabled(!1);c.container.style.visibility="hidden";c.container.style.position="absolute";c.container.style.overflow="hidden";c.container.style.height="1px";c.container.style.width="1px";return c};
Graph.createSvgImage=function(a,c,f,e,g){f=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+c+'px" '+(null!=e&&null!=g?'viewBox="0 0 '+e+" "+g+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,c)};
Graph.createSvgNode=function(a,c,f,e,g){var d=mxUtils.createXmlDocument(),k=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"svg"):d.createElement("svg");null!=g&&(null!=k.style?k.style.backgroundColor=g:k.setAttribute("style","background-color:"+g));null==d.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);k.setAttribute("version","1.1");
k.setAttribute("width",f+"px");k.setAttribute("height",e+"px");k.setAttribute("viewBox",a+" "+c+" "+f+" "+e);d.appendChild(k);return k};Graph.htmlToPng=function(a,c,f,e){var g=document.createElement("canvas");g.width=c;g.height=f;var d=document.createElement("img");d.onload=mxUtils.bind(this,function(){g.getContext("2d").drawImage(d,0,0);e(g.toDataURL())});d.src="data:image/svg+xml,"+encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml"><style>em{color:red;}</style><em>I</em> lick <span>cheese</span></div></foreignObject></svg>')};
Graph.zapGremlins=function(a){for(var c=0,f=[],e=0;e<a.length;e++){var g=a.charCodeAt(e);(32<=g||9==g||10==g||13==g)&&65535!=g&&65534!=g||(f.push(a.substring(c,e)),c=e+1)}0<c&&c<a.length&&f.push(a.substring(c));return 0==f.length?a:f.join("")};Graph.stringToBytes=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=a.charCodeAt(f);return c};Graph.bytesToString=function(a){for(var c=Array(a.length),f=0;f<a.length;f++)c[f]=String.fromCharCode(a[f]);return c.join("")};
Graph.base64EncodeUnicode=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(c,f){return String.fromCharCode(parseInt(f,16))}))};Graph.base64DecodeUnicode=function(a){return decodeURIComponent(Array.prototype.map.call(atob(a),function(c){return"%"+("00"+c.charCodeAt(0).toString(16)).slice(-2)}).join(""))};Graph.compressNode=function(a,c){a=mxUtils.getXml(a);return Graph.compress(c?a:Graph.zapGremlins(a))};
Graph.arrayBufferToString=function(a){var c="";a=new Uint8Array(a);for(var f=a.byteLength,e=0;e<f;e++)c+=String.fromCharCode(a[e]);return c};Graph.stringToArrayBuffer=function(a){return Uint8Array.from(a,function(c){return c.charCodeAt(0)})};
Graph.arrayBufferIndexOfString=function(a,c,f){var e=c.charCodeAt(0),g=1,d=-1;for(f=f||0;f<a.byteLength;f++)if(a[f]==e){d=f;break}for(f=d+1;-1<d&&f<a.byteLength&&f<d+c.length-1;f++){if(a[f]!=c.charCodeAt(g))return Graph.arrayBufferIndexOfString(a,c,d+1);g++}return g==c.length-1?d:-1};Graph.compress=function(a,c){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=c?pako.deflate(encodeURIComponent(a)):pako.deflateRaw(encodeURIComponent(a));return btoa(Graph.arrayBufferToString(new Uint8Array(a)))};
Graph.decompress=function(a,c,f){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=Graph.stringToArrayBuffer(atob(a));c=decodeURIComponent(c?pako.inflate(a,{to:"string"}):pako.inflateRaw(a,{to:"string"}));return f?c:Graph.zapGremlins(c)};
Graph.fadeNodes=function(a,c,f,e,g){g=null!=g?g:1E3;Graph.setTransitionForNodes(a,null);Graph.setOpacityForNodes(a,c);window.setTimeout(function(){Graph.setTransitionForNodes(a,"all "+g+"ms ease-in-out");Graph.setOpacityForNodes(a,f);window.setTimeout(function(){Graph.setTransitionForNodes(a,null);null!=e&&e()},g)},0)};Graph.removeKeys=function(a,c){for(var f in a)c(f)&&delete a[f]};
Graph.setTransitionForNodes=function(a,c){for(var f=0;f<a.length;f++)mxUtils.setPrefixedStyle(a[f].style,"transition",c)};Graph.setOpacityForNodes=function(a,c){for(var f=0;f<a.length;f++)a[f].style.opacity=c};Graph.removePasteFormatting=function(a){for(;null!=a;)null!=a.firstChild&&Graph.removePasteFormatting(a.firstChild),a.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=a.style&&(a.style.whiteSpace="","#000000"==a.style.color&&(a.style.color="")),a=a.nextSibling};
Graph.sanitizeHtml=function(a,c){return Graph.domPurify(a,!1)};Graph.sanitizeLink=function(a){var c=document.createElement("a");c.setAttribute("href",a);Graph.sanitizeNode(c);return c.getAttribute("href")};Graph.sanitizeNode=function(a){return Graph.domPurify(a,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(a){a.hasAttribute("xlink:href")&&!a.getAttribute("xlink:href").match(/^#/)&&a.remove()});
Graph.domPurify=function(a,c){window.DOM_PURIFY_CONFIG.IN_PLACE=c;return DOMPurify.sanitize(a,window.DOM_PURIFY_CONFIG)};
Graph.clipSvgDataUri=function(a,c){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=a&&"data:image/svg+xml;base64,"==a.substring(0,26))try{var f=document.createElement("div");f.style.position="absolute";f.style.visibility="hidden";var e=decodeURIComponent(escape(atob(a.substring(26)))),g=e.indexOf("<svg");if(0<=g){f.innerHTML=e.substring(g);Graph.sanitizeNode(f);var d=f.getElementsByTagName("svg");if(0<d.length){if(c||null!=d[0].getAttribute("preserveAspectRatio")){document.body.appendChild(f);try{e=
c=1;var k=d[0].getAttribute("width"),n=d[0].getAttribute("height");k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN;n=null!=n&&"%"!=n.charAt(n.length-1)?parseFloat(n):NaN;var u=d[0].getAttribute("viewBox");if(null!=u&&!isNaN(k)&&!isNaN(n)){var m=u.split(" ");4<=u.length&&(c=parseFloat(m[2])/k,e=parseFloat(m[3])/n)}var r=d[0].getBBox();0<r.width&&0<r.height&&(f.getElementsByTagName("svg")[0].setAttribute("viewBox",r.x+" "+r.y+" "+r.width+" "+r.height),f.getElementsByTagName("svg")[0].setAttribute("width",
r.width/c),f.getElementsByTagName("svg")[0].setAttribute("height",r.height/e))}catch(x){}finally{document.body.removeChild(f)}}a=Editor.createSvgDataUri(mxUtils.getXml(d[0]))}}}catch(x){}return a};Graph.stripQuotes=function(a){null!=a&&("'"==a.charAt(0)&&(a=a.substring(1)),"'"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)),'"'==a.charAt(0)&&(a=a.substring(1)),'"'==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)));return a};
Graph.createRemoveIcon=function(a,c){var f=document.createElement("img");f.setAttribute("src",Dialog.prototype.clearImage);f.setAttribute("title",a);f.setAttribute("width","13");f.setAttribute("height","10");f.style.marginLeft="4px";f.style.marginBottom="-1px";f.style.cursor="pointer";mxEvent.addListener(f,"click",c);return f};Graph.isPageLink=function(a){return null!=a&&"data:page/id,"==a.substring(0,13)};Graph.isLink=function(a){return null!=a&&Graph.linkPattern.test(a)};
x&&x!=e.node;){if("a"==x.nodeName.toLowerCase()){f.view.graph.labelLinkClicked(f,x,r);break}x=x.parentNode}});mxEvent.addGestureListeners(e.node,n,u,m);mxEvent.addListener(e.node,"click",function(r){mxEvent.consume(r)})};if(null!=this.tooltipHandler){var c=this.tooltipHandler.init;this.tooltipHandler.init=function(){c.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(f){var e=mxEvent.getSource(f);"A"==e.nodeName&&(e=e.getAttribute("href"),null!=
u)}return k};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var c=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(k){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);c.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),
Graph.prototype.labelLinkClicked=function(a,c,f){c=c.getAttribute("href");if(null!=c&&!this.isCustomLink(c)&&(mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(c)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(c),a);mxEvent.consume(f)}};
Graph.prototype.openLink=function(a,c,f){var e=window;try{if(a=Graph.sanitizeLink(a),null!=a)if("_self"==c&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==c&&window==window.top){var g=a.split("#")[1];window.location.hash=="#"+g&&(window.location.hash="");window.location.hash=g}else e=window.open(a,null!=c?c:"_blank"),null==e||f||(e.opener=null)}catch(d){}return e};
Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.hasLayout=function(a){return null!=this.graph.getCellStyle(a).childLayout};this.layoutManager.getLayout=function(a,c){var f=this.graph.model.getParent(a);if(!this.graph.isCellCollapsed(a)&&(c!=mxEvent.BEGIN_UPDATE||this.hasLayout(f,c))){a=this.graph.getCellStyle(a);if("stackLayout"==a.childLayout)return c=new mxStackLayout(this.graph,!0),c.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax",
"1"),c.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),c.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),c.resizeLast="1"==mxUtils.getValue(a,"resizeLast","0"),c.spacing=a.stackSpacing||c.spacing,c.border=a.stackBorder||c.border,c.marginLeft=a.marginLeft||0,c.marginRight=a.marginRight||0,c.marginTop=a.marginTop||0,c.marginBottom=a.marginBottom||0,c.allowGaps=a.allowGaps||0,c.fill=!0,c.allowGaps&&(c.gridSize=parseFloat(mxUtils.getValue(a,"stackUnitSize",20))),c;if("treeLayout"==
a.childLayout)return c=new mxCompactTreeLayout(this.graph),c.horizontal="1"==mxUtils.getValue(a,"horizontalTree","1"),c.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),c.groupPadding=mxUtils.getValue(a,"parentPadding",20),c.levelDistance=mxUtils.getValue(a,"treeLevelDistance",30),c.maintainParentLocation=!0,c.edgeRouting=!1,c.resetEdges=!1,c;if("flowLayout"==a.childLayout)return c=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),c.resizeParent=
"1"==mxUtils.getValue(a,"resizeParent","1"),c.parentBorder=mxUtils.getValue(a,"parentPadding",20),c.maintainParentLocation=!0,c.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),c.interRankCellSpacing=mxUtils.getValue(a,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),c.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),c.parallelEdgeSpacing=mxUtils.getValue(a,
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),c;if("circleLayout"==a.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==a.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==a.childLayout)return new TableLayout(this.graph)}return null}};
Graph.prototype.getDataForCells=function(a){for(var c=[],f=0;f<a.length;f++){var e=null!=a[f].value?a[f].value.attributes:null,g={};g.id=a[f].id;if(null!=e)for(var d=0;d<e.length;d++)g[e[d].nodeName]=e[d].nodeValue;else g.label=this.convertValueToString(a[f]);c.push(g)}return c};
Graph.prototype.getNodesForCells=function(a){for(var c=[],f=0;f<a.length;f++){var e=this.view.getState(a[f]);if(null!=e){for(var g=this.cellRenderer.getShapesForState(e),d=0;d<g.length;d++)null!=g[d]&&null!=g[d].node&&c.push(g[d].node);null!=e.control&&null!=e.control.node&&c.push(e.control.node)}}return c};
Graph.prototype.createWipeAnimations=function(a,c){for(var f=[],e=0;e<a.length;e++){var g=this.view.getState(a[e]);null!=g&&null!=g.shape&&(this.model.isEdge(g.cell)&&null!=g.absolutePoints&&1<g.absolutePoints.length?f.push(this.createEdgeWipeAnimation(g,c)):this.model.isVertex(g.cell)&&null!=g.shape.bounds&&f.push(this.createVertexWipeAnimation(g,c)))}return f};
Graph.prototype.createEdgeWipeAnimation=function(a,c){var f=a.absolutePoints.slice(),e=a.segments,g=a.length,d=f.length;return{execute:mxUtils.bind(this,function(k,n){if(null!=a.shape){var u=[f[0]];n=k/n;c||(n=1-n);for(var m=g*n,r=1;r<d;r++)if(m<=e[r-1]){u.push(new mxPoint(f[r-1].x+(f[r].x-f[r-1].x)*m/e[r-1],f[r-1].y+(f[r].y-f[r-1].y)*m/e[r-1]));break}else m-=e[r-1],u.push(f[r]);a.shape.points=u;a.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=
a.text.node&&(a.text.node.style.opacity=n)}}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.points=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),c?1:0))})}};
Graph.prototype.createVertexWipeAnimation=function(a,c){var f=new mxRectangle.fromRectangle(a.shape.bounds);return{execute:mxUtils.bind(this,function(e,g){null!=a.shape&&(g=e/g,c||(g=1-g),a.shape.bounds=new mxRectangle(f.x,f.y,f.width*g,f.height),a.shape.redraw(),0==e&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=g))}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.bounds=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&
(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),c?1:0))})}};Graph.prototype.executeAnimations=function(a,c,f,e){f=null!=f?f:30;e=null!=e?e:30;var g=null,d=0,k=mxUtils.bind(this,function(){if(d==f||this.stoppingCustomActions){window.clearInterval(g);for(var n=0;n<a.length;n++)a[n].stop();null!=c&&c()}else for(n=0;n<a.length;n++)a[n].execute(d,f);d++});g=window.setInterval(k,e);k()};
Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),c=this.getGraphBounds();if(0==c.width||0==c.height)return new mxRectangle(0,0,1,1);var f=Math.floor(Math.ceil(c.x/this.view.scale-this.view.translate.x)/a.width),e=Math.floor(Math.ceil(c.y/this.view.scale-this.view.translate.y)/a.height);return new mxRectangle(f,e,Math.ceil((Math.floor((c.x+c.width)/this.view.scale)-this.view.translate.x)/a.width)-f,Math.ceil((Math.floor((c.y+c.height)/this.view.scale)-this.view.translate.y)/a.height)-
e)};Graph.prototype.sanitizeHtml=function(a,c){return Graph.sanitizeHtml(a,c)};Graph.prototype.updatePlaceholders=function(){var a=!1,c;for(c in this.model.cells){var f=this.model.cells[c];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")};
Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isAltDown(a)&&!mxEvent.isShiftDown(a)&&!mxEvent.isControlDown(a)&&!mxEvent.isMetaDown(a)};Graph.prototype.isEdgeIgnored=function(a){var c=!1;null!=a&&(a=this.getCurrentCellStyle(a),c="1"==mxUtils.getValue(a,"ignoreEdge","0"));return c};Graph.prototype.isSplitTarget=function(a,c,f){return!this.model.isEdge(c[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};
Graph.prototype.getLabel=function(a){var c=mxGraph.prototype.getLabel.apply(this,arguments);null!=c&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(c=this.replacePlaceholders(a,c));return c};Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(c,"labelMovable","0")))};
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var c=this.getLinkForCell(a);if(null!=c)return c;a=this.model.getParent(a)}while(null!=a);return null};
Graph.prototype.getGlobalVariable=function(a){var c=null;"date"==a?c=(new Date).toLocaleDateString():"time"==a?c=(new Date).toLocaleTimeString():"timestamp"==a?c=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),c=this.formatDate(new Date,a));return c};
Graph.prototype.formatDate=function(a,c,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
/\d/.test(a)||(c=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");c=String(e.masks[c]||c||e.masks["default"]);"UTC:"==c.slice(0,4)&&(c=c.slice(4),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),A=a[n+"Hours"](),C=a[n+"Minutes"](),F=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var K=f?0:a.getTimezoneOffset(),E={d:u,dd:k(u),ddd:e.i18n.dayNames[m],dddd:e.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:e.i18n.monthNames[r],mmmm:e.i18n.monthNames[r+
12],yy:String(x).slice(2),yyyy:x,h:A%12||12,hh:k(A%12||12),H:A,HH:k(A),M:C,MM:k(C),s:F,ss:k(F),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>A?"a":"p",tt:12>A?"am":"pm",T:12>A?"A":"P",TT:12>A?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(d,""),o:(0<K?"-":"+")+k(100*Math.floor(Math.abs(K)/60)+Math.abs(K)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return c.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(O){return O in E?E[O]:O.slice(1,
O.length-1)})};Graph.prototype.getLayerForCells=function(a){var c=null;if(0<a.length){for(c=a[0];!this.model.isLayer(c);)c=this.model.getParent(c);for(var f=1;f<a.length;f++)if(!this.model.isAncestor(c,a[f])){c=null;break}}return c};
Graph.prototype.createLayersDialog=function(a,c){var f=document.createElement("div");f.style.position="absolute";for(var e=this.getModel(),g=e.getChildCount(e.root),d=0;d<g;d++)mxUtils.bind(this,function(k){function n(){e.isVisible(k)?(r.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(m,75)):(r.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(m,25))}var u=this.convertValueToString(k)||mxResources.get("background")||"Background",m=document.createElement("div");m.style.overflow=
"hidden";m.style.textOverflow="ellipsis";m.style.padding="2px";m.style.whiteSpace="nowrap";m.style.cursor="pointer";m.setAttribute("title",mxResources.get(e.isVisible(k)?"hideIt":"show",[u]));var r=document.createElement("img");r.setAttribute("draggable","false");r.setAttribute("align","absmiddle");r.setAttribute("border","0");r.style.position="relative";r.style.width="16px";r.style.padding="0px 6px 0 4px";c&&(r.style.filter="invert(100%)",r.style.top="-2px");m.appendChild(r);mxUtils.write(m,u);f.appendChild(m);
Graph.prototype.replacePlaceholders=function(a,c,f,e){e=[];if(null!=c){for(var g=0;match=this.placeholderPattern.exec(c);){var d=match[0];if(2<d.length&&"%label%"!=d&&"%tooltip%"!=d){var k=null;if(match.index>g&&"%"==c.charAt(match.index-1))k=d.substring(1);else{var n=d.substring(1,d.length-1);if("id"==n)k=a.id;else if(0>n.indexOf("{"))for(var u=a;null==k&&null!=u;)null!=u.value&&"object"==typeof u.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=u.getAttribute(n+"_"+Graph.diagramLanguage)),
null==k&&(k=u.hasAttribute(n)?null!=u.getAttribute(n)?u.getAttribute(n):"":null)),u=this.model.getParent(u);null==k&&(k=this.getGlobalVariable(n));null==k&&null!=f&&(k=f[n])}e.push(c.substring(g,match.index)+(null!=k?k:d));g=match.index+d.length}}e.push(c.substring(g))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var c=[],f=0;f<a.length;f++){var e=this.model.getCell(a[f].id);null!=e&&c.push(e)}this.setSelectionCells(c)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(a,c){mxEvent.isShiftDown(c)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),a)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(a,c){var f=!1;if(this.isTableCell(a)&&this.isTableCell(c)){var e=this.model.getParent(a),g=this.model.getParent(e),d=this.model.getParent(c);if(g==this.model.getParent(d)){a=e.getIndex(a);e=g.getIndex(e);var k=d.getIndex(c),n=g.getIndex(d);d=Math.max(e,n);c=Math.min(a,k);a=Math.max(a,k);k=[];for(e=Math.min(e,n);e<=d;e++){n=this.model.getChildAt(g,e);for(var u=c;u<=a;u++)k.push(this.model.getChildAt(n,u))}0<k.length&&(1<k.length||1<this.getSelectionCount()||
Graph.prototype.snapCellsToGrid=function(a,c){this.getModel().beginUpdate();try{for(var f=0;f<a.length;f++){var e=a[f],g=this.getCellGeometry(e);if(null!=g){g=g.clone();if(this.getModel().isVertex(e))g.x=Math.round(g.x/c)*c,g.y=Math.round(g.y/c)*c,g.width=Math.round(g.width/c)*c,g.height=Math.round(g.height/c)*c;else if(this.getModel().isEdge(e)&&null!=g.points)for(var d=0;d<g.points.length;d++)g.points[d].x=Math.round(g.points[d].x/c)*c,g.points[d].y=Math.round(g.points[d].y/c)*c;this.getModel().setGeometry(e,
g)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,c,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(c)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};
Graph.prototype.isCloneConnectSource=function(a){var c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(a)));return this.isTableRow(a)||this.isTableCell(a)||null!=c&&c.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(a,c,f,e,g,d,k,n){d=d?d:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var u=this.isCloneConnectSource(a),m=u?a:this.getCompositeParent(a),r=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(m.geometry.x,m.geometry.y);c==mxConstants.DIRECTION_NORTH?(r.x+=m.geometry.width/2,r.y-=f):c==
mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=c==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var A=this.view.translate;m=A.x*f;A=A.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,A=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);d=d?null:(new mxRectangle(m+r.x*f,A+r.y*f)).grow(40*f);d=null!=d?
!mxEvent.isShiftDown(e)||mxEvent.isControlDown(e)||g;O&&("1"!=urlParams.sketch||g)&&(c==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=c==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var R=[],Q=F;F=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==F&&u){this.model.beginUpdate();try{if(null==Q&&O){var aa=this.getAbsoluteParent(null!=P?P:a);aa=u?a:this.getCompositeParent(aa);Q=null!=P?P:this.duplicateCells([aa],
!1)[0];null!=P&&this.addCells([Q],this.model.getParent(a),null,null,null,!0);var T=this.getCellGeometry(Q);null!=T&&(null!=P&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?r.y-=T.height/2:c==mxConstants.DIRECTION_SOUTH?r.y+=T.height/2:r.x=c==mxConstants.DIRECTION_WEST?r.x-T.width/2:r.x+T.width/2),T.x=r.x-T.width/2,T.y=r.y-T.height/2);null!=C?(this.addCells([Q],C,null,null,null,!0),F=null):O&&!u&&this.addCells([Q],this.getDefaultParent(),null,null,null,!0)}var U=mxEvent.isControlDown(e)&&
mxEvent.isShiftDown(e)&&O||null==F&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,Q,this.createCurrentEdgeStyle());if(null!=U&&this.connectionHandler.insertBeforeSource){var fa=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=U.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==U.parent&&(fa=P.parent.getIndex(P),this.model.add(P.parent,U,fa))}null==F&&null!=Q&&null!=a.parent&&u&&c==mxConstants.DIRECTION_WEST&&(fa=a.parent.getIndex(a),this.model.add(a.parent,
Graph.prototype.getIndexableText=function(a){a=null!=a?a:this.model.getDescendants(this.model.root);for(var c=document.createElement("div"),f=[],e,g=0;g<a.length;g++)if(e=a[g],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(c.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([c])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&f.push(e);return f.join(" ")};
Graph.prototype.convertValueToString=function(a){var c=this.model.getValue(a);if(null!=c&&"object"==typeof c){var f=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){c=a.getAttribute("placeholder");for(var e=a;null==f&&null!=e;)null!=e.value&&"object"==typeof e.value&&(f=e.hasAttribute(c)?null!=e.getAttribute(c)?e.getAttribute(c):"":null),e=this.model.getParent(e)}else f=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=c.getAttribute("label_"+Graph.diagramLanguage)),
null==f&&(f=c.getAttribute("label")||"");return f||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getLinkTargetForCell=function(a){return null!=a.value&&"object"==typeof a.value?a.value.getAttribute("linkTarget"):null};Graph.prototype.postProcessCellStyle=function(a,c){return this.updateHorizontalStyle(a,this.replaceDefaultColors(a,mxGraph.prototype.postProcessCellStyle.apply(this,arguments)))};
Graph.prototype.updateHorizontalStyle=function(a,c){if(null!=a&&null!=c&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(a=this.layoutManager.getLayout(f),null!=a&&a.constructor==mxStackLayout&&(c[mxConstants.STYLE_HORIZONTAL]=!a.horizontal))}return c};
Graph.prototype.replaceDefaultColors=function(a,c){if(null!=c){a=mxUtils.hex2rgb(this.shapeBackgroundColor);var f=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(c,mxConstants.STYLE_FONTCOLOR,f);this.replaceDefaultColor(c,mxConstants.STYLE_FILLCOLOR,a);this.replaceDefaultColor(c,mxConstants.STYLE_STROKECOLOR,f);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BORDER,f);this.replaceDefaultColor(c,mxConstants.STYLE_IMAGE_BACKGROUND,a);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BORDERCOLOR,
f);this.replaceDefaultColor(c,mxConstants.STYLE_SWIMLANE_FILLCOLOR,a);this.replaceDefaultColor(c,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,a)}return c};Graph.prototype.replaceDefaultColor=function(a,c,f){null!=a&&"default"==a[c]&&null!=f&&(a[c]=f)};
Graph.prototype.updateAlternateBounds=function(a,c,f){if(null!=a&&null!=c&&null!=this.layoutManager&&null!=c.alternateBounds){var e=this.layoutManager.getLayout(this.model.getParent(a));null!=e&&e.constructor==mxStackLayout&&(e.horizontal?c.alternateBounds.height=0:c.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a,c){return mxEvent.isShiftDown(a)||"1"==mxUtils.getValue(c.style,"moveCells","0")};
Graph.prototype.foldCells=function(a,c,f,e,g){c=null!=c?c:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var d=0;d<f.length;d++){var k=this.view.getState(f[d]),n=this.getCellGeometry(f[d]);if(null!=k&&null!=n){var u=Math.round(n.width-k.width/this.view.scale),m=Math.round(n.height-k.height/this.view.scale);if(0!=m||0!=u){var r=this.model.getParent(f[d]),x=this.layoutManager.getLayout(r);
Graph.prototype.moveSiblings=function(a,c,f,e){this.model.beginUpdate();try{var g=this.getCellsBeyond(a.x,a.y,c,!0,!0);for(c=0;c<g.length;c++)if(g[c]!=a.cell){var d=this.view.getState(g[c]),k=this.getCellGeometry(g[c]);null!=d&&null!=k&&(k=k.clone(),k.translate(Math.round(f*Math.max(0,Math.min(1,(d.x-a.x)/a.width))),Math.round(e*Math.max(0,Math.min(1,(d.y-a.y)/a.height)))),this.model.setGeometry(g[c],k))}}finally{this.model.endUpdate()}};
Graph.prototype.resizeParentStacks=function(a,c,f,e){if(null!=this.layoutManager&&null!=c&&c.constructor==mxStackLayout&&!c.resizeLast){this.model.beginUpdate();try{for(var g=c.horizontal;null!=a&&null!=c&&c.constructor==mxStackLayout&&c.horizontal==g&&!c.resizeLast;){var d=this.getCellGeometry(a),k=this.view.getState(a);null!=k&&null!=d&&(d=d.clone(),c.horizontal?d.width+=f+Math.min(0,k.width/this.view.scale-d.width):d.height+=e+Math.min(0,k.height/this.view.scale-d.height),this.model.setGeometry(a,
d));a=this.model.getParent(a);c=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var c=this.getCurrentCellStyle(a);return this.isSwimlane(a)?"0"!=c.container:"1"==c.container};Graph.prototype.isCellConnectable=function(a){var c=this.getCurrentCellStyle(a);return null!=c.connectable?"0"!=c.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(a){var c=this.getCurrentCellStyle(a);return null!=c.movableLabel?"0"!=c.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,c,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(a,c,f){var e=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(e)&&(e=null);return e};Graph.prototype.isCellFoldable=function(a){var c=this.getCurrentCellStyle(a);return this.foldingEnabled&&"0"!=mxUtils.getValue(c,mxConstants.STYLE_RESIZABLE,"1")&&("1"==c.treeFolding||!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=c.collapsible||!this.isContainer(a)&&"1"==c.collapsible))};
Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};Graph.prototype.zoom=function(a,c){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};
Graph.prototype.fitWindow=function(a,c){c=null!=c?c:10;var f=this.container.clientWidth-c,e=this.container.clientHeight-c,g=Math.floor(20*Math.min(f/a.width,e/a.height))/20;this.zoomTo(g);if(mxUtils.hasScrollbars(this.container)){var d=this.view.translate;this.container.scrollTop=(a.y+d.y)*g-Math.max((e-a.height*g)/2+c/2,0);this.container.scrollLeft=(a.x+d.x)*g-Math.max((f-a.width*g)/2+c/2,0)}};
Graph.prototype.getTooltipForCell=function(a){var c="";if(mxUtils.isNode(a.value)){var f=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=a.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==f&&(f=a.value.getAttribute("tooltip"));if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),c=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var e=[];this.isEnabled()&&(f.push("linkTarget"),f.push("link"));for(var g=0;g<a.length;g++)0>
mxUtils.indexOf(f,a[g].nodeName)&&0<a[g].nodeValue.length&&e.push({name:a[g].nodeName,value:a[g].nodeValue});e.sort(function(d,k){return d.name<k.name?-1:d.name>k.name?1:0});for(g=0;g<e.length;g++)"link"==e[g].name&&this.isCustomLink(e[g].value)||(c+=("link"!=e[g].name?"<b>"+e[g].name+":</b> ":"")+mxUtils.htmlEntities(e[g].value)+"\n");0<c.length&&(c=c.substring(0,c.length-1),mxClient.IS_SVG&&(c='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+c+"</div>"))}}return c};
Graph.prototype.getFlowAnimationStyle=function(){var a=document.getElementsByTagName("head")[0];if(null!=a&&null==this.flowAnimationStyle){this.flowAnimationStyle=document.createElement("style");this.flowAnimationStyle.setAttribute("id","geEditorFlowAnimation-"+Editor.guid());this.flowAnimationStyle.type="text/css";var c=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(c);a.appendChild(this.flowAnimationStyle)}return this.flowAnimationStyle};
Graph.prototype.getFlowAnimationStyleCss=function(a){return"."+a+" {\nanimation: "+a+" 0.5s linear;\nanimation-iteration-count: infinite;\n}\n@keyframes "+a+" {\nto {\nstroke-dashoffset: "+-16*this.view.scale+";\n}\n}"};Graph.prototype.stringToBytes=function(a){return Graph.stringToBytes(a)};Graph.prototype.bytesToString=function(a){return Graph.bytesToString(a)};Graph.prototype.compressNode=function(a){return Graph.compressNode(a)};Graph.prototype.compress=function(a,c){return Graph.compress(a,c)};
Graph.prototype.decompress=function(a,c){return Graph.decompress(a,c)};Graph.prototype.zapGremlins=function(a){return Graph.zapGremlins(a)};HoverIcons=function(a){mxEventSource.call(this);this.graph=a;this.init()};mxUtils.extend(HoverIcons,mxEventSource);HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
mxEvent.getSource(f)==this.graph.container&&this.setDisplay("none")}));this.graph.addListener(mxEvent.START_EDITING,mxUtils.bind(this,function(f){this.reset()}));var a=this.graph.click;this.graph.click=mxUtils.bind(this,function(f){a.apply(this.graph,arguments);null==this.currentState||this.graph.isCellSelected(this.currentState.cell)||!mxEvent.isTouchEvent(f.getEvent())||this.graph.model.isVertex(f.getCell())||this.reset()});var c=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(f,
e){c=!1;f=e.getEvent();this.isResetEvent(f)?this.reset():this.isActive()||(e=this.getState(e.getState()),null==e&&mxEvent.isTouchEvent(f)||this.update(e));this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(f,e){f=e.getEvent();this.isResetEvent(f)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(f)||this.update(this.getState(e.getState()),e.getGraphX(),e.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(c=!0)}),mouseUp:mxUtils.bind(this,
function(f,e){f=e.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(f),mxEvent.getClientY(f));this.isResetEvent(f)?this.reset():this.isActive()&&!c&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),e):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())?this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(e.getGraphX(),e.getGraphY())))):mxEvent.isTouchEvent(f)||null!=
this.bbox&&mxUtils.contains(this.bbox,e.getGraphX(),e.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(f)||this.reset();c=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,c){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isPopupTrigger(a)&&!this.graph.isCloneEvent(a)};
HoverIcons.prototype.createArrow=function(a,c,f){var e=null;e=mxUtils.createImage(a.src);e.style.width=a.width+"px";e.style.height=a.height+"px";e.style.padding=this.tolerance+"px";null!=c&&e.setAttribute("title",c);e.style.position="absolute";e.style.cursor=this.cssCursor;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(g){null==this.currentState||this.isResetEvent(g)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(g),mxEvent.getClientY(g)),this.drag(g,
HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a};HoverIcons.prototype.visitNodes=function(a){for(var c=0;c<this.elts.length;c++)null!=this.elts[c]&&a(this.elts[c])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};
HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(c){c.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
HoverIcons.prototype.drag=function(a,c,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,c,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=c&&c.setHandlesVisible(!1),c=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=c&&"orthogonalEdgeStyle"===
mxUtils.getValue(c.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),c.cell.style=mxUtils.setStyle(c.cell.style,"sourcePortConstraint",a),c.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,c,f){return this.graph.view.getState(this.graph.getCellAt(c,f))};
HoverIcons.prototype.click=function(a,c,f){var e=f.getEvent(),g=f.getGraphX(),d=f.getGraphY();g=this.getStateAt(a,g,d);null==g||!this.graph.model.isEdge(g.cell)||this.graph.isCloneEvent(e)||g.getVisibleTerminalState(!0)!=a&&g.getVisibleTerminalState(!1)!=a?null!=a&&this.execute(a,c,f):(this.graph.setSelectionCell(g.cell),this.reset());f.consume()};
HoverIcons.prototype.execute=function(a,c,f){f=f.getEvent();this.graph.selectCellsForConnectVertex(this.graph.connectVertex(a.cell,c,this.graph.defaultEdgeLength,f,this.graph.isCloneEvent(f),this.graph.isCloneEvent(f)),f,this)};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null;this.fireEvent(new mxEventObject("reset"))};
var c=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(c=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var f=null;null!=c&&(a.x-=c.horizontalOffset/2,a.y-=c.verticalOffset/2,a.width+=c.horizontalOffset,a.height+=c.verticalOffset,null!=c.rotationShape&&null!=c.rotationShape.node&&"hidden"!=c.rotationShape.node.style.visibility&&"none"!=c.rotationShape.node.style.display&&null!=c.rotationShape.boundingBox&&
(f=c.rotationShape.boundingBox));c=mxUtils.bind(this,function(n,u,m){if(null!=f){var r=new mxRectangle(u,m,n.clientWidth,n.clientHeight);mxUtils.intersects(r,f)&&(n==this.arrowUp?m-=r.y+r.height-f.y:n==this.arrowRight?u+=f.x+f.width-r.x:n==this.arrowDown?m+=f.y+f.height-r.y:n==this.arrowLeft&&(u-=r.x+r.width-f.x))}n.style.left=u+"px";n.style.top=m+"px";mxUtils.setOpacity(n,this.inactiveOpacity)});c(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(a.y-
this.triangleUp.height-this.tolerance));c(this.arrowRight,Math.round(a.x+a.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));c(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(a.y+a.height-this.tolerance));c(this.arrowLeft,Math.round(a.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){c=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY());
var e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),g=this.graph.getCellAt(this.currentState.getCenterX(),a.y-this.triangleUp.height/2);a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=c&&c==e&&e==g&&g==a&&(a=g=e=c=null);var d=this.graph.getCellGeometry(this.currentState.cell),k=mxUtils.bind(this,function(n,u){var m=this.graph.model.isVertex(n)&&this.graph.getCellGeometry(n);null==n||this.graph.model.isAncestor(n,
this.currentState.cell)||this.graph.isSwimlane(n)||!(null==m||null==d||m.height<3*d.height&&m.width<3*d.width)?u.style.visibility="visible":u.style.visibility="hidden"});k(c,this.arrowRight);k(e,this.arrowLeft);k(g,this.arrowUp);k(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(c){null!=c.parentNode&&(c=new mxRectangle(c.offsetLeft,c.offsetTop,c.offsetWidth,c.offsetHeight),null==a?a=c:a.add(c))});return a};
HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var c=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(c)&&this.graph.isCellConnectable(c)&&(a=c)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a};
HoverIcons.prototype.update=function(a,c,f){if(!this.graph.connectionArrowsEnabled||null!=a&&"0"==mxUtils.getValue(a.style,"allowArrows","1"))this.reset();else{null!=a&&null!=a.cell.geometry&&a.cell.geometry.relative&&this.graph.model.isEdge(a.cell.parent)&&(a=null);var e=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,e=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,c,f))}),this.updateDelay+10))):null!=this.startTime&&(e=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=a&&e<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,c,f)?this.reset(!1):(null!=this.currentState||e>this.activationDelay)&&this.currentState!=a&&(e>this.updateDelay&&null!=a||null==this.bbox||null==c||null==f||!mxUtils.contains(this.bbox,
c,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};Graph.prototype.createParent=function(a,c,f,e,g){a=this.cloneCell(a);for(var d=0;d<f;d++){var k=this.cloneCell(c),n=this.getCellGeometry(k);null!=n&&(n.x+=d*e,n.y+=d*g);a.insert(k)}return a};
Graph.prototype.createTable=function(a,c,f,e,g,d,k,n,u){f=null!=f?f:60;e=null!=e?e:40;d=null!=d?d:30;n=null!=n?n:"shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";u=null!=u?u:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,
null,null!=g?g:"",0,0,c*f,a*e+(null!=g?d:0),null!=k?k:"shape=table;startSize="+(null!=g?d:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,c*f,e,n),this.createVertex(null,null,"",0,0,f,e,u),c,f,0),a,0,e)};
Graph.prototype.setTableValues=function(a,c,f){for(var e=this.model.getChildCells(a,!0),g=0;g<e.length;g++)if(null!=f&&(e[g].value=f[g]),null!=c)for(var d=this.model.getChildCells(e[g],!0),k=0;k<d.length;k++)null!=c[g][k]&&(d[k].value=c[g][k]);return a};
Graph.prototype.createCrossFunctionalSwimlane=function(a,c,f,e,g,d,k,n,u){f=null!=f?f:120;e=null!=e?e:120;k=null!=k?k:"shape=tableRow;horizontal=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;fontStyle=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;startSize=40;collapsible=0;recursiveResize=0;expand=0;";n=null!=n?n:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;";
u=null!=u?u:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=0;collapsible=0;recursiveResize=0;expand=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,c*f,a*e,null!=d?d:"shape=table;childLayout=tableLayout;"+(null==g?"startSize=0;fillColor=none;":"startSize=40;")+"collapsible=0;recursiveResize=0;expand=0;");d=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=d;g.geometry.height+=d;k=this.createVertex(null,
null,"",0,d,c*f+d,e,k);g.insert(this.createParent(k,this.createVertex(null,null,"",d,0,f,e,n),c,f,0));return 1<a?(k.geometry.y=e+d,this.createParent(g,this.createParent(k,this.createVertex(null,null,"",d,0,f,e,u),c,f,0),a-1,0,e)):g};
Graph.prototype.visitTableCells=function(a,c){var f=null,e=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<e.length;g++){for(var d=this.getActualStartSize(e[g],!0),k=this.model.getChildCells(e[g],!0),n=this.getCellStyle(e[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),A={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;A.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+d.x),x.height+(null!=f&&null!=
f[0]?f[0].point.y:a.y+d.y));A.actual=A;null!=f&&null!=f[r]&&1<f[r].rowspan?(A.rowspan=f[r].rowspan-1,A.colspan=f[r].colspan,A.actual=f[r].actual):null!=u&&1<u.colspan?(A.rowspan=u.rowspan,A.colspan=u.colspan-1,A.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(A.rowspan=parseInt(u.rowspan||1),A.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;c(A,k.length,
e.length,a.x+(u?d.x:0),a.y+(u?d.y:0));m.push(A);u=A}f=m}};Graph.prototype.getTableLines=function(a,c,f){var e=[],g=[];(c||f)&&this.visitTableCells(a,mxUtils.bind(this,function(d,k,n,u,m){c&&d.row<n-1&&(null==e[d.row]&&(e[d.row]=[new mxPoint(u,d.point.y)]),1<d.rowspan&&e[d.row].push(null),e[d.row].push(d.point));f&&d.col<k-1&&(null==g[d.col]&&(g[d.col]=[new mxPoint(d.point.x,m)]),1<d.colspan&&g[d.col].push(null),g[d.col].push(d.point))}));return e.concat(g)};
Graph.prototype.setTableRowHeight=function(a,c,f){f=null!=f?f:!0;var e=this.getModel();e.beginUpdate();try{var g=this.getCellGeometry(a);if(null!=g){g=g.clone();g.height+=c;e.setGeometry(a,g);var d=e.getParent(a),k=e.getChildCells(d,!0);if(!f){var n=mxUtils.indexOf(k,a);if(n<k.length-1){var u=k[n+1],m=this.getCellGeometry(u);null!=m&&(m=m.clone(),m.y+=c,m.height-=c,e.setGeometry(u,m))}}var r=this.getCellGeometry(d);null!=r&&(f||(f=a==k[k.length-1]),f&&(r=r.clone(),r.height+=c,e.setGeometry(d,r)))}}finally{e.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(a,c,f){f=null!=f?f:!1;var e=this.getModel(),g=e.getParent(a),d=e.getParent(g),k=e.getChildCells(g,!0);a=mxUtils.indexOf(k,a);var n=a==k.length-1;e.beginUpdate();try{for(var u=e.getChildCells(d,!0),m=0;m<u.length;m++){g=u[m];k=e.getChildCells(g,!0);var r=k[a],x=this.getCellGeometry(r);null!=x&&(x=x.clone(),x.width+=c,null!=x.alternateBounds&&(x.alternateBounds.width+=c),e.setGeometry(r,x));a<k.length-1&&(r=k[a+1],x=this.getCellGeometry(r),null!=x&&(x=x.clone(),
x.x+=c,f||(x.width-=c,null!=x.alternateBounds&&(x.alternateBounds.width-=c)),e.setGeometry(r,x)))}if(n||f){var A=this.getCellGeometry(d);null!=A&&(A=A.clone(),A.width+=c,e.setGeometry(d,A))}null!=this.layoutManager&&this.layoutManager.executeLayout(d)}finally{e.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};TableLayout.prototype.getSize=function(a,c){for(var f=0,e=0;e<a.length;e++)if(!this.isVertexIgnored(a[e])){var g=this.graph.getCellGeometry(a[e]);null!=g&&(f+=c?g.width:g.height)}return f};
TableLayout.prototype.getRowLayout=function(a,c){var f=this.graph.model.getChildCells(a,!0),e=this.graph.getActualStartSize(a,!0);a=this.getSize(f,!0);c=c-e.x-e.width;var g=[];e=e.x;for(var d=0;d<f.length;d++){var k=this.graph.getCellGeometry(f[d]);null!=k&&(e+=(null!=k.alternateBounds?k.alternateBounds.width:k.width)*c/a,g.push(Math.round(e)))}return g};
TableLayout.prototype.layoutRow=function(a,c,f,e){var g=this.graph.getModel(),d=g.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,n=0;null!=c&&(c=c.slice(),c.splice(0,0,a.x));for(var u=0;u<d.length;u++){var m=this.graph.getCellGeometry(d[u]);null!=m&&(m=m.clone(),m.y=a.y,m.height=f-a.y-a.height,null!=c?(m.x=c[u],m.width=c[u+1]-m.x,u==d.length-1&&u<c.length-2&&(m.width=e-m.x-a.x-a.width)):(m.x=k,k+=m.width,u==d.length-1?m.width=e-a.x-a.width-n:n+=m.width),m.alternateBounds=new mxRectangle(0,
TableLayout.prototype.execute=function(a){if(null!=a){var c=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),e=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(e,"resizeLastRow","0"),d="1"==mxUtils.getValue(e,"resizeLast","0");e="1"==mxUtils.getValue(e,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-c.y-c.height,m=f.width-c.x-c.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var A=this.getSize(r,!1);if(0<u&&0<m&&0<
r.length&&0<A){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-A+C.height,k.setGeometry(r[r.length-1],C))}var F=d?null:this.getRowLayout(r[0],m),K=[],E=c.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=c.x,C.width=m,C.y=Math.round(E),E=g||e?E+C.height:E+C.height/A*u,C.height=Math.round(E)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],F,C.height,m,K));e&&u<A&&(f=f.clone(),f.height=E+c.height,k.setGeometry(a,
f));d&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+c.width+c.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(O){k.setVisible(O.cell,O.actual.cell==O.cell);if(O.actual.cell!=O.cell){if(O.actual.row==O.row){var R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo;O.actual.geo.width+=R.width}O.actual.col==O.col&&(R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo,O.actual.geo.height+=R.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var c=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(r,x){x=null!=x?x:!0;var A=this.getState(r);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&!A.invalid&&this.updateLineJumps(A)&&this.graph.cellRenderer.redraw(A,!1,this.isRendering());A=c.apply(this,
mxStencilRegistry.getStencil=function(a){var c=mxStencilRegistry.stencils[a];if(null==c&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){c=mxStencilRegistry.libraries[f];if(null!=c){if(null==mxStencilRegistry.packages[f]){for(var e=0;e<c.length;e++){var g=c[e];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var d=mxUtils.load(g);null!=d&&200<=d.getStatus()&&299>=d.getStatus()&&eval.call(window,d.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,f,c,g,k)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);c=mxStencilRegistry.stencils[a]}}return c};
mxStencilRegistry.getBasenameForStencil=function(a){var c=null;if(null!=a&&"string"===typeof a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0])){c=a[1];for(var f=2;f<a.length-1;f++)c+="/"+a[f]}return c};
mxStencilRegistry.loadStencilSet=function(a,c,f,e){var g=mxStencilRegistry.packages[a];if(null!=f&&f||null==g){var d=!1;if(null==g)try{if(e){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(k){null!=k&&null!=k.documentElement&&(mxStencilRegistry.packages[a]=k,d=!0,mxStencilRegistry.parseStencilSet(k.documentElement,c,d))}));return}g=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=g;d=!0}catch(k){null!=window.console&&console.log("error in loadStencilSet:",a,k)}null!=g&&null!=
g.documentElement&&mxStencilRegistry.parseStencilSet(g.documentElement,c,d)}};mxStencilRegistry.loadStencil=function(a,c){if(null!=c)mxUtils.get(a,mxUtils.bind(this,function(f){c(200<=f.getStatus()&&299>=f.getStatus()?f.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var c=0;c<a.length;c++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[c]).documentElement)};
mxStencilRegistry.parseStencilSet=function(a,c,f){if("stencils"==a.nodeName)for(var e=a.firstChild;null!=e;)"shapes"==e.nodeName&&mxStencilRegistry.parseStencilSet(e,c,f),e=e.nextSibling;else{f=null!=f?f:!0;e=a.firstChild;var g="";a=a.getAttribute("name");for(null!=a&&(g=a+".");null!=e;){if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=e.getAttribute("name"),null!=a)){g=g.toLowerCase();var d=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(g+d.toLowerCase(),new mxStencil(e));if(null!=c){var k=e.getAttribute("w"),
n=e.getAttribute("h");k=null==k?80:parseInt(k,10);n=null==n?80:parseInt(n,10);c(g,d,a,k,n)}}e=e.nextSibling}}};
"undefined"!==typeof mxVertexHandler&&function(){function a(){var t=document.createElement("div");t.className="geHint";t.style.whiteSpace="nowrap";t.style.position="absolute";return t}function c(t,z){switch(z){case mxConstants.POINTS:return t;case mxConstants.MILLIMETERS:return(t/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(t/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(t/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(b){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var Za=this.backgroundImage;if(null!=Za){t=Ea/z;var pb=this.view.translate;Da=new mxRectangle((Za.x+pb.x)*t,(Za.y+pb.y)*t,Za.width*t,Za.height*t);mxUtils.intersects(Ia,Da)&&Na.image(Za.x+pb.x,Za.y+pb.y,Za.width,Za.height,Za.src,!0)}Na.scale(D);Na.textEnabled=X;ia=null!=ia?ia:this.createSvgImageExport();var ub=ia.drawCellState,vb=ia.getLinkForCellState;ia.getLinkForCellState=
function(t){var z=this.graph.getView().scale;return new mxRectangle(0,0,null==t.text?30:t.text.size*z+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(t,z){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(z.getEvent)};mxGraphView.prototype.formatUnitText=function(t){return t?c(t,this.unit):t};mxGraphHandler.prototype.updateHint=function(t){if(null!=this.pBounds&&(null!=this.shape||
this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,B=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/B-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/B-z.y);B=this.graph.view.unit;this.hint.innerHTML=c(t,B)+", "+c(z,B);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+
z):t=V.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/t),z)+" x "+c(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var B=this.graph.view.translate,D=this.graph.view.scale,G=this.roundLength(z.x/D-B.x);B=this.roundLength(z.y/D-B.y);D=this.graph.view.unit;this.hint.innerHTML=c(G,D)+", "+c(B,D);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(G=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*G.x)+
null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,c){this.editorUi=a;this.container=c};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.doubleBlockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 8 8 L 16 2 L 16 14 Z M 16 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.processMenuIcon=function(a,c){var f=a.getElementsByTagName("img");0<f.length&&(Editor.isDarkMode()&&(f[0].style.filter="invert(100%)"),f[0].className="geIcon",f[0].style.padding="0px",f[0].style.margin="0 0 0 2px",null!=c&&mxUtils.setPrefixedStyle(f[0].style,"transform",c));return a};
Format.prototype.init=function(){var a=this.editorUi,c=a.editor,f=c.graph;this.update=mxUtils.bind(this,function(e,g){this.refresh()});f.getSelectionModel().addListener(mxEvent.CHANGE,this.update);f.getModel().addListener(mxEvent.CHANGE,this.update);f.addListener(mxEvent.EDITING_STARTED,this.update);f.addListener(mxEvent.EDITING_STOPPED,this.update);f.getView().addListener("unitChanged",this.update);c.addListener("autosaveChanged",this.update);f.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,c=a.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.color="rgb(112, 112, 112)";f.style.textAlign="left";f.style.cursor="default";var e=document.createElement("div");e.className="geFormatSection";e.style.textAlign="center";e.style.fontWeight="bold";e.style.paddingTop="8px";e.style.fontSize="13px";e.style.borderWidth="0px 0px 1px 1px";e.style.borderStyle=
"solid";e.style.display="inline-block";e.style.height="25px";e.style.overflow="hidden";e.style.width="100%";this.container.appendChild(f);mxEvent.addListener(e,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),d=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,F,K,E){var O=mxUtils.bind(this,function(R){k!=C&&(d?this.labelIndex=K:c.isSelectionEmpty()?this.diagramIndex=K:this.currentIndex=K,null!=k&&(k.style.backgroundColor=
Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=F&&(null!=n&&(n.style.display="none"),n=F,n.style.display=""))});mxEvent.addListener(C,"click",O);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(R){R.preventDefault()}));(E&&null==k||K==(d?this.labelIndex:c.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&O()}),m=0;if(c.isSelectionEmpty()){mxUtils.write(e,mxResources.get("diagram"));
Dialog.prototype.closeImage),u.setAttribute("title",mxResources.get("hide")),u.style.position="absolute",u.style.display="block",u.style.right="0px",u.style.top="8px",u.style.cursor="pointer",u.style.marginTop="1px",u.style.marginRight="6px",u.style.border="1px solid transparent",u.style.padding="1px",u.style.opacity=.5,r.appendChild(u),mxEvent.addListener(u,"click",function(){a.actions.get("formatPanel").funct()}),f.appendChild(r))}else if(c.isEditing())mxUtils.write(e,mxResources.get("text")),f.appendChild(e),
"none";u(A,f,m++,!0)}}};BaseFormatPanel=function(a,c,f){this.format=a;this.editorUi=c;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
BaseFormatPanel.prototype.installInputHandler=function(a,c,f,e,g,d,k,n){d=null!=d?d:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;e=null!=e?e:1;g=null!=g?g:999;var r=null,x=!1,A=mxUtils.bind(this,function(C){var F=n?parseFloat(a.value):parseInt(a.value);isNaN(F)||c!=mxConstants.STYLE_ROTATION||(F=mxUtils.mod(Math.round(100*F),36E3)/100);F=Math.min(g,Math.max(e,isNaN(F)?f:F));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(F),a.value=F+d,
x=!1);else if(F!=mxUtils.getValue(u.getSelectionState().style,c,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var K=u.getSelectionState().cells;m.setCellStyles(c,F,K);c==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(K,function(O){O.style.fontSize=F+"px";O.removeAttribute("size")});for(var E=0;E<K.length;E++)0==m.model.getChildCount(K[E])&&m.autoSizeCell(K[E],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[F],"cells",K))}finally{m.getModel().endUpdate()}}a.value=
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 14px";return a};BaseFormatPanel.prototype.createTitle=function(a){var c=document.createElement("div");c.style.padding="0px 0px 6px 0px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.width="200px";c.style.fontWeight="bold";mxUtils.write(c,a);return c};
BaseFormatPanel.prototype.addAction=function(a,c){var f=this.editorUi.actions.get(c);c=null;null!=f&&f.isEnabled()&&(c=mxUtils.button(f.label,function(e){f.funct(e,e)}),c.setAttribute("title",f.label+(null!=f.shortcut?" ("+f.shortcut+")":"")),c.style.marginBottom="2px",c.style.width="210px",a.appendChild(c),result=!0);return c};
BaseFormatPanel.prototype.addActions=function(a,c){for(var f=null,e=null,g=0,d=0;d<c.length;d++){var k=this.addAction(a,c[d]);null!=k&&(g++,0==mxUtils.mod(g,2)&&(e.style.marginRight="2px",e.style.width="104px",k.style.width="104px",f.parentNode.removeChild(f)),f=mxUtils.br(a),e=k)}return g};
BaseFormatPanel.prototype.createStepper=function(a,c,f,e,g,d,k){f=null!=f?f:1;e=null!=e?e:9;var n=10*f,u=document.createElement("div");mxUtils.setPrefixedStyle(u.style,"borderRadius","3px");u.style.border="1px solid rgb(192, 192, 192)";u.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=e+"px";m.style.width="10px";m.className="geBtnUp";u.appendChild(m);var r=m.cloneNode(!1);r.style.border="none";
r.style.height=e+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(A)?n:f),null!=c&&c(A));mxEvent.consume(A)});mxEvent.addGestureListeners(m,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(A)?
n:f),null!=c&&c(A));mxEvent.consume(A)});if(g){var x=null;mxEvent.addGestureListeners(u,function(A){mxEvent.consume(A)},null,function(A){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(A)}})}else mxEvent.addListener(u,"click",function(A){mxEvent.consume(A)});return u};
BaseFormatPanel.prototype.createOption=function(a,c,f,e,g){var d=document.createElement("div");d.style.padding="3px 0px 3px 0px";d.style.whiteSpace="nowrap";d.style.textOverflow="ellipsis";d.style.overflow="hidden";d.style.width="200px";d.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";d.appendChild(k);var n=document.createElement("span");n.style.verticalAlign="top";n.style.userSelect="none";mxUtils.write(n,
a);d.appendChild(n);var u=!1,m=c(),r=function(x,A){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,c()!=m&&f(m,A)),u=!1)};mxEvent.addListener(d,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var A=mxEvent.getSource(x);if(A==d||A==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=e&&(e.install(r),this.listeners.push(e));null!=g&&g(d);return d};
BaseFormatPanel.prototype.createCellOption=function(a,c,f,e,g,d,k,n,u){var m=this.editorUi,r=m.editor.graph;e=null!=e?"null"==e?null:e:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,c,f)!=g},function(A){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;A=A?e:g;r.setCellStyles(c,A,C);null!=d&&d(C,A);m.fireEvent(new mxEventObject("styleChanged",
"keys",[c],"values",[A],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(A){this.listener=function(){A(mxUtils.getValue(x,c,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,c,f,e,g,d,k,n){var u=document.createElement("div");u.style.padding="3px 0px 3px 0px";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.width="200px";u.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||u.appendChild(m);var r=document.createElement("span");r.style.verticalAlign="top";mxUtils.write(r,a);u.appendChild(r);var x=c(),
null!=Q?Q+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=E&&E!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=d&&d("null"==E?null:E);x=E;O||(R||k||c()!=x)&&f("null"==x?null:x,x);A=!1}},K=document.createElement("input");K.setAttribute("type","color");K.style.visibility="hidden";K.style.width="0px";K.style.height="0px";K.style.border=
BaseFormatPanel.prototype.createCellColorOption=function(a,c,f,e,g,d){var k=this.editorUi,n=k.editor.graph;return this.createColorOption(a,function(){var u=n.view.getState(k.getSelectionState().cells[0]);return null!=u?mxUtils.getValue(u.style,c,null):null},function(u,m){n.getModel().beginUpdate();try{var r=k.getSelectionState().cells;n.setCellStyles(c,u,r);null!=g&&g(u);k.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[u],"cells",r))}finally{n.getModel().endUpdate()}},f||mxConstants.NONE,
{install:function(u){this.listener=function(){var m=n.view.getState(k.getSelectionState().cells[0]);null!=m&&u(mxUtils.getValue(m.style,c,null),!0)};n.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){n.getModel().removeListener(this.listener)}},e,null,d)};
BaseFormatPanel.prototype.addArrow=function(a,c){c=null!=c?c:10;var f=document.createElement("div");f.style.display="inline-block";f.style.paddingRight="4px";f.style.padding="6px";var e=10-c;2==e?f.style.paddingTop="6px":0<e?f.style.paddingTop=6-e+"px":f.style.marginTop="-2px";f.style.height=c+"px";f.style.borderLeft="1px solid #a0a0a0";c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("valign","middle");c.setAttribute("src",Toolbar.prototype.dropDownImage);f.appendChild(c);
c=f.getElementsByTagName("img")[0];c.style.position="relative";c.style.left="1px";c.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(f,70);c=a.getElementsByTagName("div")[0];null!=c&&(c.style.paddingRight="6px",c.style.marginLeft="4px",c.style.marginTop="-1px",c.style.display="inline-block",mxUtils.setOpacity(c,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage="none";a.style.width="auto";a.className+=
" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(f);return c};
BaseFormatPanel.prototype.addUnitInput=function(a,c,f,e,g,d,k,n,u){k=null!=k?k:0;c=document.createElement("input");c.style.position="absolute";c.style.textAlign="right";c.style.marginTop="-2px";c.style.left=228-f-e+"px";c.style.width=e+"px";c.style.height="21px";c.style.border="1px solid rgb(160, 160, 160)";c.style.borderRadius="4px";c.style.boxSizing="border-box";a.appendChild(c);e=this.createStepper(c,g,d,null,n,null,u);e.style.marginTop=k-2+"px";e.style.left=228-f+"px";a.appendChild(e);return c};
BaseFormatPanel.prototype.createRelativeOption=function(a,c,f,e,g){f=null!=f?f:52;var d=this.editorUi,k=d.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=e)e(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var A=k.view.getState(d.getSelectionState().cells[0]);null!=A&&x!=mxUtils.getValue(A.style,c,100)&&(100==x&&(x=null),A=d.getSelectionState().cells,
k.setCellStyles(c,x,A),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[c],"values",[x],"cells",A)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=e);if(null!=c){var m=mxUtils.bind(this,function(r,x,A){if(A||u!=document.activeElement)r=d.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,c,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
BaseFormatPanel.prototype.addLabel=function(a,c,f,e){e=null!=e?e:61;var g=document.createElement("div");mxUtils.write(g,c);g.style.position="absolute";g.style.left=240-f-e+"px";g.style.width=e+"px";g.style.marginTop="6px";g.style.textAlign="center";a.appendChild(g)};
BaseFormatPanel.prototype.addKeyHandler=function(a,c){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(f){13==f.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(f)):27==f.keyCode&&(null!=c&&c(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(f))}))};
BaseFormatPanel.prototype.styleButtons=function(a){for(var c=0;c<a.length;c++)mxUtils.setPrefixedStyle(a[c].style,"borderRadius","3px"),mxUtils.setOpacity(a[c],100),a[c].style.border="1px solid #a0a0a0",a[c].style.padding="4px",a[c].style.paddingTop="3px",a[c].style.paddingRight="1px",a[c].style.margin="1px",a[c].style.marginRight="2px",a[c].style.width="24px",a[c].style.height="20px",a[c].className+=" geColorBtn"};
BaseFormatPanel.prototype.destroy=function(){if(null!=this.listeners){for(var a=0;a<this.listeners.length;a++)this.listeners[a].destroy();this.listeners=null}};ArrangePanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};mxUtils.extend(ArrangePanel,BaseFormatPanel);
ArrangePanel.prototype.addTable=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var g=document.createElement("div");g.style.marginTop="0px";g.style.marginBottom="6px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("table"));a.appendChild(g);g=document.createElement("div");g.style.position="relative";g.style.paddingLeft="0px";g.style.borderWidth="0px";g.style.width="220px";g.className="geToolbarContainer";var d=
e.vertices[0];1<f.getSelectionCount()&&(f.isTableCell(d)&&(d=f.model.getParent(d)),f.isTableRow(d)&&(d=f.model.getParent(d)));var k=e.table||e.row||e.cell,n=f.isStack(d)||f.isStackChild(d),u=k;n&&(k="0"==(f.isStack(d)?e.style:f.getCellStyle(f.model.getParent(d))).horizontalStack,u=!k);var m=[];u&&(m=m.concat([c.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!0):f.insertTableColumn(d,!0)}catch(r){c.handleError(r)}}),
g),c.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableColumn(d,!1)}catch(r){c.handleError(r)}}),g),c.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableColumn(d)}catch(r){c.handleError(r)}}),g)]));k&&(m=m.concat([c.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,
function(){try{n?f.insertLane(d,!0):f.insertTableRow(d,!0)}catch(r){c.handleError(r)}}),g),c.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableRow(d,!1)}catch(r){c.handleError(r)}}),g),c.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableRow(d)}catch(r){c.handleError(r)}}),g)]));if(0<m.length){this.styleButtons(m);a.appendChild(g);
ArrangePanel.prototype.addGroupOps=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="8px";a.style.paddingBottom="6px";var g=0;e.cell||e.row||(g+=this.addActions(a,["group","ungroup","copySize","pasteSize"])+this.addActions(a,["removeFromGroup"]));var d=null;1!=e.cells.length||null==e.cells[0].value||isNaN(e.cells[0].value.nodeType)||(d=mxUtils.button(mxResources.get("copyData"),function(n){if(mxEvent.isShiftDown(n)){var u=f.getDataForCells(f.getSelectionCells());
n=new EmbedDialog(c,JSON.stringify(u,null,2),null,null,function(){console.log(u);c.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");c.showDialog(n.container,450,240,!0,!0);n.init()}else c.actions.get("copyData").funct(n)}),d.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+") Shift+Click to Extract Data"),d.style.marginBottom="2px",d.style.width="210px",a.appendChild(d),g++);var k=null;null!=c.copiedValue&&
0<e.cells.length&&(k=mxUtils.button(mxResources.get("pasteData"),function(n){c.actions.get("pasteData").funct(n)}),k.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),k.style.marginBottom="2px",k.style.width="210px",a.appendChild(k),g++,null!=d&&(d.style.width="104px",k.style.width="104px",k.style.marginBottom="2px",d.style.marginBottom="2px",d.style.marginRight="2px"));null==d&&null==k||mxUtils.br(a);e=this.addAction(a,"clearWaypoints");null!=
ArrangePanel.prototype.addAlign=function(a){var c=this.editorUi.getSelectionState(),f=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="8px";a.appendChild(this.createTitle(mxResources.get("align")));var e=document.createElement("div");e.style.position="relative";e.style.whiteSpace="nowrap";e.style.paddingLeft="0px";e.style.paddingBottom="2px";e.style.borderWidth="0px";e.style.width="220px";e.className="geToolbarContainer";if(1<c.vertices.length){c=this.editorUi.toolbar.addButton("geSprite-alignleft",
mxResources.get("middle"),function(){f.alignCells(mxConstants.ALIGN_MIDDLE)},e),u=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){f.alignCells(mxConstants.ALIGN_BOTTOM)},e);this.styleButtons([c,g,d,k,n,u]);d.style.marginRight="10px"}a.appendChild(e);this.addActions(a,["snapToGrid"]);return a};
ArrangePanel.prototype.addFlip=function(a){var c=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var f=this.editorUi.getSelectionState(),e=document.createElement("div");e.style.marginTop="2px";e.style.marginBottom="8px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("flip"));a.appendChild(e);e=mxUtils.button(mxResources.get("horizontal"),function(g){c.flipCells(f.cells,!0)});e.setAttribute("title",mxResources.get("horizontal"));e.style.width="104px";e.style.marginRight=
"2px";a.appendChild(e);e=mxUtils.button(mxResources.get("vertical"),function(g){c.flipCells(f.cells,!1)});e.setAttribute("title",mxResources.get("vertical"));e.style.width="104px";a.appendChild(e);return a};
ArrangePanel.prototype.addDistribute=function(a){var c=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("distribute")));var f=mxUtils.button(mxResources.get("horizontal"),function(e){c.distributeCells(!0)});f.setAttribute("title",mxResources.get("horizontal"));f.style.width="104px";f.style.marginRight="2px";a.appendChild(f);f=mxUtils.button(mxResources.get("vertical"),function(e){c.distributeCells(!1)});f.setAttribute("title",
ArrangePanel.prototype.addAngle=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingBottom="8px";var g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";var d=null,k=null,n=null;!e.rotatable||e.table||e.row||e.cell?a.style.paddingTop="8px":(mxUtils.write(g,mxResources.get("angle")),a.appendChild(g),d=this.addUnitInput(a,"°",16,52,function(){k.apply(this,arguments)}),mxUtils.br(a),a.style.paddingTop=
"10px");e.containsLabel||(g=mxResources.get("reverse"),0<e.vertices.length&&0<e.edges.length?g=mxResources.get("turn")+" / "+g:0<e.vertices.length&&(g=mxResources.get("turn")),n=mxUtils.button(g,function(m){c.actions.get("turn").funct(m)}),n.setAttribute("title",g+" ("+this.editorUi.actions.get("turn").shortcut+")"),n.style.width="210px",a.appendChild(n),null!=d&&(n.style.marginTop="8px"));if(null!=d){var u=mxUtils.bind(this,function(m,r,x){if(x||document.activeElement!=d)e=c.getSelectionState(),
ArrangePanel.prototype.addGeometry=function(a){var c=this,f=this.editorUi,e=f.editor.graph,g=e.getModel(),d=f.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var n=document.createElement("div");n.style.position="absolute";n.style.width="50px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("size"));k.appendChild(n);var u=this.addUnitInput(k,this.getUnit(),87,52,function(){C.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);d.cell||d.row?r.style.visibility="hidden":k.appendChild(n);var A=x.getElementsByTagName("input")[0];this.addKeyHandler(u,R);this.addKeyHandler(m,R);var C=this.addGeometryHandler(u,function(T,U,fa){if(e.isTableCell(fa))return e.setTableColumnWidth(fa,U-T.width,!0),!0;0<T.width&&(U=Math.max(1,c.fromUnit(U)),A.checked&&(T.height=Math.round(T.height*U*100/T.width)/100),T.width=U)});var F=this.addGeometryHandler(m,function(T,
U,fa){e.isTableCell(fa)&&(fa=e.model.getParent(fa));if(e.isTableRow(fa))return e.setTableRowHeight(fa,U-T.height),!0;0<T.height&&(U=Math.max(1,c.fromUnit(U)),A.checked&&(T.width=Math.round(T.width*U*100/T.height)/100),T.height=U)});(d.resizable||d.row||d.cell)&&a.appendChild(k);var K=this.createPanel();K.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
(""==d.y?"":" "+this.getUnit())}else K.style.display="none"});this.addKeyHandler(E,R);this.addKeyHandler(O,R);g.addListener(mxEvent.CHANGE,R);this.listeners.push({destroy:function(){g.removeListener(R)}});R();var Q=this.addGeometryHandler(E,function(T,U){U=c.fromUnit(U);T.relative?T.offset.x=U:T.x=U});var P=this.addGeometryHandler(O,function(T,U){U=c.fromUnit(U);T.relative?T.offset.y=U:T.y=U});if(d.movable){if(0==d.edges.length&&1==d.vertices.length&&g.isEdge(g.getParent(d.vertices[0]))){var aa=e.getCellGeometry(d.vertices[0]);
ArrangePanel.prototype.addGeometryHandler=function(a,c){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=d+" "+k.getUnit();else if(u!=d){g.getModel().beginUpdate();try{for(var m=e.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!c(x,u,m[r]))){var A=g.view.getState(m[r]);null!=A&&g.isRecursiveVertexResize(A)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}d=
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,c){function f(k){if(""!=a.value){var n=parseFloat(a.value);if(isNaN(n))a.value=d+" pt";else if(n!=d){g.getModel().beginUpdate();try{for(var u=e.getSelectionState().cells,m=0;m<u.length;m++)if(g.getModel().isEdge(u[m])){var r=g.getCellGeometry(u[m]);null!=r&&(r=r.clone(),c(r,n),g.getModel().setGeometry(u[m],r))}}finally{g.getModel().endUpdate()}d=n;a.value=n+" pt"}}mxEvent.consume(k)}var e=this.editorUi,g=e.editor.graph,d=null;mxEvent.addListener(a,
ArrangePanel.prototype.addEdgeGeometry=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState(),g=this.createPanel(),d=document.createElement("div");d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("width"));g.appendChild(d);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,F);var n=mxUtils.bind(this,function(Q){var P=parseInt(k.value);P=Math.min(999,
Math.max(1,isNaN(P)?1:P));if(P!=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var aa=c.getSelectionState().cells;f.setCellStyles("width",P,aa);c.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[P],"cells",aa))}k.value=P+" pt";mxEvent.consume(Q)});mxEvent.addListener(k,"blur",n);mxEvent.addListener(k,"change",n);a.appendChild(g);var u=this.createPanel();u.style.paddingBottom="30px";d=document.createElement("div");d.style.position=
d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";mxUtils.write(d,mxResources.get("lineend"));x.appendChild(d);var A=this.addUnitInput(x,"pt",87,52,function(){O.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){R.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(A,F);this.addKeyHandler(C,F);var F=mxUtils.bind(this,function(Q,P,aa){e=c.getSelectionState();
F()};TextFormatPanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
TextFormatPanel.prototype.addFont=function(a){function c(ca,t){ca.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,e=f.editor.graph,g=f.getSelectionState(),d=this.createTitle(mxResources.get("font"));d.style.paddingLeft="14px";d.style.paddingTop="10px";d.style.paddingBottom="6px";a.appendChild(d);d=this.createPanel();d.style.paddingTop="2px";d.style.paddingBottom="2px";d.style.position=
a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);var Ua=mxUtils.bind(this,function(ca,t,z){g=f.getSelectionState();ca=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);c(m[0],(ca&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);c(m[1],(ca&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);c(m[2],(ca&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=
mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);c(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=V)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),V.value=isNaN(ca)?"":ca+" pt";ca=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);c(C,ca==mxConstants.ALIGN_LEFT);c(F,ca==mxConstants.ALIGN_CENTER);c(K,ca==mxConstants.ALIGN_RIGHT);ca=mxUtils.getValue(g.style,
mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);c(O,ca==mxConstants.ALIGN_TOP);c(R,ca==mxConstants.ALIGN_MIDDLE);c(Q,ca==mxConstants.ALIGN_BOTTOM);ca=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=ca==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_TOP?"topLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":ca==mxConstants.ALIGN_RIGHT&&
0;ja<ia.length;ja++)if(da.containsNode(ia[ja],!0)){temp=mxUtils.getCurrentStyle(ia[ja]);M=Math.max(B(temp),M);var ta=D(M,temp,ia[ja]);if(ta!=X||isNaN(ta))X=""}null!=G&&(c(m[0],"bold"==G.fontWeight||400<G.fontWeight||z("B")||z("STRONG")),c(m[1],"italic"==G.fontStyle||z("I")||z("EM")),c(m[2],z("U")),c(aa,z("SUP")),c(P,z("SUB")),e.cellEditor.isTableSelected()?(c(ha,t(G.textAlign,"justify")),c(C,t(G.textAlign,"left")),c(F,t(G.textAlign,"center")),c(K,t(G.textAlign,"right"))):(z=e.cellEditor.align||mxUtils.getValue(g.style,
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(G.textAlign,"justify")?(c(ha,t(G.textAlign,"justify")),c(C,!1),c(F,!1),c(K,!1)):(c(ha,!1),c(C,z==mxConstants.ALIGN_LEFT),c(F,z==mxConstants.ALIGN_CENTER),c(K,z==mxConstants.ALIGN_RIGHT))),T=e.getParentByName(ca,"TABLE",e.cellEditor.textarea),fa=null==T?null:e.getParentByName(ca,"TR",T),U=null==T?null:e.getParentByNames(ca,["TD","TH"],T),db.style.display=null!=T?"":"none",document.activeElement!=V&&("FONT"==ca.nodeName&&"4"==ca.getAttribute("size")&&
!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(e.cellEditor.textarea,"DOMSubtreeModified",d);mxEvent.addListener(e.cellEditor.textarea,"input",d);mxEvent.addListener(e.cellEditor.textarea,"touchend",d);mxEvent.addListener(e.cellEditor.textarea,"mouseup",d);mxEvent.addListener(e.cellEditor.textarea,"keyup",d);this.listeners.push({destroy:function(){}});d()}return a};StyleFormatPanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};
StyleFormatPanel.prototype.getCssRules=function(a){var c=document.implementation.createHTMLDocument(""),f=document.createElement("style");mxUtils.setTextContent(f,a);c.body.appendChild(f);return f.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var c=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var f=c.style.editableCssRules;if(null!=f){var e=new RegExp(f),g=c.style.image.substring(c.style.image.indexOf(",")+1),d=window.atob?atob(g):Base64.decode(g,!0),k=mxUtils.parseXml(d);if(null!=k){var n=k.getElementsByTagName("style");for(c=0;c<n.length;c++){var u=this.getCssRules(mxUtils.getTextContent(n[c]));
for(f=0;f<u.length;f++)this.addSvgRule(a,u[f],k,n[c],u,f,e)}}}}catch(m){}return a};
StyleFormatPanel.prototype.addSvgRule=function(a,c,f,e,g,d,k){var n=this.editorUi,u=n.editor.graph;k.test(c.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var A=mxUtils.trim(m.style[r]);""!=A&&"url("!=A.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=A;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[d].style[r]=C;C="";for(var F=0;F<g.length;F++)C+=g[F].cssText+" ";e.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(c,"fill",mxResources.get("fill")),k(c,"stroke",mxResources.get("line")),k(c,"stop-color",
StyleFormatPanel.prototype.addEditOps=function(a){var c=this.editorUi.getSelectionState(),f=null;1==c.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(e){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",a.appendChild(f));c.image&&0<c.cells.length&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(e){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==f?c.style.width="210px":(f.style.width="104px",c.style.width="104px",c.style.marginLeft="2px"),a.appendChild(c));return a};
StyleFormatPanel.prototype.addFill=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var g=document.createElement("select");g.style.position="absolute";g.style.left="104px";g.style.width="70px";g.style.height="22px";g.style.padding="0px";g.style.marginTop="-3px";g.style.borderRadius="4px";g.style.border="1px solid rgb(160, 160, 160)";g.style.boxSizing="border-box";var d=g.cloneNode(!1);mxEvent.addListener(g,"click",function(C){mxEvent.consume(C)});
for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),d.appendChild(r);k.appendChild(d);var A=mxUtils.bind(this,function(){e=c.getSelectionState();var C=mxUtils.getValue(e.style,mxConstants.STYLE_GRADIENT_DIRECTION,
A();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,e.cells);c.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",e.cells));mxEvent.consume(C)});mxEvent.addListener(d,"change",function(C){f.setCellStyles("fillStyle",d.value,e.cells);c.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[d.value],"cells",e.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
StyleFormatPanel.prototype.addStroke=function(a){function c(W){var Z=parseFloat(E.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,Z,d.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[Z],"cells",d.cells)));E.value=Z+" pt";mxEvent.consume(W)}function f(W){var Z=parseFloat(O.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,
A.appendChild(E);var O=E.cloneNode(!0);F.appendChild(O);var R=this.createStepper(E,c,1,9);R.style.display=E.style.display;R.style.marginTop="2px";R.style.left="198px";A.appendChild(R);R=this.createStepper(O,f,1,9);R.style.display=O.style.display;R.style.marginTop="2px";O.style.position="absolute";R.style.left="198px";F.appendChild(R);mxEvent.addListener(E,"blur",c);mxEvent.addListener(E,"change",c);mxEvent.addListener(O,"blur",f);mxEvent.addListener(O,"change",f);var Q=this.editorUi.toolbar.addMenuFunctionInContainer(u,
StyleFormatPanel.prototype.addLineJumps=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();if(Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps){a.style.padding="2px 0px 24px 14px";var g=document.createElement("div");g.style.position="absolute";g.style.maxWidth="82px";g.style.overflow="hidden";g.style.textOverflow="ellipsis";mxUtils.write(g,mxResources.get("lineJumps"));a.appendChild(g);var d=document.createElement("select");d.style.position="absolute";
d.value,e.cells),c.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[d.value],"cells",e.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(d,"click",function(x){mxEvent.consume(x)});a.appendChild(d);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,A,C){e=c.getSelectionState();d.value=mxUtils.getValue(e.style,
StyleFormatPanel.prototype.addEffects=function(a){var c=this.editorUi,f=c.editor.graph,e=c.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";g.style.tableLayout="fixed";var d=document.createElement("tbody"),k=document.createElement("tr");k.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","top");var u=n.cloneNode(!0);u.style.paddingLeft=
"8px";k.appendChild(n);k.appendChild(u);d.appendChild(k);g.appendChild(d);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,F,K){C=this.createCellOption(C,F,K);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),A=mxUtils.bind(this,function(C,F,K){e=c.getSelectionState();n.innerHTML="";u.innerHTML="";m=n;e.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);e.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);e.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
0);e.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});A();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};
DiagramStylePanel.prototype.addView=function(a){var c=this.editorUi,f=c.editor.graph,e=f.getModel(),g=f.view.gridColor;a.style.whiteSpace="normal";var d="1"==f.currentVertexStyle.sketch&&"1"==f.currentEdgeStyle.sketch,k="1"==f.currentVertexStyle.rounded,n="1"==f.currentEdgeStyle.curved,u=document.createElement("div");u.style.marginRight="16px";a.style.paddingTop="8px";var m=document.createElement("table");m.style.width="210px";m.style.fontWeight="bold";var r=document.createElement("tbody"),x=document.createElement("tr");
I||null!=qa[S]&&qa[S]!=mxConstants.NONE||S!=mxConstants.STYLE_FILLCOLOR&&S!=mxConstants.STYLE_STROKECOLOR)qa[S]=ba[S]}});"1"!=urlParams.sketch&&(A=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){e.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{e.endUpdate()}}c.clearDefaultStyle()})),A.setAttribute("title",mxResources.get("reset")),A.style.textOverflow=
O(I,f.currentEdgeStyle);"1"==urlParams.sketch&&(d=Editor.sketchMode);d?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";e.beginUpdate();try{var ea=F.slice(),ka;for(ka in ba)ea.push(ka);K(ea,L);var wa=new ChangePageSetup(c,null!=L?L.background:null);wa.ignoreImage=!0;e.execute(wa);e.execute(new ChangeGridColor(c,null!=
aa))})),m(A),m(C))}else U();return a};DiagramStylePanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.darkModeChangedListener&&(this.editorUi.removeListener(this.darkModeChangedListener),this.darkModeChangedListener=null)};DiagramFormatPanel=function(a,c,f){BaseFormatPanel.call(this,a,c,f);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.addView=function(a){var c=this.editorUi,f=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return f.pageVisible},function(d){c.actions.get("pageView").funct()},{install:function(d){this.listener=function(){d(f.pageVisible)};c.addListener("pageViewChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}}));
if(f.isEnabled()){var e=this.createColorOption(mxResources.get("background"),function(){return f.background},function(d){var k=new ChangePageSetup(c,d);k.ignoreImage=null!=d&&d!=mxConstants.NONE;f.model.execute(k)},"#ffffff",{install:function(d){this.listener=function(){d(f.background)};c.addListener("backgroundColorChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});if(this.showBackgroundImageOption){var g=e.getElementsByTagName("span")[0];g.style.display="inline-block";
g.style.textOverflow="ellipsis";g.style.overflow="hidden";g.style.maxWidth="68px";mxClient.IS_FF&&(g.style.marginTop="1px");g=mxUtils.button(mxResources.get("change"),function(d){c.showBackgroundImageDialog(null,c.editor.graph.backgroundImage);mxEvent.consume(d)});g.className="geColorBtn";g.style.position="absolute";g.style.marginTop="-3px";g.style.height="22px";g.style.left="118px";g.style.width="56px";e.appendChild(g)}a.appendChild(e)}return a};
DiagramFormatPanel.prototype.addOptions=function(a){var c=this.editorUi,f=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("options")));f.isEnabled()&&(a.appendChild(this.createOption(mxResources.get("connectionArrows"),function(){return f.connectionArrowsEnabled},function(e){c.actions.get("connectionArrows").funct()},{install:function(e){this.listener=function(){e(f.connectionArrowsEnabled)};c.addListener("connectionArrowsChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}})),
a.appendChild(this.createOption(mxResources.get("connectionPoints"),function(){return f.connectionHandler.isEnabled()},function(e){c.actions.get("connectionPoints").funct()},{install:function(e){this.listener=function(){e(f.connectionHandler.isEnabled())};c.addListener("connectionPointsChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}})),a.appendChild(this.createOption(mxResources.get("guides"),function(){return f.graphHandler.guidesEnabled},function(e){c.actions.get("guides").funct()},
{install:function(e){this.listener=function(){e(f.graphHandler.guidesEnabled)};c.addListener("guidesEnabledChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}})));return a};
DiagramFormatPanel.prototype.addGridOption=function(a){function c(u){var m=f.isFloatUnit()?parseFloat(d.value):parseInt(d.value);m=f.fromUnit(Math.max(f.inUnit(1),isNaN(m)?f.inUnit(10):m));m!=g.getGridSize()&&(mxGraph.prototype.gridSize=m,g.setGridSize(m));d.value=f.inUnit(m)+" "+f.getUnit();mxEvent.consume(u)}var f=this,e=this.editorUi,g=e.editor.graph,d=document.createElement("input");d.style.position="absolute";d.style.textAlign="right";d.style.width="48px";d.style.marginTop="-2px";d.style.height=
"21px";d.style.border="1px solid rgb(160, 160, 160)";d.style.borderRadius="4px";d.style.boxSizing="border-box";d.value=this.inUnit(g.getGridSize())+" "+this.getUnit();var k=this.createStepper(d,c,this.getUnitStep(),null,null,null,this.isFloatUnit());d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;mxEvent.addListener(d,"keydown",function(u){13==u.keyCode?(g.container.focus(),mxEvent.consume(u)):27==u.keyCode&&(d.value=g.getGridSize(),g.container.focus(),mxEvent.consume(u))});
mxEvent.addListener(d,"blur",c);mxEvent.addListener(d,"change",c);d.style.right="78px";k.style.marginTop="-17px";k.style.right="66px";var n=this.createColorOption(mxResources.get("grid"),function(){var u=g.view.gridColor;return g.isGridEnabled()?u:null},function(u){var m=g.isGridEnabled();u==mxConstants.NONE?g.setGridEnabled(!1):(g.setGridEnabled(!0),e.setGridColor(u));d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;m!=g.isGridEnabled()&&(g.defaultGridEnabled=g.isGridEnabled(),
DiagramFormatPanel.prototype.addPaperSize=function(a){var c=this.editorUi,f=c.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var e=PageSetupDialog.addPageFormatPanel(a,"formatpanel",f.pageFormat,function(d){if(null==f.pageFormat||f.pageFormat.width!=d.width||f.pageFormat.height!=d.height)d=new ChangePageSetup(c,null,null,d),d.ignoreColor=!0,d.ignoreImage=!0,f.model.execute(d)});this.addKeyHandler(e.widthInput,function(){e.set(f.pageFormat)});this.addKeyHandler(e.heightInput,
function(){e.set(f.pageFormat)});var g=function(){e.set(f.pageFormat)};c.addListener("pageFormatChanged",g);this.listeners.push({destroy:function(){c.removeListener(g)}});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});return a};DiagramFormatPanel.prototype.addStyleOps=function(a){this.addActions(a,["editData"]);this.addActions(a,["clearDefaultStyle"]);return a};
DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(b,h,q){mxShape.call(this);this.line=b;this.stroke=h;this.strokewidth=null!=q?q:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function f(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function d(){mxActor.call(this)}function k(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function m(){mxCylinder.call(this)}function r(){mxShape.call(this)}function x(){mxShape.call(this)}
function A(b,h,q,l){mxShape.call(this);this.bounds=b;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function F(){mxCylinder.call(this)}function K(){mxCylinder.call(this)}function E(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function Q(){mxActor.call(this)}function P(){mxActor.call(this)}function aa(){mxActor.call(this)}function T(){mxActor.call(this)}function U(b,h){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
function ja(){mxRhombus.call(this)}function ta(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Ea(){mxActor.call(this)}function Fa(b,h,q,l){mxShape.call(this);this.bounds=b;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
function Pa(b,h,q,l,p,v,w,J,y,Y){w+=y;var N=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){b.ellipse(N.x-p-w,N.y-v-w,2*w,2*w);Y?b.fillAndStroke():b.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==b?b=q:b.add(q))}this.bounds=null!=b?b:new mxRectangle};a.prototype.paintVertexShape=function(b,
h,q,l,p){this.paintTableLine(b,this.line,0,0)};a.prototype.paintTableLine=function(b,h,q,l){if(null!=h){var p=null;b.begin();for(var v=0;v<h.length;v++){var w=h[v];null!=w&&(null==p?b.moveTo(w.x+q,w.y+l):null!=p&&b.lineTo(w.x+q,w.y+l));p=w}b.end();b.stroke()}};a.prototype.intersectsRectangle=function(b){var h=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var q=null,l=0;l<this.line.length&&!h;l++){var p=this.line[l];null!=p&&null!=q&&(h=mxUtils.rectangleIntersectsSegment(b,
q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(c,mxSwimlane);c.prototype.getLabelBounds=function(b){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};c.prototype.paintVertexShape=function(b,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),J=this.getTitleSize();0==J||this.outline?Da.prototype.paintVertexShape.apply(this,
arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),b.translate(-h,-q));v||this.outline||!(w&&J<p||!w&&J<l)||this.paintForeground(b,h,q,l,p)};c.prototype.paintForeground=function(b,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var J=v;v=w;w=J}b.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
s;this.paintTableForeground(b,h,q,l,p)}};c.prototype.paintTableForeground=function(b,h,q,l,p){l=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(p=0;p<l.length;p++)a.prototype.paintTableLine(b,l[p],h,q)};c.prototype.configurePointerEvents=function(b){0==this.getTitleSize()?b.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
c);mxUtils.extend(f,c);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),J=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"darkOpacity2",this.darkOpacity2))));b.translate(h,q);b.begin();b.moveTo(0,0);b.lineTo(l-v,0);b.lineTo(l,v);b.lineTo(l,p);b.lineTo(v,p);b.lineTo(0,p-v);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=w&&(b.setFillAlpha(Math.abs(w)),b.setFillColor(0>w?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(l-v,0),b.lineTo(l,v),b.lineTo(v,v),b.close(),b.fill()),0!=J&&(b.setFillAlpha(Math.abs(J)),b.setFillColor(0>J?"#FFFFFF":"#000000"),b.begin(),b.moveTo(0,0),b.lineTo(v,
v),b.lineTo(v,p),b.lineTo(0,p-v),b.close(),b.fill()),b.begin(),b.moveTo(v,p),b.lineTo(v,v),b.lineTo(0,0),b.moveTo(v,v),b.lineTo(l,v),b.end(),b.stroke())};e.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?(b=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(b,b,0,0)):null};mxCellRenderer.registerShape("cube",e);var Na=Math.tan(mxUtils.toRadians(30)),Sa=(.5-Na)/2;mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(g,
mxCylinder);g.prototype.size=6;g.prototype.paintVertexShape=function(b,h,q,l,p){b.setFillColor(this.stroke);var v=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;b.ellipse(h+.5*(l-v),q+.5*(p-v),v,v);b.fill();b.setFillColor(mxConstants.NONE);b.rect(h,q,l,p);b.fill()};mxCellRenderer.registerShape("waypoint",g);mxUtils.extend(d,mxActor);d.prototype.size=20;d.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(l,p/Na);b.translate((l-h)/2,(p-h)/2+h/4);b.moveTo(0,
.25*h);b.lineTo(.5*h,h*Sa);b.lineTo(h,.25*h);b.lineTo(.5*h,(.5-Sa)*h);b.lineTo(0,.25*h);b.close();b.end()};mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(k,mxCylinder);k.prototype.size=20;k.prototype.redrawPath=function(b,h,q,l,p,v){h=Math.min(l,p/(.5+Na));v?(b.moveTo(0,.25*h),b.lineTo(.5*h,(.5-Sa)*h),b.lineTo(h,.25*h),b.moveTo(.5*h,(.5-Sa)*h),b.lineTo(.5*h,(1-Sa)*h)):(b.translate((l-h)/2,(p-h)/2),b.moveTo(0,.25*h),b.lineTo(.5*h,h*Sa),b.lineTo(h,.25*h),b.lineTo(h,.75*h),b.lineTo(.5*
h,(1-Sa)*h),b.lineTo(0,.75*h),b.close());b.end()};mxCellRenderer.registerShape("isoCube",k);mxUtils.extend(n,mxCylinder);n.prototype.redrawPath=function(b,h,q,l,p,v){h=Math.min(p/2,Math.round(p/8)+this.strokewidth-1);if(v&&null!=this.fill||!v&&null==this.fill)b.moveTo(0,h),b.curveTo(0,2*h,l,2*h,l,h),v||(b.stroke(),b.begin()),b.translate(0,h/2),b.moveTo(0,h),b.curveTo(0,2*h,l,2*h,l,h),v||(b.stroke(),b.begin()),b.translate(0,h/2),b.moveTo(0,h),b.curveTo(0,2*h,l,2*h,l,h),v||(b.stroke(),b.begin()),b.translate(0,
-h);v||(b.moveTo(0,h),b.curveTo(0,-h/3,l,-h/3,l,h),b.lineTo(l,p-h),b.curveTo(l,p+h/3,0,p+h/3,0,p-h),b.close())};n.prototype.getLabelMargins=function(b){return new mxRectangle(0,2.5*Math.min(b.height/2,Math.round(b.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",n);mxUtils.extend(u,mxCylinder);u.prototype.size=30;u.prototype.darkOpacity=0;u.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",
this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));b.translate(h,q);b.begin();b.moveTo(0,0);b.lineTo(l-v,0);b.lineTo(l,v);b.lineTo(l,p);b.lineTo(0,p);b.lineTo(0,0);b.close();b.end();b.fillAndStroke();this.outline||(b.setShadow(!1),0!=w&&(b.setFillAlpha(Math.abs(w)),b.setFillColor(0>w?"#FFFFFF":"#000000"),b.begin(),b.moveTo(l-v,0),b.lineTo(l-v,v),b.lineTo(l,v),b.close(),b.fill()),b.begin(),b.moveTo(l-v,0),b.lineTo(l-v,v),b.lineTo(l,v),
b.end(),b.stroke())};mxCellRenderer.registerShape("note",u);mxUtils.extend(m,u);mxCellRenderer.registerShape("note2",m);m.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,h*this.scale),0,0)}return null};mxUtils.extend(r,mxShape);r.prototype.isoAngle=15;r.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
"isoAngle",this.isoAngle))))*Math.PI/200;v=Math.min(l*Math.tan(v),.5*p);b.translate(h,q);b.begin();b.moveTo(.5*l,0);b.lineTo(l,v);b.lineTo(l,p-v);b.lineTo(.5*l,p);b.lineTo(0,p-v);b.lineTo(0,v);b.close();b.fillAndStroke();b.setShadow(!1);b.begin();b.moveTo(0,v);b.lineTo(.5*l,2*v);b.lineTo(l,v);b.moveTo(.5*l,2*v);b.lineTo(.5*l,p);b.stroke()};mxCellRenderer.registerShape("isoCube2",r);mxUtils.extend(x,mxShape);x.prototype.size=15;x.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(.5*
p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.translate(h,q);0==v?(b.rect(0,0,l,p),b.fillAndStroke()):(b.begin(),b.moveTo(0,v),b.arcTo(.5*l,v,0,0,1,.5*l,0),b.arcTo(.5*l,v,0,0,1,l,v),b.lineTo(l,p-v),b.arcTo(.5*l,v,0,0,1,.5*l,p),b.arcTo(.5*l,v,0,0,1,0,p-v),b.close(),b.fillAndStroke(),b.setShadow(!1),b.begin(),b.moveTo(l,v),b.arcTo(.5*l,v,0,0,1,.5*l,2*v),b.arcTo(.5*l,v,0,0,1,0,v),b.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(A,mxCylinder);A.prototype.size=
15;A.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);b.translate(h,q);0==v?(b.rect(0,0,l,p),b.fillAndStroke()):(b.begin(),w?(b.moveTo(0,v),b.arcTo(.5*l,v,0,0,1,.5*l,0),b.arcTo(.5*l,v,0,0,1,l,v)):(b.moveTo(0,0),b.arcTo(.5*l,v,0,0,0,.5*l,v),b.arcTo(.5*l,v,0,0,0,l,0)),b.lineTo(l,p-v),b.arcTo(.5*l,v,0,0,1,.5*l,p),b.arcTo(.5*l,v,0,0,1,0,p-v),b.close(),b.fillAndStroke(),b.setShadow(!1),
w&&(b.begin(),b.moveTo(l,v),b.arcTo(.5*l,v,0,0,1,.5*l,2*v),b.arcTo(.5*l,v,0,0,1,0,v),b.stroke()))};mxCellRenderer.registerShape("cylinder3",A);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(b,h,q,l,p){b.moveTo(0,0);b.quadTo(l/2,.5*p,l,0);b.quadTo(.5*l,p/2,l,p);b.quadTo(l/2,.5*p,0,p);b.quadTo(.5*l,p/2,0,0);b.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(F,mxCylinder);F.prototype.tabWidth=60;F.prototype.tabHeight=20;F.prototype.tabPosition="right";F.prototype.arcSize=.1;
F.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),J=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));J||(y*=Math.min(l,p));
y=Math.min(y,.5*l,.5*(p-q));h=Math.max(h,y);h=Math.min(l-y,h);w||(y=0);b.begin();"left"==v?(b.moveTo(Math.max(y,0),q),b.lineTo(Math.max(y,0),0),b.lineTo(h,0),b.lineTo(h,q)):(b.moveTo(l-h,q),b.lineTo(l-h,0),b.lineTo(l-Math.max(y,0),0),b.lineTo(l-Math.max(y,0),q));w?(b.moveTo(0,y+q),b.arcTo(y,y,0,0,1,y,q),b.lineTo(l-y,q),b.arcTo(y,y,0,0,1,l,y+q),b.lineTo(l,p-y),b.arcTo(y,y,0,0,1,l-y,p),b.lineTo(y,p),b.arcTo(y,y,0,0,1,0,p-y)):(b.moveTo(0,q),b.lineTo(l,q),b.lineTo(l,p),b.lineTo(0,p));b.close();b.fillAndStroke();
b.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(b.begin(),b.moveTo(l-30,q+20),b.lineTo(l-20,q+10),b.lineTo(l-10,q+20),b.close(),b.stroke())};mxCellRenderer.registerShape("folder",F);F.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(b.width,b.height));v=Math.min(v,.5*b.width,.5*(b.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(v,0,Math.min(b.width,b.width-q),Math.min(b.height,b.height-h)):new mxRectangle(Math.min(b.width,b.width-q),0,v,Math.min(b.height,b.height-
h))}return new mxRectangle(0,Math.min(b.height,h),0,0)}return null};mxUtils.extend(K,mxCylinder);K.prototype.arcSize=.1;K.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);b.begin();b.moveTo(v,
h);b.arcTo(h,h,0,0,1,v+h,0);b.lineTo(l-h,0);b.arcTo(h,h,0,0,1,l,h);b.lineTo(l,p-h);b.arcTo(h,h,0,0,1,l-h,p);b.lineTo(v+h,p);b.arcTo(h,h,0,0,1,v,p-h);b.close();b.fillAndStroke();b.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(b.roundrect(l-40,p-20,10,10,3,3),b.stroke(),b.roundrect(l-20,p-20,10,10,3,3),b.stroke(),b.begin(),b.moveTo(l-30,p-15),b.lineTo(l-20,p-15),b.stroke());"connPointRefEntry"==q?(b.ellipse(0,.5*p-10,20,20),b.fillAndStroke()):"connPointRefExit"==
q&&(b.ellipse(0,.5*p-10,20,20),b.fillAndStroke(),b.begin(),b.moveTo(5,.5*p-5),b.lineTo(15,.5*p+5),b.moveTo(15,.5*p-5),b.lineTo(5,.5*p+5),b.stroke())};K.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",K);mxUtils.extend(E,mxActor);E.prototype.size=30;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=
function(b,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("card",E);mxUtils.extend(O,mxActor);O.prototype.size=.4;O.prototype.redrawPath=function(b,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));b.moveTo(0,h/2);b.quadTo(l/4,1.4*h,l/2,h/2);b.quadTo(3*l/4,h*(1-1.4),l,h/2);b.lineTo(l,p-h/2);b.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);b.quadTo(l/4,p-h*(1-1.4),0,p-h/2);b.lineTo(0,h/2);b.close();b.end()};O.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=b.width,l=b.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
l,new mxRectangle(b.x,b.y+h,q,l-2*h);h*=q;return new mxRectangle(b.x+h,b.y,q-2*h,l)}return b};mxCellRenderer.registerShape("tape",O);mxUtils.extend(R,mxActor);R.prototype.size=.3;R.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*b.height):null};R.prototype.redrawPath=function(b,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(0,
0);b.lineTo(l,0);b.lineTo(l,p-h/2);b.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);b.quadTo(l/4,p-h*(1-1.4),0,p-h/2);b.lineTo(0,h/2);b.close();b.end()};mxCellRenderer.registerShape("document",R);var eb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(b,h,q,l){var p=mxUtils.getValue(this.style,"size");return null!=p?l*Math.max(0,Math.min(1,p)):eb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=2*mxUtils.getValue(this.style,
"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,b.height*h),0,0)}return null};A.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(b.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};F.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(b.width,b.height));v=Math.min(v,.5*b.width,.5*(b.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
this.tabPosition)?new mxRectangle(v,0,Math.min(b.width,b.width-q),Math.min(b.height,b.height-h)):new mxRectangle(Math.min(b.width,b.width-q),0,v,Math.min(b.height,b.height-h))}return new mxRectangle(0,Math.min(b.height,h),0,0)}return null};K.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,h*this.scale),0,Math.max(0,h*this.scale))}return null};mxUtils.extend(Q,mxActor);Q.prototype.size=.2;Q.prototype.fixedSize=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l-h,p)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("parallelogram",Q);mxUtils.extend(P,mxActor);P.prototype.size=.2;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("trapezoid",P);mxUtils.extend(aa,mxActor);aa.prototype.size=.5;aa.prototype.redrawPath=function(b,h,q,l,p){b.setFillColor(null);
h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",aa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(b,h,q,l,p){b.setStrokeWidth(1);b.setFillColor(this.stroke);
h=l/5;b.rect(0,0,h,p);b.fillAndStroke();b.rect(2*h,0,h,p);b.fillAndStroke();b.rect(4*h,0,h,p);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",T);U.prototype.moveTo=function(b,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=h;this.firstX=b;this.firstY=h};U.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
U.prototype.quadTo=function(b,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};U.prototype.curveTo=function(b,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};U.prototype.arcTo=function(b,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};U.prototype.lineTo=function(b,h){if(null!=this.lastX&&null!=this.lastY){var q=function(N){return"number"===typeof N?N?0>N?-1:1:N===N?0:NaN:NaN},l=Math.abs(b-
this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=h;return}var w=Math.round(v/10),J=this.defaultVariation;5>w&&(w=5,J/=3);var y=q(b-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*J;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,b,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=
h};U.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Za=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){Za.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};var pb=mxShape.prototype.afterPaint;
mxShape.prototype.afterPaint=function(b){pb.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new U(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var ub=mxRectangleShape.prototype.isHtmlAllowed;
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,h,q,l,p){if(null==b.handJiggle||b.handJiggle.constructor!=U)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(v||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)v||null!=this.fill&&this.fill!=mxConstants.NONE||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?v=Math.min(l/2,Math.min(p/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,v=Math.min(l*
v,p*v)),b.moveTo(h+v,q),b.lineTo(h+l-v,q),b.quadTo(h+l,q,h+l,q+v),b.lineTo(h+l,q+p-v),b.quadTo(h+l,q+p,h+l-v,q+p),b.lineTo(h+v,q+p),b.quadTo(h,q+p,h,q+p-v),b.lineTo(h,q+v),b.quadTo(h,q,h+v,q)):(b.moveTo(h,q),b.lineTo(h+l,q),b.lineTo(h+l,q+p),b.lineTo(h,q+p),b.lineTo(h,q)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var h=b.width,q=b.height;b=new mxRectangle(b.x,b.y,h,q);var l=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var p=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;l=Math.max(l,Math.min(h*p,q*p))}b.x+=Math.round(l);b.width-=Math.round(2*l);return b}return b};
fa.prototype.paintForeground=function(b,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);b.begin();b.moveTo(h+w,q);b.lineTo(h+w,q+p);b.moveTo(h+l-w,q);b.lineTo(h+l-w,q+p);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(b,h,q,l,p){b.setFillColor(mxConstants.NONE);b.rect(h,q,l,p);b.fill()};ha.prototype.paintForeground=function(b,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(b,h,q,l,p){h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),w=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),J=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+J),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(b,h,
q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(0,p),new mxPoint(h,p/2)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("step",
qa);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(h,
0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(b,h,q,l,p){var v=Math.min(l/5,p/5)+1;b.begin();b.moveTo(h+l/2,q+v);b.lineTo(h+l/2,q+p-v);b.moveTo(h+v,q+p/2);b.lineTo(h+l-v,q+p/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
L);var ab=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+h,b.y+h,b.width-2*h,b.height-2*h)}return b};mxRhombus.prototype.paintVertexShape=function(b,h,q,l,p){ab.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(b.setShadow(!1),ab.apply(this,[b,h,q,l,p]))}};mxUtils.extend(H,mxRectangleShape);H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+h,b.y+h,b.width-2*h,b.height-2*h)}return b};H.prototype.paintForeground=function(b,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var J=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],N=this.style["symbol"+v+"Height"],Ca=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ca,
Ka=this.style["symbol"+v+"ArcSpacing"];null!=Ka&&(Ka*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ca+=Ka,Qa+=Ka);Ka=h;var la=q;Ka=J==mxConstants.ALIGN_CENTER?Ka+(l-Y)/2:J==mxConstants.ALIGN_RIGHT?Ka+(l-Y-Ca):Ka+Ca;la=y==mxConstants.ALIGN_MIDDLE?la+(p-N)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-N-Qa):la+Qa;b.save();J=new w;J.style=this.style;w.prototype.paintVertexShape.call(J,b,Ka,la,Y,N);b.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
H);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(b,h,q,l,p,v){v?(b.moveTo(0,0),b.lineTo(l/2,p/2),b.lineTo(l,0),b.end()):(b.moveTo(0,0),b.lineTo(l,0),b.lineTo(l,p),b.lineTo(0,p),b.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(V,mxShape);V.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.ellipse(l/4,0,l/2,p/4);b.fillAndStroke();b.begin();b.moveTo(l/2,p/4);b.lineTo(l/2,2*p/3);b.moveTo(l/2,p/3);b.lineTo(0,p/3);b.moveTo(l/2,p/3);b.lineTo(l,p/3);b.moveTo(l/
2,2*p/3);b.lineTo(0,p);b.moveTo(l/2,2*p/3);b.lineTo(l,p);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",V);mxUtils.extend(ea,mxShape);ea.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};ea.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(0,p/4);b.lineTo(0,3*p/4);b.end();b.stroke();b.begin();b.moveTo(0,p/2);b.lineTo(l/6,p/2);b.end();b.stroke();b.ellipse(l/6,0,5*l/6,p);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
ea);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(h+l/8,q+p);b.lineTo(h+7*l/8,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",ka);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(l,0);b.lineTo(0,p);b.moveTo(0,0);b.lineTo(l,p);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
mxShape);W.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};W.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(3*l/8,p/8*1.1);b.lineTo(5*l/8,0);b.end();b.stroke();b.ellipse(0,p/8,l,7*p/8);b.fillAndStroke()};W.prototype.paintForeground=function(b,h,q,l,p){b.begin();b.moveTo(3*l/8,p/8*1.1);b.lineTo(5*l/8,p/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",W);mxUtils.extend(Z,mxRectangleShape);Z.prototype.size=
40;Z.prototype.isHtmlAllowed=function(){return!1};Z.prototype.getLabelBounds=function(b){var h=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,h)};Z.prototype.paintBackground=function(b,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"participant");null==w||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,h,
q,l,v):(w=this.state.view.graph.cellRenderer.getShape(w),null!=w&&w!=Z&&(w=new w,w.apply(this.state),b.save(),w.paintVertexShape(b,h,q,l,v),b.restore()));v<p&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(h+l/2,q+v),b.lineTo(h+l/2,q+p),b.end(),b.stroke())};Z.prototype.paintForeground=function(b,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,h,q,l,Math.min(p,
v))};mxCellRenderer.registerShape("umlLifeline",Z);mxUtils.extend(oa,mxShape);oa.prototype.width=60;oa.prototype.height=30;oa.prototype.corner=10;oa.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};oa.prototype.paintBackground=function(b,h,q,l,p){var v=this.corner,w=Math.min(l,Math.max(v,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),J=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(b.setFillColor(y),b.rect(h,q,l,p),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,h,q,l,p),b.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
b.moveTo(h,q);b.lineTo(h+w,q);b.lineTo(h+w,q+Math.max(0,J-1.5*v));b.lineTo(h+Math.max(0,w-v),q+J);b.lineTo(h,q+J);b.close();b.fillAndStroke();b.begin();b.moveTo(h+w,q);b.lineTo(h+l,q);b.lineTo(h+l,q+p);b.lineTo(h,q+p);b.lineTo(h,q+J);b.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(b,h,q,l){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,h,
q,l){l=Z.prototype.size;null!=h&&(l=mxUtils.getValue(h.style,"size",l)*h.view.scale);h=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;q.x<b.getCenterX()&&(h=-1*(h+1));return new mxPoint(b.getCenterX()+h,Math.min(b.y+b.height,Math.max(b.y+l,q.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,h,q,l){l=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,h,q,l){l=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;null!=h.style.backboneSize&&(l+=parseFloat(h.style.backboneSize)*h.view.scale/2-1);if("south"==h.style[mxConstants.STYLE_DIRECTION]||"north"==h.style[mxConstants.STYLE_DIRECTION])return q.x<b.getCenterX()&&(l=-1*(l+1)),new mxPoint(b.getCenterX()+l,Math.min(b.y+b.height,Math.max(b.y,q.y)));q.y<b.getCenterY()&&(l=-1*(l+1));return new mxPoint(Math.min(b.x+
b.width,Math.max(b.x,q.x)),b.getCenterY()+l)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,h,q,l){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(h.style,"size",ba.prototype.size))*h.view.scale))),h.style),h,q,l)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?Q.prototype.fixedSize:Q.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+
y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]);Y=b.getCenterX();b=b.getCenterY();b=new mxPoint(Y,b);l&&(q.x<w||q.x>w+y?b.y=q.y:b.x=q.x);return mxUtils.getPerimeterPoint(J,b,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,h,q,l){var p="0"!=mxUtils.getValue(h.style,
"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_WEST?
J)]);Y=b.getCenterX();b=b.getCenterY();b=new mxPoint(Y,b);l&&(q.x<w||q.x>w+y?b.y=q.y:b.x=q.x);return mxUtils.getPerimeterPoint(J,b,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height,N=b.getCenterX();b=b.getCenterY();h=null!=
h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y-p,J),new mxPoint(w+y,b),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,b),new mxPoint(w,J)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,b),new mxPoint(w+
y,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,b),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y),new mxPoint(N,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(N,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]);N=new mxPoint(N,
b);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?I.prototype.fixedSize:I.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=b.x,J=b.y,y=b.width,Y=b.height,N=b.getCenterX();b=b.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p),new mxPoint(N,J)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,b),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,b),new mxPoint(w+p,J)]);N=new mxPoint(N,
b);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(va,mxShape);va.prototype.size=10;va.prototype.paintBackground=function(b,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(h,q);b.ellipse((l-v)/2,0,v,v);b.fillAndStroke();b.begin();b.moveTo(l/2,v);b.lineTo(l/2,p);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",va);mxUtils.extend(Ja,
mxShape);Ja.prototype.size=10;Ja.prototype.inset=2;Ja.prototype.paintBackground=function(b,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(h,q);b.begin();b.moveTo(l/2,v+w);b.lineTo(l/2,p);b.end();b.stroke();b.begin();b.moveTo((l-v)/2-w,v/2);b.quadTo((l-v)/2-w,v+w,l/2,v+w);b.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",Ja);mxUtils.extend(Ga,
mxShape);Ga.prototype.paintBackground=function(b,h,q,l,p){b.translate(h,q);b.begin();b.moveTo(0,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,0,p);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",Ga);mxUtils.extend(sa,mxShape);sa.prototype.inset=2;sa.prototype.paintBackground=function(b,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(h,q);b.ellipse(0,v,l-2*v,p-2*v);b.fillAndStroke();b.begin();b.moveTo(l/2,0);b.quadTo(l,0,l,p/2);b.quadTo(l,
p,l/2,p);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",sa);mxUtils.extend(za,mxCylinder);za.prototype.jettyWidth=20;za.prototype.jettyHeight=10;za.prototype.redrawPath=function(b,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=Math.min(h,p-h),y=Math.min(J+2*h,p-h);v?(b.moveTo(q,J),b.lineTo(w,J),b.lineTo(w,J+h),b.lineTo(q,J+h),b.moveTo(q,
y),b.lineTo(w,y),b.lineTo(w,y+h),b.lineTo(q,y+h)):(b.moveTo(q,0),b.lineTo(l,0),b.lineTo(l,p),b.lineTo(q,p),b.lineTo(q,y+h),b.lineTo(0,y+h),b.lineTo(0,y),b.lineTo(q,y),b.lineTo(q,J+h),b.lineTo(0,J+h),b.lineTo(0,J),b.lineTo(q,J),b.close());b.end()};mxCellRenderer.registerShape("module",za);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(b,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=.3*p-h/2,y=.7*p-h/2;v?(b.moveTo(q,J),b.lineTo(w,J),b.lineTo(w,J+h),b.lineTo(q,J+h),b.moveTo(q,y),b.lineTo(w,y),b.lineTo(w,y+h),b.lineTo(q,y+h)):(b.moveTo(q,0),b.lineTo(l,0),b.lineTo(l,p),b.lineTo(q,p),b.lineTo(q,y+h),b.lineTo(0,y+h),b.lineTo(0,y),b.lineTo(q,y),b.lineTo(q,J+h),b.lineTo(0,J+h),b.lineTo(0,J),b.lineTo(q,J),b.close());b.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Ha,mxRectangleShape);Ha.prototype.paintForeground=
function(b,h,q,l,p){var v=l/2,w=p/2,J=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,J,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Ha);mxUtils.extend(Ta,mxDoubleEllipse);Ta.prototype.outerStroke=!0;Ta.prototype.paintVertexShape=function(b,h,q,l,p){var v=Math.min(4,
Math.min(l/5,p/5));0<l&&0<p&&(b.ellipse(h+v,q+v,l-2*v,p-2*v),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(h,q,l,p),b.stroke())};mxCellRenderer.registerShape("endState",Ta);mxUtils.extend(db,Ta);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ua,mxArrowConnector);Ua.prototype.defaultWidth=4;Ua.prototype.isOpenEnded=function(){return!0};Ua.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.size=30;Ya.prototype.isRoundable=function(){return!0};Ya.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
0),new mxPoint(l,p)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("manualInput",Ya);mxUtils.extend(bb,mxRectangleShape);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.isHtmlAllowed=function(){return!1};bb.prototype.paintForeground=function(b,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(h,q+v);b.lineTo(h+l,q+v);b.end();b.stroke();b.begin();b.moveTo(h+w,q);b.lineTo(h+w,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",bb);mxUtils.extend(cb,mxActor);cb.prototype.dx=20;cb.prototype.dy=20;cb.prototype.redrawPath=function(b,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);b.end()};mxCellRenderer.registerShape("corner",cb);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(b,h,q,
l,p){b.moveTo(0,0);b.lineTo(0,p);b.end();b.moveTo(l,0);b.lineTo(l,p);b.end();b.moveTo(0,p/2);b.lineTo(l,p/2);b.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(b,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);b.end()};mxCellRenderer.registerShape("tee",$a);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(b,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);b.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(b,
h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
v),new mxPoint(h,p)],this.isRounded,w,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",t);mxUtils.extend(z,mxActor);z.prototype.size=.1;z.prototype.fixedSize=20;z.prototype.redrawPath=function(b,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(h,0);b.lineTo(l,0);b.quadTo(l-2*h,p/2,l,p);b.lineTo(h,p);b.quadTo(h-
2*h,p/2,h,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(b,h,q,l,p){b.moveTo(0,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,0,p);b.close();b.end()};mxCellRenderer.registerShape("or",B);mxUtils.extend(D,mxActor);D.prototype.redrawPath=function(b,h,q,l,p){b.moveTo(0,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,0,p);b.quadTo(l/2,p/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",D);mxUtils.extend(G,mxActor);G.prototype.size=20;
G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("loopLimit",G);mxUtils.extend(M,mxActor);M.prototype.size=
.375;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",M);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(h+l/2,q+p);b.lineTo(h+l,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(h,q+p/2);b.lineTo(h+l,q+p/2);b.end();b.stroke();b.begin();b.moveTo(h+l/2,q);b.lineTo(h+l/2,q+p);b.end();b.stroke()};mxCellRenderer.registerShape("orEllipse",
ia);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(h+.145*l,q+.145*p);b.lineTo(h+.855*l,q+.855*p);b.end();b.stroke();b.begin();b.moveTo(h+.855*l,q+.145*p);b.lineTo(h+.145*l,q+.855*p);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",da);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(b,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
arguments);b.setShadow(!1);b.begin();b.moveTo(h,q+p/2);b.lineTo(h+l,q+p/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(b,h,q,l,p){b.begin();b.moveTo(h,q);b.lineTo(h+l,q);b.lineTo(h+l/2,q+p/2);b.close();b.fillAndStroke();b.begin();b.moveTo(h,q+p);b.lineTo(h+l,q+p);b.lineTo(h+l/2,q+p/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",ta);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
function(b,h,q,l,p){var v=b.state.strokeWidth/2,w=10+2*v,J=q+p-w/2;b.begin();b.moveTo(h,q);b.lineTo(h,q+p);b.moveTo(h+v,J);b.lineTo(h+v+w,J-w/2);b.moveTo(h+v,J);b.lineTo(h+v+w,J+w/2);b.moveTo(h+v,J);b.lineTo(h+l-v,J);b.moveTo(h+l,q);b.lineTo(h+l,q+p);b.moveTo(h+l-v,J);b.lineTo(h+l-w-v,J-w/2);b.moveTo(h+l-v,J);b.lineTo(h+l-w-v,J+w/2);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Da,mxEllipse);Da.prototype.drawHidden=!0;Da.prototype.paintVertexShape=function(b,h,q,
l,p){this.outline||b.setStrokeColor(null);if(null!=this.style){var v=b.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(b.pointerEvents=!1);var J="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),N="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||J||Y||N||y?(b.rect(h,q,l,p),b.fill(),b.pointerEvents=
v,b.setStrokeColor(this.stroke),b.setLineCap("square"),b.begin(),b.moveTo(h,q),this.outline||J?b.lineTo(h+l,q):b.moveTo(h+l,q),this.outline||Y?b.lineTo(h+l,q+p):b.moveTo(h+l,q+p),this.outline||N?b.lineTo(h,q+p):b.moveTo(h,q+p),(this.outline||y)&&b.lineTo(h,q),b.end(),b.stroke(),b.setLineCap("flat")):b.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(b,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);b.setShadow(!1);b.begin();"vertical"==mxUtils.getValue(this.style,"line")?(b.moveTo(h+l/2,q),b.lineTo(h+l/2,q+p)):(b.moveTo(h,q+p/2),b.lineTo(h+l,q+p/2));b.end();b.stroke()};mxCellRenderer.registerShape("lineEllipse",Ma);mxUtils.extend(La,mxActor);La.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(l,p/2);b.moveTo(0,0);b.lineTo(l-h,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,l-h,p);b.lineTo(0,p);b.close();b.end()};mxCellRenderer.registerShape("delay",La);mxUtils.extend(Ia,mxActor);Ia.prototype.size=
.2;Ia.prototype.redrawPath=function(b,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;b.moveTo(0,h);b.lineTo(w,h);b.lineTo(w,0);b.lineTo(v,0);b.lineTo(v,h);b.lineTo(l,h);b.lineTo(l,q);b.lineTo(v,q);b.lineTo(v,p);b.lineTo(w,p);b.lineTo(w,q);b.lineTo(0,q);b.close();b.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Ea,mxActor);Ea.prototype.size=.25;Ea.prototype.redrawPath=function(b,
h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);b.moveTo(0,p/2);b.lineTo(q,0);b.lineTo(l-h,0);b.quadTo(l,0,l,p/2);b.quadTo(l,p,l-h,p);b.lineTo(q,p);b.close();b.end()};mxCellRenderer.registerShape("display",Ea);mxUtils.extend(Fa,mxActor);Fa.prototype.cst={RECT2:"mxgraph.basic.rect"};Fa.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",
enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Fa.prototype.paintVertexShape=function(b,h,q,l,p){b.translate(h,q);this.strictDrawShape(b,0,0,l,p)};Fa.prototype.strictDrawShape=function(b,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),J=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Fa.prototype;b.setDashed(Ca);Qa&&""!=Qa&&b.setDashPattern(Qa);b.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);J||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));J||(N=Math.min(Ka*Math.min(l,p)/100));N=Math.min(N,.5*Math.min(l,
p)-y);(la||pa||na||ma)&&"frame"!=Y&&(b.begin(),la?v.moveNW(b,h,q,l,p,w,ua,y,ma):b.moveTo(0,0),la&&v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),na&&v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),ma&&v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(wb),Ca=J=Cb,"none"==wb&&(J=0),"none"==yb&&(Ca=0),b.setGradient(wb,yb,0,0,l,p,Bb,J,Ca),
b.begin(),la?v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma):b.moveTo(N,0),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),ma&&na&&v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),na&&pa&&v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),pa&&la&&v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),la&&ma&&v.paintNWInner(b,h,q,l,p,w,ua,y,N),b.fill(),"none"==zb&&(b.begin(),v.paintFolds(b,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma),b.stroke()));
la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,
h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma)),b.stroke(),b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,
p,w,ya,y,na),"double"==Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close(),b.fillAndStroke(),b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):!la&&pa&&na&&
!ma?"frame"!=Y?(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,
h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),
v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),
v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,
ma)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close(),b.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,
h,q,l,p,w,ua,y,N,ma,la)),b.stroke(),b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke(),b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,h,q,l,p,w,
Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,
h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,
l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),
v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),
v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,
h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close(),b.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,
h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,
w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),b.close(),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,
y,N,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma),b.close()),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.paintNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,
l,p,w,ya,y,na),v.paintSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.paintSW(b,h,q,l,p,w,Aa,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),b.close(),v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintSWInner(b,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(b,h,q,l,p,w,ya,y,N),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(b,h,q,l,p,w,xa,y,N),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(b,h,q,l,p,w,ua,y,N),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,
na,ma),b.close(),b.fillAndStroke())):"frame"!=Y?(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la)),b.stroke()):(b.begin(),v.moveNW(b,h,q,l,p,w,ua,y,ma),v.paintTop(b,h,q,l,p,w,xa,y,pa),v.lineNEInner(b,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(b,h,q,l,p,w,ua,y,N,ma,la),b.close(),b.fillAndStroke()):"frame"!=Y?(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),"double"==
Y&&(v.moveSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa)),b.stroke()):(b.begin(),v.moveNE(b,h,q,l,p,w,xa,y,la),v.paintRight(b,h,q,l,p,w,ya,y,na),v.lineSEInner(b,h,q,l,p,w,ya,y,N,na),v.paintRightInner(b,h,q,l,p,w,xa,y,N,la,pa),b.close(),b.fillAndStroke()):"frame"!=Y?(b.begin(),v.moveSE(b,h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na)),b.stroke()):(b.begin(),v.moveSE(b,
h,q,l,p,w,ya,y,pa),v.paintBottom(b,h,q,l,p,w,Aa,y,ma),v.lineSWInner(b,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(b,h,q,l,p,w,ya,y,N,pa,na),b.close(),b.fillAndStroke()):"frame"!=Y?(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,w,Aa,y,N,na,ma)),b.stroke()):(b.begin(),v.moveSW(b,h,q,l,p,w,ua,y,na),v.paintLeft(b,h,q,l,p,w,ua,y,la),v.lineNWInner(b,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(b,h,q,l,p,
w,Aa,y,N,na,ma),b.close(),b.fillAndStroke());b.begin();v.paintFolds(b,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma);b.stroke()};Fa.prototype.moveNW=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(0,0):b.moveTo(0,J)};Fa.prototype.moveNE=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(l,0):b.moveTo(l-J,0)};Fa.prototype.moveSE=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(l,p):b.moveTo(l,p-J)};Fa.prototype.moveSW=
function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.moveTo(0,p):b.moveTo(J,p)};Fa.prototype.paintNW=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,J,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(J,0);else b.lineTo(0,0)};Fa.prototype.paintTop=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==
w&&"square"==v||!y?b.lineTo(l,0):b.lineTo(l-J,0)};Fa.prototype.paintNE=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,l,J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l,J);else b.lineTo(l,0)};Fa.prototype.paintRight=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.lineTo(l,p):b.lineTo(l,p-
J)};Fa.prototype.paintLeft=function(b,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.lineTo(0,0):b.lineTo(0,J)};Fa.prototype.paintSE=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,l-J,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l-J,p);else b.lineTo(l,p)};Fa.prototype.paintBottom=function(b,h,q,
l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?b.lineTo(0,p):b.lineTo(J,p)};Fa.prototype.paintSW=function(b,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;b.arcTo(J,J,0,0,h,0,p-J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(0,p-J);else b.lineTo(0,p)};Fa.prototype.paintNWInner=function(b,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==
w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,y,.5*y+J);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+y,J+y,0,0,1,y,y+J);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(y,.5*y+J);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(y+J,y+J),b.lineTo(y,y+J)};Fa.prototype.paintTopInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(0,y):Y&&!N?b.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?b.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
v?b.lineTo(J+.5*y,y):b.lineTo(J+y,y):b.lineTo(0,y):b.lineTo(0,0)};Fa.prototype.paintNEInner=function(b,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,l-J-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+y,J+y,0,0,1,l-J-y,y);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(l-J-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(l-J-y,J+y),b.lineTo(l-J-y,y)};Fa.prototype.paintRightInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&
N?b.lineTo(l-y,0):Y&&!N?b.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?b.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-y,J+.5*y):b.lineTo(l-y,J+y):b.lineTo(l-y,0):b.lineTo(l,0)};Fa.prototype.paintLeftInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(y,p):Y&&!N?b.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?b.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(y,p-J-.5*
y):b.lineTo(y,p-J-y):b.lineTo(y,p):b.lineTo(0,p)};Fa.prototype.paintSEInner=function(b,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,l-y,p-J-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+y,J+y,0,0,1,l-y,p-J-y);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(l-y,p-J-.5*y);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(l-J-y,p-J-y),b.lineTo(l-y,p-J-y)};Fa.prototype.paintBottomInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(l,
p-y):Y&&!N?b.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?b.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-J-.5*y,p-y):b.lineTo(l-J-y,p-y):b.lineTo(l,p)};Fa.prototype.paintSWInner=function(b,h,q,l,p,v,w,J,y,Y){if(!Y)b.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)b.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)b.arcTo(J-.5*y,J-.5*y,0,0,0,J+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)b.arcTo(J+
y,J+y,0,0,1,J+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)b.lineTo(J+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)b.lineTo(y+J,p-J-y),b.lineTo(y+J,p-y)};Fa.prototype.moveSWInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(y,p-J-y):b.moveTo(0,p-y)};Fa.prototype.lineSWInner=
function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(y,p-J-y):b.lineTo(0,p-y)};Fa.prototype.moveSEInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(l-
y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(l-y,p-J-y):b.moveTo(l-y,p)};Fa.prototype.lineSEInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?b.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l-y,p-J-y):b.lineTo(l-y,p)};Fa.prototype.moveNEInner=function(b,h,
q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?b.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(l-y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(l-y,J+y):b.moveTo(l,y)};Fa.prototype.lineNEInner=function(b,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?b.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(l-y,J+.5*y):
("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(l-y,J+y):b.lineTo(l,y)};Fa.prototype.moveNWInner=function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.moveTo(y,0):Y&&!N?b.moveTo(0,y):"square"==w||"default"==w&&"square"==v?b.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.moveTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.moveTo(y,J+y):b.moveTo(0,0)};Fa.prototype.lineNWInner=
function(b,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?b.lineTo(y,0):Y&&!N?b.lineTo(0,y):"square"==w||"default"==w&&"square"==v?b.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?b.lineTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&b.lineTo(y,J+y):b.lineTo(0,0)};Fa.prototype.paintFolds=function(b,h,q,l,p,v,w,J,y,Y,N,Ca,Qa,Ka,la){if("fold"==v||"fold"==w||"fold"==J||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
Ca&&la&&(b.moveTo(0,N),b.lineTo(N,N),b.lineTo(N,0)),("fold"==J||"default"==J&&"fold"==v)&&Ca&&Qa&&(b.moveTo(l-N,0),b.lineTo(l-N,N),b.lineTo(l,N)),("fold"==y||"default"==y&&"fold"==v)&&Ka&&Qa&&(b.moveTo(l-N,p),b.lineTo(l-N,p-N),b.lineTo(l,p-N)),("fold"==Y||"default"==Y&&"fold"==v)&&Ka&&la&&(b.moveTo(0,p-N),b.lineTo(N,p-N),b.lineTo(N,p))};mxCellRenderer.registerShape(Fa.prototype.cst.RECT2,Fa);Fa.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
Oa.prototype.paintEdgeShape=function(b,h,q){for(var l=[],p=0;p<h.length;p++)l.push(mxUtils.clone(h[p]));p=b.state.dashed;var v=b.state.fixDash;Oa.prototype.origPaintEdgeShape.apply(this,[b,l,q]);3<=b.state.strokeWidth&&(l=mxUtils.getValue(this.style,"fillColor",null),null!=l&&(b.setStrokeColor(l),b.setStrokeWidth(b.state.strokeWidth-2),b.setDashed(p,v),Oa.prototype.origPaintEdgeShape.apply(this,[b,h,q])))};mxCellRenderer.registerShape("filledEdge",Oa);"undefined"!==typeof StyleFormatPanel&&function(){var b=
StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=b.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(b,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){b.begin();b.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);b.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);b.stroke()}});mxMarker.addMarker("box",
function(b,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.x+N/2,Ka=l.y+Ca/2;l.x-=N;l.y-=Ca;return function(){b.begin();b.moveTo(Qa-N/2-Ca/2,Ka-Ca/2+N/2);b.lineTo(Qa-N/2+Ca/2,Ka-Ca/2-N/2);b.lineTo(Qa+Ca/2-3*N/2,Ka-3*Ca/2-N/2);b.lineTo(Qa-Ca/2-3*N/2,Ka-3*Ca/2+N/2);b.close();Y?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("cross",function(b,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){b.begin();b.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);b.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);
b.moveTo(l.x-N/2+Ca/2,l.y-Ca/2-N/2);b.lineTo(l.x-Ca/2-3*N/2,l.y-3*Ca/2+N/2);b.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(b,h,q,l,p,v,w,J,y,Y){var N=l.clone(),Ca=Pa.apply(this,arguments),Qa=p*(w+2*y),Ka=v*(w+2*y);return function(){Ca.apply(this,arguments);b.begin();b.moveTo(N.x-p*y,N.y-v*y);b.lineTo(N.x-2*Qa+p*y,N.y-2*Ka+v*y);b.moveTo(N.x-Qa-Ka+v*y,N.y-Ka+Qa-p*y);b.lineTo(N.x+Ka-Qa-v*y,N.y-Ka-Qa+p*y);b.stroke()}});mxMarker.addMarker("halfCircle",function(b,
h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.clone();l.x-=N;l.y-=Ca;return function(){b.begin();b.moveTo(Qa.x-Ca,Qa.y+N);b.quadTo(l.x-Ca,l.y+N,l.x,l.y);b.quadTo(l.x+Ca,l.y-N,Qa.x+Ca,Qa.y-N);b.stroke()}});mxMarker.addMarker("async",function(b,h,q,l,p,v,w,J,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var N=l.clone();N.x-=h;N.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){b.begin();b.moveTo(N.x,N.y);J?b.lineTo(N.x-p-v/2,N.y-v+p/2):b.lineTo(N.x+v/2-p,N.y-v-p/2);b.lineTo(N.x-p,N.y-v);b.close();Y?b.fillAndStroke():
b.stroke()}});mxMarker.addMarker("openAsync",function(b){b=null!=b?b:2;return function(h,q,l,p,v,w,J,y,Y,N){v*=J+Y;w*=J+Y;var Ca=p.clone();return function(){h.begin();h.moveTo(Ca.x,Ca.y);y?h.lineTo(Ca.x-v-w/b,Ca.y-w+v/b):h.lineTo(Ca.x+w/b-v,Ca.y-w-v/b);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(b,h,q){return Xa(b,["width"],h,function(l,p,v,w,J){J=b.shape.getEdgeWidth()*b.view.scale+q;return new mxPoint(w.x+p*l/4+v*J/2,w.y+v*l/4-p*J/2)},function(l,p,v,w,J,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
w.y,J.x,J.y,y.x,y.y));b.style.width=Math.round(2*l)/b.view.scale-q})},Xa=function(b,h,q,l,p){return Ra(b,h,function(v){var w=b.absolutePoints,J=w.length-1;v=b.view.translate;var y=b.view.scale,Y=q?w[0]:w[J];w=q?w[1]:w[J-1];J=w.x-Y.x;var N=w.y-Y.y,Ca=Math.sqrt(J*J+N*N);Y=l.call(this,Ca,J/Ca,N/Ca,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,J){var y=b.absolutePoints,Y=y.length-1;v=b.view.translate;var N=b.view.scale,Ca=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ca.x;var Qa=y.y-Ca.y,Ka=Math.sqrt(Y*
Y+Qa*Qa);w.x=(w.x+v.x)*N;w.y=(w.y+v.y)*N;p.call(this,Ka,Y/Ka,Qa/Ka,Ca,y,w,J)})},ib=function(b){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),p=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
2-l.y)/q.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(q.x+q.width-l.x)/q.width))})]}},gb=function(b){return function(h){return[Ra(h,["size"],function(q){var l=Math.max(0,Math.min(.5*q.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(q.x,q.y+l)},function(q,l){this.state.style.size=Math.max(0,l.y-q.y)},!0)]}},Wa=function(b,h,q){return function(l){var p=[Ra(l,["size"],function(v){var w=Math.max(0,Math.min(v.width,Math.min(v.height,parseFloat(mxUtils.getValue(this.state.style,
"size",h)))))*b;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/b)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(b,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(J){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:b));return new mxPoint(J.x+
Math.max(0,Math.min(.5*J.width,Y*(y?1:J.width))),J.getCenterY())},function(J,y,Y){J=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-J.x:Math.max(0,Math.min(q,(y.x-J.x)/J.width));this.state.style.size=J},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(b,h,q){b=null!=b?b:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,J=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*b,J*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(b,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(b){var h=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(b));return h}},fb=function(b,h){return Ra(b,
[mxConstants.STYLE_ARCSIZE],function(q){var l=null!=h?h:q.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var p=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(q.x+q.width-Math.min(q.width/2,p),q.y+l)}p=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(q.x+q.width-Math.min(Math.max(q.width/2,q.height/2),Math.min(q.width,q.height)*
p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(b,h,q,l,p,v,w){var J=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);J.execute=function(Y){for(var N=0;N<h.length;N++)this.copyStyle(h[N]);
w&&w(Y)};J.getPosition=q;J.setPosition=l;J.ignoreGrid=null!=p?p:!0;if(v){var y=J.positionChanged;J.positionChanged=function(){y.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return J},rb={link:function(b){return[mb(b,!0,10),mb(b,!1,10)]},flexArrow:function(b){var h=b.view.graph.gridSize/b.view.scale,q=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*b.view.scale)+v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-b.shape.strokewidth)/
3)/100/b.view.scale;b.style.width=Math.round(2*l)/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),q.push(Xa(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(b.shape.getStartArrowWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*b.view.scale)+v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-b.shape.strokewidth)/
3)/100/b.view.scale;b.style.startWidth=Math.max(0,Math.round(2*l)-b.shape.getEdgeWidth())/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE],b.style.endWidth=b.style.startWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE]),
Math.abs(parseFloat(b.style.startWidth)-parseFloat(b.style.endWidth))<h&&(b.style.startWidth=b.style.endWidth))})));mxUtils.getValue(b.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(b,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*
b.view.scale)-v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*l)/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),q.push(Xa(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;J=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(w.x+p*(J+b.shape.strokewidth*
b.view.scale)-v*l/2,w.y+v*(J+b.shape.strokewidth*b.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*l)-b.shape.getEdgeWidth())/b.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE],
b.style.startWidth=b.style.endWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<h&&(b.style.endWidth=b.style.startWidth))})));return q},swimlane:function(b){var h=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var q=parseFloat(mxUtils.getValue(b.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));h.push(fb(b,q/2))}h.push(Ra(b,[mxConstants.STYLE_STARTSIZE],function(l){var p=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(l.getCenterX(),l.y+Math.max(0,Math.min(l.height,p))):new mxPoint(l.x+Math.max(0,Math.min(l.width,p)),l.getCenterY())},function(l,p){b.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=b.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(b.cell)||p.isTableCell(b.cell))){l=p.getSwimlaneDirection(b.style);var v=p.model.getParent(b.cell);v=p.model.getChildCells(v,!0);for(var w=[],J=0;J<v.length;J++)v[J]!=b.cell&&p.isSwimlane(v[J])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[J]))==
l&&w.push(v[J]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(b){return[Ra(b,
!1)]},process:function(b){var h=[Ra(b,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
!1)&&h.push(fb(b));return h},cross:function(b){return[Ra(b,["size"],function(h){var q=Math.min(h.width,h.height);q=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ia.prototype.size)))*q/2;return new mxPoint(h.getCenterX()-q,h.getCenterY()-q)},function(h,q){var l=Math.min(h.width,h.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,h.getCenterY()-q.y)/l*2,Math.max(0,h.getCenterX()-q.x)/l*2)))})]},note:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,
Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",u.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},note2:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",m.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},
function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(b){var h=[Ra(b,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Ya.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(b));
return h},dataStorage:function(b){return[Ra(b,["size"],function(h){var q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),l=parseFloat(mxUtils.getValue(this.state.style,"size",q?z.prototype.fixedSize:z.prototype.size));return new mxPoint(h.x+h.width-l*(q?1:h.width),h.getCenterY())},function(h,q){h="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(h.width,h.x+h.width-q.x)):Math.max(0,Math.min(1,(h.x+h.width-q.x)/h.width));this.state.style.size=h},!1)]},callout:function(b){var h=
[Ra(b,["size","position"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));mxUtils.getValue(this.state.style,"base",ba.prototype.base);return new mxPoint(q.x+p*q.width,q.y+q.height-l)},function(q,l){mxUtils.getValue(this.state.style,"base",ba.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(q.height,q.y+q.height-l.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(b,["position2"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ba.prototype.position2)));return new mxPoint(q.x+l*q.width,q.y+q.height)},function(q,l){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(b,["base"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,
mxUtils.getValue(this.state.style,"position",ba.prototype.position))),v=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"base",ba.prototype.base)));return new mxPoint(q.x+Math.min(q.width,p*q.width+v),q.y+q.height-l)},function(q,l){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(q.width,l.x-q.x-p*q.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(b));
return h},internalStorage:function(b){var h=[Ra(b,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&
h.push(fb(b));return h},module:function(b){return[Ra(b,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",za.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",za.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
q.y-h.y))/2)})]},corner:function(b){return[Ra(b,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",cb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",cb.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(b){return[Ra(b,["dx","dy"],function(h){var q=
Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",$a.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(b){return[Ra(b,["tabWidth","tabHeight"],function(h){var q=
(l=h.width-l);this.state.style.tabWidth=Math.round(l);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},document:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",R.prototype.size))));return new mxPoint(h.x+3*h.width/4,h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},tape:function(b){return[Ra(b,["size"],function(h){var q=
Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",O.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(b){return[Ra(b,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(A.prototype.size),offPageConnector:function(b){return[Ra(b,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(b){var h=[Graph.createHandle(b,["size"],function(q){var l=
Math.max(0,Math.min(q.width/2,q.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(q.x+l,q.y+l)},function(q,l){this.state.style.size=Math.round(100*Math.max(0,Math.min(q.height/2,q.width/2,l.x-q.x)))/100})];b=Graph.createHandle(b,["indent"],function(q){var l=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(q.x+.75*q.width,q.y+l*q.height/200)},function(q,l){this.state.style.indent=Math.round(100*
Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(b);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:qb(aa.prototype.size,!1),display:qb(Ea.prototype.size,!1),cube:Wa(1,e.prototype.size,!1),card:Wa(.5,E.prototype.size,!0),loopLimit:Wa(.5,G.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,Q.prototype.size,Q.prototype.fixedSize)};Graph.createHandle=
Ra;Graph.handleFactory=rb;var xb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var b=xb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var h=this.state.style.shape;null==mxCellRenderer.defaultShapes[h]&&null==mxStencilRegistry.getStencil(h)?h=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(h=mxConstants.SHAPE_SWIMLANE);h=rb[h];null==h&&null!=this.state.shape&&this.state.shape.isRoundable()&&
(h=rb[mxConstants.SHAPE_RECTANGLE]);null!=h&&(h=h(this.state),null!=h&&(b=null==b?h:b.concat(h)))}return b};mxEdgeHandler.prototype.createCustomHandles=function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);b=rb[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var kb=new mxPoint(1,0),hb=new mxPoint(1,0),ob=mxUtils.toRadians(-30);kb=mxUtils.getRotatedPoint(kb,
Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(b,h,q,l,p){var v=b.view;l=null!=l&&0<l.length?l[0]:null;var w=b.absolutePoints,J=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(b,l));null==J&&null!=h&&(J=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,N=hb.x,Ca=hb.y,Qa="horizontal"==mxUtils.getValue(b.style,
"elbow","horizontal");if(null!=w&&null!=J){b=function(la,pa,na){la-=Ka.x;var ma=pa-Ka.y;pa=(Ca*la-N*ma)/(y*Ca-Y*N);la=(Y*la-y*ma)/(Y*N-y*Ca);Qa?(na&&(Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa),p.push(Ka)),Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la)):(na&&(Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la),p.push(Ka)),Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa));p.push(Ka)};var Ka=J;null==l&&(l=new mxPoint(J.x+(w.x-J.x)/2,J.y+(w.y-J.y)/2));b(l.x,l.y,!0);b(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
var sb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(b,h){if(h==mxEdgeStyle.IsometricConnector){var q=new mxElbowEdgeHandler(b);q.snapToTerminals=!1;return q}return sb.apply(this,arguments)};d.prototype.constraints=[];k.prototype.getConstraints=function(b,h,q){b=[];var l=Math.tan(mxUtils.toRadians(30)),p=(.5-l)/2;l=Math.min(h,q/(.5+l));h=(h-l)/2;q=(q-l)/2;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.25*l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h+.5*l,q+l*p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.25*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.75*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+.5*l,q+(1-p)*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.75*l));return b};r.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;l=Math.min(h*
Math.tan(l),.5*q);b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
0,l));return b};ba.prototype.getConstraints=function(b,h,q){b=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var l=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));b.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q-l)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));h>=2*l&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,
mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,h-l,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));h>=2*l&&b.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return b};E.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,.5*(q+l)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));h>=2*l&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};e.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return b};A.prototype.getConstraints=function(b,h,q){b=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-h));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-h));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h+.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h+.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,q-h-.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));b.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));b.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));b.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return b};F.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
"tabWidth",this.tabWidth)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(h+l),p))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,p)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.25*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.75*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(q-p)+p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,q));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};bb.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
mxEllipse.prototype.constraints;Ya.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.getConstraints=function(b,h,q){b=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(p+h-l),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return b};za.prototype.getConstraints=function(b,h,q){h=parseFloat(mxUtils.getValue(b,"jettyWidth",za.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,
h),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*b,3.5*b))];q>5*b&&l.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,h));q>8*b&&l.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h));q>
15*b&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};G.prototype.constraints=mxRectangleShape.prototype.constraints;M.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;$a.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*h+.25*l,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(h+l),.5*(q+p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),.5*(q+p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*h-.25*l,p));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return b};cb.prototype.getConstraints=function(b,h,q){b=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(q+p)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return b};jb.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ca.prototype.getConstraints=
function(b,h,q){b=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));l=(q-l)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));b.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return b};t.prototype.getConstraints=function(b,h,q){b=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));l=(q-l)/2;b.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,q-l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return b};Ia.prototype.getConstraints=
function(b,h,q){b=[];var l=Math.min(q,h),p=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(q-p)/2;var v=l+p,w=(h-p)/2;p=w+p;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q-.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q-.5*l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),l));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,l));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,l));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return b};Z.prototype.constraints=null;B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
Actions.prototype.init=function(){function a(m){d.escape();m=d.deleteCells(d.getDeletableCells(d.getSelectionCells()),m);null!=m&&d.setSelectionCells(m)}function c(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{for(var m=d.getSelectionCells(),r=0;r<m.length;r++)d.cellLabelChanged(m[r],"")}finally{d.getModel().endUpdate()}}}function f(m,r,x,A,C){C.getModel().beginUpdate();try{var F=C.getCellGeometry(m);null!=F&&x&&A&&(x/=A,F=F.clone(),1<x?F.height=F.width/x:F.width=F.height*x,C.getModel().setGeometry(m,
try{var C=d.getEditableCells(d.getSelectionCells());if(0==C.length)x(A.getRoot(),e.copiedValue);else for(r=0;r<C.length;r++)x(C[r],e.copiedValue)}finally{A.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?c():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){c()},null,null,Editor.ctrlKey+
m);e.showDialog(r.container,350,450,!0,!1,function(){r.destroy()});r.init()}}).isEnabled=k};Actions.prototype.addAction=function(a,c,f,e,g){if("..."==a.substring(a.length-3)){a=a.substring(0,a.length-3);var d=mxResources.get(a)+"..."}else d=mxResources.get(a);return this.put(a,new Action(d,c,f,e,g))};Actions.prototype.put=function(a,c){return this.actions[a]=c};Actions.prototype.get=function(a){return this.actions[a]};
function Action(a,c,f,e,g){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(c);this.enabled=null!=f?f:!0;this.iconCls=e;this.shortcut=g;this.visible=!0}mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};
Menus.prototype.init=function(){var a=this.editorUi,c=a.editor.graph,f=mxUtils.bind(c,c.isEnabled);this.customFonts=[];this.customFontSizes=[];this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,g){for(var d=mxUtils.bind(this,function(n){this.styleChange(e,n,[mxConstants.STYLE_FONTFAMILY],[n],null,g,function(){document.execCommand("fontname",!1,n);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTFAMILY],"values",[n],"cells",[c.cellEditor.getEditingCell()]))},function(){c.updateLabelElements(c.getSelectionCells(),
function(u){u.removeAttribute("face");u.style.fontFamily=null;"PRE"==u.nodeName&&c.replaceElement(u,"div")})}).firstChild.nextSibling.style.fontFamily=n}),k=0;k<this.defaultFonts.length;k++)d(this.defaultFonts[k]);e.addSeparator(g);if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)d(this.customFonts[k]);e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[];this.editorUi.fireEvent(new mxEventObject("customFontsChanged"))}),g);e.addSeparator(g)}this.promptChange(e,
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,g,!0,mxUtils.bind(this,function(n){0>mxUtils.indexOf(this.customFonts,n)&&(this.customFonts.push(n),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(e,g){function d(k,n){return e.addItem(k,null,mxUtils.bind(this,function(){null!=c.cellEditor.textarea&&(c.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(d,this.defaultFontSize)&&(d.push(this.defaultFontSize),d.sort(function(x,A){return x-A}));for(var k=mxUtils.bind(this,function(x){if(null!=c.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var A=c.cellEditor.textarea.getElementsByTagName("font"),C=0;C<A.length;C++)if("3"==A[C].getAttribute("size")){A[C].removeAttribute("size");A[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[x],"cells",[c.cellEditor.getEditingCell()]))}}),n=mxUtils.bind(this,function(x){this.styleChange(e,x,[mxConstants.STYLE_FONTSIZE],[x],null,g,function(){k(x)})}),u=0;u<d.length;u++)n(d[u]);e.addSeparator(g);if(0<this.customFontSizes.length){var m=0;for(u=0;u<this.customFontSizes.length;u++)0>mxUtils.indexOf(d,this.customFontSizes[u])&&(n(this.customFontSizes[u]),m++);0<m&&e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),g);e.addSeparator(g)}var r=
null;this.promptChange(e,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,g,!0,mxUtils.bind(this,function(x){null!=r&&null!=c.cellEditor.textarea&&(c.cellEditor.textarea.focus(),c.cellEditor.restoreSelection(r));null!=x&&0<x.length&&(this.customFontSizes.push(x),k(x))}),null,function(){r=c.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("flipH"),null,function(){c.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},g);e.addItem(mxResources.get("flipV"),null,function(){c.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},g);this.addMenuItems(e,["-","rotation"],g)})));this.put("align",new Menu(mxUtils.bind(this,function(e,g){var d=1<this.editorUi.getSelectionState().vertices.length;e.addItem(mxResources.get("leftAlign"),null,function(){c.alignCells(mxConstants.ALIGN_LEFT)},g,null,d);e.addItem(mxResources.get("center"),null,function(){c.alignCells(mxConstants.ALIGN_CENTER)},g,null,d);e.addItem(mxResources.get("rightAlign"),
null,function(){c.alignCells(mxConstants.ALIGN_RIGHT)},g,null,d);e.addSeparator(g);e.addItem(mxResources.get("topAlign"),null,function(){c.alignCells(mxConstants.ALIGN_TOP)},g,null,d);e.addItem(mxResources.get("middle"),null,function(){c.alignCells(mxConstants.ALIGN_MIDDLE)},g,null,d);e.addItem(mxResources.get("bottomAlign"),null,function(){c.alignCells(mxConstants.ALIGN_BOTTOM)},g,null,d);this.addMenuItems(e,["-","snapToGrid"],g)})));this.put("distribute",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("horizontal"),
null,function(){c.distributeCells(!0)},g);e.addItem(mxResources.get("vertical"),null,function(){c.distributeCells(!1)},g)})));this.put("line",new Menu(mxUtils.bind(this,function(e,g){var d=c.view.getState(c.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(e,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",g,!0).setAttribute("title",mxResources.get("straight")),
mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",g,!0,null,!0).setAttribute("title",mxResources.get("simpleArrow")))})));this.put("layout",new Menu(mxUtils.bind(this,function(e,g){var d=mxUtils.bind(this,function(n,u){n=new FilenameDialog(this.editorUi,n,mxResources.get("apply"),function(m){u(parseFloat(m))},mxResources.get("spacing"));this.editorUi.showDialog(n.container,300,80,!0,!0);n.init()}),k=mxUtils.bind(this,function(n){var u=c.getSelectionCell(),
m=null;null==u||0==c.getModel().getChildCount(u)?0==c.getModel().getEdgeCount(u)&&(m=c.findTreeRoots(c.getDefaultParent())):m=c.findTreeRoots(u);null!=m&&0<m.length&&(u=m[0]);null!=u&&this.editorUi.executeLayout(function(){n.execute(c.getDefaultParent(),u);c.isSelectionEmpty()||(u=c.getModel().getParent(u),c.getModel().isVertex(u)&&c.updateGroupBounds([u],2*c.gridSize,!0))},!0)});e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(c,mxConstants.DIRECTION_WEST);
this.editorUi.executeLayout(function(){var u=c.getSelectionCells();n.execute(c.getDefaultParent(),0==u.length?null:u)},!0)}),g);e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(c,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var u=c.getSelectionCells();n.execute(c.getDefaultParent(),0==u.length?null:u)},!0)}),g);e.addSeparator(g);e.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(c,
!0);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(c,!1);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var n=new mxRadialTreeLayout(c);n.levelDistance=80;n.autoRadius=
!0;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addSeparator(g);e.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var n=new mxFastOrganicLayout(c);d(n.forceConstant,mxUtils.bind(this,function(u){n.forceConstant=u;this.editorUi.executeLayout(function(){var m=c.getSelectionCell();if(null==m||0==c.getModel().getChildCount(m))m=c.getDefaultParent();n.execute(m);c.getModel().isVertex(m)&&c.updateGroupBounds([m],2*c.gridSize,!0)},!0)}))}),
g);e.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var n=new mxCircleLayout(c);this.editorUi.executeLayout(function(){var u=c.getSelectionCell();if(null==u||0==c.getModel().getChildCount(u))u=c.getDefaultParent();n.execute(u);c.getModel().isVertex(u)&&c.updateGroupBounds([u],2*c.gridSize,!0)},!0)}),g)})));this.put("navigation",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "),g)})));this.put("arrange",
new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["toFront","toBack","bringForward","sendBackward","-"],g);this.addSubmenu("direction",e,g);this.addMenuItems(e,["turn","-"],g);this.addSubmenu("align",e,g);this.addSubmenu("distribute",e,g);e.addSeparator(g);this.addSubmenu("navigation",e,g);this.addSubmenu("insert",e,g);this.addSubmenu("layout",e,g);this.addMenuItems(e,"- group ungroup removeFromGroup - clearWaypoints autosize".split(" "),g)}))).isEnabled=f;this.put("insert",new Menu(mxUtils.bind(this,
function(e,g){this.addMenuItems(e,["insertLink","insertImage"],g)})));this.put("view",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,(null!=this.editorUi.format?["formatPanel"]:[]).concat("outline layers - pageView pageScale - scrollbars tooltips - grid guides - connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),g))})));this.put("viewPanels",new Menu(mxUtils.bind(this,function(e,g){null!=this.editorUi.format&&this.addMenuItems(e,["formatPanel"],g);this.addMenuItems(e,
["outline","layers"],g)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["resetView","-"],g);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],k=0;k<d.length;k++)(function(n){e.addItem(100*n+"%",null,function(){c.zoomTo(n)},g)})(d[k]);this.addMenuItems(e,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),g)})));this.put("file",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"new open - save saveAs - import export - pageSetup print".split(" "),
g)})));this.put("edit",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["help","-","about"])})))};
Menus.prototype.put=function(a,c){return this.menus[a]=c};Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,c,f,e){var g=this.get(a);null!=g&&(g=g.isEnabled(),c.showDisabled||g)&&(f=c.addItem(e||mxResources.get(a),null,null,f,null,g),this.addMenu(a,c,f))};Menus.prototype.addMenu=function(a,c,f){var e=this.get(a);null!=e&&(c.showDisabled||e.isEnabled())&&this.get(a).execute(c,f)};
Menus.prototype.addInsertTableCellItem=function(a,c){var f=this.editorUi.editor.graph,e=f.getSelectionCell(),g=f.getCurrentCellStyle(e);1<f.getSelectionCount()&&(f.isTableCell(e)&&(e=f.model.getParent(e)),f.isTableRow(e)&&(e=f.model.getParent(e)));var d=f.isTable(e)||f.isTableRow(e)||f.isTableCell(e),k=f.isStack(e)||f.isStackChild(e),n=d,u=d;k&&(g=f.isStack(e)?g:f.getCellStyle(f.model.getParent(e)),u="0"==g.horizontalStack,n=!u);null!=c||!d&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(m,
x&&0<x.length&&(f.scrollCellToVisible(x[0]),f.setSelectionCells(x))}),c):(n&&(c=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableColumn(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),c.setAttribute("title",mxResources.get("insertColumnBefore")),c=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableColumn(e,!1)}catch(m){this.editorUi.handleError(m)}}),
null,"geIcon geSprite geSprite-insertcolumnafter"),c.setAttribute("title",mxResources.get("insertColumnAfter")),c=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=e)try{k?f.deleteLane(e):f.deleteTableColumn(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),c.setAttribute("title",mxResources.get("deleteColumn"))),u&&(c=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableRow(e,
!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),c.setAttribute("title",mxResources.get("insertRowBefore")),c=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableRow(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),c.setAttribute("title",mxResources.get("insertRowAfter")),c=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?
f.deleteLane(e):f.deleteTableRow(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),c.setAttribute("title",mxResources.get("deleteRow")),u=this.editorUi.getSelectionState(),null!=u.mergeCell?this.addMenuItem(a,"mergeCells"):(1<u.style.colspan||1<u.style.rowspan)&&this.addMenuItem(a,"unmergeCells")))};
Menus.prototype.addInsertTableItem=function(a,c,f,e){function g(C){n=d.getParentByName(mxEvent.getSource(C),"TD");var F=!1;if(null!=n){k=d.getParentByName(n,"TR");var K=mxEvent.isMouseEvent(C)?2:4,E=x,O=Math.min(20,k.sectionRowIndex+K);K=Math.min(20,n.cellIndex+K);for(var R=E.rows.length;R<O;R++)for(var Q=E.insertRow(R),P=0;P<E.rows[0].cells.length;P++)Q.insertCell(-1);for(R=0;R<E.rows.length;R++)for(Q=E.rows[R],P=Q.cells.length;P<K;P++)Q.insertCell(-1);A.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
1);for(E=0;E<x.rows.length;E++)for(O=x.rows[E],K=0;K<O.cells.length;K++)R=O.cells[K],E==k.sectionRowIndex&&K==n.cellIndex&&(F="blue"==R.style.backgroundColor),R.style.backgroundColor=E<=k.sectionRowIndex&&K<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return F}e=null!=e?e:!0;c=null!=c?c:mxUtils.bind(this,function(C,F,K){var E=this.editorUi.editor.graph;C=E.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=E.cellEditor.textarea){E.getParentByName(C,"TR");var O=E.cellEditor.textarea.getElementsByTagName("table");
"4px";A.innerHTML="1x1";a.firstChild.appendChild(A);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var F=g(C);null!=n&&null!=k&&F&&(c(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
Menus.prototype.edgeStyleChange=function(a,c,f,e,g,d,k,n){return this.showIconOnly(a.addItem(c,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var A=m[x];if(u.getModel().isEdge(A)){if(k){var C=u.getCellGeometry(A);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(A,C))}for(var F=0;F<f.length;F++)u.setCellStyles(f[F],e[F],[A]);r.push(A)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",f,"values",e,"cells",r))}finally{u.getModel().endUpdate()}}),d,g))};Menus.prototype.showIconOnly=function(a){var c=a.getElementsByTagName("td");for(i=0;i<c.length;i++)"mxPopupMenuItem"==c[i].getAttribute("class")&&(c[i].style.display="none");return a};
Menus.prototype.styleChange=function(a,c,f,e,g,d,k,n,u){var m=this.createStyleChangeFunction(f,e);a=a.addItem(c,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph;null!=k&&r.cellEditor.isContentEditing()?k():m(n)}),d,g);u&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,c){return mxUtils.bind(this,function(f){var e=this.editorUi.editor.graph;e.stopEditing(!1);e.getModel().beginUpdate();try{for(var g=e.getEditableCells(e.getSelectionCells()),d=!1,k=0;k<a.length;k++)if(e.setCellStyles(a[k],c[k],g),a[k]==mxConstants.STYLE_ALIGN&&e.updateLabelElements(g,function(n){n.removeAttribute("align");n.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])d=!0;if(d)for(d=0;d<g.length;d++)0==e.model.getChildCount(g[d])&&
e.autoSizeCell(g[d],!1);null!=f&&f();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",c,"cells",g))}finally{e.getModel().endUpdate()}})};
Menus.prototype.promptChange=function(a,c,f,e,g,d,k,n,u,m){return a.addItem(c,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=e,A=r.getView().getState(r.getSelectionCell());null!=A&&(x=A.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(F){if(null!=F&&0<F.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,F)}finally{r.getModel().endUpdate()}}null!=n&&n(F)}}),mxResources.get("enterValue")+
Menus.prototype.pickColor=function(a,c,f){var e=this.editorUi,g=e.editor.graph,d=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=c&&g.cellEditor.isContentEditing()){var k=g.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,f||g.shapeForegroundColor,mxUtils.bind(this,function(u){g.cellEditor.restoreSelection(k);document.execCommand(c,!1,u!=mxConstants.NONE?u:"transparent");var m={forecolor:mxConstants.STYLE_FONTCOLOR,
backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[c];null!=m&&e.fireEvent(new mxEventObject("styleChanged","keys",[m],"values",[u],"cells",[g.cellEditor.getEditingCell()]))}),function(){g.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,d,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;f=g.getView().getState(g.getSelectionCell());var n=mxConstants.NONE;null!=f&&(n=f.style[a]||n);n==mxConstants.NONE?
(n=g.shapeBackgroundColor.substring(1),this.colorDialog.picker.fromString(n),this.colorDialog.colorInput.value=mxConstants.NONE):this.colorDialog.picker.fromString(mxUtils.rgba2hex(n));this.editorUi.showDialog(this.colorDialog.container,230,d,!0,!0);this.colorDialog.init()}};Menus.prototype.toggleStyle=function(a,c){var f=this.editorUi.editor.graph;c=f.toggleCellStyles(a,c);this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[a],"values",[c],"cells",f.getSelectionCells()))};
Menus.prototype.addMenuItem=function(a,c,f,e,g,d){var k=this.editorUi.actions.get(c);return null!=k&&(a.showDisabled||k.isEnabled())&&k.visible?(c=a.addItem(d||k.label,null,function(n){k.funct(e,n)},f,g,k.isEnabled()),k.toggleAction&&k.isSelected()&&a.addCheckmark(c,Editor.checkmarkImage),this.addShortcut(c,k),c):null};
Menus.prototype.addShortcut=function(a,c){if(null!=c.shortcut){a=a.firstChild.nextSibling.nextSibling;var f=document.createElement("span");f.style.color="gray";mxUtils.write(f,c.shortcut);a.appendChild(f)}};Menus.prototype.addMenuItems=function(a,c,f,e,g){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(f):this.addMenuItem(a,c[d],f,e,null!=g?g[d]:null)};
Menus.prototype.createPopupMenu=function(a,c,f){a.smartSeparators=!0;this.addPopupMenuHistoryItems(a,c,f);this.addPopupMenuEditItems(a,c,f);this.addPopupMenuStyleItems(a,c,f);this.addPopupMenuArrangeItems(a,c,f);this.addPopupMenuCellItems(a,c,f);this.addPopupMenuSelectionItems(a,c,f)};Menus.prototype.addPopupMenuHistoryItems=function(a,c,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["undo","redo"],null,f)};
Menus.prototype.addPopupMenuEditItems=function(a,c,f){this.editorUi.editor.graph.isSelectionEmpty()?this.addMenuItems(a,["pasteHere"],null,f):this.addMenuItems(a,"delete - cut copy - duplicate".split(" "),null,f)};Menus.prototype.addPopupMenuStyleItems=function(a,c,f){1==this.editorUi.editor.graph.getSelectionCount()?this.addMenuItems(a,["-","setAsDefaultStyle"],null,f):this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","clearDefaultStyle"],null,f)};
Menus.prototype.addPopupMenuArrangeItems=function(a,c,f){var e=this.editorUi.editor.graph;0<e.getEditableCells(e.getSelectionCells()).length&&(this.addMenuItems(a,["-","toFront","toBack"],null,f),1==e.getSelectionCount()&&this.addMenuItems(a,["bringForward","sendBackward"],null,f));1<e.getSelectionCount()?this.addMenuItems(a,["-","group"],null,f):1==e.getSelectionCount()&&!e.getModel().isEdge(c)&&!e.isSwimlane(c)&&0<e.getModel().getChildCount(c)&&e.isCellEditable(c)&&this.addMenuItems(a,["-","ungroup"],
Menus.prototype.addPopupMenuCellItems=function(a,c,f){var e=this.editorUi.editor.graph,g=e.view.getState(c);a.addSeparator();if(null!=g){var d=!1;1==e.getSelectionCount()&&e.getModel().isEdge(c)&&(a.addSeparator(),this.addSubmenu("line",a));if(e.getModel().isEdge(c)&&"entityRelationEdgeStyle"!=mxUtils.getValue(g.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(g.style,mxConstants.STYLE_SHAPE,null)){g=e.selectionCellsHandler.getHandler(c);var k=!1;g instanceof mxEdgeHandler&&null!=g.bends&&
2<g.bends.length&&(d=g.getHandleForEvent(e.updateMouseEvent(new mxMouseEvent(f))),0<d&&d<g.bends.length-1&&(null==g.bends[d]||null==g.bends[d].node||""==g.bends[d].node.style.opacity)&&(k=this.editorUi.actions.get("removeWaypoint"),k.handler=g,k.index=d,k=!0));a.addSeparator();this.addMenuItem(a,"turn",null,f,null,mxResources.get("reverse"));this.addMenuItems(a,[k?"removeWaypoint":"addWaypoint"],null,f);g=e.getModel().getGeometry(c);d=null!=g&&null!=g.points&&0<g.points.length}1==e.getSelectionCount()&&
(d||e.getModel().isVertex(c)&&0<e.getModel().getEdgeCount(c))&&this.addMenuItems(a,["-","clearWaypoints"],null,f);1==e.getSelectionCount()&&e.isCellEditable(c)&&this.addPopupMenuCellEditItems(a,c,f)}};
Menus.prototype.addPopupMenuCellEditItems=function(a,c,f,e){var g=this.editorUi.editor.graph,d=g.view.getState(c);this.addMenuItems(a,["-","editStyle","editData","editLink"],e,f);g.getModel().isVertex(c)&&null!=mxUtils.getValue(d.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",e,f).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...",this.addMenuItem(a,"crop",e,f));(g.getModel().isVertex(c)&&0==g.getModel().getChildCount(c)||g.isContainer(c))&&this.addMenuItem(a,
"editConnectionPoints",e,f)};Menus.prototype.addPopupMenuSelectionItems=function(a,c,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","selectVertices","selectEdges","selectAll"],null,f)};
Menus.prototype.createMenubar=function(a){for(var c=new Menubar(this.editorUi,a),f=this.defaultMenuItems,e=0;e<f.length;e++)mxUtils.bind(this,function(g){var d=c.addMenu(mxResources.get(f[e]),mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));this.menuCreated(g,d)})(this.get(f[e]));return c};
Menus.prototype.menuCreated=function(a,c,f){null!=c&&(f=null!=f?f:"geItem",a.addListener("stateChanged",function(){(c.enabled=a.enabled)?(c.className=f,8==document.documentMode&&(c.style.color="")):(c.className=f+" mxDisabled",8==document.documentMode&&(c.style.color="#c3c3c3"))}))};function Menubar(a,c){this.editorUi=a;this.container=c}Menubar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};
Menubar.prototype.addMenu=function(a,c,f){var e=document.createElement("a");e.className="geItem";mxUtils.write(e,a);this.addMenuHandler(e,c);null!=f?this.container.insertBefore(e,f):this.container.appendChild(e);return e};
Menubar.prototype.addMenuHandler=function(a,c){if(null!=c){var f=!0,e=mxUtils.bind(this,function(g){if(f&&(null==a.enabled||a.enabled)){this.editorUi.editor.graph.popupMenuHandler.hideMenu();var d=new mxPopupMenu(c);d.div.className+=" geMenubarMenu";d.smartSeparators=!0;d.showDisabled=!0;d.autoExpand=!0;d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();d.destroy()});var k=mxUtils.getOffset(a);d.popup(k.x,k.y+a.offsetHeight,null,
function Menu(a,c){mxEventSource.call(this);this.funct=a;this.enabled=null!=c?c:!0}mxUtils.extend(Menu,mxEventSource);Menu.prototype.isEnabled=function(){return this.enabled};Menu.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Menu.prototype.execute=function(a,c){this.funct(a,c)};EditorUi.prototype.createMenus=function(){return new Menus(this)};function Toolbar(a,c){this.editorUi=a;this.container=c;this.staticElements=[];this.init();this.gestureHandler=mxUtils.bind(this,function(f){null!=this.editorUi.currentMenu&&mxEvent.getSource(f)!=this.editorUi.currentMenu.div&&this.hideMenu()});mxEvent.addGestureListeners(document,this.gestureHandler)}
Toolbar.prototype.init=function(){var a=screen.width;a-=740<screen.height?56:0;if(700<=a){var c=this.addMenu("",mxResources.get("view")+" ("+mxResources.get("panTooltip")+")",!0,"viewPanels",null,!0);this.addDropDownArrow(c,"geSprite-formatpanel",38,50,-4,-3,36,-8);this.addSeparator()}var f=this.addMenu("",mxResources.get("zoom")+" (Alt+Mousewheel)",!0,"viewZoom",null,!0);f.showDisabled=!0;f.style.whiteSpace="nowrap";f.style.position="relative";f.style.overflow="hidden";f.style.width=EditorUi.compactUi?
"50px":"36px";420<=a&&(this.addSeparator(),c=this.addItems(["zoomIn","zoomOut"]),c[0].setAttribute("title",mxResources.get("zoomIn")+" ("+this.editorUi.actions.get("zoomIn").shortcut+")"),c[1].setAttribute("title",mxResources.get("zoomOut")+" ("+this.editorUi.actions.get("zoomOut").shortcut+")"));this.updateZoom=mxUtils.bind(this,function(){f.innerHTML=Math.round(100*this.editorUi.editor.graph.view.scale)+"%";this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.getElementsByTagName("img")[0].style.right=
"1px",f.getElementsByTagName("img")[0].style.top="5px")});this.editorUi.editor.graph.view.addListener(mxEvent.EVENT_SCALE,this.updateZoom);this.editorUi.editor.addListener("resetGraphView",this.updateZoom);c=this.addItems(["-","undo","redo"]);c[1].setAttribute("title",mxResources.get("undo")+" ("+this.editorUi.actions.get("undo").shortcut+")");c[2].setAttribute("title",mxResources.get("redo")+" ("+this.editorUi.actions.get("redo").shortcut+")");320<=a&&(c=this.addItems(["-","delete"]),c[1].setAttribute("title",
Toolbar.prototype.appendDropDownImageHtml=function(a){var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("valign","middle");c.setAttribute("src",Toolbar.prototype.dropDownImage);a.appendChild(c);c.style.position="absolute";c.style.right="4px";c.style.top=(EditorUi.compactUi?6:8)+"px"};
"22px",a.getElementsByTagName("img")[0].style.top="5px");var c=this.editorUi.menus.get("insert");null!=c&&"function"===typeof a.setEnabled&&c.addListener("stateChanged",function(){a.setEnabled(c.enabled)});return a};
Toolbar.prototype.addDropDownArrow=function(a,c,f,e,g,d,k,n){g=EditorUi.compactUi?g:n;a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.position="relative";a.style.width=e-(null!=k?k:32)+"px";a.innerHTML='<div class="geSprite '+c+'"></div>';this.appendDropDownImageHtml(a);c=a.getElementsByTagName("div")[0];c.style.marginLeft=g+"px";c.style.marginTop=d+"px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left="24px",a.getElementsByTagName("img")[0].style.top="5px",a.style.width=
f-10+"px")};Toolbar.prototype.setFontName=function(a){if(null!=this.fontMenu){this.fontMenu.innerHTML="";var c=document.createElement("div");c.style.display="inline-block";c.style.overflow="hidden";c.style.textOverflow="ellipsis";c.style.maxWidth="66px";mxUtils.write(c,a);this.fontMenu.appendChild(c);this.appendDropDownImageHtml(this.fontMenu)}};
Toolbar.prototype.setFontSize=function(a){if(null!=this.sizeMenu){this.sizeMenu.innerHTML="";var c=document.createElement("div");c.style.display="inline-block";c.style.overflow="hidden";c.style.textOverflow="ellipsis";c.style.maxWidth="24px";mxUtils.write(c,a);this.sizeMenu.appendChild(c);this.appendDropDownImageHtml(this.sizeMenu)}};
Toolbar.prototype.createTextToolbar=function(){var a=this.editorUi,c=a.editor.graph,f=this.addMenu("",mxResources.get("style"),!0,"formatBlock");f.style.position="relative";f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.innerHTML=mxResources.get("style");this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.style.paddingRight="18px",f.getElementsByTagName("img")[0].style.right="1px",f.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.fontMenu=this.addMenu("",mxResources.get("fontFamily"),
d.addItem("",null,mxUtils.bind(this,function(k){c.cellEditor.alignText(mxConstants.ALIGN_LEFT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",[c.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-left");g.setAttribute("title",mxResources.get("left"));g=d.addItem("",null,mxUtils.bind(this,function(k){c.cellEditor.alignText(mxConstants.ALIGN_CENTER,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],
"values",[mxConstants.ALIGN_CENTER],"cells",[c.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-center");g.setAttribute("title",mxResources.get("center"));g=d.addItem("",null,mxUtils.bind(this,function(k){c.cellEditor.alignText(mxConstants.ALIGN_RIGHT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",[c.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-right");g.setAttribute("title",mxResources.get("right"));
"-2px";e.appendChild(f);this.appendDropDownImageHtml(e);EditorUi.compactUi&&(e.getElementsByTagName("img")[0].style.left="22px",e.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.addButton("geIcon geSprite geSprite-code",mxResources.get("html"),function(){c.cellEditor.toggleViewMode();0<c.cellEditor.textarea.innerHTML.length&&("&nbsp;"!=c.cellEditor.textarea.innerHTML||!c.cellEditor.clearOnChange)&&window.setTimeout(function(){document.execCommand("selectAll",!1,null)})});
!1,mxUtils.bind(this,function(d){var k=c.getSelectedElement(),n=c.getParentByNames(k,["TD","TH"],c.cellEditor.text2),u=c.getParentByName(k,"TR",c.cellEditor.text2);if(null==u)this.editorUi.menus.addInsertTableItem(d);else{var m=c.getParentByName(u,"TABLE",c.cellEditor.text2);k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertColumn(m,null!=n?n.cellIndex:0))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnbefore");k.setAttribute("title",mxResources.get("insertColumnBefore"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertColumn(m,null!=n?n.cellIndex+1:-1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnafter");k.setAttribute("title",mxResources.get("insertColumnAfter"));k=d.addItem("Delete column",null,mxUtils.bind(this,function(){if(null!=n)try{c.deleteColumn(m,n.cellIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deletecolumn");k.setAttribute("title",mxResources.get("deleteColumn"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertRow(m,u.sectionRowIndex))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowbefore");k.setAttribute("title",mxResources.get("insertRowBefore"));k=d.addItem("",null,mxUtils.bind(this,function(){try{c.selectNode(c.insertRow(m,u.sectionRowIndex+1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowafter");k.setAttribute("title",mxResources.get("insertRowAfter"));k=d.addItem("",
null,mxUtils.bind(this,function(){try{c.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=d.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,
(g.getElementsByTagName("img")[0].style.left="22px",g.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,c,f,e,g,d,k){var n=this.editorUi.menus.get(e),u=this.addMenuFunction(a,c,f,function(){n.funct.apply(n,arguments)},g,d);k||"function"!==typeof u.setEnabled||n.addListener("stateChanged",function(){u.setEnabled(n.enabled)});return u};
Toolbar.prototype.addMenuFunction=function(a,c,f,e,g,d){return this.addMenuFunctionInContainer(null!=g?g:this.container,a,c,f,e,d)};Toolbar.prototype.addMenuFunctionInContainer=function(a,c,f,e,g,d){c=e?this.createLabel(c):this.createButton(c);this.initElement(c,f);this.addMenuHandler(c,e,g,d);a.appendChild(c);return c};Toolbar.prototype.addSeparator=function(a){a=null!=a?a:this.container;var c=document.createElement("div");c.className="geSeparator";a.appendChild(c);return c};
Toolbar.prototype.addItems=function(a,c,f){for(var e=[],g=0;g<a.length;g++){var d=a[g];"-"==d?e.push(this.addSeparator(c)):e.push(this.addItem("geSprite-"+d.toLowerCase(),d,c,f))}return e};Toolbar.prototype.addItem=function(a,c,f,e){var g=this.editorUi.actions.get(c),d=null;null!=g&&(c=g.label,null!=g.shortcut&&(c+=" ("+g.shortcut+")"),d=this.addButton(a,c,g.funct,f),e||"function"!==typeof d.setEnabled||(d.setEnabled(g.enabled),g.addListener("stateChanged",function(){d.setEnabled(g.enabled)})));return d};
Toolbar.prototype.addButton=function(a,c,f,e){a=this.createButton(a);e=null!=e?e:this.container;this.initElement(a,c);this.addClickHandler(a,f);e.appendChild(a);return a};Toolbar.prototype.initElement=function(a,c){null!=c&&a.setAttribute("title",c);this.addEnabledState(a)};Toolbar.prototype.addEnabledState=function(a){var c=a.className;a.setEnabled=function(f){a.enabled=f;a.className=f?c:c+" mxDisabled"};a.setEnabled(!0)};
Toolbar.prototype.addClickHandler=function(a,c){null!=c&&(mxEvent.addListener(a,"click",function(f){a.enabled&&c(f);mxEvent.consume(f)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(f){f.preventDefault()})))};Toolbar.prototype.createButton=function(a){var c=document.createElement("a");c.className="geButton";var f=document.createElement("div");null!=a&&(f.className="geSprite "+a);c.appendChild(f);return c};
Toolbar.prototype.createLabel=function(a,c){c=document.createElement("a");c.className="geLabel";mxUtils.write(c,a);return c};
Toolbar.prototype.addMenuHandler=function(a,c,f,e){if(null!=f){var g=this.editorUi.editor.graph,d=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(n){if(k&&(null==a.enabled||a.enabled)){g.popupMenuHandler.hideMenu();d=new mxPopupMenu(f);d.div.className+=" geToolbarMenu";d.showDisabled=e;d.labels=c;d.autoExpand=!0;!c&&d.div.scrollHeight>d.div.clientHeight&&(d.div.style.width="40px");d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();
d.destroy()});var u=mxUtils.getOffset(a);d.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(d,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==d||null==d.div||null==d.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,c,f,e){function g(){var K=k.value;/(^#?[a-zA-Z0-9]*$)/.test(K)?("none"!=K&&"#"!=
A=r(this.defaultColors);A.style.marginBottom="16px";f.appendChild(m);A=document.createElement("div");A.style.textAlign="right";A.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});C.className="geBtn";a.editor.cancelFirst&&A.appendChild(C);var F=mxUtils.button(mxResources.get("apply"),g);F.className="geBtn gePrimaryBtn";A.appendChild(F);a.editor.cancelFirst||A.appendChild(C);null!=c&&("none"==c?(u.fromString("ffffff"),k.value="none"):u.fromString(c));
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var c=this.editorUi.editor.graph;c.getModel().beginUpdate();try{c.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",c.getSelectionCells()))}finally{c.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,c){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=c&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var c=document.createElement("div");c.setAttribute("align","center");var f=document.createElement("h3");mxUtils.write(f,mxResources.get("about")+" GraphEditor");c.appendChild(f);f=document.createElement("img");f.style.border="0px";f.setAttribute("width","176");f.setAttribute("width","151");f.setAttribute("src",IMAGE_PATH+"/logo.png");c.appendChild(f);mxUtils.br(c);mxUtils.write(c,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(c);f=document.createElement("a");f.setAttribute("href",
"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");c.appendChild(f);mxUtils.br(c);mxUtils.br(c);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";c.appendChild(f);this.container=c},TextareaDialog=function(a,c,f,e,g,d,k,n,u,m,r,x,A,C,F){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
n.style.position="absolute";n.style.left="0px";n.style.right="0px";var K=n.cloneNode(!1),E=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";K.style.top="20px";K.style.bottom="64px";E.style.bottom="0px";E.style.height="60px";E.style.textAlign="center";mxUtils.write(n,c);k.appendChild(n);k.appendChild(K);k.appendChild(E);null!=F&&n.appendChild(F);var O=document.createElement("textarea");r&&O.setAttribute("wrap","off");O.setAttribute("spellcheck","false");O.setAttribute("autocorrect","off");O.setAttribute("autocomplete",
"off");O.setAttribute("autocapitalize","off");mxUtils.write(O,f||"");O.style.resize="none";O.style.outline="none";O.style.position="absolute";O.style.boxSizing="border-box";O.style.top="0px";O.style.left="0px";O.style.height="100%";O.style.width="100%";this.textarea=O;this.init=function(){O.focus();O.scrollTop=0};K.appendChild(O);null!=A&&(c=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(A)}),c.className="geBtn",E.appendChild(c));if(null!=C)for(c=0;c<C.length;c++)(function(Q,
P,aa){Q=mxUtils.button(Q,function(T){P(T,O)});null!=aa&&Q.setAttribute("title",aa);Q.className="geBtn";E.appendChild(Q)})(C[c][0],C[c][1],C[c][2]);d=mxUtils.button(d||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});d.setAttribute("title","Escape");d.className="geBtn";a.editor.cancelFirst&&E.appendChild(d);null!=u&&u(E,O);if(null!=e){var R=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();e(O.value)});R.setAttribute("title","Ctrl+Enter");R.className="geBtn gePrimaryBtn";
E.appendChild(R);mxEvent.addListener(O,"keypress",function(Q){13==Q.keyCode&&mxEvent.isControlDown(Q)&&R.click()})}a.editor.cancelFirst||E.appendChild(d);this.container=k},EditDiagramDialog=function(a){var c=document.createElement("div");c.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
f.style.resize="none";f.style.width="600px";f.style.height="360px";f.style.marginBottom="16px";f.value=mxUtils.getPrettyXml(a.editor.getGraphXml());c.appendChild(f);this.init=function(){f.focus()};Graph.fileSupport&&(f.addEventListener("dragover",function(k){k.stopPropagation();k.preventDefault()},!1),f.addEventListener("drop",function(k){k.stopPropagation();k.preventDefault();if(0<k.dataTransfer.files.length){k=k.dataTransfer.files[0];var n=new FileReader;n.onload=function(u){f.value=u.target.result};
n.readAsText(k)}else f.value=a.extractGraphModelFromEvent(k)},!1));var e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";a.editor.cancelFirst&&c.appendChild(e);var g=document.createElement("select");g.style.width="180px";g.className="geBtn";if(a.editor.graph.isEnabled()){var d=document.createElement("option");d.setAttribute("value","replace");mxUtils.write(d,mxResources.get("replaceExistingDrawing"));g.appendChild(d)}d=document.createElement("option");d.setAttribute("value",
"new");mxUtils.write(d,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&g.appendChild(d);a.editor.graph.isEnabled()&&(d=document.createElement("option"),d.setAttribute("value","import"),mxUtils.write(d,mxResources.get("addToExistingDrawing")),g.appendChild(d));c.appendChild(g);d=mxUtils.button(mxResources.get("ok"),function(){var k=Graph.zapGremlins(mxUtils.trim(f.value)),n=null;if("new"==g.value)a.hideDialog(),a.editor.editAsNew(k);else if("replace"==g.value){a.editor.graph.model.beginUpdate();
d.className="geBtn gePrimaryBtn";c.appendChild(d);a.editor.cancelFirst||c.appendChild(e);this.container=c};EditDiagramDialog.showNewWindowOption=!0;
var ExportDialog=function(a){function c(){var U=r.value,fa=U.lastIndexOf(".");r.value=0<fa?U.substring(0,fa+1)+x.value:U+"."+x.value;"xml"===x.value?(A.setAttribute("disabled","true"),C.setAttribute("disabled","true"),F.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(A.removeAttribute("disabled"),C.removeAttribute("disabled"),F.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled",
d.appendChild(u);mxEvent.addListener(x,"change",c);c();mxEvent.addListener(A,"change",function(){O=!0;var U=Math.max(0,parseFloat(A.value)||100)/100;A.value=parseFloat((100*U).toFixed(2));0<k?(C.value=Math.floor(k*U),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(C,"change",function(){var U=parseInt(C.value)/k;0<U?(A.value=parseFloat((100*U).toFixed(2)),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(F,"change",function(){var U=
ExportDialog.exportFile=function(a,c,f,e,g,d,k,n){n=a.editor.graph;if("xml"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),c,f);else if("svg"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(n.getSvg(e,g,d)),c,f);else{var u=n.getGraphBounds(),m=mxUtils.createXmlDocument(),r=m.createElement("output");m.appendChild(r);m=new mxXmlCanvas2D(r);m.translate(Math.floor((d/g-u.x)/n.view.scale),Math.floor((d/g-u.y)/n.view.scale));m.scale(g/n.view.scale);(new mxImageExport).drawState(n.getView().getState(n.model.root),
m);r="xml="+encodeURIComponent(mxUtils.getXml(r));m=Math.ceil(u.width*g/n.view.scale+2*d);g=Math.ceil(u.height*g/n.view.scale+2*d);r.length<=MAX_REQUEST_SIZE&&m*g<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+f+"&filename="+encodeURIComponent(c)+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+g+"&"+r+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,c,f,e){c.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(c)+"&filename="+encodeURIComponent(f)+"&format="+e)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
var EditDataDialog=function(a,c){function f(){0<Q.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var e=document.createElement("div"),g=a.editor.graph,d=g.getModel().getValue(c);if(!mxUtils.isNode(d)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",d||"");d=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(c),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(T){}var m=new mxForm("properties");m.table.style.width=
"100%";var r=d.attributes,x=[],A=[],C=0,F=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,c):null,K=function(T,U){var fa=document.createElement("div");fa.style.position="relative";fa.style.paddingRight="20px";fa.style.boxSizing="border-box";fa.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
fa){x[T]=U;A[T]=m.addTextarea(x[C]+":",fa,2);A[T].style.width="100%";0<fa.indexOf("\n")&&A[T].setAttribute("rows","2");K(A[T],U);null!=n[U]&&0==n[U].editable&&A[T].setAttribute("disabled","disabled")};u=[];for(var E=g.getModel().getParent(c)==g.getModel().getRoot(),O=0;O<r.length;O++)!E&&"label"==r[O].nodeName||"placeholders"==r[O].nodeName||u.push({name:r[O].nodeName,value:r[O].nodeValue});u.sort(function(T,U){return T.name<U.name?-1:T.name>U.name?1:0});if(null!=F){r=document.createElement("div");
r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,F);var R=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(T){mxEvent.isShiftDown(T)&&(T=new FilenameDialog(a,F,mxResources.get("apply"),mxUtils.bind(this,function(U){null!=U&&0<U.length&&U!=F&&(null==g.getModel().getCell(U)?(g.getModel().cellRemoved(c),c.setId(U),F=U,R.innerHTML=mxUtils.htmlEntities(U),g.getModel().cellAdded(c)):a.handleError({message:mxResources.get("alreadyExst",
U=0;U<x.length;U++)null==A[U]?d.removeAttribute(x[U]):(d.setAttribute(x[U],A[U].value),T=T||"placeholder"==x[U]&&"1"==d.getAttribute("placeholders"));T&&d.removeAttribute("label");g.getModel().setValue(c,d)}catch(fa){mxUtils.alert(fa)}});aa.setAttribute("title","Ctrl+Enter");aa.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(T){13==T.keyCode&&mxEvent.isControlDown(T)&&aa.click()});mxEvent.addListener(Q,"keyup",f);mxEvent.addListener(Q,"change",f);k=document.createElement("div");
k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(c)||a.editor.graph.getModel().isEdge(c))r=document.createElement("span"),r.style.marginRight="10px",E=document.createElement("input"),E.setAttribute("type","checkbox"),E.style.marginRight="6px","1"==d.getAttribute("placeholders")&&(E.setAttribute("checked","checked"),E.defaultChecked=!0),mxEvent.addListener(E,"click",function(){"1"==d.getAttribute("placeholders")?
"0"),O.setAttribute("valign","middle"),O.style.marginTop=mxClient.IS_IE11?"0px":"-4px",O.setAttribute("src",Editor.helpImage),E.appendChild(O),r.appendChild(E)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(aa)):(k.appendChild(aa),k.appendChild(u));e.appendChild(k);this.container=e};EditDataDialog.getDisplayIdForCell=function(a,c){var f=null;null!=a.editor.graph.getModel().getParent(c)&&(f=c.getId());return f};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,c,f,e){var g=document.createElement("div");mxUtils.write(g,mxResources.get("editLink")+":");var d=document.createElement("div");d.className="geTitle";d.style.backgroundColor="transparent";d.style.borderColor="transparent";d.style.whiteSpace="nowrap";d.style.textOverflow="clip";d.style.cursor="default";d.style.paddingRight="20px";var k=document.createElement("input");k.setAttribute("value",c);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.style.paddingRight="14px";c=document.createElement("div");c.setAttribute("title",mxResources.get("reset"));c.style.position="relative";c.style.left="-16px";c.style.width="12px";c.style.height="14px";c.style.cursor="pointer";c.style.display="inline-block";c.style.top="3px";c.style.background="url("+IMAGE_PATH+"/transparent.gif)";
mxEvent.addListener(c,"click",function(){k.value="";k.focus()});d.appendChild(k);d.appendChild(c);g.appendChild(d);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="right";mxEvent.addListener(k,"keypress",function(n){13==n.keyCode&&(a.hideDialog(),e(k.value))});c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);f=mxUtils.button(f,function(){a.hideDialog();e(k.value)});f.className="geBtn gePrimaryBtn";d.appendChild(f);a.editor.cancelFirst||d.appendChild(c);g.appendChild(d);this.container=g},OutlineWindow=function(a,c,f,e,g){var d=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,c,f,e,g,!0,!0);this.window.minimumSize=
20*(x-1)),d.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,c,f,e,g){function d(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=T.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(U):null!=
new mxWindow(mxResources.get("layers"),m,c,f,e,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){x.scrollTop=x.scrollHeight-x.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=n;this.window.setLocation=function(ha,ba){var qa=window.innerHeight||document.body.clientHeight||
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null!=y.buttonKey?mxResources.get(y.buttonKey):y.button);null!=y.modified&&(this.editor.modified=y.modified);return}if("layout"==y.action){this.executeLayoutList(y.layouts);return}if("prompt"==y.action){this.spinner.stop();var q=new FilenameDialog(this,y.defaultValue||"",null!=y.okKey?mxResources.get(y.okKey):y.ok,function(O){null!=O?v.postMessage(JSON.stringify({event:"prompt",value:O,message:y}),"*"):v.postMessage(JSON.stringify({event:"prompt-cancel",message:y}),"*")},null!=y.titleKey?mxResources.get(y.titleKey):
y.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==y.action){var E=N(y.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[y.name||this.defaultFilename]),E,mxUtils.bind(this,function(){this.hideDialog();v.postMessage(JSON.stringify({event:"draft",result:"edit",message:y}),"*")}),mxUtils.bind(this,function(){this.hideDialog();v.postMessage(JSON.stringify({event:"draft",result:"discard",message:y}),"*")}),y.editKey?mxResources.get(y.editKey):null,
y.discardKey?mxResources.get(y.discardKey):null,y.ignore?mxUtils.bind(this,function(){this.hideDialog();v.postMessage(JSON.stringify({event:"draft",result:"ignore",message:y}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(O){O&&this.actions.get("exit").funct()}));try{q.init()}catch(O){v.postMessage(JSON.stringify({event:"draft",error:O.toString(),message:y}),"*")}return}if("template"==y.action){this.spinner.stop();var A=1==y.enableRecent,B=1==y.enableSearch,G=1==
y.enableCustomTemp;if("1"==urlParams.newTempDlg&&!y.templatesOnly&&null!=y.callback){var M=this.getCurrentUser(),H=new TemplatesDialog(this,function(O,S,Y){O=O||this.emptyDiagramXml;v.postMessage(JSON.stringify({event:"template",xml:O,blank:O==this.emptyDiagramXml,name:S,tempUrl:Y.url,libs:Y.libs,builtIn:null!=Y.info&&null!=Y.info.custContentId,message:y}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=M?M.id:null,A?mxUtils.bind(this,function(O,S,Y){this.remoteInvoke("getRecentDiagrams",
[Y],null,O,S)}):null,B?mxUtils.bind(this,function(O,S,Y,da){this.remoteInvoke("searchDiagrams",[O,da],null,S,Y)}):null,mxUtils.bind(this,function(O,S,Y){this.remoteInvoke("getFileContent",[O.url],null,S,Y)}),null,G?mxUtils.bind(this,function(O){this.remoteInvoke("getCustomTemplates",null,null,O,function(){O({},0)})}):null,!1,!1,!0,!0);this.showDialog(H.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,y.templatesOnly?!1:null!=y.callback,mxUtils.bind(this,
function(O,S,Y,da){O=O||this.emptyDiagramXml;null!=y.callback?v.postMessage(JSON.stringify({event:"template",xml:O,blank:O==this.emptyDiagramXml,name:S,tempUrl:Y,libs:da,builtIn:!0,message:y}),"*"):(c(O,z,O!=this.emptyDiagramXml,y.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,A?mxUtils.bind(this,function(O){this.remoteInvoke("getRecentDiagrams",[null],null,O,function(){O(null,"Network Error!")})}):null,B?mxUtils.bind(this,function(O,S){this.remoteInvoke("searchDiagrams",
[O,null],null,S,function(){S(null,"Network Error!")})}):null,mxUtils.bind(this,function(O,S,Y){v.postMessage(JSON.stringify({event:"template",docUrl:O,info:S,name:Y}),"*")}),null,null,G?mxUtils.bind(this,function(O){this.remoteInvoke("getCustomTemplates",null,null,O,function(){O({},0)})}):null,1==y.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(O){this.sidebar.hideTooltip();O&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==y.action){var F=
this.getDiagramTextContent();v.postMessage(JSON.stringify({event:"textContent",data:F,message:y}),"*");return}if("status"==y.action){null!=y.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(y.messageKey))):null!=y.message&&this.editor.setStatus(mxUtils.htmlEntities(y.message));null!=y.modified&&(this.editor.modified=y.modified);return}if("spinner"==y.action){var I=null!=y.messageKey?mxResources.get(y.messageKey):y.message;null==y.show||y.show?this.spinner.spin(document.body,I):
this.spinner.stop();return}if("exit"==y.action){this.actions.get("exit").funct();return}if("viewport"==y.action){null!=y.viewport&&(this.embedViewport=y.viewport);return}if("snapshot"==y.action){this.sendEmbeddedSvgExport(!0);return}if("export"==y.action){if("png"==y.format||"xmlpng"==y.format){if(null==y.spin&&null==y.spinKey||this.spinner.spin(document.body,null!=y.spinKey?mxResources.get(y.spinKey):y.spin)){var R=null!=y.xml?y.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var W=this.editor.graph,
P=mxUtils.bind(this,function(O){this.editor.graph.setEnabled(!0);this.spinner.stop();var S=this.createLoadMessage("export");S.format=y.format;S.message=y;S.data=O;S.xml=R;v.postMessage(JSON.stringify(S),"*")}),V=mxUtils.bind(this,function(O){null==O&&(O=Editor.blankImage);"xmlpng"==y.format&&(O=Editor.writeGraphModelToPng(O,"tEXt","mxfile",encodeURIComponent(R)));W!=this.editor.graph&&W.container.parentNode.removeChild(W.container);P(O)}),U=y.pageId||(null!=this.pages?y.currentPage?this.currentPage.getId():
this.pages[0].getId():null);if(this.isExportToCanvas()){var X=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=U){var O=W.getGlobalVariable;W=this.createTemporaryGraph(W.getStylesheet());for(var S,Y=0;Y<this.pages.length;Y++)if(this.pages[Y].getId()==U){S=this.updatePageRoot(this.pages[Y]);break}null==S&&(S=this.currentPage);W.getGlobalVariable=function(ea){return"page"==ea?S.getName():"pagenumber"==ea?1:O.apply(this,arguments)};document.body.appendChild(W.container);W.model.setRoot(S.root)}if(null!=
y.layerIds){var da=W.model,ha=da.getChildCells(da.getRoot()),Z={};for(Y=0;Y<y.layerIds.length;Y++)Z[y.layerIds[Y]]=!0;for(Y=0;Y<ha.length;Y++)da.setVisible(ha[Y],Z[ha[Y].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(ea){V(ea.toDataURL("image/png"))}),y.width,null,y.background,mxUtils.bind(this,function(){V(null)}),null,null,y.scale,y.transparent,y.shadow,null,W,y.border,null,y.grid,y.keepTheme)});null!=y.xml&&0<y.xml.length?(g=!0,this.setFileData(R),g=!1,this.editor.graph.mathEnabled?
window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==y.format?"1":"0")+(null!=U?"&pageId="+U:"")+(null!=y.layerIds&&0<y.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:y.layerIds})):"")+(null!=y.scale?"&scale="+y.scale:"")+"&base64=1&xml="+encodeURIComponent(R))).send(mxUtils.bind(this,function(O){200<=O.getStatus()&&299>=O.getStatus()?P("data:image/png;base64,"+O.getText()):V(null)}),mxUtils.bind(this,
function(){V(null)}))}}else X=mxUtils.bind(this,function(){var O=this.createLoadMessage("export");O.message=y;if("html2"==y.format||"html"==y.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var S=this.getXmlFileData();O.xml=mxUtils.getXml(S);O.data=this.getFileData(null,null,!0,null,null,null,S);O.format=y.format}else if("html"==y.format)S=this.editor.getGraphXml(),O.data=this.getHtml(S,this.editor.graph),O.xml=mxUtils.getXml(S),O.format=y.format;else{mxSvgCanvas2D.prototype.foAltText=
null;S=null!=y.background?y.background:this.editor.graph.background;S==mxConstants.NONE&&(S=null);O.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);O.format="svg";var Y=mxUtils.bind(this,function(da){this.editor.graph.setEnabled(!0);this.spinner.stop();O.data=Editor.createSvgDataUri(da);v.postMessage(JSON.stringify(O),"*")});if("xmlsvg"==y.format)(null==y.spin&&null==y.spinKey||this.spinner.spin(document.body,null!=y.spinKey?mxResources.get(y.spinKey):y.spin))&&this.getEmbeddedSvg(O.xml,
this.editor.graph,null,!0,Y,null,null,y.embedImages,S,y.scale,y.border,y.shadow,y.keepTheme);else if(null==y.spin&&null==y.spinKey||this.spinner.spin(document.body,null!=y.spinKey?mxResources.get(y.spinKey):y.spin))this.editor.graph.setEnabled(!1),S=this.editor.graph.getSvg(S,y.scale,y.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||y.shadow,null,y.keepTheme),(this.editor.graph.shadowVisible||y.shadow)&&this.editor.graph.addSvgShadow(S),this.embedFonts(S,mxUtils.bind(this,function(da){y.embedImages||
null==y.embedImages?this.editor.convertImages(da,mxUtils.bind(this,function(ha){Y(mxUtils.getXml(ha))})):Y(mxUtils.getXml(da))}));return}v.postMessage(JSON.stringify(O),"*")}),null!=y.xml&&0<y.xml.length?(g=!0,this.setFileData(y.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X();return}if("load"==y.action){K=y.toSketch;k=1==y.autosave;this.hideDialog();null!=y.modified&&null==urlParams.modified&&(urlParams.modified=y.modified);null!=y.saveAndExit&&
null==urlParams.saveAndExit&&(urlParams.saveAndExit=y.saveAndExit);null!=y.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=y.noSaveBtn);if(null!=y.rough){var n=Editor.sketchMode;this.doSetSketchMode(y.rough);n!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=y.dark&&(n=Editor.darkMode,this.doSetDarkMode(y.dark),n!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=y.border&&(this.embedExportBorder=y.border);null!=y.background&&(this.embedExportBackground=
y.background);null!=y.viewport&&(this.embedViewport=y.viewport);this.embedExitPoint=null;if(null!=y.rect){var C=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=y.rect.top+"px";this.diagramContainer.style.left=y.rect.left+"px";this.diagramContainer.style.height=y.rect.height+"px";this.diagramContainer.style.width=y.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";L=mxUtils.bind(this,function(){var O=
this.editor.graph,S=O.maxFitScale;O.maxFitScale=y.maxFitScale;O.fit(2*C);O.maxFitScale=S;O.container.scrollTop-=2*C;O.container.scrollLeft-=2*C;this.fireEvent(new mxEventObject("editInlineStart","data",[y]))})}null!=y.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=y.noExitBtn);null!=y.title&&null!=this.buttonContainer&&(E=document.createElement("span"),mxUtils.write(E,y.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(E),
this.embedFilenameSpan=E);try{y.libs&&this.sidebar.showEntries(y.libs)}catch(O){}y=null!=y.xmlpng?this.extractGraphModelFromPng(y.xmlpng):null!=y.descriptor?y.descriptor:y.xml}else{if("merge"==y.action){var J=this.getCurrentFile();null!=J&&(E=N(y.xml),null!=E&&""!=E&&J.mergeFile(new LocalFile(this,E),function(){v.postMessage(JSON.stringify({event:"merge",message:y}),"*")},function(O){v.postMessage(JSON.stringify({event:"merge",message:y,error:O}),"*")}))}else"remoteInvokeReady"==y.action?this.handleRemoteInvokeReady(v):
"remoteInvoke"==y.action?this.handleRemoteInvoke(y,z.origin):"remoteInvokeResponse"==y.action?this.handleRemoteInvokeResponse(y):v.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(y)}),"*");return}}catch(O){this.handleError(O)}}var T=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),Q=mxUtils.bind(this,function(O,S){g=!0;try{c(O,S,null,K)}catch(Y){this.handleError(Y)}g=
!1;null!=urlParams.modified&&this.editor.setStatus("");m=T();k&&null==e&&(e=mxUtils.bind(this,function(Y,da){Y=T();Y==m||g||(da=this.createLoadMessage("autosave"),da.xml=Y,(window.opener||window.parent).postMessage(JSON.stringify(da),"*"));m=Y}),this.editor.graph.model.addListener(mxEvent.CHANGE,e),this.editor.graph.addListener("gridSizeChanged",e),this.editor.graph.addListener("shadowVisibleChanged",e),this.addListener("pageFormatChanged",e),this.addListener("pageScaleChanged",e),this.addListener("backgroundColorChanged",
e),this.addListener("backgroundImageChanged",e),this.addListener("foldingEnabledChanged",e),this.addListener("mathEnabledChanged",e),this.addListener("gridEnabledChanged",e),this.addListener("guidesEnabledChanged",e),this.addListener("pageViewChanged",e));if("1"==urlParams.returnbounds||"json"==urlParams.proto)S=this.createLoadMessage("load"),S.xml=O,v.postMessage(JSON.stringify(S),"*");null!=L&&L()});null!=y&&"function"===typeof y.substring&&"data:application/vnd.visio;base64,"==y.substring(0,34)?
(N="0M8R4KGxGuE"==y.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(y.substring(y.indexOf(",")+1)),function(O){Q(O,z)},mxUtils.bind(this,function(O){this.handleError(O)}),N)):null!=y&&"function"===typeof y.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(y,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(y,mxUtils.bind(this,function(O){4==O.readyState&&200<=O.status&&299>=O.status&&"<mxGraphModel"==
O.responseText.substring(0,13)&&Q(O.responseText,z)}),""):null!=y&&"function"===typeof y.substring&&this.isLucidChartData(y)?this.convertLucidChart(y,mxUtils.bind(this,function(O){Q(O)}),mxUtils.bind(this,function(O){this.handleError(O)})):null==y||"object"!==typeof y||null==y.format||null==y.data&&null==y.url?(y=N(y),Q(y,z)):this.loadDescriptor(y,mxUtils.bind(this,function(O){Q(T(),z)}),mxUtils.bind(this,function(O){this.handleError(O,mxResources.get("errorLoadingFile"))}))}}));var v=window.opener||
window.parent;p="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";v.postMessage(p,"*");if("json"==urlParams.proto){var x=this.editor.graph.openLink;this.editor.graph.openLink=function(z,y,L){x.apply(this,arguments);v.postMessage(JSON.stringify({event:"openLink",href:z,target:y,allowOpener:L}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var c=document.createElement("div");c.style.display="inline-block";c.style.position=
"absolute";c.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";c.style.paddingLeft="8px";c.style.paddingBottom="2px";var e=document.createElement("button");e.className="geBigButton";var g=e;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var k="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(e,k);e.setAttribute("title",k);mxEvent.addListener(e,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));
640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(c,e){for(var g=this.editor.graph,k=g.getSelectionCells(),m=0;m<c.length;m++){var p=new window[c[m].layout](g);if(null!=c[m].config)for(var v in c[m].config)p[v]=c[m].config[v];this.executeLayout(function(){p.execute(g.getDefaultParent(),0==k.length?null:k)},m==c.length-1,e)}};EditorUi.prototype.importCsv=function(c,e){try{var g=c.split("\n"),k=[],m=[],p=[],v={};if(0<g.length){var x={},
z=this.editor.graph,y=null,L=null,N=null,K=null,q=null,E=null,A=null,B="whiteSpace=wrap;html=1;",G=null,M=null,H="",F="auto",I="auto",R=null,W=null,P=40,V=40,U=100,X=0,n=function(){null!=e?e(ta):(z.setSelectionCells(ta),z.scrollCellToVisible(z.getSelectionCell()))},C=z.getFreeInsertPoint(),J=C.x,T=C.y;C=T;var Q=null,O="auto";M=null;for(var S=[],Y=null,da=null,ha=0;ha<g.length&&"#"==g[ha].charAt(0);){c=g[ha].replace(/\r$/,"");for(ha++;ha<g.length&&"\\"==c.charAt(c.length-1)&&"#"==g[ha].charAt(0);)c=
c.substring(0,c.length-1)+mxUtils.trim(g[ha].substring(1)),ha++;if("#"!=c.charAt(1)){var Z=c.indexOf(":");if(0<Z){var ea=mxUtils.trim(c.substring(1,Z)),aa=mxUtils.trim(c.substring(Z+1));"label"==ea?Q=z.sanitizeHtml(aa):"labelname"==ea&&0<aa.length&&"-"!=aa?q=aa:"labels"==ea&&0<aa.length&&"-"!=aa?A=JSON.parse(aa):"style"==ea?L=aa:"parentstyle"==ea?B=aa:"unknownStyle"==ea&&"-"!=aa?E=aa:"stylename"==ea&&0<aa.length&&"-"!=aa?K=aa:"styles"==ea&&0<aa.length&&"-"!=aa?N=JSON.parse(aa):"vars"==ea&&0<aa.length&&
"-"!=aa?y=JSON.parse(aa):"identity"==ea&&0<aa.length&&"-"!=aa?G=aa:"parent"==ea&&0<aa.length&&"-"!=aa?M=aa:"namespace"==ea&&0<aa.length&&"-"!=aa?H=aa:"width"==ea?F=aa:"height"==ea?I=aa:"left"==ea&&0<aa.length?R=aa:"top"==ea&&0<aa.length?W=aa:"ignore"==ea?da=aa.split(","):"connect"==ea?S.push(JSON.parse(aa)):"link"==ea?Y=aa:"padding"==ea?X=parseFloat(aa):"edgespacing"==ea?P=parseFloat(aa):"nodespacing"==ea?V=parseFloat(aa):"levelspacing"==ea?U=parseFloat(aa):"layout"==ea&&(O=aa)}}}if(null==g[ha])throw Error(mxResources.get("invalidOrMissingFile"));
var va=this.editor.csvToArray(g[ha].replace(/\r$/,""));Z=c=null;ea=[];for(aa=0;aa<va.length;aa++)G==va[aa]&&(c=aa),M==va[aa]&&(Z=aa),ea.push(mxUtils.trim(va[aa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Q&&(Q="%"+ea[0]+"%");if(null!=S)for(var la=0;la<S.length;la++)null==x[S[la].to]&&(x[S[la].to]={});G=[];for(aa=ha+1;aa<g.length;aa++){var Aa=this.editor.csvToArray(g[aa].replace(/\r$/,""));if(null==Aa){var Ba=40<g[aa].length?g[aa].substring(0,40)+"...":g[aa];throw Error(Ba+
" ("+aa+"):\n"+mxResources.get("containsValidationErrors"));}0<Aa.length&&G.push(Aa)}z.model.beginUpdate();try{for(aa=0;aa<G.length;aa++){Aa=G[aa];var ua=null,Da=null!=c?H+Aa[c]:null;null!=Da&&(ua=z.model.getCell(Da));g=null!=ua;var Fa=new mxCell(Q,new mxGeometry(J,C,0,0),L||"whiteSpace=wrap;html=1;");Fa.vertex=!0;Fa.id=Da;Ba=null!=ua?ua:Fa;for(var Ka=0;Ka<Aa.length;Ka++)z.setAttributeForCell(Ba,ea[Ka],Aa[Ka]);if(null!=q&&null!=A){var Oa=A[Ba.getAttribute(q)];null!=Oa&&z.labelChanged(Ba,Oa)}if(null!=
K&&null!=N){var Ia=N[Ba.getAttribute(K)];null!=Ia&&(Ba.style=Ia)}z.setAttributeForCell(Ba,"placeholders","1");Ba.style=z.replacePlaceholders(Ba,Ba.style,y);g?(0>mxUtils.indexOf(p,ua)&&p.push(ua),z.fireEvent(new mxEventObject("cellsInserted","cells",[ua]))):z.fireEvent(new mxEventObject("cellsInserted","cells",[Fa]));ua=Fa;if(!g)for(la=0;la<S.length;la++)x[S[la].to][ua.getAttribute(S[la].to)]=ua;null!=Y&&"link"!=Y&&(z.setLinkForCell(ua,ua.getAttribute(Y)),z.setAttributeForCell(ua,Y,null));var Ea=this.editor.graph.getPreferredSizeForCell(ua);
M=null!=Z?z.model.getCell(H+Aa[Z]):null;if(ua.vertex){Ba=null!=M?0:J;ha=null!=M?0:T;null!=R&&null!=ua.getAttribute(R)&&(ua.geometry.x=Ba+parseFloat(ua.getAttribute(R)));null!=W&&null!=ua.getAttribute(W)&&(ua.geometry.y=ha+parseFloat(ua.getAttribute(W)));var Ca="@"==F.charAt(0)?ua.getAttribute(F.substring(1)):null;ua.geometry.width=null!=Ca&&"auto"!=Ca?parseFloat(ua.getAttribute(F.substring(1))):"auto"==F||"auto"==Ca?Ea.width+X:parseFloat(F);var Ma="@"==I.charAt(0)?ua.getAttribute(I.substring(1)):
null;ua.geometry.height=null!=Ma&&"auto"!=Ma?parseFloat(Ma):"auto"==I||"auto"==Ma?Ea.height+X:parseFloat(I);C+=ua.geometry.height+V}g?(null==v[Da]&&(v[Da]=[]),v[Da].push(ua)):(k.push(ua),null!=M?(M.style=z.replacePlaceholders(M,B,y),z.addCell(ua,M),m.push(M)):p.push(z.addCell(ua)))}for(aa=0;aa<m.length;aa++)Ca="@"==F.charAt(0)?m[aa].getAttribute(F.substring(1)):null,Ma="@"==I.charAt(0)?m[aa].getAttribute(I.substring(1)):null,"auto"!=F&&"auto"!=Ca||"auto"!=I&&"auto"!=Ma||z.updateGroupBounds([m[aa]],
X,!0);var za=p.slice(),ta=p.slice();for(la=0;la<S.length;la++){var ka=S[la];for(aa=0;aa<k.length;aa++){ua=k[aa];var pa=mxUtils.bind(this,function(ia,ma,qa){var oa=ma.getAttribute(qa.from);if(null!=oa&&""!=oa){oa=oa.split(",");for(var na=0;na<oa.length;na++){var Ja=x[qa.to][oa[na]];if(null==Ja&&null!=E){Ja=new mxCell(oa[na],new mxGeometry(J,T,0,0),E);Ja.style=z.replacePlaceholders(ma,Ja.style,y);var Ga=this.editor.graph.getPreferredSizeForCell(Ja);Ja.geometry.width=Ga.width+X;Ja.geometry.height=Ga.height+
X;x[qa.to][oa[na]]=Ja;Ja.vertex=!0;Ja.id=oa[na];p.push(z.addCell(Ja))}if(null!=Ja){Ga=qa.label;null!=qa.fromlabel&&(Ga=(ma.getAttribute(qa.fromlabel)||"")+(Ga||""));null!=qa.sourcelabel&&(Ga=z.replacePlaceholders(ma,qa.sourcelabel,y)+(Ga||""));null!=qa.tolabel&&(Ga=(Ga||"")+(Ja.getAttribute(qa.tolabel)||""));null!=qa.targetlabel&&(Ga=(Ga||"")+z.replacePlaceholders(Ja,qa.targetlabel,y));var Ra="target"==qa.placeholders==!qa.invert?Ja:ia;Ra=null!=qa.style?z.replacePlaceholders(Ra,qa.style,y):z.createCurrentEdgeStyle();
Ga=z.insertEdge(null,null,Ga||"",qa.invert?Ja:ia,qa.invert?ia:Ja,Ra);if(null!=qa.labels)for(Ra=0;Ra<qa.labels.length;Ra++){var Sa=qa.labels[Ra],Ha=new mxCell(Sa.label||Ra,new mxGeometry(null!=Sa.x?Sa.x:0,null!=Sa.y?Sa.y:0,0,0),"resizable=0;html=1;");Ha.vertex=!0;Ha.connectable=!1;Ha.geometry.relative=!0;null!=Sa.placeholders&&(Ha.value=z.replacePlaceholders("target"==Sa.placeholders==!qa.invert?Ja:ia,Ha.value,y));if(null!=Sa.dx||null!=Sa.dy)Ha.geometry.offset=new mxPoint(null!=Sa.dx?Sa.dx:0,null!=
Sa.dy?Sa.dy:0);Ga.insert(Ha)}ta.push(Ga);mxUtils.remove(qa.invert?ia:Ja,za)}}}});pa(ua,ua,ka);if(null!=v[ua.id])for(Ka=0;Ka<v[ua.id].length;Ka++)pa(ua,v[ua.id][Ka],ka)}}if(null!=da)for(aa=0;aa<k.length;aa++)for(ua=k[aa],Ka=0;Ka<da.length;Ka++)z.setAttributeForCell(ua,mxUtils.trim(da[Ka]),null);if(0<p.length){var sa=new mxParallelEdgeLayout(z);sa.spacing=P;sa.checkOverlap=!0;var ya=function(){0<sa.spacing&&sa.execute(z.getDefaultParent());for(var ia=0;ia<p.length;ia++){var ma=z.getCellGeometry(p[ia]);
ma.x=Math.round(z.snap(ma.x));ma.y=Math.round(z.snap(ma.y));"auto"==F&&(ma.width=Math.round(z.snap(ma.width)));"auto"==I&&(ma.height=Math.round(z.snap(ma.height)))}};if("["==O.charAt(0)){var wa=n;z.view.validate();this.executeLayoutList(JSON.parse(O),function(){ya();wa()});n=null}else if("circle"==O){var ra=new mxCircleLayout(z);ra.disableEdgeStyle=!1;ra.resetEdges=!1;var xa=ra.isVertexIgnored;ra.isVertexIgnored=function(ia){return xa.apply(this,arguments)||0>mxUtils.indexOf(p,ia)};this.executeLayout(function(){ra.execute(z.getDefaultParent());
ya()},!0,n);n=null}else if("horizontaltree"==O||"verticaltree"==O||"auto"==O&&ta.length==2*p.length-1&&1==za.length){z.view.validate();var fa=new mxCompactTreeLayout(z,"horizontaltree"==O);fa.levelDistance=V;fa.edgeRouting=!1;fa.resetEdges=!1;this.executeLayout(function(){fa.execute(z.getDefaultParent(),0<za.length?za[0]:null)},!0,n);n=null}else if("horizontalflow"==O||"verticalflow"==O||"auto"==O&&1==za.length){z.view.validate();var ca=new mxHierarchicalLayout(z,"horizontalflow"==O?mxConstants.DIRECTION_WEST:
mxConstants.DIRECTION_NORTH);ca.intraCellSpacing=V;ca.parallelEdgeSpacing=P;ca.interRankCellSpacing=U;ca.disableEdgeStyle=!1;this.executeLayout(function(){ca.execute(z.getDefaultParent(),ta);z.moveCells(ta,J,T)},!0,n);n=null}else if("organic"==O||"auto"==O&&ta.length>p.length){z.view.validate();var ba=new mxFastOrganicLayout(z);ba.forceConstant=3*V;ba.disableEdgeStyle=!1;ba.resetEdges=!1;var ja=ba.isVertexIgnored;ba.isVertexIgnored=function(ia){return ja.apply(this,arguments)||0>mxUtils.indexOf(p,
ia)};this.executeLayout(function(){ba.execute(z.getDefaultParent());ya()},!0,n);n=null}}this.hideDialog()}finally{z.model.endUpdate()}null!=n&&n()}}catch(ia){this.handleError(ia)}};EditorUi.prototype.getSearch=function(c){var e="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=c&&0<window.location.search.length){var g="?",k;for(k in urlParams)0>mxUtils.indexOf(c,k)&&null!=urlParams[k]&&(e+=g+k+"="+urlParams[k],g="&")}else e=window.location.search;return e};EditorUi.prototype.getUrl=function(c){c=
null!=c?c:window.location.pathname;var e=0<c.indexOf("?")?1:0;if("1"==urlParams.offline)c+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),k;for(k in urlParams)0>mxUtils.indexOf(g,k)&&(c=0==e?c+"?":c+"&",null!=urlParams[k]&&(c+=k+"="+urlParams[k],e++))}return c};EditorUi.prototype.showLinkDialog=function(c,e,g,k,m){c=new LinkDialog(this,c,e,g,!0,k,m);this.showDialog(c.container,560,130,!0,!0);c.init()};EditorUi.prototype.getServiceCount=
function(c){var e=1;null==this.drive&&"function"!==typeof window.DriveClient||e++;null==this.dropbox&&"function"!==typeof window.DropboxClient||e++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||e++;null!=this.gitHub&&e++;null!=this.gitLab&&e++;c&&isLocalStorage&&"1"==urlParams.browser&&e++;return e};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var c=this.getCurrentFile(),e=null!=c||"1"==urlParams.embed&&this.editor.graph.isEnabled();
this.menus.get("viewPanels").setEnabled(e);this.menus.get("viewZoom").setEnabled(e);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==c||c.isRestricted());this.actions.get("makeCopy").setEnabled(!g);this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),
this.menus.get("newLibrary").setEnabled(g));c="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=c&&c.isEditable();this.actions.get("image").setEnabled(e);this.actions.get("zoomIn").setEnabled(e);this.actions.get("zoomOut").setEnabled(e);this.actions.get("resetView").setEnabled(e);this.actions.get("undo").setEnabled(this.canUndo()&&c);this.actions.get("redo").setEnabled(this.canRedo()&&c);this.menus.get("edit").setEnabled(e);this.menus.get("view").setEnabled(e);this.menus.get("importFrom").setEnabled(c);
this.menus.get("arrange").setEnabled(c);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(c),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(c));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var c=this.getCurrentFile();
return null!=c&&c.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var c=this.editor.graph,e=this.getCurrentFile(),g=this.getSelectionState(),k=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(k);this.actions.get("autosave").setEnabled(null!=e&&e.isEditable()&&e.isAutosaveOptional());this.actions.get("guides").setEnabled(k);this.actions.get("editData").setEnabled(c.isEnabled());
this.actions.get("shadowVisible").setEnabled(k);this.actions.get("connectionArrows").setEnabled(k);this.actions.get("connectionPoints").setEnabled(k);this.actions.get("copyStyle").setEnabled(k&&!c.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(k&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(k);this.actions.get("createRevision").setEnabled(k);this.actions.get("moveToFolder").setEnabled(null!=e);this.actions.get("makeCopy").setEnabled(null!=
e&&!e.isRestricted());this.actions.get("editDiagram").setEnabled(k&&(null==e||!e.isRestricted()));this.actions.get("publishLink").setEnabled(null!=e&&!e.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=e&&e.isRenamable()||"1"==
urlParams.embed);this.actions.get("close").setEnabled(null!=e);this.menus.get("publish").setEnabled(null!=e&&!e.isRestricted());e=this.actions.get("findReplace");e.setEnabled("hidden"!=this.diagramContainer.style.visibility);e.label=mxResources.get("find")+(c.isEnabled()?"/"+mxResources.get("replace"):"")+"...";c=c.view.getState(c.getSelectionCell());this.actions.get("editShape").setEnabled(k&&null!=c&&null!=c.shape&&null!=c.shape.stencil)};var D=EditorUi.prototype.destroy;EditorUi.prototype.destroy=
function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);D.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(c,e,g,k,m,p,v,x){var z=c.editor.graph;if("xml"==g)c.hideDialog(),c.saveData(e,"xml",mxUtils.getXml(c.editor.getGraphXml()),"text/xml");else if("svg"==g)c.hideDialog(),c.saveData(e,"svg",mxUtils.getXml(z.getSvg(k,m,p)),"image/svg+xml");
else{var y=c.getFileData(!0,null,null,null,null,!0),L=z.getGraphBounds(),N=Math.floor(L.width*m/z.view.scale),K=Math.floor(L.height*m/z.view.scale);if(y.length<=MAX_REQUEST_SIZE&&N*K<MAX_AREA)if(c.hideDialog(),"png"!=g&&"jpg"!=g&&"jpeg"!=g||!c.isExportToCanvas()){var q={globalVars:z.getExportVariables()};x&&(q.grid={size:z.gridSize,steps:z.view.gridSteps,color:z.view.gridColor});c.saveRequest(e,g,function(E,A){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(A||"0")+(null!=E?"&filename="+
encodeURIComponent(E):"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(0<v?"&dpi="+v:"")+"&bg="+(null!=k?k:"none")+"&w="+N+"&h="+K+"&border="+p+"&xml="+encodeURIComponent(y))})}else"png"==g?c.exportImage(m,null==k||"none"==k,!0,!1,!1,p,!0,!1,null,x,v):c.exportImage(m,!1,!0,!1,!1,p,!0,!1,"jpeg",x);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var c=this.editor.graph,e="";if(null!=this.pages)for(var g=
0;g<this.pages.length;g++){var k=c;this.currentPage!=this.pages[g]&&(k=this.createTemporaryGraph(c.getStylesheet()),this.updatePageRoot(this.pages[g]),k.model.setRoot(this.pages[g].root));e+=this.pages[g].getName()+" "+k.getIndexableText()+" "}else e=c.getIndexableText();this.editor.graph.setEnabled(!0);return e};EditorUi.prototype.showRemotelyStoredLibrary=function(c){var e={},g=document.createElement("div");g.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,mxUtils.htmlEntities(c));
k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(k);var m=document.createElement("div");m.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";m.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var p={};try{var v=mxSettings.getCustomLibraries();for(c=0;c<v.length;c++){var x=v[c];if("R"==x.substring(0,1)){var z=JSON.parse(decodeURIComponent(x.substring(1)));p[z[0]]={id:z[0],title:z[1],downloadUrl:z[2]}}}}catch(y){}this.remoteInvoke("getCustomLibraries",
null,null,function(y){m.innerHTML="";if(0==y.length)m.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var L=0;L<y.length;L++){var N=y[L];p[N.id]&&(e[N.id]=N);var K=this.addCheckbox(m,N.title,p[N.id]);(function(q,E){mxEvent.addListener(E,"change",function(){this.checked?e[q.id]=q:delete e[q.id]})})(N,K)}},mxUtils.bind(this,function(y){m.innerHTML="";var L=document.createElement("div");L.style.padding="8px";
L.style.textAlign="center";mxUtils.write(L,mxResources.get("error")+": ");mxUtils.write(L,null!=y&&null!=y.message?y.message:mxResources.get("unknownError"));m.appendChild(L)}));g.appendChild(m);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var y=0,L;for(L in e)null==p[L]&&(y++,mxUtils.bind(this,function(N){this.remoteInvoke("getFileContent",[N.downloadUrl],null,mxUtils.bind(this,function(K){y--;0==y&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,
K,N))}catch(q){this.handleError(q,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){y--;0==y&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(e[L]));for(L in p)e[L]||this.closeLibrary(new RemoteLibrary(this,null,p[L]));0==y&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},
getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(c){this.remoteWin=c;for(var e=0;e<this.remoteInvokeQueue.length;e++)c.postMessage(this.remoteInvokeQueue[e],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=
function(c){var e=c.msgMarkers,g=this.remoteInvokeCallbacks[e.callbackId];if(null==g)throw Error("No callback for "+(null!=e?e.callbackId:"null"));c.error?g.error&&g.error(c.error.errResp):g.callback&&g.callback.apply(this,c.resp);this.remoteInvokeCallbacks[e.callbackId]=null};EditorUi.prototype.remoteInvoke=function(c,e,g,k,m){var p=!0,v=window.setTimeout(mxUtils.bind(this,function(){p=!1;m({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),x=mxUtils.bind(this,function(){window.clearTimeout(v);
p&&k.apply(this,arguments)}),z=mxUtils.bind(this,function(){window.clearTimeout(v);p&&m.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:x,error:z});c=JSON.stringify({event:"remoteInvoke",funtionName:c,functionArgs:e,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(c,"*"):this.remoteInvokeQueue.push(c)};EditorUi.prototype.handleRemoteInvoke=function(c,e){var g=mxUtils.bind(this,function(y,L){var N={event:"remoteInvokeResponse",
msgMarkers:c.msgMarkers};null!=L?N.error={errResp:L}:null!=y&&(N.resp=y);this.remoteWin.postMessage(JSON.stringify(N),"*")});try{var k=c.funtionName,m=this.remoteInvokableFns[k];if(null!=m&&"function"===typeof this[k]){if(m.allowedDomains){for(var p=!1,v=0;v<m.allowedDomains.length;v++)if(e=="https://"+m.allowedDomains[v]){p=!0;break}if(!p){g(null,"Invalid Call: "+k+" is not allowed.");return}}var x=c.functionArgs;Array.isArray(x)||(x=[]);if(m.isAsync)x.push(function(){g(Array.prototype.slice.apply(arguments))}),
x.push(function(y){g(null,y||"Unkown Error")}),this[k].apply(this,x);else{var z=this[k].apply(this,x);g([z])}}else g(null,"Invalid Call: "+k+" is not found.")}catch(y){g(null,"Invalid Call: An error occurred, "+y.message)}};EditorUi.prototype.openDatabase=function(c,e){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var k=g.open("database",2);k.onupgradeneeded=function(m){try{var p=k.result;1>m.oldVersion&&p.createObjectStore("objects",{keyPath:"key"});
2>m.oldVersion&&(p.createObjectStore("files",{keyPath:"title"}),p.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(v){null!=e&&e(v)}};k.onsuccess=mxUtils.bind(this,function(m){var p=k.result;this.database=p;EditorUi.migrateStorageFiles&&(StorageFile.migrate(p),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(v){if(!v||
"1"==urlParams.forceMigration){var x=document.createElement("iframe");x.style.display="none";x.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(x);var z=!0,y=!1,L,N=0,K=mxUtils.bind(this,function(){y=!0;this.setDatabaseItem(".drawioMigrated3",!0);x.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),q=mxUtils.bind(this,function(){N++;E()}),E=mxUtils.bind(this,function(){try{if(N>=
L.length)K();else{var B=L[N];StorageFile.getFileContent(this,B,mxUtils.bind(this,function(G){null==G||".scratchpad"==B&&G==this.emptyLibraryXml?x.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[B]}),"*"):q()}),q)}}catch(G){console.log(G)}}),A=mxUtils.bind(this,function(B){try{this.setDatabaseItem(null,[{title:B.title,size:B.data.length,lastModified:Date.now(),type:B.isLib?"L":"F"},{title:B.title,data:B.data}],q,q,["filesInfo","files"])}catch(G){console.log(G)}});
v=mxUtils.bind(this,function(B){try{if(B.source==x.contentWindow){var G={};try{G=JSON.parse(B.data)}catch(M){}"init"==G.event?(x.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),x.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=G.event||y||(z?null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?(L=G.resp[0],z=!1,E()):K():null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?A(G.resp[0]):q())}}catch(M){console.log(M)}});
window.addEventListener("message",v)}})));c(p);p.onversionchange=function(){p.close()}});k.onerror=e;k.onblocked=function(){}}catch(m){null!=e&&e(m)}else null!=e&&e()}else c(this.database)};EditorUi.prototype.setDatabaseItem=function(c,e,g,k,m){this.openDatabase(mxUtils.bind(this,function(p){try{m=m||"objects";Array.isArray(m)||(m=[m],c=[c],e=[e]);var v=p.transaction(m,"readwrite");v.oncomplete=g;v.onerror=k;for(p=0;p<m.length;p++)v.objectStore(m[p]).put(null!=c&&null!=c[p]?{key:c[p],data:e[p]}:e[p])}catch(x){null!=
k&&k(x)}}),k)};EditorUi.prototype.removeDatabaseItem=function(c,e,g,k){this.openDatabase(mxUtils.bind(this,function(m){k=k||"objects";Array.isArray(k)||(k=[k],c=[c]);m=m.transaction(k,"readwrite");m.oncomplete=e;m.onerror=g;for(var p=0;p<k.length;p++)m.objectStore(k[p]).delete(c[p])}),g)};EditorUi.prototype.getDatabaseItem=function(c,e,g,k){this.openDatabase(mxUtils.bind(this,function(m){try{k=k||"objects";var p=m.transaction([k],"readonly").objectStore(k).get(c);p.onsuccess=function(){e(p.result)};
p.onerror=g}catch(v){null!=g&&g(v)}}),g)};EditorUi.prototype.getDatabaseItems=function(c,e,g){this.openDatabase(mxUtils.bind(this,function(k){try{g=g||"objects";var m=k.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),p=[];m.onsuccess=function(v){null==v.target.result?c(p):(p.push(v.target.result.value),v.target.result.continue())};m.onerror=e}catch(v){null!=e&&e(v)}}),e)};EditorUi.prototype.getDatabaseItemKeys=function(c,e,g){this.openDatabase(mxUtils.bind(this,function(k){try{g=
g||"objects";var m=k.transaction([g],"readonly").objectStore(g).getAllKeys();m.onsuccess=function(){c(m.result)};m.onerror=e}catch(p){null!=e&&e(p)}}),e)};EditorUi.prototype.commentsSupported=function(){var c=this.getCurrentFile();return null!=c?c.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var c=this.getCurrentFile();return null!=c?c.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var c=this.getCurrentFile();return null!=c?c.commentsSaveNeeded():
!1};EditorUi.prototype.getComments=function(c,e){var g=this.getCurrentFile();null!=g?g.getComments(c,e):c([])};EditorUi.prototype.addComment=function(c,e,g){var k=this.getCurrentFile();null!=k?k.addComment(c,e,g):e(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var c=this.getCurrentFile();return null!=c?c.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var c=this.getCurrentFile();return null!=c?c.canComment():!0};EditorUi.prototype.newComment=function(c,e){var g=this.getCurrentFile();
return null!=g?g.newComment(c,e):new DrawioComment(this,null,c,Date.now(),Date.now(),!1,e)};EditorUi.prototype.isRevisionHistorySupported=function(){var c=this.getCurrentFile();return null!=c&&c.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(c,e){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(c,e):e({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var c=this.getCurrentFile();return null!=c&&(c.constructor==
DriveFile&&c.isEditable()||c.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(c){c.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(c,e,g,k,m,p,v,x){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(c,e,g,k,m,p,v,x)};EditorUi.prototype.loadFonts=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(c)};
EditorUi.prototype.createSvgDataUri=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(c)};EditorUi.prototype.embedCssFonts=function(c,e){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(c,e)};EditorUi.prototype.embedExtFonts=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(c)};EditorUi.prototype.exportToCanvas=function(c,e,g,k,m,p,v,x,z,y,L,N,K,q,E,A){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");
return this.editor.exportToCanvas(c,e,g,k,m,p,v,x,z,y,L,N,K,q,E,A)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(c,e,g,k){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(c,e,g,k)};EditorUi.prototype.convertImageToDataUri=function(c,e){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");
return this.editor.convertImageToDataUri(c,e)};EditorUi.prototype.base64Encode=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(c)};EditorUi.prototype.updateCRC=function(c,e,g,k){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(c,e,g,k)};EditorUi.prototype.crc32=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(c)};EditorUi.prototype.writeGraphModelToPng=function(c,e,g,k,m){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");
return Editor.writeGraphModelToPng(c,e,g,k,m)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var c=[],e=0;e<localStorage.length;e++){var g=localStorage.key(e),k=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<k.length){var m="<mxfile "===k.substring(0,8)||"<?xml"===k.substring(0,5)||"\x3c!--[if IE]>"===k.substring(0,12);k="<mxlibrary>"===k.substring(0,11);(m||
k)&&c.push(g)}}return c};EditorUi.prototype.getLocalStorageFile=function(c){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var e=localStorage.getItem(c);return{title:c,data:e,isLib:"<mxlibrary>"===e.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
d.executeLayoutList(A);d.customLayoutConfig=A}catch(B){d.handleError(B),null!=window.console&&console.error(B)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");d.showDialog(q.container,620,460,!0,!0);q.init()});k=this.get("layout");var x=k.funct;k.funct=function(q,E){x.apply(this,arguments);q.addItem(mxResources.get("orgChart"),null,function(){function A(){"undefined"!==typeof mxOrgChartLayout||d.loadingOrgChart||d.isOffline(!0)?F():d.spinner.spin(document.body,
mxResources.get("loading"))&&(d.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",F)})})}):mxscript("js/extensions.min.js",F))}var B=null,G=20,M=20,H=!0,F=function(){d.loadingOrgChart=!1;d.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=B&&H){var n=d.editor.graph,C=new mxOrgChartLayout(n,B,
G,M),J=n.getDefaultParent();1<n.model.getChildCount(n.getSelectionCell())&&(J=n.getSelectionCell());C.execute(J);H=!1}},I=document.createElement("div"),R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("orgChartType")+": ");I.appendChild(R);var W=document.createElement("select");W.style.width="200px";W.style.boxSizing="border-box";R=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),
mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")];for(var P=0;P<R.length;P++){var V=document.createElement("option");mxUtils.write(V,R[P]);V.value=P;2==P&&V.setAttribute("selected","selected");W.appendChild(V)}mxEvent.addListener(W,"change",function(){B=W.value});I.appendChild(W);R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,
mxResources.get("parentChildSpacing")+": ");I.appendChild(R);var U=document.createElement("input");U.type="number";U.value=G;U.style.width="200px";U.style.boxSizing="border-box";I.appendChild(U);mxEvent.addListener(U,"change",function(){G=U.value});R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("siblingSpacing")+": ");I.appendChild(R);var X=document.createElement("input");X.type="number";X.value=M;X.style.width=
"200px";X.style.boxSizing="border-box";I.appendChild(X);mxEvent.addListener(X,"change",function(){M=X.value});I=new CustomDialog(d,I,function(){null==B&&(B=2);A()});d.showDialog(I.container,355,140,!0,!0)},E,null,t());q.addSeparator(E);q.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var A=new mxParallelEdgeLayout(u);A.checkOverlap=!0;A.spacing=20;d.executeLayout(function(){A.execute(u.getDefaultParent(),u.isSelectionEmpty()?null:u.getSelectionCells())},!1)}),E);q.addSeparator(E);
d.menus.addMenuItem(q,"runLayout",E,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(q,E){if(!mxClient.IS_CHROMEAPP&&d.isOffline())this.addMenuItems(q,["about"],E);else{var A=q.addItem("Search:",null,null,E,null,null,!1);A.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";A.style.cursor="default";var B=document.createElement("input");B.setAttribute("type","text");B.setAttribute("size","25");B.style.marginLeft="8px";mxEvent.addListener(B,
"keydown",mxUtils.bind(this,function(G){var M=mxUtils.trim(B.value);13==G.keyCode&&0<M.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(M)),B.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:M}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==G.keyCode&&(B.value="")}));A.firstChild.nextSibling.appendChild(B);mxEvent.addGestureListeners(B,
function(G){document.activeElement!=B&&B.focus();mxEvent.consume(G)},function(G){mxEvent.consume(G)},function(G){mxEvent.consume(G)});window.setTimeout(function(){B.focus()},0);EditorUi.isElectronApp?(d.actions.addAction("website...",function(){d.openLink("https://www.diagrams.net")}),d.actions.addAction("check4Updates",function(){d.checkForUpdates()}),this.addMenuItems(q,"- keyboardShortcuts quickStart website support -".split(" "),E),"1"!=urlParams.disableUpdate&&this.addMenuItems(q,["check4Updates",
"-"],E),this.addMenuItems(q,["forkme","-","about"],E)):this.addMenuItems(q,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),E)}"1"==urlParams.test&&(q.addSeparator(E),this.addSubmenu("testDevelop",q,E))})));mxResources.parse("diagramLanguage=Diagram Language");d.actions.addAction("diagramLanguage...",function(){var q=prompt("Language Code",Graph.diagramLanguage||"");null!=q&&(Graph.diagramLanguage=0<q.length?q:null,u.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");
X){"1"==urlParams.sketch?(A.insertTemplateEnabled&&!A.isOffline()&&A.menus.addMenuItems(U,["insertTemplate"],X),A.menus.addMenuItems(U,["insertImage","insertLink","-"],X),A.menus.addSubmenu("insertLayout",U,X,mxResources.get("layout")),A.menus.addSubmenu("insertAdvanced",U,X,mxResources.get("advanced"))):(V.apply(this,arguments),A.menus.addSubmenu("table",U,X))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(P,V,U,X){P.addItem(U,
null,mxUtils.bind(this,function(){var n=new CreateGraphDialog(A,U,X);A.showDialog(n.container,620,420,!0,!1);n.init()}),V)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(P,V){for(var U=0;U<R.length;U++)"-"==R[U]?P.addSeparator(V):W(P,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(A){var B=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|callto|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";
window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";
window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
function Dialog(b,e,k,n,D,t,E,d,f,g,l){var q=f?57:0,y=k,F=n,C=f?0:64,H=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(H.height=window.innerHeight);var G=H.height,aa=Math.max(1,Math.round((H.width-k-C)/2)),da=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=da+14+"px",t.style.left=aa+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!l)){var Y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Y=!0}),null,mxUtils.bind(this,function(qa){Y&&(b.hideDialog(!0),Y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
var ErrorDialog=function(b,e,k,n,D,t,E,d,f,g,l){f=null!=f?f:!0;var q=document.createElement("div");q.style.textAlign="center";if(null!=e){var y=document.createElement("div");y.style.padding="0px";y.style.margin="0px";y.style.fontSize="18px";y.style.paddingBottom="16px";y.style.marginBottom="10px";y.style.borderBottom="1px solid #c0c0c0";y.style.color="gray";y.style.whiteSpace="nowrap";y.style.textOverflow="ellipsis";y.style.overflow="hidden";mxUtils.write(y,e);y.setAttribute("title",e);q.appendChild(y)}e=
document.createElement("div");e.style.lineHeight="1.2em";e.style.padding="6px";e.innerHTML=k;q.appendChild(e);k=document.createElement("div");k.style.marginTop="12px";k.style.textAlign="center";null!=t&&(e=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();t()}),e.className="geBtn",k.appendChild(e),k.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=l&&l()}),g.className="geBtn",k.appendChild(g));var F=mxUtils.button(n,function(){f&&b.hideDialog();null!=D&&D()});
PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,H=parseInt(q.value)/100;isNaN(H)&&(H=1,q.value="100%");H*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,aa=1/k.pageScale;if(C){var da=E.checked?1:parseInt(l.value);isNaN(da)||(aa=mxUtils.getScaleForPageCount(da,k,G))}k.getGraphBounds();var ba=da=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*H);G.height=Math.ceil(G.height*H);aa*=H;!C&&k.pageVisible?(H=k.getPageLayout(),da-=H.x*G.width,ba-=H.y*
d.appendChild(f);mxEvent.addListener(f,"click",function(F){g.checked=!g.checked;E.checked=!g.checked;mxEvent.consume(F)});t.appendChild(d);var l=document.createElement("input");l.setAttribute("value","1");l.setAttribute("type","number");l.setAttribute("min","1");l.setAttribute("size","4");l.setAttribute("disabled","disabled");l.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(l);mxUtils.write(d," "+mxResources.get("pages")+" (max)");t.appendChild(d);D.appendChild(t);
mxEvent.addListener(g,"change",function(){g.checked?l.removeAttribute("disabled"):l.setAttribute("disabled","disabled");E.checked=!g.checked});t=t.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");t.appendChild(d);d=document.createElement("td");var q=document.createElement("input");q.setAttribute("value","100 %");q.setAttribute("size","5");q.style.width="50px";d.appendChild(q);t.appendChild(d);D.appendChild(t);t=document.createElement("tr");d=document.createElement("td");
var PageSetupDialog=function(b){function e(){null==l||l==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=l,g.style.backgroundImage="")}function k(){var G=C;null!=G&&Graph.isPageLink(G.src)&&(G=b.createImageForPageLink(G.src,null));null!=G&&null!=G.src?(F.setAttribute("src",G.src),F.style.display=""):(F.removeAttribute("src"),F.style.display="none")}var n=b.editor.graph,D=document.createElement("table");D.style.width=
mxUtils.write(d,mxResources.get("background")+":");E.appendChild(d);d=document.createElement("td");d.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="22px";g.style.height="22px";g.style.cursor="pointer";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(g.style.position="relative",g.style.top="-6px");var l=n.background;e();mxEvent.addListener(g,
"click",function(G){b.pickColor(l||"none",function(aa){l=aa;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
"geBtn";b.editor.cancelFirst&&d.appendChild(y);H=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var G=parseInt(q.value);isNaN(G)||n.gridSize===G||n.setGridSize(G);G=new ChangePageSetup(b,l,C,f.get());G.ignoreColor=n.background==l;G.ignoreImage=(null!=n.backgroundImage?n.backgroundImage.src:null)===(null!=C?C.src:null);n.pageFormat.width==G.previousFormat.width&&n.pageFormat.height==G.previousFormat.height&&G.ignoreColor&&G.ignoreImage||n.model.execute(G)});H.className="geBtn gePrimaryBtn";
X.format.width&&k.height==X.format.height?(d.value=X.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==X.format.height&&k.height==X.format.width&&(d.value=X.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",l.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
"checked"),d.value="custom",f.style.display="none",l.style.display="")}}e="format-"+e;var t=document.createElement("input");t.setAttribute("name",e);t.setAttribute("type","radio");t.setAttribute("value","portrait");var E=document.createElement("input");E.setAttribute("name",e);E.setAttribute("type","radio");E.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";
var f=document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";t.style.marginRight="6px";f.appendChild(t);e=document.createElement("span");e.style.maxWidth="100px";mxUtils.write(e,mxResources.get("portrait"));f.appendChild(e);E.style.marginLeft="10px";E.style.marginRight="6px";f.appendChild(E);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));f.appendChild(g);var l=document.createElement("div");l.style.marginLeft=
"4px";l.style.width="210px";l.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";l.appendChild(q);mxUtils.write(l," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";l.appendChild(y);mxUtils.write(l," in");f.style.display="none";l.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),H=0;H<C.length;H++){var G=C[H];F[G.key]=G;var aa=document.createElement("option");aa.setAttribute("value",
G.key);mxUtils.write(aa,G.title);d.appendChild(aa)}var da=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(l);var ba=k,Y=function(qa,O){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,l.style.display="none",f.style.display=""):(f.style.display="none",l.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
var FilenameDialog=function(b,e,k,n,D,t,E,d,f,g,l,q){f=null!=f?f:!0;var y=document.createElement("table"),F=document.createElement("tbody");y.style.position="absolute";y.style.top="30px";y.style.left="20px";var C=document.createElement("tr");var H=document.createElement("td");H.style.textOverflow="ellipsis";H.style.textAlign="right";H.style.maxWidth="100px";H.style.fontSize="10pt";H.style.width="84px";mxUtils.write(H,(D||mxResources.get("filename"))+":");C.appendChild(H);var G=document.createElement("input");
Y.stopPropagation();Y.preventDefault()}))}}};H=document.createElement("td");H.style.whiteSpace="nowrap";H.appendChild(G);C.appendChild(H);if(null!=D||null==E)F.appendChild(C),null!=l&&(H.appendChild(FilenameDialog.createTypeHint(b,G,l)),null!=b.editor.diagramFileTypes&&(C=document.createElement("tr"),H=document.createElement("td"),H.style.textOverflow="ellipsis",H.style.textAlign="right",H.style.maxWidth="100px",H.style.fontSize="10pt",H.style.width="84px",mxUtils.write(H,mxResources.get("type")+
2;H.style.paddingTop=null!=l?"12px":"20px";H.style.whiteSpace="nowrap";H.setAttribute("align","right");l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});l.className="geBtn";b.editor.cancelFirst&&H.appendChild(l);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",H.appendChild(q));mxEvent.addListener(G,"keypress",function(da){13==da.keyCode&&aa.click()});H.appendChild(aa);b.editor.cancelFirst||H.appendChild(l);
mxGraphView.prototype.validateBackgroundStyles=function(){var E=this.graph,d=null==E.background||E.background==mxConstants.NONE?E.defaultPageBackgroundColor:E.background,f=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",g="none",l="";if(E.isGridEnabled()||E.gridVisible){l=10;mxClient.IS_SVG?(g=unescape(encodeURIComponent(this.createSvgGrid(f))),g=window.btoa?btoa(g):Base64.encode(g,!0),g="url(data:image/svg+xml;base64,"+g+")",l=E.gridSize*this.scale*this.gridSteps):g="url("+this.gridImage+
")";var q=f=0;null!=E.view.backgroundPageShape&&(q=this.getBackgroundPageBounds(),f=1+q.x,q=1+q.y);l=-Math.round(l-mxUtils.mod(this.translate.x*this.scale-f,l))+"px "+-Math.round(l-mxUtils.mod(this.translate.y*this.scale-q,l))+"px"}f=E.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);null!=E.view.backgroundPageShape?(E.view.backgroundPageShape.node.style.backgroundPosition=l,E.view.backgroundPageShape.node.style.backgroundImage=g,E.view.backgroundPageShape.node.style.backgroundColor=d,E.view.backgroundPageShape.node.style.borderColor=
E.defaultPageBorderColor,E.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(E.container.className="geDiagramContainer",f.style.backgroundPosition=l,f.style.backgroundColor=d,f.style.backgroundImage=g)};mxGraphView.prototype.createSvgGrid=function(E){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,g=[],l=1;l<this.gridSteps;l++){var q=l*d;g.push("M 0 "+q+" L "+f+" "+q+" M "+q+" 0 L "+q+
if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps;g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+E,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";f.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.view.scale,l=this.view.translate,q=this.pageFormat,y=g*this.pageScale,F=this.view.getBackgroundPageBounds();
d=F.width;f=F.height;var C=new mxRectangle(g*l.x,g*l.y,q.width*y,q.height*y),H=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,aa=F.x+d,da=F.y+f;null==this.horizontalPageBreaks&&0<H&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(ba){if(null!=ba){for(var Y=ba==this.horizontalPageBreaks?H:G,qa=0;qa<=Y;qa++){var O=ba==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
E(this.horizontalPageBreaks);E(this.verticalPageBreaks)};var e=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(E,d,f){for(var g=0;g<d.length;g++){if(this.graph.isTableCell(d[g])||this.graph.isTableRow(d[g]))return!1;if(this.graph.getModel().isVertex(d[g])){var l=this.graph.getCellGeometry(d[g]);if(null!=l&&l.relative)return!1}}return e.apply(this,arguments)};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=
l=this.graph.pageScale,q=g.width*l;g=g.height*l;l=Math.floor(Math.min(0,d)/q);var y=Math.floor(Math.min(0,f)/g);return new mxRectangle(this.scale*(this.translate.x+l*q),this.scale*(this.translate.y+y*g),this.scale*(Math.ceil(Math.max(1,d+E.width/this.scale)/q)-l)*q,this.scale*(Math.ceil(Math.max(1,f+E.height/this.scale)/g)-y)*g)};var n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){n.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=E+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var D=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(E,d,f,g,l,q){var y=D.apply(this,arguments);null==q||q||mxEvent.addListener(y,"mousedown",function(F){mxEvent.consume(F)});return y};var t=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(E,d,f){var g=this.graph.model.getParent(E);if(d){var l=this.graph.model.isEdge(E)?null:this.graph.getCellGeometry(E);l=!this.graph.model.isEdge(g)&&!this.graph.isSiblingSelected(E)&&(null!=l&&l.relative||!this.graph.isContainer(g)||this.graph.isPart(E))}else if(l=t.apply(this,arguments),this.graph.isTableCell(E)||this.graph.isTableRow(E))l=g,this.graph.isTable(l)||(l=this.graph.model.getParent(l)),l=!this.graph.selectionCellsHandler.isHandled(l)||this.graph.isCellSelected(l)&&this.graph.isToggleEvent(f.getEvent())||
this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return l};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),l=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);l=l||q;if(q||!l&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var I=D.apply(this,arguments),V=this.backgroundImage;if(null!=V&&null!=V.width&&null!=V.height){var Q=this.view.translate,R=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((Q.x+V.x)*R,(Q.y+V.y)*R,V.width*R,V.height*R))}return I};n.useCssTransforms&&(this.lazyZoomDelay=
n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),l=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<l.length;e++)for(k=0;k<l[e].length;k++)t.push(l[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(I,V,Q,R,fa,la,ra){R=null!=R?R:n.currentVertexStyle;fa=null!=fa?fa:n.currentEdgeStyle;la=null!=la?la:!0;Q=null!=Q?Q:n.getModel();if(ra){ra=[];for(var u=0;u<I.length;u++)ra=ra.concat(Q.getDescendants(I[u]));I=ra}Q.beginUpdate();try{for(u=0;u<I.length;u++){var J=I[u];if(V)var N=["fontSize",
"fontFamily","fontColor"];else{var W=Q.getStyle(J),S=null!=W?W.split(";"):[];N=t.slice();for(var P=0;P<S.length;P++){var Z=S[P],oa=Z.indexOf("=");if(0<=oa){var va=Z.substring(0,oa),Aa=mxUtils.indexOf(N,va);0<=Aa&&N.splice(Aa,1);for(ra=0;ra<l.length;ra++){var sa=l[ra];if(0<=mxUtils.indexOf(sa,va))for(var Ba=0;Ba<sa.length;Ba++){var ta=mxUtils.indexOf(N,sa[Ba]);0<=ta&&N.splice(ta,1)}}}}}var Na=Q.isEdge(J);ra=Na?fa:R;var Ca=Q.getStyle(J);for(P=0;P<N.length;P++){va=N[P];var Qa=ra[va];null!=Qa&&"edgeStyle"!=
EditorUi.prototype.updateSelectionStateForTableCells=function(b){if(1<b.cells.length&&b.cell){for(var e=mxUtils.sortCells(b.cells),k=this.editor.graph.model,n=k.getParent(e[0]),D=k.getParent(n),t=n.getIndex(e[0]),E=D.getIndex(n),d=null,f=1,g=1,l=0,q=E<D.getChildCount()-1?k.getChildAt(k.getChildAt(D,E+1),t):null;l<e.length-1;){var y=e[++l];null==q||q!=y||null!=d&&f!=d||(d=f,f=0,g++,n=k.getParent(q),q=E+g<D.getChildCount()?k.getChildAt(k.getChildAt(D,E+g),t):null);var F=this.editor.graph.view.getState(y);
if(y==k.getChildAt(n,t+f)&&null!=F&&1==mxUtils.getValue(F.style,"colspan",1)&&1==mxUtils.getValue(F.style,"rowspan",1))f++;else break}l==g*f-1&&(b.mergeCell=e[0],b.colspan=f,b.rowspan=g)}};
b.popupMenuHandler.isMenuShowing=function(){return n.apply(this,arguments)||null!=e.shapePicker};var D=b.dblClick;b.dblClick=function(f,g){if(this.isEnabled())if(null!=g||null==e.sidebar||mxEvent.isShiftDown(f)||b.isCellLocked(b.getDefaultParent()))D.apply(this,arguments);else{var l=mxUtils.convertPoint(this.container,mxEvent.getClientX(f),mxEvent.getClientY(f));mxEvent.consume(f);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(l.x,l.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
k);var t=this.hoverIcons.drag;this.hoverIcons.drag=function(){e.hideShapePicker();t.apply(this,arguments)};var E=this.hoverIcons.execute;this.hoverIcons.execute=function(f,g,l){var q=l.getEvent();this.graph.isCloneEvent(q)||mxEvent.isShiftDown(q)?E.apply(this,arguments):this.graph.connectVertex(f.cell,g,this.graph.defaultEdgeLength,q,null,null,mxUtils.bind(this,function(y,F,C){var H=b.getCompositeParent(f.cell);y=b.getCellGeometry(H);for(l.consume();null!=H&&b.model.isVertex(H)&&null!=y&&y.relative;)cell=
H,H=b.model.getParent(cell),y=b.getCellGeometry(H);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(l.getGraphX(),l.getGraphY(),H,mxUtils.bind(this,function(G){C(G);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(G))}),g)}),30)}),mxUtils.bind(this,function(y){this.graph.selectCellsForConnectVertex(y,q,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d);d=window.setTimeout(mxUtils.bind(this,function(){var l=
g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");l=l.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+l.x-F.x;F=b.container.scrollTop+l.y-F.y;var H=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,H,mxUtils.bind(this,function(aa){null!=aa&&b.connectVertex(H,q,b.defaultEdgeLength,y,!0,!0,function(da,ba,Y){Y(aa);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(aa))},
function(da){b.selectCellsForConnectVertex(da)},y,this.hoverIcons)}),q,!0);this.centerShapePicker(G,l,C,F,q);mxUtils.setOpacity(G,30);mxEvent.addListener(G,"mouseenter",function(){mxUtils.setOpacity(G,100)});mxEvent.addListener(G,"mouseleave",function(){e.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d)}))}};
EditorUi.prototype.createShapePicker=function(b,e,k,n,D,t,E,d){var f=null;if(null!=E&&0<E.length){var g=this,l=this.editor.graph;f=document.createElement("div");D=l.view.getState(k);var q=null==k||null!=D&&l.isTransparentState(D)?null:l.copyStyle(k);k=6>E.length?35*E.length:140;f.className="geToolbarContainer geSidebarContainer";f.style.cssText="position:absolute;left:"+b+"px;top:"+e+"px;width:"+k+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(f.style,"transform","translate(-22px,-22px)");null!=l.background&&l.background!=mxConstants.NONE&&(f.style.backgroundColor=l.background);l.container.appendChild(f);k=mxUtils.bind(this,function(y){var F=document.createElement("a");F.className="geItem";F.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";f.appendChild(F);null!=q&&"1"!=urlParams.sketch?
this.sidebar.graph.pasteStyle(q,[y]):g.insertHandler([y],""!=y.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([y],25,25,F,null,!0,!1,y.geometry.width,y.geometry.height);mxEvent.addListener(F,"click",function(){var C=l.cloneCell(y);if(null!=n)n(C);else{C.geometry.x=l.snap(Math.round(b/l.view.scale)-l.view.translate.x-y.geometry.width/2);C.geometry.y=l.snap(Math.round(e/l.view.scale)-l.view.translate.y-y.geometry.height/2);l.model.beginUpdate();try{l.addCell(C)}finally{l.model.endUpdate()}l.setSelectionCell(C);
l.scrollCellToVisible(C);l.startEditingAtCell(C);null!=g.hoverIcons&&g.hoverIcons.update(l.view.getState(C))}null!=t&&t()})});for(D=0;D<(d?Math.min(E.length,4):E.length);D++)k(E[D]);E=f.offsetTop+f.clientHeight-(l.container.scrollTop+l.container.offsetHeight);0<E&&(f.style.top=Math.max(l.container.scrollTop+22,e-E)+"px");E=f.offsetLeft+f.clientWidth-(l.container.scrollLeft+l.container.offsetWidth);0<E&&(f.style.left=Math.max(l.container.scrollLeft+22,b-E)+"px")}return f};
EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipboard.cut=function(t){t.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):e.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(t){var E=null;if(t.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{E=E||t.getSelectionCells();E=t.getExportableCells(t.model.getTopmostCells(E));for(var d={},f=t.createCellLookup(E),g=t.cloneCells(E,null,d),l=new mxGraphModel,q=l.getChildAt(l.getRoot(),
0),y=0;y<g.length;y++){l.add(q,g[y]);var F=t.view.getState(E[y]);if(null!=F){var C=t.getCellGeometry(g[y]);null!=C&&C.relative&&!l.isEdge(E[y])&&null==f[mxObjectIdentity.get(l.getParent(E[y]))]&&(C.offset=null,C.relative=!1,C.x=F.x/F.view.scale-F.view.translate.x,C.y=F.y/F.view.scale-F.view.translate.y)}}t.updateCustomLinks(t.createCellMapping(d,f),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return E};var k=mxClipboard.paste;mxClipboard.paste=function(t){var E=
this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(Q){this.actions.get("nextPage").funct();mxEvent.consume(Q)}),Editor.nextImage,mxResources.get("nextPage")),l=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerHTML="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");l()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",l)}t(mxUtils.bind(this,function(Q){this.actions.get("zoomOut").funct();mxEvent.consume(Q)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){this.actions.get("zoomIn").funct();
EditorUi.prototype.addSplitHandler=function(b,e,k,n){function D(q){if(null!=E){var y=new mxPoint(mxEvent.getClientX(q),mxEvent.getClientY(q));n(Math.max(0,d+(e?y.x-E.x:E.y-y.y)-k));mxEvent.consume(q);d!=l()&&(f=!0,g=null)}}function t(q){D(q);E=d=null}var E=null,d=null,f=!0,g=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var l=mxUtils.bind(this,function(){var q=parseInt(e?b.style.left:b.style.bottom);e||(q=q+k-this.footerHeight);return q});mxEvent.addGestureListeners(b,function(q){E=new mxPoint(mxEvent.getClientX(q),
mxEvent.getClientY(q));d=l();f=!1;mxEvent.consume(q)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(q){if(!f&&this.hsplitClickEnabled){var y=null!=g?g-k:0;g=l();n(y);mxEvent.consume(q)}}));mxEvent.addGestureListeners(document,null,D,t);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,D,t)})};
EditorUi.prototype.showError=function(b,e,k,n,D,t,E,d,f,g,l,q,y){b=new ErrorDialog(this,b,e,k||mxResources.get("ok"),n,D,t,E,q,d,f);e=Math.ceil(null!=e?e.length/50:1);this.showDialog(b.container,g||340,l||100+20*e,!0,!1,y);b.init()};EditorUi.prototype.showDialog=function(b,e,k,n,D,t,E,d,f,g){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,e,k,n,D,t,E,d,f,g);this.dialogs.push(this.dialog)};
0<=d&&d<E.length-3&&(E=E.substring(0,d+3))}catch(l){}try{var f=t.getElementsByTagName("span"),g=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(E);this.isCompatibleString(g)&&(E=g)}catch(l){}}catch(l){}b(this.isCompatibleString(E)?E:null)}))["catch"](function(D){b(null)})}))["catch"](function(n){b(null)});else if(null!=k&&0<k.length&&"text"==e&&0<=mxUtils.indexOf(k[0].types,"text/plain"))k[0].getType("text/plain").then(function(n){n.text().then(function(D){b(D)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
mxUtils.bind(this,function(q,y,F,C){var H=this.actions.get(F);null!=H&&(F=function(){H.isEnabled()&&H.funct()},y?C?D.bindControlShiftKey(q,F):D.bindControlKey(q,F):C?D.bindShiftKey(q,F):D.bindKey(q,F))});var g=this,l=D.escape;D.escape=function(q){l.apply(this,arguments)};D.enter=function(){};D.bindControlShiftKey(36,function(){n.exitGroup()});D.bindControlShiftKey(35,function(){n.enterGroup()});D.bindShiftKey(36,function(){n.home()});D.bindKey(35,function(){n.refresh()});D.bindAction(107,!0,"zoomIn");
arguments[2])}var d=Number(D.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),k);for(var f=e(this)?Object(new this(d)):Array(d),g=0,l;g<d;)l=D[g],f[g]=t?"undefined"===typeof E?t(l,g):t.call(E,l,g):l,g+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,V){if("mouseDown"==V.getProperty("eventName")&&this.isEnabled()){I=V.getProperty("event");var Q=I.getState();V=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=Q)if(this.model.isEdge(Q.cell))if(E=new mxPoint(I.getGraphX(),I.getGraphY()),l=this.isCellSelected(Q.cell),f=Q,d=I,null!=Q.text&&null!=
V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var fa=this.selectionCellsHandler.getHandler(Q.cell);null==fa&&this.model.isEdge(Q.cell)&&(fa=this.createHandler(Q));if(null!=fa&&null!=fa.bends&&0<fa.bends.length){I=fa.getHandleForEvent(d);var la=this.view.getEdgeStyle(Q);R=la==mxEdgeStyle.EntityRelation;l||g!=mxEvent.LABEL_HANDLE||(I=g);if(R&&0!=I&&I!=fa.bends.length-1&&I!=mxEvent.LABEL_HANDLE)!R||null==Q.visibleSourceState&&null==Q.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(I==
l=!1;E=d=f=g=null}}else if(Q=V.getState(),null!=Q&&this.isCellEditable(Q.cell)){fa=null;if(this.model.isEdge(Q.cell)){if(I=new mxRectangle(V.getGraphX(),V.getGraphY()),I.grow(mxEdgeHandler.prototype.handleImage.width/2),R=Q.absolutePoints,null!=R)if(null!=Q.text&&null!=Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,V.getGraphX(),V.getGraphY()))fa="move";else if(mxUtils.contains(I,R[0].x,R[0].y)||mxUtils.contains(I,R[R.length-1].x,R[R.length-1].y))fa="pointer";else if(null!=Q.visibleSourceState||
Graph.sanitizeHtml=function(b,e){return Graph.domPurify(b,!1)};Graph.sanitizeLink=function(b){var e=document.createElement("a");e.setAttribute("href",b);Graph.sanitizeNode(e);return e.getAttribute("href")};Graph.sanitizeNode=function(b){return Graph.domPurify(b,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(b){b.hasAttribute("xlink:href")&&!b.getAttribute("xlink:href").match(/^#/)&&b.remove()});
Graph.clipSvgDataUri=function(b,e){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var k=document.createElement("div");k.style.position="absolute";k.style.visibility="hidden";var n=decodeURIComponent(escape(atob(b.substring(26)))),D=n.indexOf("<svg");if(0<=D){k.innerHTML=n.substring(D);Graph.sanitizeNode(k);var t=k.getElementsByTagName("svg");if(0<t.length){if(e||null!=t[0].getAttribute("preserveAspectRatio")){document.body.appendChild(k);try{n=
e=1;var E=t[0].getAttribute("width"),d=t[0].getAttribute("height");E=null!=E&&"%"!=E.charAt(E.length-1)?parseFloat(E):NaN;d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN;var f=t[0].getAttribute("viewBox");if(null!=f&&!isNaN(E)&&!isNaN(d)){var g=f.split(" ");4<=f.length&&(e=parseFloat(g[2])/E,n=parseFloat(g[3])/d)}var l=t[0].getBBox();0<l.width&&0<l.height&&(k.getElementsByTagName("svg")[0].setAttribute("viewBox",l.x+" "+l.y+" "+l.width+" "+l.height),k.getElementsByTagName("svg")[0].setAttribute("width",
l.width/e),k.getElementsByTagName("svg")[0].setAttribute("height",l.height/n))}catch(q){}finally{document.body.removeChild(k)}}b=Editor.createSvgDataUri(mxUtils.getXml(t[0]))}}}catch(q){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(k,n){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var D=k.view.graph.tolerance,t=!0,E=null,d=mxUtils.bind(this,function(l){t=!0;E=new mxPoint(mxEvent.getClientX(l),mxEvent.getClientY(l))}),f=mxUtils.bind(this,function(l){t=t&&null!=E&&Math.abs(E.x-mxEvent.getClientX(l))<D&&Math.abs(E.y-mxEvent.getClientY(l))<D}),g=mxUtils.bind(this,function(l){if(t)for(var q=mxEvent.getSource(l);null!=
q&&q!=n.node;){if("a"==q.nodeName.toLowerCase()){k.view.graph.labelLinkClicked(k,q,l);break}q=q.parentNode}});mxEvent.addGestureListeners(n.node,d,f,g);mxEvent.addListener(n.node,"click",function(l){mxEvent.consume(l)})};if(null!=this.tooltipHandler){var e=this.tooltipHandler.init;this.tooltipHandler.init=function(){e.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(k){var n=mxEvent.getSource(k);"A"==n.nodeName&&(n=n.getAttribute("href"),null!=
d,0==f)}return d};Graph.prototype.mergeStyle=function(E,d,f){if(null!=E){var g={},l;for(l in E){var q=E[l];null!=q&&(g[l]=!0,null==d[l]&&f?d[l]=q:d[l]!=q&&delete d[l])}for(l in d)g[l]||delete d[l]}};Graph.prototype.getStartEditingCell=function(E,d){d=this.getCellStyle(E);d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(E)&&(!this.isSwimlane(E)||0==d)&&""==this.getLabel(E)&&0<this.model.getChildCount(E)&&(E=this.model.getChildAt(E,0),d=this.getCellStyle(E),d=parseInt(mxUtils.getValue(d,
function(E,d){this.model.beginUpdate();try{for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var g=this.getCellStyle(d[f],!1),l;for(l in E){var q=E[l];g[l]!=q&&this.setCellStyles(l,q,[d[f]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==
mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(E,d,f,g,l,q){this.useCssTransforms&&(E=E/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(E,d,f,g,l,q){g=null!=g?g:!0;l=null!=l?l:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var y=this.model.getChildCount(f)-1;0<=
y;y--){var F=this.model.getChildAt(f,y),C=this.getScaledCellAt(E,d,F,g,l,q);if(null!=C)return C;if(this.isCellVisible(F)&&(l&&this.model.isEdge(F)||g&&this.model.isVertex(F))&&(C=this.view.getState(F),null!=C&&(null==q||!q(C,E,d))&&this.intersects(C,E,d)))return F}return null};Graph.prototype.isRecursiveVertexResize=function(E){return!this.isSwimlane(E.cell)&&0<this.model.getChildCount(E.cell)&&!this.isCellCollapsed(E.cell)&&"1"==mxUtils.getValue(E.style,"recursiveResize","1")&&null==mxUtils.getValue(E.style,
"childLayout",null)};Graph.prototype.getAbsoluteParent=function(E){for(var d=this.getCellGeometry(E);null!=d&&d.relative;)E=this.getModel().getParent(E),d=this.getCellGeometry(E);return E};Graph.prototype.isPart=function(E){return"1"==mxUtils.getValue(this.getCurrentCellStyle(E),"part","0")||this.isTableCell(E)||this.isTableRow(E)};Graph.prototype.getCompositeParents=function(E){for(var d=new mxDictionary,f=[],g=0;g<E.length;g++){var l=this.getCompositeParent(E[g]);this.isTableCell(l)&&(l=this.graph.model.getParent(l));
this.isTableRow(l)&&(l=this.graph.model.getParent(l));null==l||d.get(l)||(d.put(l,!0),f.push(l))}return f};Graph.prototype.getCompositeParent=function(E){for(;this.isPart(E);){var d=this.model.getParent(E);if(!this.model.isVertex(d))break;E=d}return E};Graph.prototype.filterSelectionCells=function(E){var d=this.getSelectionCells();if(null!=E){for(var f=[],g=0;g<d.length;g++)E(d[g])||f.push(d[g]);d=f}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(E){if(this.useCssTransforms){var d=
mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.useCssTransforms,l=this.view.scale,q=this.view.translate;g&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);t.apply(this,arguments);g&&(this.view.scale=l,this.view.translate=q,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),e;if("circleLayout"==b.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==b.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==b.childLayout)return new TableLayout(this.graph)}return null}};
Graph.prototype.createEdgeWipeAnimation=function(b,e){var k=b.absolutePoints.slice(),n=b.segments,D=b.length,t=k.length;return{execute:mxUtils.bind(this,function(E,d){if(null!=b.shape){var f=[k[0]];d=E/d;e||(d=1-d);for(var g=D*d,l=1;l<t;l++)if(g<=n[l-1]){f.push(new mxPoint(k[l-1].x+(k[l].x-k[l-1].x)*g/n[l-1],k[l-1].y+(k[l].y-k[l-1].y)*g/n[l-1]));break}else g-=n[l-1],f.push(k[l]);b.shape.points=f;b.shape.redraw();0==E&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
/\d/.test(b)||(e=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");e=String(n.masks[e]||e||n.masks["default"]);"UTC:"==e.slice(0,4)&&(e=e.slice(4),k=!0);var d=k?"getUTC":"get",f=b[d+"Date"](),g=b[d+"Day"](),l=b[d+"Month"](),q=b[d+"FullYear"](),y=b[d+"Hours"](),F=b[d+"Minutes"](),C=b[d+"Seconds"]();d=b[d+"Milliseconds"]();var H=k?0:b.getTimezoneOffset(),G={d:f,dd:E(f),ddd:n.i18n.dayNames[g],dddd:n.i18n.dayNames[g+7],m:l+1,mm:E(l+1),mmm:n.i18n.monthNames[l],mmmm:n.i18n.monthNames[l+
Graph.prototype.createLayersDialog=function(b,e){var k=document.createElement("div");k.style.position="absolute";for(var n=this.getModel(),D=n.getChildCount(n.root),t=0;t<D;t++)mxUtils.bind(this,function(E){function d(){n.isVisible(E)?(l.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(l.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var f=this.convertValueToString(E)||mxResources.get("background")||"Background",g=document.createElement("div");g.style.overflow=
"hidden";g.style.textOverflow="ellipsis";g.style.padding="2px";g.style.whiteSpace="nowrap";g.style.cursor="pointer";g.setAttribute("title",mxResources.get(n.isVisible(E)?"hideIt":"show",[f]));var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","absmiddle");l.setAttribute("border","0");l.style.position="relative";l.style.width="16px";l.style.padding="0px 6px 0 4px";e&&(l.style.filter="invert(100%)",l.style.top="-2px");g.appendChild(l);mxUtils.write(g,f);k.appendChild(g);
Graph.prototype.connectVertex=function(b,e,k,n,D,t,E,d){t=t?t:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),g=f?b:this.getCompositeParent(b),l=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);e==mxConstants.DIRECTION_NORTH?(l.x+=g.geometry.width/2,l.y-=k):e==
mxConstants.DIRECTION_SOUTH?(l.x+=g.geometry.width/2,l.y+=g.geometry.height+k):(l.x=e==mxConstants.DIRECTION_WEST?l.x-k:l.x+(g.geometry.width+k),l.y+=g.geometry.height/2);var q=this.view.getState(this.model.getParent(b));k=this.view.scale;var y=this.view.translate;g=y.x*k;y=y.y*k;null!=q&&this.model.isVertex(q.cell)&&(g=q.x,y=q.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(l.x+=b.parent.geometry.x,l.y+=b.parent.geometry.y);t=t?null:(new mxRectangle(g+l.x*k,y+l.y*k)).grow(40*k);t=null!=t?
!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;aa&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?l.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?l.y+=b.geometry.height/2:l.x=e==mxConstants.DIRECTION_WEST?l.x-b.geometry.width/2:l.x+b.geometry.width/2);var da=[],ba=C;C=F;D=mxUtils.bind(this,function(Y){if(null==E||null!=Y||null==C&&f){this.model.beginUpdate();try{if(null==ba&&aa){var qa=this.getAbsoluteParent(null!=Y?Y:b);qa=f?b:this.getCompositeParent(qa);ba=null!=Y?Y:this.duplicateCells([qa],
!1)[0];null!=Y&&this.addCells([ba],this.model.getParent(b),null,null,null,!0);var O=this.getCellGeometry(ba);null!=O&&(null!=Y&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?l.y-=O.height/2:e==mxConstants.DIRECTION_SOUTH?l.y+=O.height/2:l.x=e==mxConstants.DIRECTION_WEST?l.x-O.width/2:l.x+O.width/2),O.x=l.x-O.width/2,O.y=l.y-O.height/2);null!=F?(this.addCells([ba],F,null,null,null,!0),C=null):aa&&!f&&this.addCells([ba],this.getDefaultParent(),null,null,null,!0)}var X=mxEvent.isControlDown(n)&&
ba,ea));null!=X&&da.push(X);null==C&&null!=ba&&da.push(ba);null==ba&&null!=X&&X.geometry.setTerminalPoint(l,!1);null!=X&&this.fireEvent(new mxEventObject("cellsInserted","cells",[X]))}finally{this.model.endUpdate()}}if(null!=d)d(da);else return da});if(null==E||null!=ba||!aa||null==C&&f)return D(ba);E(g+l.x*k,y+l.y*k,D)};
Graph.prototype.foldCells=function(b,e,k,n,D){e=null!=e?e:!1;null==k&&(k=this.getFoldableCells(this.getSelectionCells(),b));if(null!=k){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var t=0;t<k.length;t++){var E=this.view.getState(k[t]),d=this.getCellGeometry(k[t]);if(null!=E&&null!=d){var f=Math.round(d.width-E.width/this.view.scale),g=Math.round(d.height-E.height/this.view.scale);if(0!=g||0!=f){var l=this.model.getParent(k[t]),q=this.layoutManager.getLayout(l);
null==q?null!=D&&this.isMoveCellsEvent(D,E)&&this.moveSiblings(E,l,f,g):null!=D&&mxEvent.isAltDown(D)||q.constructor!=mxStackLayout||q.resizeLast||this.resizeParentStacks(l,q,f,g)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(k)}};
(k=e.rotationShape.boundingBox));e=mxUtils.bind(this,function(d,f,g){if(null!=k){var l=new mxRectangle(f,g,d.clientWidth,d.clientHeight);mxUtils.intersects(l,k)&&(d==this.arrowUp?g-=l.y+l.height-k.y:d==this.arrowRight?f+=k.x+k.width-l.x:d==this.arrowDown?g+=k.y+k.height-l.y:d==this.arrowLeft&&(f-=l.x+l.width-k.x))}d.style.left=f+"px";d.style.top=g+"px";mxUtils.setOpacity(d,this.inactiveOpacity)});e(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
Graph.prototype.visitTableCells=function(b,e){var k=null,n=this.model.getChildCells(b,!0);b=this.getActualStartSize(b,!0);for(var D=0;D<n.length;D++){for(var t=this.getActualStartSize(n[D],!0),E=this.model.getChildCells(n[D],!0),d=this.getCellStyle(n[D],!0),f=null,g=[],l=0;l<E.length;l++){var q=this.getCellGeometry(E[l]),y={cell:E[l],rospan:1,colspan:1,row:D,col:l,geo:q};q=null!=q.alternateBounds?q.alternateBounds:q;y.point=new mxPoint(q.width+(null!=f?f.point.x:b.x+t.x),q.height+(null!=k&&null!=
k[0]?k[0].point.y:b.y+t.y));y.actual=y;null!=k&&null!=k[l]&&1<k[l].rowspan?(y.rowspan=k[l].rowspan-1,y.colspan=k[l].colspan,y.actual=k[l].actual):null!=f&&1<f.colspan?(y.rowspan=f.rowspan,y.colspan=f.colspan-1,y.actual=f.actual):(f=this.getCurrentCellStyle(E[l],!0),null!=f&&(y.rowspan=parseInt(f.rowspan||1),y.colspan=parseInt(f.colspan||1)));f=1==mxUtils.getValue(d,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(d,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;e(y,E.length,
Graph.prototype.setTableRowHeight=function(b,e,k){k=null!=k?k:!0;var n=this.getModel();n.beginUpdate();try{var D=this.getCellGeometry(b);if(null!=D){D=D.clone();D.height+=e;n.setGeometry(b,D);var t=n.getParent(b),E=n.getChildCells(t,!0);if(!k){var d=mxUtils.indexOf(E,b);if(d<E.length-1){var f=E[d+1],g=this.getCellGeometry(f);null!=g&&(g=g.clone(),g.y+=e,g.height-=e,n.setGeometry(f,g))}}var l=this.getCellGeometry(t);null!=l&&(k||(k=b==E[E.length-1]),k&&(l=l.clone(),l.height+=e,n.setGeometry(t,l)))}}finally{n.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(b,e,k){k=null!=k?k:!1;var n=this.getModel(),D=n.getParent(b),t=n.getParent(D),E=n.getChildCells(D,!0);b=mxUtils.indexOf(E,b);var d=b==E.length-1;n.beginUpdate();try{for(var f=n.getChildCells(t,!0),g=0;g<f.length;g++){D=f[g];E=n.getChildCells(D,!0);var l=E[b],q=this.getCellGeometry(l);null!=q&&(q=q.clone(),q.width+=e,null!=q.alternateBounds&&(q.alternateBounds.width+=e),n.setGeometry(l,q));b<E.length-1&&(l=E[b+1],q=this.getCellGeometry(l),null!=q&&(q=q.clone(),
q.x+=e,k||(q.width-=e,null!=q.alternateBounds&&(q.alternateBounds.width-=e)),n.setGeometry(l,q)))}if(d||k){var y=this.getCellGeometry(t);null!=y&&(y=y.clone(),y.width+=e,n.setGeometry(t,y))}null!=this.layoutManager&&this.layoutManager.executeLayout(t)}finally{n.endUpdate()}};function TableLayout(b){mxGraphLayout.call(this,b)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.execute=function(b){if(null!=b){var e=this.graph.getActualStartSize(b,!0),k=this.graph.getCellGeometry(b),n=this.graph.getCellStyle(b),D="1"==mxUtils.getValue(n,"resizeLastRow","0"),t="1"==mxUtils.getValue(n,"resizeLast","0");n="1"==mxUtils.getValue(n,"fixedRows","0");var E=this.graph.getModel(),d=0;E.beginUpdate();try{for(var f=k.height-e.y-e.height,g=k.width-e.x-e.width,l=E.getChildCells(b,!0),q=0;q<l.length;q++)E.setVisible(l[q],!0);var y=this.getSize(l,!1);if(0<f&&0<g&&0<
l.length&&0<y){if(D){var F=this.graph.getCellGeometry(l[l.length-1]);null!=F&&(F=F.clone(),F.height=f-y+F.height,E.setGeometry(l[l.length-1],F))}var C=t?null:this.getRowLayout(l[0],g),H=[],G=e.y;for(q=0;q<l.length;q++)F=this.graph.getCellGeometry(l[q]),null!=F&&(F=F.clone(),F.x=e.x,F.width=g,F.y=Math.round(G),G=D||n?G+F.height:G+F.height/y*f,F.height=Math.round(G)-F.y,E.setGeometry(l[q],F)),d=Math.max(d,this.layoutRow(l[q],C,F.height,g,H));n&&f<y&&(k=k.clone(),k.height=G+e.height,E.setGeometry(b,
0;q<l.length;q++)E.setVisible(l[q],!1)}finally{E.endUpdate()}}};
(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var e=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(l,q){q=null!=q?q:!0;var y=this.getState(l);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&!y.invalid&&this.updateLineJumps(y)&&this.graph.cellRenderer.redraw(y,!1,this.isRendering());y=e.apply(this,
arguments);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(y);return y};var k=mxShape.prototype.paint;mxShape.prototype.paint=function(){k.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var l=this.node.getElementsByTagName("path");if(1<l.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&l[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var q=this.state.view.graph.getFlowAnimationStyle();null!=q&&l[1].setAttribute("class",q.getAttribute("id"))}}};var n=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(l,q){return n.apply(this,arguments)||null!=l.routedPoints&&null!=q.routedPoints&&!mxUtils.equalPoints(q.routedPoints,l.routedPoints)};var D=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(l){D.apply(this,arguments);this.graph.model.isEdge(l.cell)&&1!=l.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(l)};mxGraphView.prototype.updateLineJumps=function(l){var q=l.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=l.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(l.style,"jumpStyle","none")){var C=function(ja,U,I){var V=new mxPoint(U,I);V.type=ja;F.push(V);V=null!=l.routedPoints?l.routedPoints[F.length-1]:null;return null==V||V.type!=
ja||V.x!=U||V.y!=I},H=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var aa=q[G+1],da=q[G],ba=[],Y=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(da.x,da.y,Y.x,Y.y,aa.x,aa.y)<1*this.scale*this.scale;)aa=Y,G++,Y=q[G+2];y=C(0,da.x,da.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var O=this.validEdges[qa],X=O.absolutePoints;if(null!=X&&mxUtils.intersects(l,O)&&"1"!=O.style.noJump)for(O=0;O<X.length-1;O++){var ea=X[O+1],ka=X[O];for(Y=X[O+2];O<X.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Y.x,Y.y,
Y.x&&ba[ba.length-1].y===Y.y||ba.push(Y)}}}for(O=0;O<ba.length;O++)y=C(1,ba[O].x,ba[O].y)||y}Y=q[q.length-1];y=C(0,Y.x,Y.y)||y}l.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(l,q,y){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,H=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,aa=null,da=null,ba=[],Y=null;l.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var O=this.state.routedPoints[qa],X=new mxPoint(O.x/this.scale,O.y/this.scale);0==qa?X=q[0]:qa==this.state.routedPoints.length-1&&(X=q[q.length-1]);var ea=!1;if(null!=aa&&1==O.type){var ka=this.state.routedPoints[qa+1];O=ka.x/this.scale-
X.x;ka=ka.y/this.scale-X.y;O=O*O+ka*ka;null==Y&&(Y=new mxPoint(X.x-aa.x,X.y-aa.y),da=Math.sqrt(Y.x*Y.x+Y.y*Y.y),0<da?(Y.x=Y.x*C/da,Y.y=Y.y*C/da):Y=null);O>C*C&&0<da&&(O=aa.x-X.x,ka=aa.y-X.y,O=O*O+ka*ka,O>C*C&&(ea=new mxPoint(X.x-Y.x,X.y-Y.y),O=new mxPoint(X.x+Y.x,X.y+Y.y),ba.push(ea),this.addPoints(l,ba,y,F,!1,null,G),ba=0>Math.round(Y.x)||0==Math.round(Y.x)&&0>=Math.round(Y.y)?1:-1,G=!1,"sharp"==H?(l.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),l.lineTo(O.x-Y.y*ba,O.y+Y.x*ba),l.lineTo(O.x,O.y)):"line"==H?(l.moveTo(ea.x+
Y.y*ba,ea.y-Y.x*ba),l.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),l.moveTo(O.x-Y.y*ba,O.y+Y.x*ba),l.lineTo(O.x+Y.y*ba,O.y-Y.x*ba),l.moveTo(O.x,O.y)):"arc"==H?(ba*=1.3,l.curveTo(ea.x-Y.y*ba,ea.y+Y.x*ba,O.x-Y.y*ba,O.y+Y.x*ba,O.x,O.y)):(l.moveTo(O.x,O.y),G=!0),ba=[O],ea=!0))}else Y=null;ea||(ba.push(X),aa=X)}this.addPoints(l,ba,y,F,!1,null,G);l.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(l,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(l,q,y,F){if(null==q||null==l||"1"!=q.style.snapToPoint&&"1"!=l.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(l,q,F);var C=this.getNextPoint(l,y,F),H=this.graph.isOrthogonal(l),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),aa=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
G){var da=Math.cos(-G),ba=Math.sin(-G);C=mxUtils.getRotatedPoint(C,da,ba,aa)}da=parseFloat(l.style[mxConstants.STYLE_PERIMETER_SPACING]||0);da+=parseFloat(l.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&H,da);0!=G&&(da=Math.cos(G),ba=Math.sin(G),C=mxUtils.getRotatedPoint(C,da,ba,aa));l.setAbsoluteTerminalPoint(this.snapToAnchorPoint(l,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(l,q,y,F,C){if(null!=
q&&null!=l){l=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=l)for(var H=0;H<l.length;H++){var G=this.graph.getConnectionPoint(q,l[H]);if(null!=G){var aa=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||aa<F)y=G,F=aa}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(l,q,y){var F=f.apply(this,arguments);"1"==l.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,
F));return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(l){if(null!=l.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(l.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],T)}finally{this.model.endUpdate()}L=!0}return L};var l=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,T,ca,ia,ma){if(this.swapShapes(z,L,M,T,ca,ia,ma))return z;ma=null!=ma?ma:{};if(this.isTable(ca)){for(var pa=[],ua=0;ua<z.length;ua++)this.isTable(z[ua])?pa=pa.concat(this.model.getChildCells(z[ua],!0).reverse()):pa.push(z[ua]);z=pa}this.model.beginUpdate();try{pa=[];for(ua=0;ua<z.length;ua++)if(null!=ca&&this.isTableRow(z[ua])){var ya=
!0),Sa=this.model.getChildCells(Oa[0],!0),za=Sa.length-Pa.length;if(0<za)for(var wa=0;wa<za;wa++){var Da=this.cloneCell(Pa[Pa.length-1]);null!=Da&&(Da.value="",this.model.add(z[ua],Da))}else if(0>za)for(wa=0;wa>za;wa--)this.model.remove(Pa[Pa.length+wa-1]);Pa=this.model.getChildCells(z[ua],!0);for(wa=0;wa<Sa.length;wa++){var Ea=this.getCellGeometry(Sa[wa]),La=this.getCellGeometry(Pa[wa]);null!=Ea&&null!=La&&(La=La.clone(),La.width=Ea.width,this.model.setGeometry(Pa[wa],La))}}}}var Ta=l.apply(this,
null!=this.linkHint&&(this.linkHint.style.visibility="")};var $a=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){$a.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(c,m,x){mxShape.call(this);this.line=c;this.stroke=m;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function l(){mxShape.call(this)}function q(){mxShape.call(this)}
function y(c,m,x,p){mxShape.call(this);this.bounds=c;this.fill=m;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function H(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function da(){mxActor.call(this)}function ba(){mxActor.call(this)}function Y(){mxActor.call(this)}function qa(){mxActor.call(this)}function O(){mxActor.call(this)}function X(c,m){this.canvas=c;this.canvas.setLineJoin("round");
this.canvas.setLineCap("round");this.defaultVariation=m;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
function pa(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ya(){mxRhombus.call(this)}function Fa(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Sa(){mxActor.call(this)}function za(){mxActor.call(this)}function wa(){mxActor.call(this)}function Da(c,m,x,p){mxShape.call(this);this.bounds=c;this.fill=m;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
!0;this.indent=2;this.rectOutline="single"}function Ea(){mxConnector.call(this)}function La(c,m,x,p,v,A,B,ha,K,xa){B+=K;var na=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(na.x-v-B,na.y-A-B,2*B,2*B);xa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var m=0;m<this.line.length;m++){var x=this.line[m];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,m,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,m,x,p){if(null!=m){var v=null;c.begin();for(var A=0;A<m.length;A++){var B=m[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var m=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
p=0;p<this.line.length&&!m;p++){var v=this.line[p];null!=v&&null!=x&&(m=mxUtils.rectangleIntersectsSegment(c,x,v));x=v}return m};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,m,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):
!1,B=this.isHorizontal(),ha=this.getTitleSize();0==ha||this.outline?Oa.prototype.paintVertexShape.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-m,-x));A||this.outline||!(B&&ha<v||!B&&ha<p)||this.paintForeground(c,m,x,p,v)};e.prototype.paintForeground=function(c,m,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ha=A;A=B;B=ha}c.rotate(-this.getShapeRotation(),
A,B,m+p/2,x+v/2);s=this.scale;m=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/s;this.paintTableForeground(c,m,x,p,v)}};e.prototype.paintTableForeground=function(c,m,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],m,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?
c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,
parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ha=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));c.translate(m,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),
n);var Ta=Math.tan(mxUtils.toRadians(30)),Wa=(.5-Ta)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,m,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(m+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(m,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=
20;t.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(p,v/Ta);c.translate((p-m)/2,(v-m)/2+m/4);c.moveTo(0,.25*m);c.lineTo(.5*m,m*Wa);c.lineTo(m,.25*m);c.lineTo(.5*m,(.5-Wa)*m);c.lineTo(0,.25*m);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,m,x,p,v,A){m=Math.min(p,v/(.5+Ta));A?(c.moveTo(0,.25*m),c.lineTo(.5*m,(.5-Wa)*m),c.lineTo(m,.25*m),c.moveTo(.5*m,(.5-Wa)*m),c.lineTo(.5*m,(1-Wa)*m)):(c.translate((p-
m)/2,(v-m)/2),c.moveTo(0,.25*m),c.lineTo(.5*m,m*Wa),c.lineTo(m,.25*m),c.lineTo(m,.75*m),c.lineTo(.5*m,(1-Wa)*m),c.lineTo(0,.75*m),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,m,x,p,v,A){m=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,m),c.curveTo(0,2*m,p,2*m,p,m),A||(c.stroke(),c.begin()),c.translate(0,m/2),c.moveTo(0,m),c.curveTo(0,2*m,p,2*m,p,m),A||(c.stroke(),
c.begin()),c.translate(0,m/2),c.moveTo(0,m),c.curveTo(0,2*m,p,2*m,p,m),A||(c.stroke(),c.begin()),c.translate(0,-m);A||(c.moveTo(0,m),c.curveTo(0,-m/3,p,-m/3,p,m),c.lineTo(p,v-m),c.curveTo(p,v+m/3,0,v+m/3,0,v-m),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=
function(c,m,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(m,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-
A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,m*this.scale),0,0)}return null};mxUtils.extend(l,mxShape);l.prototype.isoAngle=15;l.prototype.paintVertexShape=
function(c,m,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(m,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",l);mxUtils.extend(q,mxShape);
q.prototype.size=15;q.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(m,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};
mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=15;y.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(m,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),
c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,m,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=
60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;C.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,x);m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ha=mxUtils.getValue(this.style,"absoluteArcSize",!1),K=parseFloat(mxUtils.getValue(this.style,
"arcSize",this.arcSize));ha||(K*=Math.min(p,v));K=Math.min(K,.5*p,.5*(v-x));m=Math.max(m,K);m=Math.min(p-K,m);B||(K=0);c.begin();"left"==A?(c.moveTo(Math.max(K,0),x),c.lineTo(Math.max(K,0),0),c.lineTo(m,0),c.lineTo(m,x)):(c.moveTo(p-m,x),c.lineTo(p-m,0),c.lineTo(p-Math.max(K,0),0),c.lineTo(p-Math.max(K,0),x));B?(c.moveTo(0,K+x),c.arcTo(K,K,0,0,1,K,x),c.lineTo(p-K,x),c.arcTo(K,K,0,0,1,p,K+x),c.lineTo(p,v-K),c.arcTo(K,K,0,0,1,p-K,v),c.lineTo(K,v),c.arcTo(K,K,0,0,1,0,v-K)):(c.moveTo(0,x),c.lineTo(p,
x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,
"tabWidth",15)*this.scale;m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-m));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-m)):new mxRectangle(Math.min(c.width,
c.width-x),0,A,Math.min(c.height,c.height-m))}return new mxRectangle(0,Math.min(c.height,m),0,0)}return null};mxUtils.extend(H,mxCylinder);H.prototype.arcSize=.1;H.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);m=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(m*=Math.min(p,v));m=Math.min(m,.5*p,.5*v);A||(m=
0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,m);c.arcTo(m,m,0,0,1,A+m,0);c.lineTo(p-m,0);c.arcTo(m,m,0,0,1,p,m);c.lineTo(p,v-m);c.arcTo(m,m,0,0,1,p-m,v);c.lineTo(A+m,v);c.arcTo(m,m,0,0,1,A,v-m);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,
function(){return!0};G.prototype.redrawPath=function(c,m,x,p,v){m=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(m,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,m)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(aa,mxActor);aa.prototype.size=.4;aa.prototype.redrawPath=function(c,m,
x,p,v){m=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,m/2);c.quadTo(p/4,1.4*m,p/2,m/2);c.quadTo(3*p/4,m*(1-1.4),p,m/2);c.lineTo(p,v-m/2);c.quadTo(3*p/4,v-1.4*m,p/2,v-m/2);c.quadTo(p/4,v-m*(1-1.4),0,v-m/2);c.lineTo(0,m/2);c.close();c.end()};aa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
this.direction==mxConstants.DIRECTION_WEST)return m*=p,new mxRectangle(c.x,c.y+m,x,p-2*m);m*=x;return new mxRectangle(c.x+m,c.y,x-2*m,p)}return c};mxCellRenderer.registerShape("tape",aa);mxUtils.extend(da,mxActor);da.prototype.size=.3;da.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};da.prototype.redrawPath=function(c,m,x,p,v){m=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c.moveTo(0,0);c.lineTo(p,0);c.lineTo(p,v-m/2);c.quadTo(3*p/4,v-1.4*m,p/2,v-m/2);c.quadTo(p/4,v-m*(1-1.4),0,v-m/2);c.lineTo(0,m/2);c.close();c.end()};mxCellRenderer.registerShape("document",da);var fb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,m,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):fb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var m=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*m),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(m/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*m*this.scale),0,Math.max(0,.3*m*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-m));p||(A=0);return"left"==
mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-m)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-m))}return new mxRectangle(0,Math.min(c.height,m),0,0)}return null};H.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=
function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,m*this.scale),0,Math.max(0,m*this.scale))}return null};mxUtils.extend(ba,mxActor);ba.prototype.size=.2;ba.prototype.fixedSize=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,m,x,p,v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(m,0),new mxPoint(p,0),new mxPoint(p-m,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",ba);mxUtils.extend(Y,mxActor);Y.prototype.size=.2;Y.prototype.fixedSize=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(c,m,x,p,v){m="0"!=
mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(m,0),new mxPoint(p-m,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Y);mxUtils.extend(qa,mxActor);qa.prototype.size=
.5;qa.prototype.redrawPath=function(c,m,x,p,v){c.setFillColor(null);m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(m,0),new mxPoint(m,v/2),new mxPoint(0,v/2),new mxPoint(m,v/2),new mxPoint(m,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(O,mxActor);O.prototype.redrawPath=
function(c,m,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);m=p/5;c.rect(0,0,m,v);c.fillAndStroke();c.rect(2*m,0,m,v);c.fillAndStroke();c.rect(4*m,0,m,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",O);X.prototype.moveTo=function(c,m){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=m;this.firstX=c;this.firstY=m};X.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
arguments));this.originalClose.apply(this.canvas,arguments)};X.prototype.quadTo=function(c,m,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};X.prototype.curveTo=function(c,m,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};X.prototype.arcTo=function(c,m,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};X.prototype.lineTo=function(c,m){if(null!=this.lastX&&null!=this.lastY){var x=function(na){return"number"===
typeof na?na?0>na?-1:1:na===na?0:NaN:NaN},p=Math.abs(c-this.lastX),v=Math.abs(m-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=m;return}var B=Math.round(A/10),ha=this.defaultVariation;5>B&&(B=5,ha/=3);var K=x(c-this.lastX)*p/B;x=x(m-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var xa=(Math.random()-.5)*ha;this.originalLineTo.call(this.canvas,K*A+this.lastX-xa*v,x*A+this.lastY-xa*p)}this.originalLineTo.call(this.canvas,c,m)}else this.originalLineTo.apply(this.canvas,
arguments);this.lastX=c;this.lastY=m};X.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var gb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){gb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&tb.apply(this,arguments)};var qb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,m,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=X)qb.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
A,v*A)),c.moveTo(m+A,x),c.lineTo(m+p-A,x),c.quadTo(m+p,x,m+p,x+A),c.lineTo(m+p,x+v-A),c.quadTo(m+p,x+v,m+p-A,x+v),c.lineTo(m+A,x+v),c.quadTo(m,x+v,m,x+v-A),c.lineTo(m,x+A),c.quadTo(m,x,m+A,x)):(c.moveTo(m,x),c.lineTo(m+p,x),c.lineTo(m+p,x+v),c.lineTo(m,x+v),c.lineTo(m,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=.1;ea.prototype.fixedSize=!1;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var m=c.width,x=c.height;c=new mxRectangle(c.x,c.y,m,x);var p=m*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;p=Math.max(p,Math.min(m*v,x*v))}c.x+=Math.round(p);c.width-=Math.round(2*p);return c}return c};
ea.prototype.paintForeground=function(c,m,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(m+B,x);c.lineTo(m+B,x+v);c.moveTo(m+p-B,x);c.lineTo(m+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",ea);mxCellRenderer.registerShape("process2",ea);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,m,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(m,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,m,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ja,mxHexagon);ja.prototype.size=30;ja.prototype.position=.5;ja.prototype.position2=.5;ja.prototype.base=20;ja.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(c,m,x,p,v){m=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),ha=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ha),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,m,!0,[4])};mxCellRenderer.registerShape("callout",ja);mxUtils.extend(U,mxActor);U.prototype.size=.2;U.prototype.fixedSize=20;U.prototype.isRoundable=function(){return!0};U.prototype.redrawPath=function(c,m,x,p,
v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p-m,0),new mxPoint(p,v/2),new mxPoint(p-m,v),new mxPoint(0,v),new mxPoint(m,v/2)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("step",
U);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,m,x,p,v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(m,
0),new mxPoint(p-m,0),new mxPoint(p,.5*v),new mxPoint(p-m,v),new mxPoint(m,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(V,mxRectangleShape);V.prototype.isHtmlAllowed=function(){return!1};V.prototype.paintForeground=function(c,m,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(m+p/2,x+A);c.lineTo(m+p/2,x+v-A);c.moveTo(m+A,x+v/2);c.lineTo(m+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
V);var cb=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var m=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+m,c.y+m,c.width-2*m,c.height-2*m)}return c};mxRhombus.prototype.paintVertexShape=function(c,m,x,p,v){cb.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);m+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),cb.apply(this,[c,m,x,p,v]))}};mxUtils.extend(Q,mxRectangleShape);Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var m=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+m,c.y+m,c.width-2*m,c.height-2*m)}return c};Q.prototype.paintForeground=function(c,m,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);m+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ha=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],xa=this.style["symbol"+A+"Width"],na=this.style["symbol"+A+"Height"],ab=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
ab,db=this.style["symbol"+A+"ArcSpacing"];null!=db&&(db*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),ab+=db,jb+=db);db=m;var Ga=x;db=ha==mxConstants.ALIGN_CENTER?db+(p-xa)/2:ha==mxConstants.ALIGN_RIGHT?db+(p-xa-ab):db+ab;Ga=K==mxConstants.ALIGN_MIDDLE?Ga+(v-na)/2:K==mxConstants.ALIGN_BOTTOM?Ga+(v-na-jb):Ga+jb;c.save();ha=new B;ha.style=this.style;B.prototype.paintVertexShape.call(ha,c,db,Ga,xa,na);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
mxCellRenderer.registerShape("ext",Q);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,m,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",fa);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
la);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(m+p/8,x+v);c.lineTo(m+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ra);mxUtils.extend(u,mxShape);u.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",u);mxUtils.extend(J,mxShape);
J.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};J.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};J.prototype.paintForeground=function(c,m,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(N,mxRectangleShape);N.prototype.size=
40;N.prototype.isHtmlAllowed=function(){return!1};N.prototype.getLabelBounds=function(c){var m=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,m)};N.prototype.paintBackground=function(c,m,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,m,
x,p,A):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=N&&(B=new B,B.apply(this.state),c.save(),B.paintVertexShape(c,m,x,p,A),c.restore()));A<v&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(m+p/2,x+A),c.lineTo(m+p/2,x+v),c.end(),c.stroke())};N.prototype.paintForeground=function(c,m,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,m,x,p,Math.min(v,
A))};mxCellRenderer.registerShape("umlLifeline",N);mxUtils.extend(W,mxShape);W.prototype.width=60;W.prototype.height=30;W.prototype.corner=10;W.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};W.prototype.paintBackground=function(c,m,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),ha=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),K=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);K!=mxConstants.NONE&&(c.setFillColor(K),c.rect(m,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,m,x,p,v),c.setGradient(this.fill,this.gradient,m,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
c.moveTo(m,x);c.lineTo(m+B,x);c.lineTo(m+B,x+Math.max(0,ha-1.5*A));c.lineTo(m+Math.max(0,B-A),x+ha);c.lineTo(m,x+ha);c.close();c.fillAndStroke();c.begin();c.moveTo(m+B,x);c.lineTo(m+p,x);c.lineTo(m+p,x+v);c.lineTo(m,x+v);c.lineTo(m,x+ha);c.stroke()};mxCellRenderer.registerShape("umlFrame",W);mxPerimeter.CenterPerimeter=function(c,m,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
m,x,p){p=N.prototype.size;null!=m&&(p=mxUtils.getValue(m.style,"size",p)*m.view.scale);m=parseFloat(m.style[mxConstants.STYLE_STROKEWIDTH]||1)*m.view.scale/2-1;x.x<c.getCenterX()&&(m=-1*(m+1));return new mxPoint(c.getCenterX()+m,Math.min(c.y+c.height,Math.max(c.y+p,x.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,m,x,p){p=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,m,x,p){p=parseFloat(m.style[mxConstants.STYLE_STROKEWIDTH]||1)*m.view.scale/2-1;null!=m.style.backboneSize&&(p+=parseFloat(m.style.backboneSize)*m.view.scale/2-1);if("south"==m.style[mxConstants.STYLE_DIRECTION]||"north"==m.style[mxConstants.STYLE_DIRECTION])return x.x<c.getCenterX()&&(p=-1*(p+1)),new mxPoint(c.getCenterX()+p,Math.min(c.y+c.height,Math.max(c.y,x.y)));x.y<c.getCenterY()&&(p=-1*(p+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,m,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(m.style,"size",ja.prototype.size))*m.view.scale))),m.style),m,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
m,x,p){var v="0"!=mxUtils.getValue(m.style,"fixedSize","0"),A=v?ba.prototype.fixedSize:ba.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha+v),new mxPoint(B+
K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]):(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,m,x,p){var v="0"!=
mxUtils.getValue(m.style,"fixedSize","0"),A=v?Y.prototype.fixedSize:Y.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+
v,ha)]):m==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,ha)]):m==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+
K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,m,x,p){var v="0"!=mxUtils.getValue(m.style,"fixedSize","0"),A=v?U.prototype.fixedSize:U.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=c.x,
ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,c),new mxPoint(B,ha)]):m==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,
A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,c),new mxPoint(B+K,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]):m==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa),new mxPoint(na,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(na,ha+
v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,m,x,p){var v="0"!=mxUtils.getValue(m.style,"fixedSize","0"),A=v?I.prototype.fixedSize:I.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=
c.x,ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v),new mxPoint(na,ha)]):(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,
Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(S,mxShape);S.prototype.size=10;S.prototype.paintBackground=function(c,m,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
c.translate(m,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",S);mxUtils.extend(P,mxShape);P.prototype.size=10;P.prototype.inset=2;P.prototype.paintBackground=function(c,m,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(m,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(Z,mxShape);Z.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Z);mxUtils.extend(oa,mxShape);oa.prototype.inset=2;oa.prototype.paintBackground=function(c,m,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
"inset",this.inset))+this.strokewidth;c.translate(m,x);c.ellipse(0,A,p-2*A,v-2*A);c.fillAndStroke();c.begin();c.moveTo(p/2,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",oa);mxUtils.extend(va,mxCylinder);va.prototype.jettyWidth=20;va.prototype.jettyHeight=10;va.prototype.redrawPath=function(c,m,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));m=parseFloat(mxUtils.getValue(this.style,"jettyHeight",
this.jettyHeight));x=B/2;B=x+B/2;var ha=Math.min(m,v-m),K=Math.min(ha+2*m,v-m);A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+m),c.lineTo(x,ha+m),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+m),c.lineTo(x,K+m)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+m),c.lineTo(0,K+m),c.lineTo(0,K),c.lineTo(x,K),c.lineTo(x,ha+m),c.lineTo(0,ha+m),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("module",va);mxUtils.extend(Aa,mxCylinder);Aa.prototype.jettyWidth=
32;Aa.prototype.jettyHeight=12;Aa.prototype.redrawPath=function(c,m,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));m=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ha=.3*v-m/2,K=.7*v-m/2;A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+m),c.lineTo(x,ha+m),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+m),c.lineTo(x,K+m)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+m),c.lineTo(0,K+m),c.lineTo(0,K),c.lineTo(x,
K),c.lineTo(x,ha+m),c.lineTo(0,ha+m),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("component",Aa);mxUtils.extend(sa,mxRectangleShape);sa.prototype.paintForeground=function(c,m,x,p,v){var A=p/2,B=v/2,ha=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(m+A,x),new mxPoint(m+p,x+B),new mxPoint(m+A,x+v),new mxPoint(m,x+B)],this.isRounded,ha,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("associativeEntity",sa);mxUtils.extend(Ba,mxDoubleEllipse);Ba.prototype.outerStroke=!0;Ba.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.min(4,Math.min(p/5,v/5));0<p&&0<v&&(c.ellipse(m+A,x+A,p-2*A,v-2*A),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(m,x,p,v),c.stroke())};mxCellRenderer.registerShape("endState",Ba);mxUtils.extend(ta,Ba);ta.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ta);mxUtils.extend(Na,mxArrowConnector);
"startWidth",this.defaultArrowWidth)};Ca.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Ca);mxUtils.extend(Qa,mxActor);Qa.prototype.size=30;Qa.prototype.isRoundable=function(){return!0};Qa.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(v,parseFloat(mxUtils.getValue(this.style,
"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,m),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Qa);mxUtils.extend(Ua,mxRectangleShape);Ua.prototype.dx=20;Ua.prototype.dy=20;Ua.prototype.isHtmlAllowed=function(){return!1};Ua.prototype.paintForeground=function(c,m,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(m,x+A);c.lineTo(m+p,x+A);c.end();c.stroke();c.begin();c.moveTo(m+B,x);c.lineTo(m+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Ua);
mxUtils.extend(Ka,mxActor);Ka.prototype.dx=20;Ka.prototype.dy=20;Ka.prototype.redrawPath=function(c,m,x,p,v){m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(m,x),
new mxPoint(m,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",Ka);mxUtils.extend(bb,mxActor);bb.prototype.redrawPath=function(c,m,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",bb);mxUtils.extend(Va,mxActor);Va.prototype.dx=20;Va.prototype.dy=20;Va.prototype.redrawPath=function(c,m,x,p,v){m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint((p+m)/2,x),new mxPoint((p+m)/2,v),new mxPoint((p-m)/2,v),new mxPoint((p-m)/2,x),new mxPoint(0,x)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("tee",Va);mxUtils.extend($a,
mxActor);$a.prototype.arrowWidth=.3;$a.prototype.arrowSize=.2;$a.prototype.redrawPath=function(c,m,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,x),new mxPoint(p-m,x),new mxPoint(p-m,0),new mxPoint(p,v/2),new mxPoint(p-
m,v),new mxPoint(p-m,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("singleArrow",$a);mxUtils.extend(z,mxActor);z.prototype.redrawPath=function(c,m,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth))));m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(m,0),new mxPoint(m,x),new mxPoint(p-m,x),new mxPoint(p-m,0),new mxPoint(p,v/2),new mxPoint(p-m,v),new mxPoint(p-m,A),new mxPoint(m,A),new mxPoint(m,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,m,x,p,v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(m,0);c.lineTo(p,0);c.quadTo(p-2*m,v/2,p,v);c.lineTo(m,v);c.quadTo(m-2*m,v/2,m,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,m,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,
m,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",T);mxUtils.extend(ca,mxActor);ca.prototype.size=20;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(m,0),new mxPoint(p-m,0),
new mxPoint(p,.8*m),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*m)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ia,mxActor);ia.prototype.size=.375;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,m,x,p,v){m=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
0),new mxPoint(p,v-m),new mxPoint(p/2,v),new mxPoint(0,v-m)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ia);mxUtils.extend(ma,mxEllipse);ma.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(m+p/2,x+v);c.lineTo(m+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",ma);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(m,x+v/2);c.lineTo(m+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(m+p/2,x);c.lineTo(m+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",pa);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(m+.145*p,x+.145*v);c.lineTo(m+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(m+.855*p,x+.145*v);c.lineTo(m+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",ua);mxUtils.extend(ya,mxRhombus);ya.prototype.paintVertexShape=function(c,m,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(m,x+v/2);c.lineTo(m+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ya);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(c,m,x,p,v){c.begin();c.moveTo(m,x);c.lineTo(m+p,x);c.lineTo(m+p/2,x+v/2);c.close();c.fillAndStroke();
c.begin();c.moveTo(m,x+v);c.lineTo(m+p,x+v);c.lineTo(m+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Fa);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,m,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ha=x+v-B/2;c.begin();c.moveTo(m,x);c.lineTo(m,x+v);c.moveTo(m+A,ha);c.lineTo(m+A+B,ha-B/2);c.moveTo(m+A,ha);c.lineTo(m+A+B,ha+B/2);c.moveTo(m+A,ha);c.lineTo(m+p-A,ha);c.moveTo(m+p,x);c.lineTo(m+p,x+v);c.moveTo(m+p-A,ha);c.lineTo(m+p-B-A,ha-B/2);c.moveTo(m+
p-A,ha);c.lineTo(m+p-B-A,ha+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(Oa,mxEllipse);Oa.prototype.drawHidden=!0;Oa.prototype.paintVertexShape=function(c,m,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ha="1"==mxUtils.getValue(this.style,"top","1"),K="1"==mxUtils.getValue(this.style,
"left","1"),xa="1"==mxUtils.getValue(this.style,"right","1"),na="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ha||xa||na||K?(c.rect(m,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(m,x),this.outline||ha?c.lineTo(m+p,x):c.moveTo(m+p,x),this.outline||xa?c.lineTo(m+p,x+v):c.moveTo(m+p,x+v),this.outline||na?c.lineTo(m,x+v):c.moveTo(m,x+v),(this.outline||K)&&c.lineTo(m,x),c.end(),c.stroke(),c.setLineCap("flat")):
c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Oa);mxUtils.extend(Pa,mxEllipse);Pa.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(m+p/2,x),c.lineTo(m+p/2,x+v)):(c.moveTo(m,x+v/2),c.lineTo(m+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Pa);mxUtils.extend(Sa,mxActor);Sa.prototype.redrawPath=function(c,
m,x,p,v){m=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-m,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-m,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Sa);mxUtils.extend(za,mxActor);za.prototype.size=.2;za.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(v,p);var A=Math.max(0,Math.min(m,m*parseFloat(mxUtils.getValue(this.style,"size",this.size))));m=(v-A)/2;x=m+A;var B=(p-A)/2;A=B+A;c.moveTo(0,m);c.lineTo(B,m);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,m);c.lineTo(p,m);c.lineTo(p,x);
c.lineTo(A,x);c.lineTo(A,v);c.lineTo(B,v);c.lineTo(B,x);c.lineTo(0,x);c.close();c.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(p,v/2);x=Math.min(p-m,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*p);c.moveTo(0,v/2);c.lineTo(x,0);c.lineTo(p-m,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-m,v);c.lineTo(x,v);c.close();c.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Da,
dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Da.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,
x);this.strictDrawShape(c,0,0,p,v)};Da.prototype.strictDrawShape=function(c,m,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ha=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),K=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),xa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),na=A&&A.indent?
Ib=Math.max(0,Math.min(50,K));A=Da.prototype;c.setDashed(ab);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);K=Math.min(.5*v,.5*p,K);ha||(K=Ib*Math.min(p,v)/100);K=Math.min(K,.5*Math.min(p,v));ha||(na=Math.min(db*Math.min(p,v)/100));na=Math.min(na,.5*Math.min(p,v)-K);(Ga||Ja||Ia||Ha)&&"frame"!=xa&&(c.begin(),Ga?A.moveNW(c,m,x,p,v,B,Ra,K,Ha):c.moveTo(0,0),Ga&&A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),Ja&&A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),Ia&&
A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),Ha&&A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),ab=ha=Hb,"none"==Cb&&(ha=0),"none"==Db&&(ab=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ha,ab),c.begin(),Ga?A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha):c.moveTo(na,0),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),Ia&&Ja&&A.paintSEInner(c,
m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),Ja&&Ga&&A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),Ga&&Ha&&A.paintNWInner(c,m,x,p,v,B,Ra,K,na),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,m,x,p,v,B,Ra,Xa,Ya,Za,K,Ga,Ja,Ia,Ha),c.stroke()));Ga||Ja||Ia||!Ha?Ga||Ja||!Ia||Ha?!Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==
xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),
c.fillAndStroke()):Ga||!Ja||Ia||Ha?!Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,
K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,
m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&
Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga||Ja||Ia||Ha?
Ga&&!Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,
m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke(),c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,
K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,
K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,
x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,
m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,
m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,
m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,
v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,
m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):
Ga&&Ja&&Ia&&Ha&&("frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),c.close(),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,
B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),
A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),c.close(),A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,
m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),
A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,m,x,p,v,B,Ra,Xa,
Ya,Za,K,Ga,Ja,Ia,Ha);c.stroke()};Da.prototype.moveNW=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,0):c.moveTo(0,ha)};Da.prototype.moveNE=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,0):c.moveTo(p-ha,0)};Da.prototype.moveSE=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,v):c.moveTo(p,v-ha)};Da.prototype.moveSW=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,
v):c.moveTo(ha,v)};Da.prototype.paintNW=function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,ha,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ha,0);else c.lineTo(0,0)};Da.prototype.paintTop=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,0):c.lineTo(p-ha,0)};Da.prototype.paintNE=
function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,p,ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ha);else c.lineTo(p,0)};Da.prototype.paintRight=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,v):c.lineTo(p,v-ha)};Da.prototype.paintLeft=function(c,m,x,p,v,A,B,ha,K){"square"==
B||"default"==B&&"square"==A||!K?c.lineTo(0,0):c.lineTo(0,ha)};Da.prototype.paintSE=function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,p-ha,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ha,v);else c.lineTo(p,v)};Da.prototype.paintBottom=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(0,
v):c.lineTo(ha,v)};Da.prototype.paintSW=function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,0,v-ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ha);else c.lineTo(0,v)};Da.prototype.paintNWInner=function(c,m,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,K,.5*K+ha);else if("invRound"==
B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,K,K+ha);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(K,.5*K+ha);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,K+ha),c.lineTo(K,K+ha)};Da.prototype.paintTopInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(0,K):xa&&!na?c.lineTo(K,0):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ha+.5*K,K):c.lineTo(ha+K,K):c.lineTo(0,
K):c.lineTo(0,0)};Da.prototype.paintNEInner=function(c,m,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-ha-.5*K,K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-ha-K,K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ha-.5*K,K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,ha+K),c.lineTo(p-ha-K,K)};Da.prototype.paintRightInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p-K,0):xa&&!na?c.lineTo(p,
K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):c.lineTo(p-K,ha+K):c.lineTo(p-K,0):c.lineTo(p,0)};Da.prototype.paintLeftInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,v):xa&&!na?c.lineTo(0,v-K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):c.lineTo(K,v-ha-K):
c.lineTo(K,v):c.lineTo(0,v)};Da.prototype.paintSEInner=function(c,m,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-K,v-ha-.5*K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-K,v-ha-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-K,v-ha-.5*K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,v-ha-K),c.lineTo(p-K,v-ha-K)};Da.prototype.paintBottomInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p,
v-K):xa&&!na?c.lineTo(p-K,v):"square"==B||"default"==B&&"square"==A||!xa?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ha-.5*K,v-K):c.lineTo(p-ha-K,v-K):c.lineTo(p,v)};Da.prototype.paintSWInner=function(c,m,x,p,v,A,B,ha,K,xa){if(!xa)c.lineTo(K,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(K,v-K);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,ha+.5*K,v-K);else if("invRound"==B||"default"==B&&"invRound"==
A)c.arcTo(ha+K,ha+K,0,0,1,ha+K,v-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ha+.5*K,v-K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,v-ha-K),c.lineTo(K+ha,v-K)};Da.prototype.moveSWInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(K,v-ha-K):
c.moveTo(0,v-K)};Da.prototype.lineSWInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,v-ha-K):c.lineTo(0,v-K)};Da.prototype.moveSEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,v-ha-K):c.moveTo(p-K,v)};Da.prototype.lineSEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,v-ha-K):
c.lineTo(p-K,v)};Da.prototype.moveNEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.moveTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,ha+K):c.moveTo(p,K)};Da.prototype.lineNEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,ha+K):c.lineTo(p,K)};Da.prototype.moveNWInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.moveTo(K,0):xa&&!na?c.moveTo(0,K):"square"==B||"default"==B&&"square"==A?c.moveTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
B&&"fold"==A)&&c.moveTo(K,ha+K):c.moveTo(0,0)};Da.prototype.lineNWInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,0):xa&&!na?c.lineTo(0,K):"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,ha+K):c.lineTo(0,0)};Da.prototype.paintFolds=function(c,m,x,p,v,A,B,ha,K,xa,na,ab,jb,db,Ga){if("fold"==
Da.prototype.constraints=null;mxUtils.extend(Ea,mxConnector);Ea.prototype.origPaintEdgeShape=Ea.prototype.paintEdgeShape;Ea.prototype.paintEdgeShape=function(c,m,x){for(var p=[],v=0;v<m.length;v++)p.push(mxUtils.clone(m[v]));v=c.state.dashed;var A=c.state.fixDash;Ea.prototype.origPaintEdgeShape.apply(this,[c,p,x]);3<=c.state.strokeWidth&&(p=mxUtils.getValue(this.style,"fillColor",null),null!=p&&(c.setStrokeColor(p),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(v,A),Ea.prototype.origPaintEdgeShape.apply(this,
[c,m,x])))};mxCellRenderer.registerShape("filledEdge",Ea);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var m=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==m.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,m,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();
c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.stroke()}});mxMarker.addMarker("box",function(c,m,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.x+na/2,db=p.y+ab/2;p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb-na/2-ab/2,db-ab/2+na/2);c.lineTo(jb-na/2+ab/2,db-ab/2-na/2);c.lineTo(jb+ab/2-3*na/2,db-3*ab/2-na/2);c.lineTo(jb-ab/2-3*na/2,db-3*ab/2+na/2);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,m,x,p,v,A,B,ha,K,
xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.moveTo(p.x-na/2+ab/2,p.y-ab/2-na/2);c.lineTo(p.x-ab/2-3*na/2,p.y-3*ab/2+na/2);c.stroke()}});mxMarker.addMarker("circle",La);mxMarker.addMarker("circlePlus",function(c,m,x,p,v,A,B,ha,K,xa){var na=p.clone(),ab=La.apply(this,arguments),jb=v*(B+2*K),db=A*(B+2*K);return function(){ab.apply(this,arguments);c.begin();c.moveTo(na.x-v*K,na.y-A*K);c.lineTo(na.x-2*jb+
v*K,na.y-2*db+A*K);c.moveTo(na.x-jb-db+A*K,na.y-db+jb-v*K);c.lineTo(na.x+db-jb-A*K,na.y-db-jb+v*K);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,m,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.clone();p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb.x-ab,jb.y+na);c.quadTo(p.x-ab,p.y+na,p.x,p.y);c.quadTo(p.x+ab,p.y-na,jb.x+ab,jb.y-na);c.stroke()}});mxMarker.addMarker("async",function(c,m,x,p,v,A,B,ha,K,xa){m=v*K*1.118;x=A*K*1.118;v*=B+K;A*=B+K;var na=p.clone();na.x-=m;na.y-=
x;p.x+=-v-m;p.y+=-A-x;return function(){c.begin();c.moveTo(na.x,na.y);ha?c.lineTo(na.x-v-A/2,na.y-A+v/2):c.lineTo(na.x+A/2-v,na.y-A-v/2);c.lineTo(na.x-v,na.y-A);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(m,x,p,v,A,B,ha,K,xa,na){A*=ha+xa;B*=ha+xa;var ab=v.clone();return function(){m.begin();m.moveTo(ab.x,ab.y);K?m.lineTo(ab.x-A-B/c,ab.y-B+A/c):m.lineTo(ab.x+B/c-A,ab.y-B-A/c);m.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var hb=
function(c,m,x){return lb(c,["width"],m,function(p,v,A,B,ha){ha=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ha/2,B.y+A*p/4-v*ha/2)},function(p,v,A,B,ha,K){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ha.x,ha.y,K.x,K.y));c.style.width=Math.round(2*p)/c.view.scale-x})},lb=function(c,m,x,p,v){return eb(c,m,function(A){var B=c.absolutePoints,ha=B.length-1;A=c.view.translate;var K=c.view.scale,xa=x?B[0]:B[ha];B=x?B[1]:B[ha-1];ha=B.x-xa.x;var na=B.y-xa.y,ab=Math.sqrt(ha*ha+na*na);xa=
p.call(this,ab,ha/ab,na/ab,xa,B);return new mxPoint(xa.x/K-A.x,xa.y/K-A.y)},function(A,B,ha){var K=c.absolutePoints,xa=K.length-1;A=c.view.translate;var na=c.view.scale,ab=x?K[0]:K[xa];K=x?K[1]:K[xa-1];xa=K.x-ab.x;var jb=K.y-ab.y,db=Math.sqrt(xa*xa+jb*jb);B.x=(B.x+A.x)*na;B.y=(B.y+A.y)*na;v.call(this,db,xa/db,jb/db,ab,K,B,ha)})},rb=function(c){return function(m){return[eb(m,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",$a.prototype.arrowWidth))),
v=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",$a.prototype.arrowSize)));return new mxPoint(x.x+(1-v)*x.width,x.y+(1-p)*x.height/2)},function(x,p){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(x.y+x.height/2-p.y)/x.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(x.x+x.width-p.x)/x.width))})]}},vb=function(c){return function(m){return[eb(m,["size"],function(x){var p=Math.max(0,Math.min(.5*x.height,parseFloat(mxUtils.getValue(this.state.style,"size",
c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},ob=function(c,m,x){return function(p){var v=[eb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",m)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
!1)&&v.push(kb(p));return v}},Ab=function(c,m,x,p,v){x=null!=x?x:.5;return function(A){var B=[eb(A,["size"],function(ha){var K=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,xa=parseFloat(mxUtils.getValue(this.state.style,"size",K?v:c));return new mxPoint(ha.x+Math.max(0,Math.min(.5*ha.width,xa*(K?1:ha.width))),ha.getCenterY())},function(ha,K,xa){ha=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?K.x-ha.x:Math.max(0,Math.min(x,(K.x-ha.x)/ha.width));this.state.style.size=
ha},!1,p)];m&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(kb(A));return B}},Bb=function(c,m,x){c=null!=c?c:.5;return function(p){var v=[eb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ha=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:m)));return new mxPoint(A.x+Math.min(.75*A.width*c,ha*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(kb(p));return v}},ub=function(){return function(c){var m=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m}},kb=function(c,m){return eb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=m?m:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},eb=function(c,m,x,p,v,A,B){var ha=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ha.execute=function(xa){for(var na=0;na<m.length;na++)this.copyStyle(m[na]);B&&B(xa)};ha.getPosition=x;ha.setPosition=p;ha.ignoreGrid=null!=v?v:!0;if(A){var K=ha.positionChanged;ha.positionChanged=function(){K.apply(this,arguments);c.view.invalidate(this.state.cell);
c.view.validate()}}return ha},mb={link:function(c){return[hb(c,!0,10),hb(c,!1,10)]},flexArrow:function(c){var m=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<m/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(lb(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(xa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<m/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<m&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,
c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(xa.getEvent())||mxEvent.isControlDown(xa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<m/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),
m/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<m&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var m=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));m.push(kb(c,x/2))}m.push(eb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ha=0;ha<A.length;ha++)A[ha]!=c.cell&&v.isSwimlane(A[ha])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ha]))==p&&B.push(A[ha]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return m},label:ub(),ext:ub(),rectangle:ub(),
triangle:ub(),rhombus:ub(),umlLifeline:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(m.height,parseFloat(mxUtils.getValue(this.state.style,"size",N.prototype.size))));return new mxPoint(m.getCenterX(),m.y+x)},function(m,x){this.state.style.size=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},umlFrame:function(c){return[eb(c,["width","height"],function(m){var x=Math.max(W.prototype.corner,Math.min(m.width,mxUtils.getValue(this.state.style,"width",W.prototype.width))),
p=Math.max(1.5*W.prototype.corner,Math.min(m.height,mxUtils.getValue(this.state.style,"height",W.prototype.height)));return new mxPoint(m.x+x,m.y+p)},function(m,x){this.state.style.width=Math.round(Math.max(W.prototype.corner,Math.min(m.width,x.x-m.x)));this.state.style.height=Math.round(Math.max(1.5*W.prototype.corner,Math.min(m.height,x.y-m.y)))},!1)]},process:function(c){var m=[eb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
"size",ea.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},cross:function(c){return[eb(c,["size"],function(m){var x=Math.min(m.width,m.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"size",za.prototype.size)))*x/2;return new mxPoint(m.getCenterX()-x,m.getCenterY()-x)},function(m,x){var p=Math.min(m.width,m.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,m.getCenterY()-x.y)/p*2,Math.max(0,m.getCenterX()-x.x)/p*2)))})]},note:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(m.width,Math.min(m.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(m.x+m.width-x,m.y+x)},function(m,x){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(m.width,m.x+m.width-x.x),Math.min(m.height,x.y-m.y))))})]},note2:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(m.width,Math.min(m.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(m.x+m.width-x,m.y+x)},function(m,x){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(m.width,m.x+m.width-x.x),Math.min(m.height,x.y-m.y))))})]},manualInput:function(c){var m=[eb(c,["size"],function(x){var p=
Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Qa.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},dataStorage:function(c){return[eb(c,["size"],function(m){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?L.prototype.fixedSize:
L.prototype.size));return new mxPoint(m.x+m.width-p*(x?1:m.width),m.getCenterY())},function(m,x){m="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(m.width,m.x+m.width-x.x)):Math.max(0,Math.min(1,(m.x+m.width-x.x)/m.width));this.state.style.size=m},!1)]},callout:function(c){var m=[eb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},internalStorage:function(c){var m=[eb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Ua.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
"dy",Ua.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},module:function(c){return[eb(c,["jettyWidth","jettyHeight"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"jettyWidth",va.prototype.jettyWidth))),p=Math.max(0,Math.min(m.height,
mxUtils.getValue(this.state.style,"jettyHeight",va.prototype.jettyHeight)));return new mxPoint(m.x+x/2,m.y+2*p)},function(m,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(m.width,x.x-m.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(m.height,x.y-m.y))/2)})]},corner:function(c){return[eb(c,["dx","dy"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"dx",Ka.prototype.dx))),p=Math.max(0,Math.min(m.height,mxUtils.getValue(this.state.style,
"dy",Ka.prototype.dy)));return new mxPoint(m.x+x,m.y+p)},function(m,x){this.state.style.dx=Math.round(Math.max(0,Math.min(m.width,x.x-m.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},tee:function(c){return[eb(c,["dx","dy"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"dx",Va.prototype.dx))),p=Math.max(0,Math.min(m.height,mxUtils.getValue(this.state.style,"dy",Va.prototype.dy)));return new mxPoint(m.x+(m.width+x)/2,m.y+p)},function(m,
x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(m.width/2,x.x-m.x-m.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},singleArrow:rb(1),doubleArrow:rb(.5),folder:function(c){return[eb(c,["tabWidth","tabHeight"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(m.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=m.width-x);return new mxPoint(m.x+x,m.y+p)},function(m,x){var p=Math.max(0,Math.min(m.width,x.x-m.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=m.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},document:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",da.prototype.size))));return new mxPoint(m.x+3*m.width/4,m.y+(1-x)*m.height)},function(m,x){this.state.style.size=Math.max(0,Math.min(1,(m.y+m.height-x.y)/m.height))},!1)]},tape:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(m.getCenterX(),m.y+x*m.height/2)},function(m,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-m.y)/m.height*2))},!1)]},isoCube2:function(c){return[eb(c,
["isoAngle"],function(m){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",l.isoAngle))))*Math.PI/200;return new mxPoint(m.x,m.y+Math.min(m.width*Math.tan(x),.5*m.height))},function(m,x){this.state.style.isoAngle=Math.max(0,50*(x.y-m.y)/m.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size))));
return new mxPoint(m.getCenterX(),m.y+(1-x)*m.height)},function(m,x){this.state.style.size=Math.max(0,Math.min(1,(m.y+m.height-x.y)/m.height))},!1)]},"mxgraph.basic.rect":function(c){var m=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});m.push(c);return m},step:Ab(U.prototype.size,!0,null,!0,U.prototype.fixedSize),hexagon:Ab(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:Ab(qa.prototype.size,!1),display:Ab(wa.prototype.size,!1),cube:ob(1,
n.prototype.size,!1),card:ob(.5,G.prototype.size,!0),loopLimit:ob(.5,ca.prototype.size,!0),trapezoid:Bb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:Bb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=eb;Graph.handleFactory=mb;var wb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=wb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var m=this.state.style.shape;null==mxCellRenderer.defaultShapes[m]&&
null==mxStencilRegistry.getStencil(m)?m=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(m=mxConstants.SHAPE_SWIMLANE);m=mb[m];null==m&&null!=this.state.shape&&this.state.shape.isRoundable()&&(m=mb[mxConstants.SHAPE_RECTANGLE]);null!=m&&(m=m(this.state),null!=m&&(c=null==c?m:c.concat(m)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);
c=mb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var pb=new mxPoint(1,0),xb=new mxPoint(1,0),zb=mxUtils.toRadians(-30);pb=mxUtils.getRotatedPoint(pb,Math.cos(zb),Math.sin(zb));var yb=mxUtils.toRadians(-150);xb=mxUtils.getRotatedPoint(xb,Math.cos(yb),Math.sin(yb));mxEdgeStyle.IsometricConnector=function(c,m,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ha=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
null==ha&&null!=m&&(ha=new mxPoint(m.getCenterX(),m.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var K=pb.x,xa=pb.y,na=xb.x,ab=xb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ha){c=function(Ga,Ja,Ia){Ga-=db.x;var Ha=Ja-db.y;Ja=(ab*Ga-na*Ha)/(K*ab-xa*na);Ga=(xa*Ga-K*Ha)/(xa*na-K*ab);jb?(Ia&&(db=new mxPoint(db.x+K*Ja,db.y+xa*Ja),v.push(db)),db=new mxPoint(db.x+na*Ga,db.y+ab*Ga)):(Ia&&(db=new mxPoint(db.x+na*Ga,db.y+ab*Ga),v.push(db)),
db=new mxPoint(db.x+K*Ja,db.y+xa*Ja));v.push(db)};var db=ha;null==p&&(p=new mxPoint(ha.x+(B.x-ha.x)/2,ha.y+(B.y-ha.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var nb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,m){if(m==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return nb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
function(c,m,x){c=[];var p=Math.tan(mxUtils.toRadians(30)),v=(.5-p)/2;p=Math.min(m,x/(.5+p));m=(m-p)/2;x=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+.5*p,x+p*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+p,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+p,x+.75*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+.5*p,x+(1-v)*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,x+.75*p));return c};l.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;p=Math.min(m*Math.tan(p),.5*x);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,x-p));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ja.prototype.getConstraints=function(c,m,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=m*Math.max(0,
Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x-p)));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));m>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;V.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(m-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));m>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};G.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));m>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};n.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(m+p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));return c};y.prototype.getConstraints=function(c,m,x){c=[];m=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,m));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,m));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-m));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-m));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,m+.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,m+.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,x-m-.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-m-.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*m));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*m));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-m));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-m));return c};C.prototype.getConstraints=
function(c,m,x){c=[];var p=Math.max(0,Math.min(m,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),v))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,
ua.prototype.constraints=mxEllipse.prototype.constraints;Pa.prototype.constraints=mxEllipse.prototype.constraints;Qa.prototype.constraints=mxRectangleShape.prototype.constraints;Sa.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(c,m,x){c=[];var p=Math.min(m,x/2),v=Math.min(m-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*m);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+m-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+m-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};va.prototype.getConstraints=function(c,m,x){m=parseFloat(mxUtils.getValue(c,
"jettyWidth",va.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",va.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,m),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,m),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,m));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1,null,m));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,m));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ia.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;Va.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*m+.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(m+p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*m-.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};Ka.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
function(c,m,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),v=m*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-v),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-v),x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));return c};z.prototype.getConstraints=function(c,m,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth)))),v=m*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*m,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*m,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};za.prototype.getConstraints=
function(c,m,x){c=[];var p=Math.min(x,m),v=Math.max(0,Math.min(p,p*parseFloat(mxUtils.getValue(this.style,"size",this.size))));p=(x-v)/2;var A=p+v,B=(m-v)/2;v=B+v;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+v),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+v),A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*B,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
Actions.prototype.init=function(){function b(g){t.escape();g=t.deleteCells(t.getDeletableCells(t.getSelectionCells()),g);null!=g&&t.setSelectionCells(g)}function e(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{for(var g=t.getSelectionCells(),l=0;l<g.length;l++)t.cellLabelChanged(g[l],"")}finally{t.getModel().endUpdate()}}}function k(g,l,q,y,F){F.getModel().beginUpdate();try{var C=F.getCellGeometry(g);null!=C&&q&&y&&(q/=y,C=C.clone(),1<q?C.height=C.width/q:C.width=C.height*q,F.getModel().setGeometry(g,
C));F.setCellStyles(mxConstants.STYLE_CLIP_PATH,l,[g]);F.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[g])}finally{F.getModel().endUpdate()}}var n=this.editorUi,D=n.editor,t=D.graph,E=function(){return Action.prototype.isEnabled.apply(this,arguments)&&t.isEnabled()};this.addAction("new...",function(){t.openLink(n.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";n.openFile()});this.addAction("smartFit",function(){t.popupMenuHandler.hideMenu();var g=t.view.scale,
l=t.view.translate.x,q=t.view.translate.y;n.actions.get("resetView").funct();1E-5>Math.abs(g-t.view.scale)&&l==t.view.translate.x&&q==t.view.translate.y&&n.actions.get(t.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){t.isEnabled()&&(t.isSelectionEmpty()?n.actions.get("smartFit").funct():t.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){n.hideDialog()}));
window.openFile.setConsumer(mxUtils.bind(this,function(g,l){try{var q=mxUtils.parseXml(g);D.graph.setSelectionCells(D.graph.importGraphModel(q.documentElement))}catch(y){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+y.message)}}));n.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=E;this.addAction("save",function(){n.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=E;this.addAction("saveAs...",function(){n.saveFile(!0)},null,
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(t,null,10,10)});this.addAction("undo",function(){n.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){n.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var g=null;try{g=n.copyXml(),null!=g&&t.removeCells(g,!1)}catch(l){}null==g&&mxClipboard.cut(t)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{n.copyXml()}catch(g){}try{mxClipboard.copy(t)}catch(g){n.handleError(g)}},
null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(l){if(null!=l){t.getModel().beginUpdate();try{n.pasteXml(l,!0)}finally{t.getModel().endUpdate()}}else mxClipboard.paste(t)}),g=!0)}catch(l){}g||mxClipboard.paste(t)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(g){function l(y){if(null!=y){for(var F=!0,C=0;C<
y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var H=t.view.translate;C=t.view.scale;var G=H.x,aa=H.y;H=null;if(1==y.length&&F){var da=t.getCellGeometry(y[0]);null!=da&&(H=da.getTerminalPoint(!0))}H=null!=H?H:t.getBoundingBoxFromGeometry(y,F);null!=H&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-aa)),t.cellsMoved(y,F-H.x,C-H.y))}}function q(){t.getModel().beginUpdate();try{l(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
!t.isCellLocked(t.getDefaultParent())){g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(y){if(null!=y){t.getModel().beginUpdate();try{l(n.pasteXml(y,!0))}finally{t.getModel().endUpdate()}}else q()}),g=!0)}catch(y){}g||q()}});this.addAction("copySize",function(){var g=t.getSelectionCell();t.isEnabled()&&null!=g&&t.getModel().isVertex(g)&&(g=t.getCellGeometry(g),null!=g&&(n.copiedSize=new mxRectangle(g.x,g.y,g.width,g.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedSize){t.getModel().beginUpdate();try{for(var g=t.getResizableCells(t.getSelectionCells()),l=0;l<g.length;l++)if(t.getModel().isVertex(g[l])){var q=t.getCellGeometry(g[l]);null!=q&&(q=q.clone(),q.width=n.copiedSize.width,q.height=n.copiedSize.height,t.getModel().setGeometry(g[l],q))}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var g=t.getSelectionCell()||t.getModel().getRoot();t.isEnabled()&&
null!=g&&(g=g.cloneValue(),null==g||isNaN(g.nodeType)||(n.copiedValue=g))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(g,l){function q(C,H){var G=y.getValue(C);H=C.cloneValue(H);H.removeAttribute("placeholders");null==G||isNaN(G.nodeType)||H.setAttribute("placeholders",G.getAttribute("placeholders"));null!=g&&mxEvent.isShiftDown(g)||H.setAttribute("label",t.convertValueToString(C));y.setValue(C,H)}g=null!=l?l:g;var y=t.getModel();if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedValue){y.beginUpdate();
try{var F=t.getEditableCells(t.getSelectionCells());if(0==F.length)q(y.getRoot(),n.copiedValue);else for(l=0;l<F.length;l++)q(F[l],n.copiedValue)}finally{y.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(g,l){g=null!=l?l:g;null!=g&&mxEvent.isShiftDown(g)?e():b(null!=g&&(mxEvent.isControlDown(g)||mxEvent.isMetaDown(g)||mxEvent.isAltDown(g)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){e()},null,null,Editor.ctrlKey+
new Action(mxResources.get("unmerge"),function(){var g=n.getSelectionState();if(0<g.cells.length){t.getModel().beginUpdate();try{t.setCellStyles("rowspan",null,g.cells),t.setCellStyles("colspan",null,g.cells)}finally{t.getModel().endUpdate()}}}));this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(g,l){g=null!=l?l:g;t.turnShapes(t.getResizableCells(t.getSelectionCells()),null!=g?mxEvent.isShiftDown(g):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));
null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),l=t.getCurrentCellStyle(t.getSelectionCell()),q=1==mxUtils.getValue(l,mxConstants.STYLE_EDITABLE,1)?0:1;t.setCellStyles(mxConstants.STYLE_MOVABLE,q,g);t.setCellStyles(mxConstants.STYLE_RESIZABLE,q,g);t.setCellStyles(mxConstants.STYLE_ROTATABLE,q,g);t.setCellStyles(mxConstants.STYLE_DELETABLE,q,g);t.setCellStyles(mxConstants.STYLE_EDITABLE,
(g=t.getCellsForGroup(g),1<g.length&&t.setSelectionCell(t.groupCells(null,0,g))):t.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(t.isEnabled()){var g=t.getEditableCells(t.getSelectionCells());t.model.beginUpdate();try{var l=t.ungroupCells();if(null!=g)for(var q=0;q<g.length;q++)t.model.contains(g[q])&&(0==t.model.getChildCount(g[q])&&t.model.isVertex(g[q])&&t.setCellStyles("container","0",[g[q]]),l.push(g[q]))}finally{t.model.endUpdate()}0<
l.length&&t.setSelectionCells(l)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(t.isEnabled()){var g=t.getSelectionCells();if(null!=g){for(var l=[],q=0;q<g.length;q++)t.isTableRow(g[q])||t.isTableCell(g[q])||l.push(g[q]);t.removeCellsFromParent(l)}}});this.addAction("edit",function(){t.isEnabled()&&t.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var g=t.getSelectionCell()||t.getModel().getRoot();n.showDataDialog(g)},null,
null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var l="";if(mxUtils.isNode(g.value)){var q=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&g.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(q=g.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==q&&(q=g.value.getAttribute("tooltip"));null!=q&&(l=q)}l=new TextareaDialog(n,mxResources.get("editTooltip")+":",l,function(y){t.setTooltipForCell(g,
y)});n.showDialog(l.container,320,200,!0,!0);l.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var g=t.getLinkForCell(t.getSelectionCell());null!=g&&t.openLink(g)});this.addAction("editLink...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var l=t.getLinkForCell(g)||"";n.showLinkDialog(l,mxResources.get("apply"),function(q,y,F){q=mxUtils.trim(q);t.setLinkForCell(g,0<q.length?q:null);t.setAttributeForCell(g,"linkTarget",F)},!0,t.getLinkTargetForCell(g))}},
null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&(t.clearSelection(),n.actions.get("image").funct())})).isEnabled=E;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&n.showLinkDialog("",mxResources.get("insert"),function(g,l,q){g=mxUtils.trim(g);if(0<g.length){var y=null,F=t.getLinkTitle(g);null!=l&&0<l.length&&(y=l[0].iconUrl,
F=l[0].name||l[0].type,F=F.charAt(0).toUpperCase()+F.substring(1),30<F.length&&(F=F.substring(0,30)+"..."));l=new mxCell(F,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=y?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+y:"spacing=10;"));l.vertex=!0;y=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry([l],!0));l.geometry.x=y.x;l.geometry.y=y.y;t.setAttributeForCell(l,"linkTarget",q);t.setLinkForCell(l,g);t.cellSizeUpdated(l,
!0);t.getModel().beginUpdate();try{l=t.addCell(l),t.fireEvent(new mxEventObject("cellsInserted","cells",[l]))}finally{t.getModel().endUpdate()}t.setSelectionCell(l);t.scrollCellToVisible(t.getSelectionCell())}},!0)})).isEnabled=E;this.addAction("link...",mxUtils.bind(this,function(){if(t.isEnabled())if(t.cellEditor.isContentEditing()){var g=t.getSelectedElement(),l=t.getParentByName(g,"A",t.cellEditor.textarea),q="";if(null==l&&null!=g&&null!=g.getElementsByTagName)for(var y=g.getElementsByTagName("a"),
F=0;F<y.length&&null==l;F++)y[F].textContent==g.textContent&&(l=y[F]);null!=l&&"A"==l.nodeName&&(q=l.getAttribute("href")||"",t.selectNode(l));var C=t.cellEditor.saveSelection();n.showLinkDialog(q,mxResources.get("apply"),mxUtils.bind(this,function(H){t.cellEditor.restoreSelection(C);null!=H&&t.insertLink(H)}))}else t.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=E;this.addAction("autosize",function(){var g=t.getSelectionCells();if(null!=g){t.getModel().beginUpdate();
try{for(var l=0;l<g.length;l++){var q=g[l];0<t.getModel().getChildCount(q)?t.updateGroupBounds([q],0,!0):t.updateCellSize(q)}}finally{t.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",function(){t.snapCellsToGrid(t.getSelectionCells(),t.gridSize)});this.addAction("formattedText",function(){t.stopEditing();var g=t.getCommonStyle(t.getSelectionCells());g="1"==mxUtils.getValue(g,"html","0")?null:"1";t.getModel().beginUpdate();try{for(var l=t.getEditableCells(t.getSelectionCells()),
q=0;q<l.length;q++)if(state=t.getView().getState(l[q]),null!=state){var y=mxUtils.getValue(state.style,"html","0");if("1"==y&&null==g){var F=t.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var C=document.createElement("div");C.innerHTML=t.sanitizeHtml(F);F=mxUtils.extractTextWithWhitespace(C.childNodes);t.cellLabelChanged(state.cell,F);t.setCellStyles("html",g,[l[q]])}else"0"==y&&"1"==g&&(F=mxUtils.htmlEntities(t.convertValueToString(state.cell),
!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"<br/>")),t.cellLabelChanged(state.cell,t.sanitizeHtml(F)),t.setCellStyles("html",g,[l[q]]))}n.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=g?g:"0"],"cells",l))}finally{t.getModel().endUpdate()}});this.addAction("wordWrap",function(){var g=t.getView().getState(t.getSelectionCell()),l="wrap";t.stopEditing();null!=g&&"wrap"==g.style[mxConstants.STYLE_WHITE_SPACE]&&(l=null);t.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
l)});this.addAction("rotation",function(){var g="0",l=t.getView().getState(t.getSelectionCell());null!=l&&(g=l.style[mxConstants.STYLE_ROTATION]||g);g=new FilenameDialog(n,g,mxResources.get("apply"),function(q){null!=q&&0<q.length&&t.setCellStyles(mxConstants.STYLE_ROTATION,q)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");n.showDialog(g.container,375,80,!0,!0);g.init()});this.addAction("resetView",function(){t.zoomTo(1);n.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
function(g){t.isFastZoomEnabled()?t.lazyZoom(!0,!0,n.buttonZoomDelay):t.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(g){t.isFastZoomEnabled()?t.lazyZoom(!1,!0,n.buttonZoomDelay):t.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var g=t.isSelectionEmpty()?t.getGraphBounds():t.getBoundingBox(t.getSelectionCells()),l=t.view.translate,q=t.view.scale;g.x=g.x/q-l.x;g.y=g.y/q-l.y;g.width/=q;
g.height/=q;null!=t.backgroundImage&&(g=mxRectangle.fromRectangle(g),g.add(new mxRectangle(0,0,t.backgroundImage.width,t.backgroundImage.height)));0==g.width||0==g.height?(t.zoomTo(1),n.resetScrollbars()):(l=Editor.fitWindowBorders,null!=l&&(g.x-=l.x,g.y-=l.y,g.width+=l.width+l.x,g.height+=l.height+l.y),t.fitWindow(g))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,l=t.pageScale;t.zoomTo(Math.floor(20*
Math.min((t.container.clientWidth-10)/g.width/l,(t.container.clientHeight-10)/g.height/l))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=g.y*t.view.scale-1,t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,l=t.pageScale;t.zoomTo(Math.floor(20*Math.min((t.container.clientWidth-
10)/(2*g.width)/l,(t.container.clientHeight-10)/g.height/l))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=Math.min(g.y,(t.container.scrollHeight-t.container.clientHeight)/2),t.container.scrollLeft=Math.min(g.x,(t.container.scrollWidth-t.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();t.zoomTo(Math.floor(20*(t.container.clientWidth-10)/t.pageFormat.width/
t.pageScale)/20);if(mxUtils.hasScrollbars(t.container)){var g=t.getPagePadding();t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(l){l=parseInt(l);!isNaN(l)&&0<l&&t.zoomTo(l/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(g.container,
300,80,!0,!0);g.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(l){l=parseInt(l);!isNaN(l)&&0<l&&(l=new ChangePageSetup(n,null,null,null,l/100),l.ignoreColor=!0,l.ignoreImage=!0,t.model.execute(l))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(g.container,300,80,!0,!0);g.init()}));var d=null;d=this.addAction("grid",
"/help"+g+".html")});var f=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){f||(n.showDialog((new AboutDialog(n)).container,320,280,!0,!0,function(){f=!1}),f=!0)}));d=mxUtils.bind(this,function(g,l,q,y){return this.addAction(g,function(){if(null!=q&&t.cellEditor.isContentEditing())q();else{t.stopEditing(!1);t.getModel().beginUpdate();try{var F=t.getEditableCells(t.getSelectionCells());t.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,l,F);(l&mxConstants.FONT_BOLD)==
mxConstants.FONT_BOLD?t.updateLabelElements(F,function(H){H.style.fontWeight=null;"B"==H.nodeName&&t.replaceElement(H)}):(l&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?t.updateLabelElements(F,function(H){H.style.fontStyle=null;"I"==H.nodeName&&t.replaceElement(H)}):(l&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&t.updateLabelElements(F,function(H){H.style.textDecoration=null;"U"==H.nodeName&&t.replaceElement(H)});for(var C=0;C<F.length;C++)0==t.model.getChildCount(F[C])&&t.autoSizeCell(F[C],
this.addAction("rounded",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),t.setCellStyles(mxConstants.STYLE_CURVED,"0"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!t.isSelectionEmpty()&&t.isEnabled()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),l=t.getCurrentCellStyle(g[0]),
q="1"==mxUtils.getValue(l,mxConstants.STYLE_ROUNDED,"0")?"0":"1";t.setCellStyles(mxConstants.STYLE_ROUNDED,q);t.setCellStyles(mxConstants.STYLE_CURVED,null);n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[q,"0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}});this.addAction("curved",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),t.setCellStyles(mxConstants.STYLE_CURVED,
"1"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("collapsible",function(){var g=t.view.getState(t.getSelectionCell()),l="1";null!=g&&null!=t.getFoldingImage(g)&&(l="0");t.setCellStyles("collapsible",l);n.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[l],"cells",t.getSelectionCells()))});this.addAction("editStyle...",
mxUtils.bind(this,function(){var g=t.getEditableCells(t.getSelectionCells());if(null!=g&&0<g.length){var l=t.getModel();l=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",l.getStyle(g[0])||"",function(q){null!=q&&t.setCellStyle(mxUtils.trim(q),g)},null,null,400,220);this.editorUi.showDialog(l.container,420,300,!0,!0);l.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){t.isEnabled()&&!t.isSelectionEmpty()&&n.setDefaultStyle(t.getSelectionCell())},
null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){t.isEnabled()&&n.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var g=t.getSelectionCell();if(null!=g&&t.getModel().isEdge(g)){var l=D.graph.selectionCellsHandler.getHandler(g);if(l instanceof mxEdgeHandler){var q=t.view.translate,y=t.view.scale,F=q.x;q=q.y;g=t.getModel().getParent(g);for(var C=t.getCellGeometry(g);t.getModel().isVertex(g)&&null!=C;)F+=C.x,q+=C.y,g=
t.getModel().getParent(g),C=t.getCellGeometry(g);F=Math.round(t.snap(t.popupMenuHandler.triggerX/y-F));y=Math.round(t.snap(t.popupMenuHandler.triggerY/y-q));l.addPointAt(l.state,F,y)}}});this.addAction("removeWaypoint",function(){var g=n.actions.get("removeWaypoint");null!=g.handler&&g.handler.removePoint(g.handler.state,g.index)});this.addAction("clearWaypoints",function(g,l){g=null!=l?l:g;var q=t.getSelectionCells();if(null!=q){q=t.getEditableCells(t.addAllEdges(q));t.getModel().beginUpdate();try{for(var y=
0;y<q.length;y++){var F=q[y];if(t.getModel().isEdge(F)){var C=t.getCellGeometry(F);null!=l&&mxEvent.isShiftDown(g)?(t.setCellStyles(mxConstants.STYLE_EXIT_X,null,[F]),t.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[F])):null!=C&&(C=C.clone(),C.points=null,C.x=0,C.y=0,C.offset=null,t.getModel().setGeometry(F,C))}}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",
mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=mxResources.get("image")+" ("+mxResources.get("url")+"):",l=t.getView().getState(t.getSelectionCell()),
q="",y=null;null!=l&&(q=l.style[mxConstants.STYLE_IMAGE]||q,y=l.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,H,G,aa,da,ba){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,H,G);else{var Y=t.getSelectionCells();if(null!=C&&(0<C.length||0<Y.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Y.length){Y=[t.insertVertex(t.getDefaultParent(),null,"",0,0,H,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
null!=g){var l=t.getCurrentCellStyle(g),q=l[mxConstants.STYLE_IMAGE],y=l[mxConstants.STYLE_SHAPE];q&&"image"==y&&(l=new CropImageDialog(n,q,l[mxConstants.STYLE_CLIP_PATH],function(F,C,H){k(g,F,C,H,t)}),n.showDialog(l.container,300,390,!0,!0))}}).isEnabled=E;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(n,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("layers"))})),
this.outlineWindow.window.setVisible(!0),n.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&null!=g){var l=new ConnectionPointsDialog(n,
g);n.showDialog(l.container,350,450,!0,!1,function(){l.destroy()});l.init()}}).isEnabled=E};Actions.prototype.addAction=function(b,e,k,n,D){if("..."==b.substring(b.length-3)){b=b.substring(0,b.length-3);var t=mxResources.get(b)+"..."}else t=mxResources.get(b);return this.put(b,new Action(t,e,k,n,D))};Actions.prototype.put=function(b,e){return this.actions[b]=e};Actions.prototype.get=function(b){return this.actions[b]};
DrawioFile.prototype.mergeFile=function(b,e,k,n){var D=!0;try{this.stats.fileMerged++;var t=this.getShadowPages(),E=b.getShadowPages();if(null!=E&&0<E.length){var d=[this.ui.diffPages(null!=n?n:t,E)],f=this.ignorePatches(d);this.setShadowPages(E);if(f)EditorUi.debug("File.mergeFile",[this],"file",[b],"ignored",f);else{null!=this.sync&&this.sync.sendLocalChanges();this.backupPatch=this.isModified()?this.ui.diffPages(t,this.ui.pages):null;n={};f={};var g=this.ui.patchPages(t,d[0]),l=this.ui.getHashValueForPages(g,
n),q=this.ui.getHashValueForPages(E,f);EditorUi.debug("File.mergeFile",[this],"file",[b],"shadow",t,"pages",this.ui.pages,"patches",d,"backup",this.backupPatch,"checksum",l,"current",q,"valid",l==q,"from",this.getCurrentRevisionId(),"to",b.getCurrentRevisionId(),"modified",this.isModified());if(null!=l&&l!=q){var y=this.compressReportData(this.getAnonymizedXmlForPages(E)),F=this.compressReportData(this.getAnonymizedXmlForPages(g)),C=this.ui.hashValue(b.getCurrentEtag()),H=this.ui.hashValue(this.getCurrentEtag());
this.checksumError(k,d,"Shadow Details: "+JSON.stringify(n)+"\nChecksum: "+l+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+C+"\nTo: "+H+"\n\nFile Data:\n"+y+"\nPatched Shadow:\n"+F,null,"mergeFile");return}if(null!=this.sync){var G=this.sync.patchRealtime(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null);null==G||mxUtils.isEmptyObject(G)||d.push(G)}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw D=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=
DrawioFile.prototype.sendErrorReport=function(b,e,k,n){try{var D=this.compressReportData(this.getAnonymizedXmlForPages(this.getShadowPages()),25E3),t=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),E=this.getCurrentUser(),d=null!=E?this.ui.hashValue(E.id):"unknown",f=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",g=this.getTitle(),l=g.lastIndexOf(".");E="xml";0<l&&(E=g.substring(l));var q=null!=k?k.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
DrawioFile.prototype.patch=function(b,e,k){if(null!=b){var n=this.ui.editor.undoManager,D=n.history.slice(),t=n.indexOfNextAdd,E=this.ui.editor.graph;E.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=k;var f=E.foldingEnabled,g=E.mathEnabled,l=E.cellRenderer.redraw;E.cellRenderer.redraw=function(q){q.view.graph.isEditing(q.cell)&&(q.view.graph.scrollCellToVisible(q.cell),q.view.graph.cellEditor.resize());l.apply(this,arguments)};E.model.beginUpdate();
try{this.ui.pages=this.ui.applyPatches(this.ui.pages,b,!0,e,this.isModified()),0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage()),0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{E.container.style.visibility="";E.model.endUpdate();E.cellRenderer.redraw=l;this.changeListenerEnabled=d;k||(n.history=D,n.indexOfNextAdd=t,n.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)g!=E.mathEnabled?
LocalFile.prototype.saveFile=function(b,e,k,n,D){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;D||this.updateFileData();var t=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var E=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=k&&k()}),f=mxUtils.bind(this,function(g){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var l=mxUtils.bind(this,
function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(C){try{var H=this.desc;this.savingFile=!1;this.desc=C;this.fileSaved(E,H,d,l);this.removeDraft()}catch(G){l(G)}}),l)}),l)}),l):(this.inConflictState=!0,l())}),mxUtils.bind(this,function(F){this.invalidFileHandle=!0;l(F)}))}),l)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(g,b,t?"image/png":"text/xml",t);else if(g.length<MAX_REQUEST_SIZE){var q=b.lastIndexOf(".");q=0<q?b.substring(q+1):"xml";
N=J.getId():null!=u.currentPage&&(N=u.currentPage.getId());return N});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var l=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?l.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=
mxClient.IS_SF)nb.writeln('<style type="text/css">'),nb.writeln(Editor.mathJaxWebkitCss),nb.writeln("</style>");mxClient.IS_GC&&(nb.writeln('<style type="text/css">'),nb.writeln("@media print {"),nb.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),nb.writeln("}"),nb.writeln("</style>"));null!=u.editor.fontCss&&(nb.writeln('<style type="text/css">'),nb.writeln(u.editor.fontCss),nb.writeln("</style>"));for(var c=cb.getCustomFonts(),m=0;m<c.length;m++){var x=c[m].name,p=c[m].url;Graph.isCssFontUrl(p)?
nb.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(p)+'" charset="UTF-8" type="text/css">'):(nb.writeln('<style type="text/css">'),nb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(x)+'";\nsrc: url("'+mxUtils.htmlEntities(p)+'");\n}'),nb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var yb=hb.renderPage;hb.renderPage=function(nb,c,m,x,p,v){var A=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!u.editor.useForeignObjectForMath?!0:u.editor.originalNoForeignObject;
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,l,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
"1"!=urlParams.dev)try{if(d!=EditorUi.lastErrorMessage&&(null==d||null==f||-1==d.indexOf("Script error")&&-1==d.indexOf("extension"))&&null!=d&&0>d.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=d;var C=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";q=null!=q?q:Error(d);(new Image).src=C+"/log?severity="+y+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(d)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(g)+(null!=l?":colno:"+
encodeURIComponent(l):"")+(null!=q&&null!=q.stack?"&stack="+encodeURIComponent(q.stack):"")}}catch(H){}try{F||null==window.console||console.error(y,d,f,g,l,q)}catch(H){}};EditorUi.logEvent=function(d){if("1"==urlParams.dev)EditorUi.debug("logEvent",d);else if(EditorUi.enableLogging)try{var f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=d?"&data="+encodeURIComponent(JSON.stringify(d)):"")}catch(g){}};EditorUi.sendReport=
f.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=q&&6<q.length}catch(y){}};g.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(q){}try{f=document.createElement("canvas");f.width=f.height=1;var l=f.toDataURL("image/jpeg");
EditorUi.prototype.jpgSupported=null!==l.match("image/jpeg")}catch(q){}})();EditorUi.prototype.openLink=function(d,f,g){return this.editor.graph.openLink(d,f,g)};EditorUi.prototype.showSplash=function(d){};EditorUi.prototype.getLocalData=function(d,f){f(localStorage.getItem(d))};EditorUi.prototype.setLocalData=function(d,f,g){localStorage.setItem(d,f);null!=g&&g()};EditorUi.prototype.removeLocalData=function(d,f){localStorage.removeItem(d);f()};EditorUi.prototype.setShareCursorPosition=function(d){this.shareCursorPosition=
EditorUi.prototype.createSpinner=function(d,f,g){var l=null==d||null==f;g=null!=g?g:24;var q=new Spinner({lines:12,length:g,width:Math.round(g/3),radius:Math.round(g/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),y=q.spin;q.spin=function(C,H){var G=!1;this.active||(y.call(this,C),this.active=!0,null!=H&&(l&&(f=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,d=document.body.clientWidth/2-2),G=document.createElement("div"),
return q};EditorUi.prototype.isCompatibleString=function(d){try{var f=mxUtils.parseXml(d),g=this.editor.extractGraphModel(f.documentElement,!0);return null!=g&&0==g.getElementsByTagName("parsererror").length}catch(l){}return!1};EditorUi.prototype.isVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&
EditorUi.prototype.createKeyHandler=function(d){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var g=f.getFunction,l=this.editor.graph,q=this;f.getFunction=function(y){if(l.isSelectionEmpty()&&null!=q.pages&&0<q.pages.length){var F=q.getSelectedPageIndex();if(mxEvent.isShiftDown(y)){if(37==y.keyCode)return function(){0<F&&q.movePage(F,F-1)};if(38==y.keyCode)return function(){0<F&&q.movePage(F,0)};if(39==y.keyCode)return function(){F<q.pages.length-1&&q.movePage(F,
var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var f=e.apply(this,arguments);if(null==f)try{var g=d.indexOf("&lt;mxfile ");if(0<=g){var l=d.lastIndexOf("&lt;/mxfile&gt;");l>g&&(f=d.substring(g,l+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else{var q=mxUtils.parseXml(d),y=this.editor.extractGraphModel(q.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility);f=null!=
f.model.beginUpdate();try{var g=null!=this.pages?this.pages.slice():null,l=d.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<l.length||1==l.length&&l[0].hasAttribute("name")){this.fileNode=d;this.pages=null!=this.pages?this.pages:[];for(var q=l.length-1;0<=q;q--){var y=this.updatePageRoot(new DiagramPage(l[q]));null==y.getName()&&y.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,y,0==q?y:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
function(d,f,g,l,q,y,F,C,H,G,aa){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;H=null!=H?H:!0;var da=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var ba="_blank";else da=ba=l;if(null==d)return"";var Y=d;if("mxfile"!=Y.nodeName.toLowerCase()){if(aa){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Y=Graph.compress(qa);if(Graph.decompress(Y)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
aa=aa?mxUtils.getPrettyXml(Y):mxUtils.getXml(Y);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))aa=this.getHtml2(mxUtils.getXml(Y),f,null!=g?g.getTitle():null,ba,da);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(l=null),aa=this.getEmbeddedSvg(aa,f,l,null,C,H,da);return aa};EditorUi.prototype.getXmlFileData=function(d,f,g,l){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
l);if(d&&null!=this.fileNode&&null!=this.currentPage)if(d=function(H){var G=H.getElementsByTagName("mxGraphModel");G=0<G.length?G[0]:null;null==G&&g?(G=mxUtils.trim(mxUtils.getTextContent(H)),H=H.cloneNode(!1),0<G.length&&(G=Graph.decompress(G),null!=G&&0<G.length&&H.appendChild(mxUtils.parseXml(G).documentElement))):null==G||g?H=H.cloneNode(!0):(H=H.cloneNode(!1),mxUtils.setTextContent(H,Graph.compressNode(G)));q.appendChild(H)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(q)),q=this.fileNode.cloneNode(!1),f)d(this.currentPage.node);else for(f=0;f<this.pages.length;f++){var y=this.pages[f],F=y.node;if(y!=this.currentPage)if(y.needsUpdate){var C=new mxCodec(mxUtils.createXmlDocument());C=C.encode(new mxGraphModel(y.root));this.editor.graph.saveViewState(y.viewState,C,null,l);EditorUi.removeChildNodes(F);mxUtils.setTextContent(F,Graph.compressNode(C));delete y.needsUpdate}else l&&(this.updatePageRoot(y),null!=y.viewState.backgroundImage&&(null!=y.viewState.backgroundImage.originalSrc?
y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.originalSrc,y):Graph.isPageLink(y.viewState.backgroundImage.src)&&(y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.src,y))),null!=y.viewState.backgroundImage&&null!=y.viewState.backgroundImage.originalSrc&&(C=new mxCodec(mxUtils.createXmlDocument()),C=C.encode(new mxGraphModel(y.root)),this.editor.graph.saveViewState(y.viewState,C,null,l),F=F.cloneNode(!1),mxUtils.setTextContent(F,
Graph.compressNode(C))));d(F)}return q};EditorUi.prototype.anonymizeString=function(d,f){for(var g=[],l=0;l<d.length;l++){var q=d.charAt(l);0<=EditorUi.ignoredAnonymizedChars.indexOf(q)?g.push(q):isNaN(parseInt(q))?q.toLowerCase()!=q?g.push(String.fromCharCode(65+Math.round(25*Math.random()))):q.toUpperCase()!=q?g.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(q)?g.push(" "):g.push("?"):g.push(f?"0":Math.round(9*Math.random()))}return g.join("")};EditorUi.prototype.anonymizePatch=
function(d){if(null!=d[EditorUi.DIFF_INSERT])for(var f=0;f<d[EditorUi.DIFF_INSERT].length;f++)try{var g=mxUtils.parseXml(d[EditorUi.DIFF_INSERT][f].data).documentElement.cloneNode(!1);null!=g.getAttribute("name")&&g.setAttribute("name",this.anonymizeString(g.getAttribute("name")));d[EditorUi.DIFF_INSERT][f].data=mxUtils.getXml(g)}catch(y){d[EditorUi.DIFF_INSERT][f].data=y.message}if(null!=d[EditorUi.DIFF_UPDATE]){for(var l in d[EditorUi.DIFF_UPDATE]){var q=d[EditorUi.DIFF_UPDATE][l];null!=q.name&&
delete d[EditorUi.DIFF_UPDATE][l]}mxUtils.isEmptyObject(d[EditorUi.DIFF_UPDATE])&&delete d[EditorUi.DIFF_UPDATE]}return d};EditorUi.prototype.anonymizeAttributes=function(d,f){if(null!=d.attributes)for(var g=0;g<d.attributes.length;g++)"as"!=d.attributes[g].name&&d.setAttribute(d.attributes[g].name,this.anonymizeString(d.attributes[g].value,f));if(null!=d.childNodes)for(g=0;g<d.childNodes.length;g++)this.anonymizeAttributes(d.childNodes[g],f)};EditorUi.prototype.anonymizeNode=function(d,f){f=d.getElementsByTagName("mxCell");
function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,l,q,y,F,C,H,G,aa){q=null!=q?q:!0;y=null!=y?y:!1;var da=this.editor.graph;if(f||!d&&null!=H&&/(\.svg)$/i.test(H.getTitle())){var ba=null!=da.themes&&"darkTheme"==da.defaultThemeName;G=!1;if(ba||null!=this.pages&&this.currentPage!=this.pages[0]){var Y=da.getGlobalVariable;da=this.createTemporaryGraph(ba?da.getDefaultStylesheet():da.getStylesheet());
G,aa);H=null!=H?H:this.getCurrentFile();d=this.createFileData(F,da,H,window.location.href,d,f,g,l,q,C,G);da!=this.editor.graph&&da.container.parentNode.removeChild(da.container);return d};EditorUi.prototype.getHtml=function(d,f,g,l,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var H=f.view.scale;y=Math.floor(F.x/H-f.view.translate.x);H=Math.floor(F.y/H-f.view.translate.y);F=f.background;null==
q&&(f=this.getBasenames().join(";"),0<f.length&&(C=EditorUi.drawHost+"/embed.js?s="+f));d.setAttribute("x0",y);d.setAttribute("y0",H)}null!=d&&(d.setAttribute("pan","1"),d.setAttribute("zoom","1"),d.setAttribute("resize","0"),d.setAttribute("fit","0"),d.setAttribute("border","20"),d.setAttribute("links","1"),null!=l&&d.setAttribute("edit",l));null!=q&&(q=q.replace(/&/g,"&amp;"));d=null!=d?Graph.zapGremlins(mxUtils.getXml(d)):"";l=Graph.compress(d);Graph.decompress(l)!=d&&(l=encodeURIComponent(d));
l+"</div>\n</div>\n"+(null==q?'<script type="text/javascript" src="'+C+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+q+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(d,f,g,l,q){f=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=q&&(q=q.replace(/&/g,"&amp;"));d={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){g=null;this.fileNode=f;this.pages=[];for(var l=0;l<d.length;l++)null==d[l].getAttribute("id")&&d[l].setAttribute("id",l),f=new DiagramPage(d[l]),null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[l+1])),this.pages.push(f),null!=urlParams["page-id"]&&f.getId()==urlParams["page-id"]&&(g=f);this.currentPage=null!=g?g:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];f=this.currentPage.node}"0"!=
urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(f.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(f);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var q=urlParams["layer-ids"].split(" ");f={};for(l=0;l<q.length;l++)f[q[l]]=!0;var y=this.editor.graph.getModel(),
F=y.getChildren(y.root);for(l=0;l<F.length;l++){var C=F[l];y.setVisible(C,f[C.id]||!1)}}catch(H){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,l,q,y,F,C,H,G,aa,da){try{l=null!=l?l:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,l,q,null,null,null,f);this.saveData(Y,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
fa){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ra=this.createDownloadRequest(R,d,l,fa,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ra}catch(u){this.handleError(u)}}))}else{var U=null,I=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
if(F||V==mxConstants.NONE)V=null;var Q=this.editor.graph.getSvg(V,null,null,null,null,l);g&&this.editor.graph.addSvgShadow(Q);this.editor.convertImages(Q,mxUtils.bind(this,mxUtils.bind(this,function(R){this.spinner.stop();I(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(R))})))}else Y=ba+".svg",U=this.getFileData(!1,!0,null,mxUtils.bind(this,function(R){this.spinner.stop();I(R)}),l)}}catch(R){this.handleError(R)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,l,q,y,F,C,H,
this.currentPage){O="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};H&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+O+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+l+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(da&&isFinite(da)?"&w="+da:"")+(ba&&isFinite(ba)?"&h="+ba:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var l=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
decodeURIComponent(urlParams.title):this.defaultFilename,!0);y.getHash=function(){return l};this.fileLoaded(y);"csv"==d.format&&this.importCsv(F,mxUtils.bind(this,function(da){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=d.update){var C=null!=d.interval?parseInt(d.interval):6E4,H=null,G=mxUtils.bind(this,function(){var da=this.currentPage;mxUtils.post(d.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ja){var U=new mxCellOverlay(ja.image||q.warningImage,ja.tooltip,ja.align,ja.valign,ja.offset);U.addListener(mxEvent.CLICK,function(I,V){l.alert(ja.tooltip)});return U}var g=null,l=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
d.hasAttribute("dy"))q.view.translate=new mxPoint(parseFloat(d.getAttribute("dx")||0),parseFloat(d.getAttribute("dy")||0))}else"fit"==d.nodeName&&(F=d.hasAttribute("max-scale")?parseFloat(d.getAttribute("max-scale")):1);d=d.nextSibling}}finally{y.endUpdate()}null!=F&&this.chromelessResize&&this.chromelessResize(!0,F)}return g};EditorUi.prototype.getCopyFilename=function(d,f){var g=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;d="";var l=g.lastIndexOf(".");0<=l&&(d=g.substring(l),g=
g.substring(0,l));if(f){f=g;var q=new Date;g=q.getFullYear();l=q.getMonth()+1;var y=q.getDate(),F=q.getHours(),C=q.getMinutes();q=q.getSeconds();g=f+(" "+(g+"-"+l+"-"+y+"-"+F+"-"+C+"-"+q))}return g=mxResources.get("copyOf",[g])+d};EditorUi.prototype.fileLoaded=function(d,f){var g=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var l=!1;this.hideDialog();null!=g&&(EditorUi.debug("File.closed",[g]),g.removeListener(this.descriptorChangedListener),g.close());
this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));l=!0;if(!this.isOffline()&&null!=d.getMode()){var y="1"==urlParams.sketch?"sketch":uiTheme;if(null==y)y="default";else if("sketch"==y||"min"==y)y+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:d.getMode().toUpperCase()+"-OPEN-FILE-"+d.getHash(),action:"size_"+d.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+y})}EditorUi.debug("File.opened",[d]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));
F.stack})}catch(C){}d=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=g?this.fileLoaded(g)||q():q()});f?d():this.handleError(F,mxResources.get("errorLoadingFile"),d,!0,null,null,!0)}else q();return l};EditorUi.prototype.getHashValueForPages=function(d,f){var g=0,l=new mxGraphModel,q=new mxCodec;null!=f&&(f.byteCount=0,f.attrCount=0,f.eltCount=0,f.nodeCount=0);for(var y=0;y<d.length;y++){this.updatePageRoot(d[y]);
var F=d[y].node.cloneNode(!1);F.removeAttribute("name");l.root=d[y].root;var C=q.encode(l);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(H,G,aa,da){return!da||"mxGeometry"!=H.nodeName&&"mxPoint"!=H.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?da&&"mxCell"==H.nodeName&&
"previous"==G?null:aa:Math.round(aa)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var l=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(l^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(l^=this.hashValue(y,
f,g)+this.hashValue(F,f,g))}}if(null!=d.childNodes)for(q=0;q<d.childNodes.length;q++)l=(l<<5)-l+this.hashValue(d.childNodes[q],f,g)<<0}else if(null!=d&&"function"!==typeof d){d=String(d);f=0;null!=g&&(g.byteCount+=d.length);for(q=0;q<d.length;q++)f=(f<<5)-f+d.charCodeAt(q)<<0;l^=f}return l};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(d,f,g,l,q,y,F){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||
if(null==d){var g=this.sidebar.palettes["L.scratchpad"];null==g&&(g=this.sidebar.palettes.search);null!=g&&(d=g[g.length-1].nextSibling)}d=null!=d?d:f.firstChild.nextSibling.nextSibling;g=f.lastChild;var l=g.previousSibling;f.insertBefore(g,d);f.insertBefore(l,g)};EditorUi.prototype.loadLibrary=function(d,f){var g=mxUtils.parseXml(d.getData());if("mxlibrary"==g.documentElement.nodeName){var l=JSON.parse(mxUtils.getTextContent(g.documentElement));this.libraryLoaded(d,l,g.documentElement.getAttribute("title"),
f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,l){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ja){0==ka.length&&d.isEditable()?
(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ja.appendChild(y)):this.addLibraryEntries(ka,ja)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=l?l:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var H=C.parentNode.previousSibling;l=H.getAttribute("title");
null!=l&&0<l.length&&".scratchpad"!=d.title&&H.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+l);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";H.style.position="relative";var aa=document.createElement("img");aa.setAttribute("src",Editor.crossImage);aa.setAttribute("title",mxResources.get("close"));aa.setAttribute("valign","absmiddle");aa.setAttribute("border","0");aa.style.position=
mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});l=aa.cloneNode(!1);l.setAttribute("src",Editor.plusImage);l.setAttribute("title",mxResources.get("add"));G.insertBefore(l,
G.firstChild);mxEvent.addListener(l,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(l=document.createElement("span"),l.setAttribute("title",mxResources.get("help")),l.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(l,"?"),mxEvent.addGestureListeners(l,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(l,G.firstChild))}H.appendChild(G);H.style.paddingRight=
18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var l=d[g],q=l.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==l.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,l.w,l.h,"",l.title||"",!1,null,!0))}else null!=l.xml&&(q=this.stringToCells(Graph.decompress(l.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
l.w,l.h,l.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=d?d[mxLanguage]||d.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground=
Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(d,f,g,l,q,y,F){d=new ImageDialog(this,d,f,g,l,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,l){l||(g=new ChangePageSetup(this,null,g),
g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,l,q){d=new LibraryDialog(this,d,f,g,l,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);
f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(l){l.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(l){this.actions.get("shapes").funct();mxEvent.consume(l)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,l,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?
l,q)}),aa,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Y(){ea.innerHTML="";for(var ka=0;ka<qa.length;ka++){var ja=document.createElement("option");mxUtils.write(ja,qa[ka].displayName);ja.value=ka;ea.appendChild(ja);ja=document.createElement("option");ja.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ja,"<"+qa[ka].email+">");ja.setAttribute("disabled","disabled");ea.appendChild(ja)}ja=document.createElement("option");mxUtils.write(ja,mxResources.get("addAccount"));ja.value=qa.length;
")"),ba=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(H.ownerEmail))}));this.showError(f,F,G,g,aa,null,null,y,ba,null,null,null,l?g:null)}else null!=g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,l,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/
50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},l,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};EditorUi.prototype.showBanner=function(d,f,g,l){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(l?"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");
F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";if(!l){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var H=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||l)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=
function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,l){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,
"tEXt","mxfile",encodeURIComponent(f))),0<l&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",l));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,l,q){var y="jpeg"==g?"jpg":g;l=this.getBaseFilename(l)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(l,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(d,f){d=new TextareaDialog(this,d,f,null,null,mxResources.get("close"));this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(d,f,g,l,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||
/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)d=l?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,
g,l);else{var F=document.createElement("a");y=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(l?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},
2E4),F.click(),F.parentNode.removeChild(F)}catch(H){}}else this.createEchoRequest(d,f,g,l,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,l,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(l?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,l=Math.ceil(g/1024),q=Array(l),
y=0;y<l;++y){for(var F=1024*y,C=Math.min(F+1024,g),H=Array(C-F),G=0;F<C;++G,++F)H[G]=d[F].charCodeAt(0);q[y]=new Uint8Array(H)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,l,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var H=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,aa){try{if("_blank"==aa)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,
g,l);else if(null!=g&&"text/html"==g.substring(0,9)){var da=new EmbedDialog(this,d);this.showDialog(da.container,450,240,!0,!0);da.init()}else{var ba=window.open("about:blank");null==ba?mxUtils.popup(d,!0):(ba.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),ba.document.close())}else aa==App.MODE_DEVICE||"download"==aa?this.doSaveLocalFile(d,G,g,l,null,C):null!=G&&0<G.length&&this.pickFolder(aa,mxUtils.bind(this,function(Y){try{this.exportFile(d,G,g,l,aa,Y)}catch(qa){this.handleError(qa)}}))}catch(Y){this.handleError(Y)}}),
mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,y,F,null,1<q,H,d,g,l);y=this.isServices(q)?q>H?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var l=window.open("about:blank");null==l||null==l.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"==f?l.document.write("<html>"+d+"</html>"):(d=g?d:btoa(unescape(encodeURIComponent(d))),l.document.write('<html><img style="max-width:100%;" src="data:'+
f+";base64,"+d+'"/></html>')):l.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),l.document.close())};var n=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(d){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;
var f=d(mxUtils.bind(this,function(l){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding=
4+"px";q=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=q.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(l)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var l=this.editor.graph.getAllTags();f.style.display=0<l.length?"":"none"}))}n.apply(this,arguments);this.editor.addListener("tagsDialogShown",
function(l){var q=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",q);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)q.apply(this);else{this.exportDialog=document.createElement("div");var y=g.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";
Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",q);document.body.appendChild(this.exportDialog)}mxEvent.consume(l)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(d,f,g,l,q){this.isLocalFileSave()?this.saveLocalFile(g,d,l,q,f):this.saveRequest(d,f,mxUtils.bind(this,function(y,F){return this.createEchoRequest(g,y,l,q,f,F)}),g,q,l)};EditorUi.prototype.saveRequest=function(d,f,g,l,q,y,F){F=null!=F?F:!mxClient.IS_IOS||!navigator.standalone;
var C=this.getServiceCount(!1);isLocalStorage&&C++;var H=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,aa){if("_blank"==aa||null!=G&&0<G.length){var da=g("_blank"==aa?null:G,aa==App.MODE_DEVICE||"download"==aa||null==aa||"_blank"==aa?"0":"1");null!=da&&(aa==App.MODE_DEVICE||"download"==aa||"_blank"==aa?da.simulate(document,"_blank"):this.pickFolder(aa,mxUtils.bind(this,function(ba){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=l)try{this.exportFile(l,G,y,!0,aa,
!1,!1,F,null,1<C,H,l,y,q);C=this.isServices(C)?4<C?390:280:160;this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,l,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba,Y){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();
g=null!=g?g:qa;var O=f?null:this.editor.graph.background;O==mxConstants.NONE&&(O=null);null==O&&0==f&&(O=aa?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var X=this.editor.graph.getSvg(O,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!ba,aa,da);l&&this.editor.graph.addSvgShadow(X);var ea=this.getBaseFilename()+(q?".drawio":"")+".svg";Y=null!=Y?Y:mxUtils.bind(this,function(U){this.isLocalFileSave()||U.length<=MAX_REQUEST_SIZE?this.saveData(ea,"svg",U,"image/svg+xml"):
(this.thumbImageCache={}),this.editor.convertImages(U,ka,this.thumbImageCache)):ka(U)});ba?this.embedFonts(X,ja):(this.editor.addFontCss(X),ja(X))}catch(U){this.handleError(U)}};EditorUi.prototype.addRadiobox=function(d,f,g,l,q,y,F){return this.addCheckbox(d,g,l,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,l,q,y,F,C){y=null!=y?y:!0;var H=document.createElement("input");H.style.marginRight="8px";H.style.marginTop="16px";H.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();
H.id=F;null!=C&&H.setAttribute("name",C);g&&(H.setAttribute("checked","checked"),H.defaultChecked=!0);l&&H.setAttribute("disabled","disabled");y&&(d.appendChild(H),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return H};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var l=this.getCurrentFile(),q="";null!=l&&l.getMode()!=App.MODE_DEVICE&&l.getMode()!=
App.MODE_BROWSER&&(q=window.location.href);var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";l=document.createElement("option");l.setAttribute("value","blank");mxUtils.write(l,mxResources.get("makeCopy"));y.appendChild(l);l=document.createElement("option");l.setAttribute("value","custom");mxUtils.write(l,mxResources.get("custom")+"...");y.appendChild(l);d.appendChild(y);mxEvent.addListener(y,
"')");F.innerHTML="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+":");var l=document.createElement("select");l.style.width="100px";l.style.padding="0px";l.style.marginLeft="8px";l.style.marginRight="10px";l.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));l.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));l.appendChild(q);
q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,mxResources.get("openInThisWindow"));l.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),l.appendChild(f));d.appendChild(l);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(H){y=H;g()});
mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return l.value},focus:function(){l.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,l,q,y,F){F=null!=F?F:[];l&&("https://viewer.diagrams.net"==
EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,l,q,y,F,C,
H,G){H=this.createUrlParameters(d,f,g,l,q,y,H);d=this.getCurrentFile();f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&H.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(H.push("open="+
g.substring(1)),g="");return(l&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<H.length?"?"+H.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,l,q,y,F,C,H,G,aa,da){this.getBasenames();var ba={};""!=q&&q!=mxConstants.NONE&&(ba.highlight=q);"auto"!==l&&(ba.target=l);G||(ba.lightbox=!1);ba.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||
mxUtils.htmlEntities(JSON.stringify(ba))+'"></div>';d=null!=d?"&fetch="+encodeURIComponent(d):"";da(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(d,f,g,l){var q=document.createElement("div");
ja.style.marginBottom="16px";F+=50;mxEvent.addListener(ea,"change",function(){ea.checked?ja.removeAttribute("disabled"):ja.setAttribute("disabled","disabled");ja.checked&&ea.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){l(C.checked?g:null,da.checked,ba.value,aa.getTarget(),aa.getColor(),Y.checked,qa.checked,O.checked,X.checked,ea.checked,null!=ka?ka.getLink():null)}),null,d,f);
this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=function(d,f,g,l,q,y,F,C){var H=document.createElement("div");H.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";H.appendChild(G);var aa=this.getCurrentFile();d=0;if(null==aa||aa.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";
null,mxResources.get(null!=I?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(I.container,300,80,!0,!1);I.init()}))}))}var ba=null,Y=null;if(null!=g||null!=l)d+=30,mxUtils.write(H,mxResources.get("width")+":"),ba=document.createElement("input"),ba.setAttribute("type","text"),ba.style.marginRight="16px",ba.style.width="50px",ba.style.marginLeft="6px",ba.style.marginRight="16px",ba.style.marginBottom="10px",ba.value="100%",H.appendChild(ba),mxUtils.write(H,mxResources.get("height")+
":"),Y=document.createElement("input"),Y.setAttribute("type","text"),Y.style.width="50px",Y.style.marginLeft="6px",Y.style.marginBottom="10px",Y.value=l+"px",H.appendChild(Y),mxUtils.br(H);var qa=this.addLinkSection(H,y);g=null!=this.pages&&1<this.pages.length;var O=null;if(null==aa||aa.constructor!=window.DriveFile||f)O=this.addCheckbox(H,mxResources.get("allPages"),g,!g);var X=this.addCheckbox(H,mxResources.get("lightbox"),!0,null,null,!y),ea=this.addEditButton(H,X),ka=ea.getEditInput();y&&(ka.style.marginLeft=
!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,l,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";
C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var H=document.createElement("input");H.setAttribute("type","text");H.style.marginRight="16px";H.style.width="60px";H.style.marginLeft="4px";H.value=this.lastExportBorder||"0";y.appendChild(H);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),aa=l?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),
Editor.defaultIncludeDiagram);F=this.editor.graph;var da=l?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=da&&(da.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var ba=parseInt(C.value)/100||1,Y=parseInt(H.value)||0;g(!G.checked,null!=aa?aa.checked:!1,null!=da?da.checked:!1,ba,Y)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(l?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
function(d,f,g,l,q,y,F,C,H){F=null!=F?F:Editor.defaultIncludeDiagram;var G=document.createElement("div");G.style.whiteSpace="nowrap";var aa=this.editor.graph,da="jpeg"==C?220:300,ba=document.createElement("h3");mxUtils.write(ba,d);ba.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(ba);mxUtils.write(G,mxResources.get("zoom")+":");var Y=document.createElement("input");Y.setAttribute("type","text");Y.style.marginRight="16px";Y.style.width="60px";Y.style.marginLeft=
V.checked,R.checked,fa.checked,qa.value,X.checked,!1,ra.value,null!=Q?Q.checked:null,null!=I?I.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,l);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,l,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var H=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&l,!l),aa=this.addCheckbox(y,g),da=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,da),Y=ba.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),O=this.addCheckbox(y,mxResources.get("layers"),
da.checked,ba.getLink(),O.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,l,q,y,F,C){function H(Y){var qa=" ",O="";l&&(qa=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=aa?"&page="+aa:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",O+="cursor:pointer;");d&&(O+="max-width:100%;");var X="";g&&(X=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Y+'"'+X+(""!=O?' style="'+O+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),aa=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Y){var qa=l?this.getFileData(!0):null;
Y=this.createImageDataUri(Y,qa,"png");H(Y)}),null,null,null,mxUtils.bind(this,function(Y){C({message:mxResources.get("unknownError")})}),null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var da="";g&&(da="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var ba=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(l?"1":"0")+da+"&xml="+encodeURIComponent(f));ba.send(mxUtils.bind(this,function(){200<=
ba.getStatus()&&299>=ba.getStatus()?H("data:image/png;base64,"+ba.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,f,g,l,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),H=C.getElementsByTagName("a");if(null!=H)for(var G=0;G<H.length;G++){var aa=H[G].getAttribute("href");null!=aa&&"#"==aa.charAt(0)&&"_blank"==H[G].getAttribute("target")&&H[G].removeAttribute("target")}l&&
C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var da=" ",ba="";l&&(da="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(q?"&edit=_blank":"")+(y?"&layers=1":
"")+"');}})(this);\"",ba+="cursor:pointer;");d&&(ba+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Y){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Y))+'"'+(""!=ba?' style="'+ba+'"':"")+da+"/>")}))}else ba="",l&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
d.nodeName)g=d;else if("mxfile"==d.nodeName){var l=d.getElementsByTagName("diagram");if(0<l.length){g=l[0];var q=f.getGlobalVariable;f.getGlobalVariable=function(y){return"page"==y?g.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==y?1:q.apply(this,arguments)}}}null!=g&&(d=Editor.parseDiagramNode(g))}l=this.editor.graph;try{this.editor.graph=f,this.editor.setGraphXml(d)}catch(y){}finally{this.editor.graph=l}return d};EditorUi.prototype.getPngFileProperties=function(d){var f=
1,g=0;if(null!=d){if(d.hasAttribute("scale")){var l=parseFloat(d.getAttribute("scale"));!isNaN(l)&&0<l&&(f=l)}d.hasAttribute("border")&&(l=parseInt(d.getAttribute("border")),!isNaN(l)&&0<l&&(g=l))}return{scale:f,border:g}};EditorUi.prototype.getEmbeddedPng=function(d,f,g,l,q){try{var y=this.editor.graph,F=null!=y.themes&&"darkTheme"==y.defaultThemeName,C=null;if(null!=g&&0<g.length)y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet()),document.body.appendChild(y.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,
f&&f(aa)}),null,null,l,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(aa){null!=f&&f(aa)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba){C=null!=C?C:!0;aa=null!=aa?aa:0;F=null!=H?H:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,aa,null,null,y,null,null,null,f.shadowVisible||da,null,ba,"diagram");(f.shadowVisible||da)&&f.addSvgShadow(y,null,null,0==aa);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Y=mxUtils.bind(this,
function(qa){qa=(l?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(O){Y(O)})):Y(qa)}));else return Y(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(l){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba){H=null!=H?H:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Y=this.editor.graph.isSelectionEmpty();g=null!=g?g:Y;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
q?this.getFileData(!0,null,null,null,g,C):null,H,null==this.pages||0==this.pages.length,aa)}catch(O){this.handleError(O)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,l,null,null,y,F,G,da,ba)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,l,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
this.currentPage,ba))}}else if(0<da.length){y=[];var Y=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[da[0].getAttribute("id")]=this.pages[0].getId(),aa=Editor.parseDiagramNode(da[0]),l=!1,Y=1);for(;Y<da.length;Y++){var qa=da[Y].getAttribute("id");da[Y].removeAttribute("id");var O=this.updatePageRoot(new DiagramPage(da[Y]));d[qa]=da[Y].getAttribute("id");var X=this.pages.length;null==O.getName()&&O.setName(mxResources.get("pageWithNumber",[X+1]));H.model.execute(new ChangePage(this,
O,O,X,!0));y.push(O)}this.updatePageLinks(d,y)}}if(null!=aa&&"mxGraphModel"===aa.nodeName){C=H.importGraphModel(aa,f,g,l);if(null!=C)for(Y=0;Y<C.length;Y++)this.updatePageLinksForCell(d,C[Y]);var ea=H.parseBackgroundImage(aa.getAttribute("backgroundImage"));if(null!=ea&&null!=ea.originalSrc){this.updateBackgroundPageLink(d,ea);var ka=new ChangePageSetup(this,null,ea);ka.ignoreColor=!0;H.model.execute(ka)}}F&&this.insertHandler(C,null,null,H.defaultVertexStyle,H.defaultEdgeStyle,!1,!0)}finally{H.model.endUpdate()}}}catch(ja){if(q)throw ja;
this.handleError(ja)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(l){}};EditorUi.prototype.updatePageLinksForCell=
function(d,f){var g=document.createElement("div"),l=this.editor.graph,q=l.getLinkForCell(f);null!=q&&l.setLinkForCell(f,this.updatePageLink(d,q));if(l.isHtmlLabel(f)){g.innerHTML=l.sanitizeHtml(l.getLabel(f));for(var y=g.getElementsByTagName("a"),F=!1,C=0;C<y.length;C++)q=y[C].getAttribute("href"),null!=q&&(y[C].setAttribute("href",this.updatePageLink(d,q)),F=!0);F&&l.labelChanged(f,g.innerHTML)}for(C=0;C<l.model.getChildCount(f);C++)this.updatePageLinksForCell(d,l.model.getChildAt(f,C))};EditorUi.prototype.updatePageLink=
function(d,f){if(Graph.isPageLink(f)){var g=d[f.substring(f.indexOf(",")+1)];f=null!=g?"data:page/id,"+g:null}else if("data:action/json,"==f.substring(0,17))try{var l=JSON.parse(f.substring(17));if(null!=l.actions){for(var q=0;q<l.actions.length;q++){var y=l.actions[q];if(null!=y.open&&Graph.isPageLink(y.open)){var F=y.open.substring(y.open.indexOf(",")+1);g=d[F];null!=g?y.open="data:page/id,"+g:null==this.getPageById(F)&&delete y.open}}f="data:action/json,"+JSON.stringify(l)}}catch(C){}return f};
EditorUi.prototype.isRemoteVisioFormat=function(d){return/(\.v(sd|dx))($|\?)/i.test(d)||/(\.vs(s|x))($|\?)/i.test(d)};EditorUi.prototype.importVisio=function(d,f,g,l,q){l=null!=l?l:d.name;g=null!=g?g:mxUtils.bind(this,function(F){this.handleError(F)});var y=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var F=this.isRemoteVisioFormat(l);try{var C="UNKNOWN-VISIO",H=l.lastIndexOf(".");if(0<=H&&H<l.length)C=l.substring(H+1).toUpperCase();else{var G=l.lastIndexOf("/");0<=
G&&G<l.length&&(l=l.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+l,label:F?"remote":"local"})}catch(da){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,l);var aa=new XMLHttpRequest;aa.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(l)?"?stencil=1":""));aa.responseType="blob";this.addRemoteServiceSecurityCheck(aa);
null!=q&&aa.setRequestHeader("x-convert-custom",q);aa.onreadystatechange=mxUtils.bind(this,function(){if(4==aa.readyState)if(200<=aa.status&&299>=aa.status)try{var da=aa.response;if("text/xml"==da.type){var ba=new FileReader;ba.onload=mxUtils.bind(this,function(Y){try{f(Y.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});ba.readAsText(da)}else this.doImportVisio(da,f,g,l)}catch(Y){g(Y)}else try{""==aa.responseType||"text"==aa.responseType?g({message:aa.responseText}):(ba=
new FileReader,ba.onload=function(){g({message:JSON.parse(ba.result).Message})},ba.readAsText(aa.response))}catch(Y){g({})}});aa.send(F)}else try{this.doImportVisio(d,f,g,l)}catch(da){g(da)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,
function(q){this.handleError(q)});var l=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?l():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",l))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=
!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var l=mxUtils.bind(this,
console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(l,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
function(){mxscript("js/orgchart/mxOrgChartLayout.js",l)})})})}):mxscript("js/extensions.min.js",l))};EditorUi.prototype.generateMermaidImage=function(d,f,g,l){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=
F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");if(0<C.length){var H=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(H)||isNaN(G))try{var aa=C[0].getAttribute("viewBox").split(/\s+/);H=parseFloat(aa[2]);G=parseFloat(aa[3])}catch(da){H=H||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),H,G)}else l({message:mxResources.get("invalidInput")})}catch(da){l(da)}})}catch(F){l(F)}};
"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,l){function q(C,H,G){c1=C>>2;c2=(C&3)<<4|H>>4;c3=(H&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+
f)g(this.response);else{var H=new FileReader;H.readAsDataURL(this.response);H.onloadend=function(G){var aa=new Image;aa.onload=function(){try{var da=aa.width,ba=aa.height;if(0==da&&0==ba){var Y=H.result,qa=Y.indexOf(","),O=decodeURIComponent(escape(atob(Y.substring(qa+1)))),X=mxUtils.parseXml(O).getElementsByTagName("svg");0<X.length&&(da=parseFloat(X[0].getAttribute("width")),ba=parseFloat(X[0].getAttribute("height")))}g(H.result,da,ba)}catch(ea){l(ea)}};aa.src=H.result};H.onerror=function(G){l(G)}}else l(C)};
F.onerror=function(C){l(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var l=this.editor.graph,q=null;l.getModel().beginUpdate();try{q=l.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),l.updateCellSize(q,!0)}finally{l.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,l,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?
Y);H.setSelectionCell(H.insertVertex(null,null,"",H.snap(f),H.snap(g),qa,ba,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";"))}}),mxUtils.bind(this,function(){var ba=null;H.getModel().beginUpdate();try{ba=H.insertVertex(H.getDefaultParent(),null,d,H.snap(f),H.snap(g),1,1,"text;"+(l?"html=1;":"")),H.updateCellSize(ba),H.fireEvent(new mxEventObject("textInserted","cells",[ba]))}finally{H.getModel().endUpdate()}H.setSelectionCell(ba)}))}else{d=
Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,function(ba){this.editor.graph.setSelectionCells(this.importXml(ba,f,g,y,null,C))}),mxUtils.bind(this,function(ba){this.handleError(ba)}));else{H=this.editor.graph;q=null;H.getModel().beginUpdate();try{q=H.insertVertex(H.getDefaultParent(),null,"",H.snap(f),H.snap(g),1,1,"text;whiteSpace=wrap;"+(l?"html=1;":""));
"none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.getFileContent(this,F,C,H)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.deleteFile(this,F,C,H)});if(!f){var l=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=
function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=l;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(d,f,g){var l=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,H=!1;y.forEach(function(G,aa){G=
aa.name.toLowerCase();"diagram/diagram.xml"==G?(H=!0,aa.async("string").then(function(da){0==da.indexOf("<mxfile ")?f(da):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=aa))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&l.isRemoteFileFormat(G,d.name)?l.isOffline()?l.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):l.parseFileData(G,mxUtils.bind(this,function(aa){4==aa.readyState&&(200<=aa.status&&299>=aa.status?f(aa.responseText):
g())}),d.name):g()}):H||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,l,q,y,F,C,H,G,aa,da){G=null!=G?G:!0;var ba=!1,Y=null,qa=mxUtils.bind(this,function(O){var X=null;null!=O&&"<mxlibrary"==O.substring(0,10)?this.loadLibrary(new LocalLibrary(this,O,F)):X=this.importXml(O,g,l,G,null,null!=da?mxEvent.isControlDown(da):null);null!=C&&
C(X)});"image"==f.substring(0,5)?(H=!1,"image/png"==f.substring(0,9)&&(f=aa?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Y=this.importXml(f,g,l,G,null,null!=da?mxEvent.isControlDown(da):null),H=!0)),H||(f=this.editor.graph,H=d.indexOf(";"),0<H&&(d=d.substring(0,H)+d.substring(d.indexOf(",",H+1))),G&&f.isGridEnabled()&&(g=f.snap(g),l=f.snap(l)),Y=[f.insertVertex(null,null,"",g,l,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
q,F)):0==d.indexOf("PK")&&null!=H?(ba=!0,this.importZipFile(H,qa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,l,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),g,l,!0,null,G,null,null!=da?mxEvent.isControlDown(da):null));ba||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba){l=null!=l?l:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=
if(null==ta||0==ta.length)Aa.setAttribute("viewBox","0 0 "+sa+" "+Ba);else if(isNaN(sa)||isNaN(Ba)){var Na=ta.split(" ");3<Na.length&&(sa=parseFloat(Na[2]),Ba=parseFloat(Na[3]))}N=Editor.createSvgDataUri(mxUtils.getXml(Aa));var Ca=Math.min(1,Math.min(l/Math.max(1,sa)),l/Math.max(1,Ba)),Qa=q(N,ra.type,f+la*U,g+la*U,Math.max(1,Math.round(sa*Ca)),Math.max(1,Math.round(Ba*Ca)),ra.name);if(isNaN(sa)||isNaN(Ba)){var Ua=new Image;Ua.onload=mxUtils.bind(this,function(){sa=Math.max(1,Ua.width);Ba=Math.max(1,
this.loadImage(J.target.result,mxUtils.bind(this,function(va){this.resizeImage(va,J.target.result,mxUtils.bind(this,function(Aa,sa,Ba){R(la,mxUtils.bind(this,function(){if(null!=Aa&&Aa.length<G){var ta=qa&&this.isResampleImageSize(ra.size,aa)?Math.min(1,Math.min(l/sa,l/Ba)):1;return q(Aa,ra.type,f+la*U,g+la*U,Math.round(sa*ta),Math.round(Ba*ta),ra.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),qa,l,aa,ra.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else N=
function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==l||f?this.showDialog((new ConfirmDialog(this,
mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,l)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var l=new FileReader;l.onload=mxUtils.bind(this,function(){this.parseFileData(l.result,
f,g)});l.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var l=new XMLHttpRequest;l.open("POST",OPEN_URL);l.setRequestHeader("Content-Type","application/x-www-form-urlencoded");l.onreadystatechange=function(){f(l)};l.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
f};EditorUi.prototype.resizeImage=function(d,f,g,l,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),H=Math.max(1,d.height);if(l&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,H/q);if(1<G){var aa=Math.round(C/G),da=Math.round(H/G),ba=document.createElement("canvas");ba.width=aa;ba.height=da;ba.getContext("2d").drawImage(d,0,0,aa,da);var Y=ba.toDataURL();if(Y.length<f.length){var qa=document.createElement("canvas");qa.width=aa;qa.height=da;var O=qa.toDataURL();
Y!==O&&(f=Y,C=aa,H=da)}}}catch(X){}g(f,C,H)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var l=new Image;l.onload=function(){l.width=0<l.width?l.width:120;l.height=0<l.height?l.height:120;f(l)};null!=g&&(l.onerror=g);l.src=d}catch(q){if(null!=g)g(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?
"mermaidData"),null!=ka)this.editMermaidData(X,ea,ka);else{var ja=f.getCellStyle(X);"1"==mxUtils.getValue(ja,"metaEdit","0")?d.showDataDialog(X):g.apply(this,arguments)}}catch(U){d.handleError(U)}};f.getLinkTitle=function(X){return d.getLinkTitle(X)};f.customLinkClicked=function(X){var ea=!1;try{d.handleCustomLink(X),ea=!0}catch(ka){d.handleError(ka)}return ea};var l=f.parseBackgroundImage;f.parseBackgroundImage=function(X){var ea=l.apply(this,arguments);null!=ea&&null!=ea.src&&Graph.isPageLink(ea.src)&&
mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,l=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){l=!0;break}if(!l){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(H,G,aa,da,ba,Y){d.insertImage(H,ba,Y)},function(){},function(H){return"image/"==H.type.substring(0,6)},function(H){for(var G=0;G<H.length;G++)H[G]()});
"false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var l=!1;this.keyHandler.bindControlKey(88,
null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||l||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",
f.container.appendChild(g),l=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!l||224!=F&&17!=F&&91!=F&&93!=F||(l=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),
d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(l,q,y){null==l[q]&&(l[q]=y)},g=this.editor.graph;
this.editor.exportToCanvas(mxUtils.bind(this,function(l,q){try{this.spinner.stop();var y=this.createImageDataUri(l,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,F,C,mxUtils.bind(this,function(H){this.handleError(H)}))}catch(H){this.handleError(H)}}),null,null,null,mxUtils.bind(this,function(l){this.spinner.stop();this.handleError(l)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,
null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(l){this.handleError(l)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,l){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](l)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerHTML="";else{var l=
mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(l));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(l,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),
f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,l){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),l);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,
function(d,f,g,l){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var H=decodeURIComponent(F);this.isCompatibleString(H)&&(C=!0,F=H)}catch(da){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,
y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(da){console.log("Miro import error:",da)}this.pasteXml(y,l,C,d);try{mxEvent.consume(d)}catch(da){}}else if(!g){var aa=this.editor.graph;aa.lastPasteXml=null;aa.pasteCounter=0}}catch(da){this.handleError(da)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=
0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(l){null!=f&&(f.parentNode.removeChild(f),f=null);l.stopPropagation();l.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(l){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());l.stopPropagation();l.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(l){null!=f&&(f.parentNode.removeChild(f),
f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<l.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(l.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(l)&&!mxEvent.isShiftDown(l)):this.openFiles(l.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(l);if(null==q){var y=null!=l.dataTransfer?l.dataTransfer:l.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):
(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?l.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,
"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}l.stopPropagation();l.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var l=document.body;var q=document.documentElement;var y=(l.clientWidth||q.clientWidth)-3;l=Math.max(l.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,l=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border=
"3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,l-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),
l=new mxGraphModel;g.decode(f,l);f=l.getChildAt(l.getRoot(),0);for(g=0;g<l.getChildCount(f);g++)d.push(l.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,l,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,
10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,l);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(H){this.handleError(H,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,l)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();
(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,l)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,l);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==
d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,l)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,l=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,l,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=
0;g<d.length;g++)mxUtils.bind(this,function(l){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,l.name,l,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();this.handleError(y);window.openFile=null});"image"!==l.type.substring(0,5)&&"application/pdf"!==l.type||"image/svg"===l.type.substring(0,9)?q.readAsText(l):q.readAsDataURL(l)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,l,q){var y=this.getCurrentFile(),
F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,d,f||this.defaultFilename,g,l,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=l)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=l)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),
0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var l=this.editor.graph,q=l.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));l.model.isEdge(d)&&
(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=l.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(l.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=
this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,l,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=l?l:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var l=f.background;if(null==l||l==mxConstants.NONE)l=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,l,1,this.embedExportBorder)}else d||
g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,l=!1,q=null,y=mxUtils.bind(this,function(H,G){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayoutList(G.layouts);return}if("prompt"==G.action){this.spinner.stop();var Y=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(P){null!=P?F.postMessage(JSON.stringify({event:"prompt",value:P,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",message:G}),"*")},null!=G.titleKey?
mxResources.get(G.titleKey):G.title);this.showDialog(Y.container,300,80,!0,!1);Y.init();return}if("draft"==G.action){var qa=da(G.xml);this.spinner.stop();Y=new DraftDialog(this,mxResources.get("draftFound",[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",message:G}),"*")}),G.editKey?
mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),"*")}):null);this.showDialog(Y.container,640,480,!0,!1,mxUtils.bind(this,function(P){P&&this.actions.get("exit").funct()}));try{Y.init()}catch(P){F.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();var O=1==G.enableRecent,
X=1==G.enableSearch,ea=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ja=new TemplatesDialog(this,function(P,Z,oa){P=P||this.emptyDiagramXml;F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa.url,libs:oa.libs,builtIn:null!=oa.info&&null!=oa.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=ka?ka.id:null,O?mxUtils.bind(this,
function(P,Z,oa){this.remoteInvoke("getRecentDiagrams",[oa],null,P,Z)}):null,X?mxUtils.bind(this,function(P,Z,oa,va){this.remoteInvoke("searchDiagrams",[P,va],null,Z,oa)}):null,mxUtils.bind(this,function(P,Z,oa){this.remoteInvoke("getFileContent",[P.url],null,Z,oa)}),null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,!1,!1,!0,!0);this.showDialog(ja.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}Y=new NewDialog(this,
!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(P,Z,oa,va){P=P||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa,libs:va,builtIn:!0,message:G}),"*"):(d(P,H,P!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,O?mxUtils.bind(this,function(P){this.remoteInvoke("getRecentDiagrams",[null],null,P,function(){P(null,"Network Error!")})}):
null,X?mxUtils.bind(this,function(P,Z){this.remoteInvoke("searchDiagrams",[P,null],null,Z,function(){Z(null,"Network Error!")})}):null,mxUtils.bind(this,function(P,Z,oa){F.postMessage(JSON.stringify({event:"template",docUrl:P,info:Z,name:oa}),"*")}),null,null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(P){this.sidebar.hideTooltip();P&&this.actions.get("exit").funct()}));
Y.init();return}if("textContent"==G.action){var U=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:U,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var I=null!=G.messageKey?mxResources.get(G.messageKey):G.message;null==
G.show||G.show?this.spinner.spin(document.body,I):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var V=null!=G.xml?G.xml:this.getFileData(!0);
this.editor.graph.setEnabled(!1);var Q=this.editor.graph,R=mxUtils.bind(this,function(P){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=P;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),fa=mxUtils.bind(this,function(P){null==P&&(P=Editor.blankImage);"xmlpng"==G.format&&(P=Editor.writeGraphModelToPng(P,"tEXt","mxfile",encodeURIComponent(V)));Q!=this.editor.graph&&Q.container.parentNode.removeChild(Q.container);R(P)}),
la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ra=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var P=Q.getGlobalVariable;Q=this.createTemporaryGraph(Q.getStylesheet());for(var Z,oa=0;oa<this.pages.length;oa++)if(this.pages[oa].getId()==la){Z=this.updatePageRoot(this.pages[oa]);break}null==Z&&(Z=this.currentPage);Q.getGlobalVariable=function(Ba){return"page"==Ba?Z.getName():"pagenumber"==
Ba?1:P.apply(this,arguments)};document.body.appendChild(Q.container);Q.model.setRoot(Z.root)}if(null!=G.layerIds){var va=Q.model,Aa=va.getChildCells(va.getRoot()),sa={};for(oa=0;oa<G.layerIds.length;oa++)sa[G.layerIds[oa]]=!0;for(oa=0;oa<Aa.length;oa++)va.setVisible(Aa[oa],sa[Aa[oa].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ba){fa(Ba.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){fa(null)}),null,null,G.scale,G.transparent,G.shadow,null,Q,G.border,
null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(V),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ra)},0):ra()):ra()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,
G.action){ba=G.toSketch;l=1==G.autosave;this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var u=Editor.sketchMode;this.doSetSketchMode(G.rough);u!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(u=Editor.darkMode,this.doSetDarkMode(G.dark),
function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),S=mxUtils.bind(this,function(P,Z){g=!0;try{d(P,Z,null,ba)}catch(oa){this.handleError(oa)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=W();l&&null==f&&(f=mxUtils.bind(this,function(oa,va){oa=W();oa==q||g||(va=this.createLoadMessage("autosave"),va.xml=oa,(window.opener||window.parent).postMessage(JSON.stringify(va),"*"));q=oa}),this.editor.graph.model.addListener(mxEvent.CHANGE,
href:H,target:G,allowOpener:aa}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var l="1"==
urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,l);f.setAttribute("title",l);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),d.appendChild(f),"1"==urlParams.saveAndExit&&
":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(d,f){for(var g=this.editor.graph,l=g.getSelectionCells(),q=0;q<d.length;q++){var y=new window[d[q].layout](g);if(null!=d[q].config)for(var F in d[q].config)y[F]=
d[q].config[F];this.executeLayout(function(){y.execute(g.getDefaultParent(),0==l.length?null:l)},q==d.length-1,f)}};EditorUi.prototype.importCsv=function(d,f){try{var g=d.split("\n"),l=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,qa=null,O=null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",I="auto",V=null,Q=null,R=40,fa=40,la=100,ra=0,u=function(){null!=f?f(ma):(H.setSelectionCells(ma),H.scrollCellToVisible(H.getSelectionCell()))},
J=H.getFreeInsertPoint(),N=J.x,W=J.y;J=W;var S=null,P="auto";ka=null;for(var Z=[],oa=null,va=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),Aa++;if("#"!=d.charAt(1)){var sa=d.indexOf(":");if(0<sa){var Ba=mxUtils.trim(d.substring(1,sa)),ta=mxUtils.trim(d.substring(sa+1));"label"==Ba?S=H.sanitizeHtml(ta):"labelname"==Ba&&0<ta.length&&"-"!=ta?Y=
ta:"labels"==Ba&&0<ta.length&&"-"!=ta?O=JSON.parse(ta):"style"==Ba?aa=ta:"parentstyle"==Ba?X=ta:"unknownStyle"==Ba&&"-"!=ta?qa=ta:"stylename"==Ba&&0<ta.length&&"-"!=ta?ba=ta:"styles"==Ba&&0<ta.length&&"-"!=ta?da=JSON.parse(ta):"vars"==Ba&&0<ta.length&&"-"!=ta?G=JSON.parse(ta):"identity"==Ba&&0<ta.length&&"-"!=ta?ea=ta:"parent"==Ba&&0<ta.length&&"-"!=ta?ka=ta:"namespace"==Ba&&0<ta.length&&"-"!=ta?ja=ta:"width"==Ba?U=ta:"height"==Ba?I=ta:"left"==Ba&&0<ta.length?V=ta:"top"==Ba&&0<ta.length?Q=ta:"ignore"==
Ba?va=ta.split(","):"connect"==Ba?Z.push(JSON.parse(ta)):"link"==Ba?oa=ta:"padding"==Ba?ra=parseFloat(ta):"edgespacing"==Ba?R=parseFloat(ta):"nodespacing"==Ba?fa=parseFloat(ta):"levelspacing"==Ba?la=parseFloat(ta):"layout"==Ba&&(P=ta)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));var Na=this.editor.csvToArray(g[Aa].replace(/\r$/,""));sa=d=null;Ba=[];for(ta=0;ta<Na.length;ta++)ea==Na[ta]&&(d=ta),ka==Na[ta]&&(sa=ta),Ba.push(mxUtils.trim(Na[ta]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,
"").replace(/_+$/,""));null==S&&(S="%"+Ba[0]+"%");if(null!=Z)for(var Ca=0;Ca<Z.length;Ca++)null==C[Z[Ca].to]&&(C[Z[Ca].to]={});ea=[];for(ta=Aa+1;ta<g.length;ta++){var Qa=this.editor.csvToArray(g[ta].replace(/\r$/,""));if(null==Qa){var Ua=40<g[ta].length?g[ta].substring(0,40)+"...":g[ta];throw Error(Ua+" ("+ta+"):\n"+mxResources.get("containsValidationErrors"));}0<Qa.length&&ea.push(Qa)}H.model.beginUpdate();try{for(ta=0;ta<ea.length;ta++){Qa=ea[ta];var Ka=null,bb=null!=d?ja+Qa[d]:null;null!=bb&&(Ka=
H.model.getCell(bb));g=null!=Ka;var Va=new mxCell(S,new mxGeometry(N,J,0,0),aa||"whiteSpace=wrap;html=1;");Va.vertex=!0;Va.id=bb;Ua=null!=Ka?Ka:Va;for(var $a=0;$a<Qa.length;$a++)H.setAttributeForCell(Ua,Ba[$a],Qa[$a]);if(null!=Y&&null!=O){var z=O[Ua.getAttribute(Y)];null!=z&&H.labelChanged(Ua,z)}if(null!=ba&&null!=da){var L=da[Ua.getAttribute(ba)];null!=L&&(Ua.style=L)}H.setAttributeForCell(Ua,"placeholders","1");Ua.style=H.replacePlaceholders(Ua,Ua.style,G);g?(0>mxUtils.indexOf(y,Ka)&&y.push(Ka),
H.fireEvent(new mxEventObject("cellsInserted","cells",[Ka]))):H.fireEvent(new mxEventObject("cellsInserted","cells",[Va]));Ka=Va;if(!g)for(Ca=0;Ca<Z.length;Ca++)C[Z[Ca].to][Ka.getAttribute(Z[Ca].to)]=Ka;null!=oa&&"link"!=oa&&(H.setLinkForCell(Ka,Ka.getAttribute(oa)),H.setAttributeForCell(Ka,oa,null));var M=this.editor.graph.getPreferredSizeForCell(Ka);ka=null!=sa?H.model.getCell(ja+Qa[sa]):null;if(Ka.vertex){Ua=null!=ka?0:N;Aa=null!=ka?0:W;null!=V&&null!=Ka.getAttribute(V)&&(Ka.geometry.x=Ua+parseFloat(Ka.getAttribute(V)));
null!=Q&&null!=Ka.getAttribute(Q)&&(Ka.geometry.y=Aa+parseFloat(Ka.getAttribute(Q)));var T="@"==U.charAt(0)?Ka.getAttribute(U.substring(1)):null;Ka.geometry.width=null!=T&&"auto"!=T?parseFloat(Ka.getAttribute(U.substring(1))):"auto"==U||"auto"==T?M.width+ra:parseFloat(U);var ca="@"==I.charAt(0)?Ka.getAttribute(I.substring(1)):null;Ka.geometry.height=null!=ca&&"auto"!=ca?parseFloat(ca):"auto"==I||"auto"==ca?M.height+ra:parseFloat(I);J+=Ka.geometry.height+fa}g?(null==F[bb]&&(F[bb]=[]),F[bb].push(Ka)):
(l.push(Ka),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ka,ka),q.push(ka)):y.push(H.addCell(Ka)))}for(ta=0;ta<q.length;ta++)T="@"==U.charAt(0)?q[ta].getAttribute(U.substring(1)):null,ca="@"==I.charAt(0)?q[ta].getAttribute(I.substring(1)):null,"auto"!=U&&"auto"!=T||"auto"!=I&&"auto"!=ca||H.updateGroupBounds([q[ta]],ra,!0);var ia=y.slice(),ma=y.slice();for(Ca=0;Ca<Z.length;Ca++){var pa=Z[Ca];for(ta=0;ta<l.length;ta++){Ka=l[ta];var ua=mxUtils.bind(this,function(Ea,La,Ta){var Wa=La.getAttribute(Ta.from);
if(null!=Wa&&""!=Wa){Wa=Wa.split(",");for(var fb=0;fb<Wa.length;fb++){var gb=C[Ta.to][Wa[fb]];if(null==gb&&null!=qa){gb=new mxCell(Wa[fb],new mxGeometry(N,W,0,0),qa);gb.style=H.replacePlaceholders(La,gb.style,G);var ib=this.editor.graph.getPreferredSizeForCell(gb);gb.geometry.width=ib.width+ra;gb.geometry.height=ib.height+ra;C[Ta.to][Wa[fb]]=gb;gb.vertex=!0;gb.id=Wa[fb];y.push(H.addCell(gb))}if(null!=gb){ib=Ta.label;null!=Ta.fromlabel&&(ib=(La.getAttribute(Ta.fromlabel)||"")+(ib||""));null!=Ta.sourcelabel&&
(ib=H.replacePlaceholders(La,Ta.sourcelabel,G)+(ib||""));null!=Ta.tolabel&&(ib=(ib||"")+(gb.getAttribute(Ta.tolabel)||""));null!=Ta.targetlabel&&(ib=(ib||"")+H.replacePlaceholders(gb,Ta.targetlabel,G));var tb="target"==Ta.placeholders==!Ta.invert?gb:Ea;tb=null!=Ta.style?H.replacePlaceholders(tb,Ta.style,G):H.createCurrentEdgeStyle();ib=H.insertEdge(null,null,ib||"",Ta.invert?gb:Ea,Ta.invert?Ea:gb,tb);if(null!=Ta.labels)for(tb=0;tb<Ta.labels.length;tb++){var qb=Ta.labels[tb],cb=new mxCell(qb.label||
tb,new mxGeometry(null!=qb.x?qb.x:0,null!=qb.y?qb.y:0,0,0),"resizable=0;html=1;");cb.vertex=!0;cb.connectable=!1;cb.geometry.relative=!0;null!=qb.placeholders&&(cb.value=H.replacePlaceholders("target"==qb.placeholders==!Ta.invert?gb:Ea,cb.value,G));if(null!=qb.dx||null!=qb.dy)cb.geometry.offset=new mxPoint(null!=qb.dx?qb.dx:0,null!=qb.dy?qb.dy:0);ib.insert(cb)}ma.push(ib);mxUtils.remove(Ta.invert?Ea:gb,ia)}}}});ua(Ka,Ka,pa);if(null!=F[Ka.id])for($a=0;$a<F[Ka.id].length;$a++)ua(Ka,F[Ka.id][$a],pa)}}if(null!=
va)for(ta=0;ta<l.length;ta++)for(Ka=l[ta],$a=0;$a<va.length;$a++)H.setAttributeForCell(Ka,mxUtils.trim(va[$a]),null);if(0<y.length){var ya=new mxParallelEdgeLayout(H);ya.spacing=R;ya.checkOverlap=!0;var Fa=function(){0<ya.spacing&&ya.execute(H.getDefaultParent());for(var Ea=0;Ea<y.length;Ea++){var La=H.getCellGeometry(y[Ea]);La.x=Math.round(H.snap(La.x));La.y=Math.round(H.snap(La.y));"auto"==U&&(La.width=Math.round(H.snap(La.width)));"auto"==I&&(La.height=Math.round(H.snap(La.height)))}};if("["==
P.charAt(0)){var Ma=u;H.view.validate();this.executeLayoutList(JSON.parse(P),function(){Fa();Ma()});u=null}else if("circle"==P){var Oa=new mxCircleLayout(H);Oa.disableEdgeStyle=!1;Oa.resetEdges=!1;var Pa=Oa.isVertexIgnored;Oa.isVertexIgnored=function(Ea){return Pa.apply(this,arguments)||0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){Oa.execute(H.getDefaultParent());Fa()},!0,u);u=null}else if("horizontaltree"==P||"verticaltree"==P||"auto"==P&&ma.length==2*y.length-1&&1==ia.length){H.view.validate();
var Sa=new mxCompactTreeLayout(H,"horizontaltree"==P);Sa.levelDistance=fa;Sa.edgeRouting=!1;Sa.resetEdges=!1;this.executeLayout(function(){Sa.execute(H.getDefaultParent(),0<ia.length?ia[0]:null)},!0,u);u=null}else if("horizontalflow"==P||"verticalflow"==P||"auto"==P&&1==ia.length){H.view.validate();var za=new mxHierarchicalLayout(H,"horizontalflow"==P?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=fa;za.parallelEdgeSpacing=R;za.interRankCellSpacing=la;za.disableEdgeStyle=
!1;this.executeLayout(function(){za.execute(H.getDefaultParent(),ma);H.moveCells(ma,N,W)},!0,u);u=null}else if("organic"==P||"auto"==P&&ma.length>y.length){H.view.validate();var wa=new mxFastOrganicLayout(H);wa.forceConstant=3*fa;wa.disableEdgeStyle=!1;wa.resetEdges=!1;var Da=wa.isVertexIgnored;wa.isVertexIgnored=function(Ea){return Da.apply(this,arguments)||0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){wa.execute(H.getDefaultParent());Fa()},!0,u);u=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=
u&&u()}}catch(Ea){this.handleError(Ea)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",l;for(l in urlParams)0>mxUtils.indexOf(d,l)&&null!=urlParams[l]&&(f+=g+l+"="+urlParams[l],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
l;for(l in urlParams)0>mxUtils.indexOf(g,l)&&(d=0==f?d+"?":d+"&",null!=urlParams[l]&&(d+=l+"="+urlParams[l],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,l,q){d=new LinkDialog(this,d,f,g,!0,l,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);
this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);
this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};
EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,
f=this.getCurrentFile(),g=this.getSelectionState(),l=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(l);this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());this.actions.get("guides").setEnabled(l);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(l);this.actions.get("connectionArrows").setEnabled(l);this.actions.get("connectionPoints").setEnabled(l);this.actions.get("copyStyle").setEnabled(l&&!d.isSelectionEmpty());
this.actions.get("pasteStyle").setEnabled(l&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(l);this.actions.get("createRevision").setEnabled(l);this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(l&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=
this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);
f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(l&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=
!1,ExportDialog.exportFile=function(d,f,g,l,q,y,F,C){var H=d.editor.graph;if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,"svg",mxUtils.getXml(H.getSvg(l,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),aa=H.getGraphBounds(),da=Math.floor(aa.width*q/H.view.scale),ba=Math.floor(aa.height*q/H.view.scale);if(G.length<=MAX_REQUEST_SIZE&&da*ba<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=
g&&"jpeg"!=g||!d.isExportToCanvas()){var Y={globalVars:H.getExportVariables()};C&&(Y.grid={size:H.gridSize,steps:H.view.gridSteps,color:H.view.gridColor});d.saveRequest(f,g,function(qa,O){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(O||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Y))+(0<F?"&dpi="+F:"")+"&bg="+(null!=l?l:"none")+"&w="+da+"&h="+ba+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==l||
"none"==l,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var l=d;this.currentPage!=this.pages[g]&&(l=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),l.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+
l.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxUtils.htmlEntities(d));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(l);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";
q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var H=JSON.parse(decodeURIComponent(C.substring(1)));y[H[0]]={id:H[0],title:H[1],downloadUrl:H[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerHTML="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+
"</div>";else for(var aa=0;aa<G.length;aa++){var da=G[aa];y[da.id]&&(f[da.id]=da);var ba=this.addCheckbox(q,da.title,y[da.id]);(function(Y,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Y.id]=Y:delete f[Y.id]})})(da,ba)}},mxUtils.bind(this,function(G){q.innerHTML="";var aa=document.createElement("div");aa.style.padding="8px";aa.style.textAlign="center";mxUtils.write(aa,mxResources.get("error")+": ");mxUtils.write(aa,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));
q.appendChild(aa)}));g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,aa;for(aa in f)null==y[aa]&&(G++,mxUtils.bind(this,function(da){this.remoteInvoke("getFileContent",[da.downloadUrl],null,mxUtils.bind(this,function(ba){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,ba,da))}catch(Y){this.handleError(Y,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&
this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(f[aa]));for(aa in y)f[aa]||this.closeLibrary(new RemoteLibrary(this,null,y[aa]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,
allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==
g)throw Error("No callback for "+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,l,q){var y=!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&l.apply(this,arguments)}),H=mxUtils.bind(this,function(){window.clearTimeout(F);
y&&q.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:C,error:H});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,aa){var da={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=aa?da.error={errResp:aa}:null!=G&&
(da.resp=G);this.remoteWin.postMessage(JSON.stringify(da),"*")});try{var l=d.funtionName,q=this.remoteInvokableFns[l];if(null!=q&&"function"===typeof this[l]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+l+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),
this[l].apply(this,C);else{var H=this[l].apply(this,C);g([H])}}else g(null,"Invalid Call: "+l+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var l=g.open("database",2);l.onupgradeneeded=function(q){try{var y=l.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",
{keyPath:"title"}),y.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(F){null!=f&&f(F)}};l.onsuccess=mxUtils.bind(this,function(q){var y=l.result;this.database=y;EditorUi.migrateStorageFiles&&(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=
document.createElement("iframe");C.style.display="none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(C);var H=!0,G=!1,aa,da=0,ba=mxUtils.bind(this,function(){G=!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Y=mxUtils.bind(this,function(){da++;qa()}),qa=mxUtils.bind(this,function(){try{if(da>=aa.length)ba();else{var X=
aa[da];StorageFile.getFileContent(this,X,mxUtils.bind(this,function(ea){null==ea||".scratchpad"==X&&ea==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[X]}),"*"):Y()}),Y)}}catch(ea){console.log(ea)}}),O=mxUtils.bind(this,function(X){try{this.setDatabaseItem(null,[{title:X.title,size:X.data.length,lastModified:Date.now(),type:X.isLib?"L":"F"},{title:X.title,data:X.data}],Y,Y,["filesInfo","files"])}catch(ea){console.log(ea)}});
F=mxUtils.bind(this,function(X){try{if(X.source==C.contentWindow){var ea={};try{ea=JSON.parse(X.data)}catch(ka){}"init"==ea.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=ea.event||G||(H?null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?(aa=ea.resp[0],H=!1,qa()):ba():null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?O(ea.resp[0]):
Y())}}catch(ka){console.log(ka)}});window.addEventListener("message",F)}})));d(y);y.onversionchange=function(){y.close()}});l.onerror=f;l.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,f,g,l,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=l;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&
null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=l&&l(C)}}),l)};EditorUi.prototype.removeDatabaseItem=function(d,f,g,l){this.openDatabase(mxUtils.bind(this,function(q){l=l||"objects";Array.isArray(l)||(l=[l],d=[d]);q=q.transaction(l,"readwrite");q.oncomplete=f;q.onerror=g;for(var y=0;y<l.length;y++)q.objectStore(l[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,l){this.openDatabase(mxUtils.bind(this,function(q){try{l=l||"objects";var y=q.transaction([l],"readonly").objectStore(l).get(d);
y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(l){try{g=g||"objects";var q=l.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,
function(l){try{g=g||"objects";var q=l.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=
d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=function(d,f,g){var l=this.getCurrentFile();null!=l?l.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=
function(d,f){var g=this.getCurrentFile();return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();
return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,f,g,l,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,l,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");
return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,
f,g,l,q,y,F,C,H,G,aa,da,ba,Y,qa,O){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,l,q,y,F,C,H,G,aa,da,ba,Y,qa,O)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,f,g,l){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,l)};EditorUi.prototype.convertImageToDataUri=
function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,l){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,l)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};
EditorUi.prototype.writeGraphModelToPng=function(d,f,g,l,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,l,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),l=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<l.length){var q="<mxfile "===
l.substring(0,8)||"<?xml"===l.substring(0,5)||"\x3c!--[if IE]>"===l.substring(0,12);l="<mxlibrary>"===l.substring(0,11);(q||l)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
mxUtils.write(U,mxResources.get("timeAgo",[I],"{1} ago"));U.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var U=document.createElement("img");U.className="geCommentBusyImg";U.src=IMAGE_PATH+"/spin.gif";ja.appendChild(U);ja.busyImg=U}function l(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,U,I,V,Q){function R(S,P,Z){var oa=document.createElement("li");oa.className=
function(Ca){ta.id=Ca;ja.replies.push(ta);q(Na);Z&&Z()},function(Ca){sa();l(Na);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},oa,va)}function sa(){d(ta,Na,function(Ca){Aa()},!0)}var Ba=fa().pdiv,ta=b.newComment(S,b.getCurrentUser());ta.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var Na=y(ta,ja.replies,Ba,V+1);P?sa():Aa()}if(Q||!ja.isResolved){ba.style.display="none";var ra=document.createElement("div");ra.className="geCommentContainer";ra.setAttribute("data-commentId",
!0)},ja.isResolved);J=b.getCurrentUser();null==J||J.id!=ja.user.id||F||ja.isLocked||(R(mxResources.get("edit"),function(){function S(){d(ja,ra,function(){g(ra);ja.editComment(ja.content,function(){q(ra)},function(P){l(ra);S();b.handleError(P,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}S()},ja.isResolved),R(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(ra);ja.deleteComment(function(S){if(!0===S){S=ra.querySelector(".geCommentTxt");
S.innerHTML="";mxUtils.write(S,mxResources.get("msgDeleted"));var P=ra.querySelectorAll(".geCommentAction");for(S=0;S<P.length;S++)P[S].parentNode.removeChild(P[S]);q(ra);ra.style.opacity="0.5"}else{P=fa(ja).replies;for(S=0;S<P.length;S++)da.removeChild(P[S]);for(S=0;S<U.length;S++)if(U[S]==ja){U.splice(S,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(S){l(ra);b.handleError(S,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
aa.className="geButton";if(!F){var qa=aa.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ja){function U(){d(I,V,function(Q){g(V);b.addComment(Q,function(R){Q.id=R;X.push(Q);q(V)},function(R){l(V);U();b.handleError(R,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var I=b.newComment("",b.getCurrentUser()),V=y(I,X,null,0);
this.window.getX(),U=this.window.getY();this.window.setLocation(ja,U)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,l){var q=document.createElement("div");q.style.textAlign="center";l=null!=l?l:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=l+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
1),D=null,t=0;t<this.pages.length;t++)mxUtils.bind(this,function(g,l){this.pages[g]==this.currentPage?(l.className="geActivePage",l.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):l.className="geInactivePage";l.setAttribute("draggable","true");mxEvent.addListener(l,"dragstart",mxUtils.bind(this,function(q){b.isEnabled()?(mxClient.IS_FF&&q.dataTransfer.setData("Text","<diagram/>"),D=g):mxEvent.consume(q)}));mxEvent.addListener(l,"dragend",mxUtils.bind(this,function(q){D=null;q.stopPropagation();
q.preventDefault()}));mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(q){null!=D&&(q.dataTransfer.dropEffect="move");q.stopPropagation();q.preventDefault()}));mxEvent.addListener(l,"drop",mxUtils.bind(this,function(q){null!=D&&g!=D&&this.movePage(D,g);q.stopPropagation();q.preventDefault()}));e.appendChild(l)})(t,this.createTabForPage(this.pages[t],n,this.pages[t]!=this.currentPage,t+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(e);n=this.createPageMenuTab();this.tabContainer.appendChild(n);
var D=new mxPopupMenu(mxUtils.bind(this,function(d,f){var g=mxUtils.bind(this,function(){for(var F=0;F<this.pages.length;F++)mxUtils.bind(this,function(C){var H=d.addItem(this.pages[C].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[C])}),f),G=this.pages[C].getId();H.setAttribute("title",this.pages[C].getName()+" ("+(C+1)+"/"+this.pages.length+")"+(null!=G?" ["+G+"]":""));this.pages[C]==this.currentPage&&d.addCheckmark(H,Editor.checkmarkImage)})(F)}),l=mxUtils.bind(this,function(){d.addItem(mxResources.get("insertPage"),
null,mxUtils.bind(this,function(){this.insertPage()}),f)});e||g();if(this.editor.graph.isEnabled()){e||(d.addSeparator(f),l());var q=this.currentPage;if(null!=q){d.addSeparator(f);var y=q.getName();d.addItem(mxResources.get("removeIt",[y]),null,mxUtils.bind(this,function(){this.removePage(q)}),f);d.addItem(mxResources.get("renameIt",[y]),null,mxUtils.bind(this,function(){this.renamePage(q,q.getName())}),f);e||d.addSeparator(f);d.addItem(mxResources.get("duplicateIt",[y]),null,mxUtils.bind(this,function(){this.duplicatePage(q,
mxResources.get("copyOf",[q.getName()]))}),f)}}e&&(d.addSeparator(f),l(),d.addSeparator(f),g())}));D.div.className+=" geMenubarMenu";D.smartSeparators=!0;D.showDisabled=!0;D.autoExpand=!0;D.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(D,arguments);D.destroy()});var t=mxEvent.getClientX(n),E=mxEvent.getClientY(n);D.popup(t,E,null,n);this.setCurrentMenu(D);mxEvent.consume(n)}));return b};
null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(t,E,d,f,g,l){t=this.createUrlParameters(t,E,d,f,g,l);d||t.push("hide-pages=1");D.isSelectionEmpty()||(d=D.getBoundingBox(D.getSelectionCells()),E=D.view.translate,g=D.view.scale,d.width/=g,d.height/=g,d.x=d.x/g-E.x,d.y=d.y/g-E.y,t.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
u=0:V==mxConstants.DIRECTION_NORTH?(u=0,J=-J):V==mxConstants.DIRECTION_WEST?(u=-u,J=0):V==mxConstants.DIRECTION_EAST&&(J=0);C.moveCells(ra,u,J);return C.addCells(R,fa)}finally{C.model.endUpdate()}}function l(I,V){C.model.beginUpdate();try{var Q=C.model.getParent(I),R=C.getIncomingTreeEdges(I),fa=d(I);0==R.length&&(R=[C.createEdge(Q,null,"",null,null,C.createCurrentEdgeStyle())],fa=V);var la=C.cloneCells([R[0],I]);C.model.setTerminal(la[0],I,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},O=F.onKeyDown;F.onKeyDown=function(I){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var V=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==I.which?V=mxEvent.isShiftDown(I)?g(C.getSelectionCell()):l(C.getSelectionCell()):13==I.which&&(V=f(C.getSelectionCell(),!mxEvent.isShiftDown(I))));if(null!=V&&0<V.length)1==
return J==V||0==u.length?l(I,V):N==W?g(I):f(I,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(I){var V=[I];!D(I)&&!n(I)||E(I)||C.traverse(I,!0,function(Q,R){var fa=null!=R&&C.isTreeEdge(R);fa&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||fa)&&0>mxUtils.indexOf(V,Q)&&V.push(Q);return null==R||fa});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
l.geometry.relative=!0;l.edge=!0;E.insertEdge(l,!0);g.insertEdge(l,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');q.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");C.geometry.relative=!0;C.edge=!0;E.insertEdge(C,!0);F.insertEdge(C,!1);t.insert(f);t.insert(l);t.insert(y);t.insert(C);t.insert(E);t.insert(d);t.insert(g);t.insert(q);t.insert(F);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var t=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');g.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
l.geometry.relative=!0;l.edge=!0;E.insertEdge(l,!0);g.insertEdge(l,!1);t.insert(f);t.insert(l);t.insert(E);t.insert(d);t.insert(g);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree root",function(){var t=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');D.setAttributeForCell(t,"treeRoot",
EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var l=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(O,
X){null!=X.shortcut&&900>n&&!mxClient.IS_IOS?O.firstChild.nextSibling.setAttribute("title",X.shortcut):l.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var O=this.userElement;O.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+O.style.display;O.className="geToolbarButton";O.innerHTML="";O.style.backgroundImage="url("+Editor.userImage+")";O.style.backgroundPosition="center center";
fa)})));mxUtils.bind(this,function(){var R=this.get("insert"),fa=R.funct;R.funct=function(la,ra){"1"==urlParams.sketch?(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ra),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ra),O.menus.addSubmenu("insertLayout",la,ra,mxResources.get("layout")),O.menus.addSubmenu("insertAdvanced",la,ra,mxResources.get("advanced"))):(fa.apply(this,arguments),O.menus.addSubmenu("table",la,ra))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var l=this.graph.getGlobalVariable;d=this;this.graph.getGlobalVariable=function(H){var G=f[d.currentPage];return"page"==H?G.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==H?d.currentPage+1:"pagecount"==H?f.length:l.apply(this,arguments)}}}this.diagrams=[];var q=null;this.selectPage=function(H){this.handlingResize||(this.currentPage=mxUtils.mod(H,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
"mouseleave",function(){I.style.backgroundColor="#eee"}),mxUtils.setOpacity(ea,60),I.style.cursor="pointer"):mxUtils.setOpacity(I,30);I.appendChild(ea);k.appendChild(I);l++;return I}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(ea,ka){},mouseUp:function(ea,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,l=0,q=null,y=null,F=null,C=null,H=0;H<g.length;H++){var G=
(G=this.graphConfig["toolbar-buttons"][G],null!=G&&(G.elem=b(null==G.enabled||G.enabled?G.handler:function(){},G.image,G.title,G.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*l);null!=this.graphConfig.title&&(g=e.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),
mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*l;var O=e.style.border,X=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var ea=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
n.refresh=function(){};var D=mxUtils.bind(this,function(l){27==l.keyCode&&n.destroy()}),t=n.destroy;n.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",D);document.body.removeChild(b);document.body.removeChild(e);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;t.apply(this,arguments)};var E=n.editor.graph,d=E.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
"keydown",D)):(b.style.display="none",e.style.display="none");var f=this;E.getImageFromBundles=function(l){return f.getImageUrl(l)};var g=n.createTemporaryGraph;n.createTemporaryGraph=function(){var l=g.apply(this,arguments);l.getImageFromBundles=function(q){return f.getImageUrl(q)};return l};this.graphConfig.move&&(E.isMoveCellsEvent=function(l){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
function(ea,ka,ja){ea.attachEvent?ea.attachEvent("on"+ka,ja):ea.addEventListener(ka,ja)};X(F,"scroll",y);X(H,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var l=k.length;f<l;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|callto|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";
window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";
window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
function Dialog(b,e,k,n,D,t,E,d,f,g,l){var q=f?57:0,y=k,F=n,C=f?0:64,H=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(H.height=window.innerHeight);var G=H.height,aa=Math.max(1,Math.round((H.width-k-C)/2)),da=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=da+14+"px",t.style.left=aa+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!l)){var Y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Y=!0}),null,mxUtils.bind(this,function(qa){Y&&(b.hideDialog(!0),Y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
var ErrorDialog=function(b,e,k,n,D,t,E,d,f,g,l){f=null!=f?f:!0;var q=document.createElement("div");q.style.textAlign="center";if(null!=e){var y=document.createElement("div");y.style.padding="0px";y.style.margin="0px";y.style.fontSize="18px";y.style.paddingBottom="16px";y.style.marginBottom="10px";y.style.borderBottom="1px solid #c0c0c0";y.style.color="gray";y.style.whiteSpace="nowrap";y.style.textOverflow="ellipsis";y.style.overflow="hidden";mxUtils.write(y,e);y.setAttribute("title",e);q.appendChild(y)}e=
document.createElement("div");e.style.lineHeight="1.2em";e.style.padding="6px";e.innerHTML=k;q.appendChild(e);k=document.createElement("div");k.style.marginTop="12px";k.style.textAlign="center";null!=t&&(e=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();t()}),e.className="geBtn",k.appendChild(e),k.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=l&&l()}),g.className="geBtn",k.appendChild(g));var F=mxUtils.button(n,function(){f&&b.hideDialog();null!=D&&D()});
PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,H=parseInt(q.value)/100;isNaN(H)&&(H=1,q.value="100%");H*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,aa=1/k.pageScale;if(C){var da=E.checked?1:parseInt(l.value);isNaN(da)||(aa=mxUtils.getScaleForPageCount(da,k,G))}k.getGraphBounds();var ba=da=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*H);G.height=Math.ceil(G.height*H);aa*=H;!C&&k.pageVisible?(H=k.getPageLayout(),da-=H.x*G.width,ba-=H.y*
d.appendChild(f);mxEvent.addListener(f,"click",function(F){g.checked=!g.checked;E.checked=!g.checked;mxEvent.consume(F)});t.appendChild(d);var l=document.createElement("input");l.setAttribute("value","1");l.setAttribute("type","number");l.setAttribute("min","1");l.setAttribute("size","4");l.setAttribute("disabled","disabled");l.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(l);mxUtils.write(d," "+mxResources.get("pages")+" (max)");t.appendChild(d);D.appendChild(t);
mxEvent.addListener(g,"change",function(){g.checked?l.removeAttribute("disabled"):l.setAttribute("disabled","disabled");E.checked=!g.checked});t=t.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");t.appendChild(d);d=document.createElement("td");var q=document.createElement("input");q.setAttribute("value","100 %");q.setAttribute("size","5");q.style.width="50px";d.appendChild(q);t.appendChild(d);D.appendChild(t);t=document.createElement("tr");d=document.createElement("td");
var PageSetupDialog=function(b){function e(){null==l||l==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=l,g.style.backgroundImage="")}function k(){var G=C;null!=G&&Graph.isPageLink(G.src)&&(G=b.createImageForPageLink(G.src,null));null!=G&&null!=G.src?(F.setAttribute("src",G.src),F.style.display=""):(F.removeAttribute("src"),F.style.display="none")}var n=b.editor.graph,D=document.createElement("table");D.style.width=
mxUtils.write(d,mxResources.get("background")+":");E.appendChild(d);d=document.createElement("td");d.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="22px";g.style.height="22px";g.style.cursor="pointer";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(g.style.position="relative",g.style.top="-6px");var l=n.background;e();mxEvent.addListener(g,
"click",function(G){b.pickColor(l||"none",function(aa){l=aa;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
"geBtn";b.editor.cancelFirst&&d.appendChild(y);H=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var G=parseInt(q.value);isNaN(G)||n.gridSize===G||n.setGridSize(G);G=new ChangePageSetup(b,l,C,f.get());G.ignoreColor=n.background==l;G.ignoreImage=(null!=n.backgroundImage?n.backgroundImage.src:null)===(null!=C?C.src:null);n.pageFormat.width==G.previousFormat.width&&n.pageFormat.height==G.previousFormat.height&&G.ignoreColor&&G.ignoreImage||n.model.execute(G)});H.className="geBtn gePrimaryBtn";
X.format.width&&k.height==X.format.height?(d.value=X.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==X.format.height&&k.height==X.format.width&&(d.value=X.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",l.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
"checked"),d.value="custom",f.style.display="none",l.style.display="")}}e="format-"+e;var t=document.createElement("input");t.setAttribute("name",e);t.setAttribute("type","radio");t.setAttribute("value","portrait");var E=document.createElement("input");E.setAttribute("name",e);E.setAttribute("type","radio");E.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";
var f=document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";t.style.marginRight="6px";f.appendChild(t);e=document.createElement("span");e.style.maxWidth="100px";mxUtils.write(e,mxResources.get("portrait"));f.appendChild(e);E.style.marginLeft="10px";E.style.marginRight="6px";f.appendChild(E);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));f.appendChild(g);var l=document.createElement("div");l.style.marginLeft=
"4px";l.style.width="210px";l.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";l.appendChild(q);mxUtils.write(l," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";l.appendChild(y);mxUtils.write(l," in");f.style.display="none";l.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),H=0;H<C.length;H++){var G=C[H];F[G.key]=G;var aa=document.createElement("option");aa.setAttribute("value",
G.key);mxUtils.write(aa,G.title);d.appendChild(aa)}var da=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(l);var ba=k,Y=function(qa,O){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,l.style.display="none",f.style.display=""):(f.style.display="none",l.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
var FilenameDialog=function(b,e,k,n,D,t,E,d,f,g,l,q){f=null!=f?f:!0;var y=document.createElement("table"),F=document.createElement("tbody");y.style.position="absolute";y.style.top="30px";y.style.left="20px";var C=document.createElement("tr");var H=document.createElement("td");H.style.textOverflow="ellipsis";H.style.textAlign="right";H.style.maxWidth="100px";H.style.fontSize="10pt";H.style.width="84px";mxUtils.write(H,(D||mxResources.get("filename"))+":");C.appendChild(H);var G=document.createElement("input");
Y.stopPropagation();Y.preventDefault()}))}}};H=document.createElement("td");H.style.whiteSpace="nowrap";H.appendChild(G);C.appendChild(H);if(null!=D||null==E)F.appendChild(C),null!=l&&(H.appendChild(FilenameDialog.createTypeHint(b,G,l)),null!=b.editor.diagramFileTypes&&(C=document.createElement("tr"),H=document.createElement("td"),H.style.textOverflow="ellipsis",H.style.textAlign="right",H.style.maxWidth="100px",H.style.fontSize="10pt",H.style.width="84px",mxUtils.write(H,mxResources.get("type")+
2;H.style.paddingTop=null!=l?"12px":"20px";H.style.whiteSpace="nowrap";H.setAttribute("align","right");l=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});l.className="geBtn";b.editor.cancelFirst&&H.appendChild(l);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",H.appendChild(q));mxEvent.addListener(G,"keypress",function(da){13==da.keyCode&&aa.click()});H.appendChild(aa);b.editor.cancelFirst||H.appendChild(l);
mxGraphView.prototype.validateBackgroundStyles=function(){var E=this.graph,d=null==E.background||E.background==mxConstants.NONE?E.defaultPageBackgroundColor:E.background,f=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",g="none",l="";if(E.isGridEnabled()||E.gridVisible){l=10;mxClient.IS_SVG?(g=unescape(encodeURIComponent(this.createSvgGrid(f))),g=window.btoa?btoa(g):Base64.encode(g,!0),g="url(data:image/svg+xml;base64,"+g+")",l=E.gridSize*this.scale*this.gridSteps):g="url("+this.gridImage+
")";var q=f=0;null!=E.view.backgroundPageShape&&(q=this.getBackgroundPageBounds(),f=1+q.x,q=1+q.y);l=-Math.round(l-mxUtils.mod(this.translate.x*this.scale-f,l))+"px "+-Math.round(l-mxUtils.mod(this.translate.y*this.scale-q,l))+"px"}f=E.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);null!=E.view.backgroundPageShape?(E.view.backgroundPageShape.node.style.backgroundPosition=l,E.view.backgroundPageShape.node.style.backgroundImage=g,E.view.backgroundPageShape.node.style.backgroundColor=d,E.view.backgroundPageShape.node.style.borderColor=
E.defaultPageBorderColor,E.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(E.container.className="geDiagramContainer",f.style.backgroundPosition=l,f.style.backgroundColor=d,f.style.backgroundImage=g)};mxGraphView.prototype.createSvgGrid=function(E){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,g=[],l=1;l<this.gridSteps;l++){var q=l*d;g.push("M 0 "+q+" L "+f+" "+q+" M "+q+" 0 L "+q+
if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps;g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+E,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";f.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.view.scale,l=this.view.translate,q=this.pageFormat,y=g*this.pageScale,F=this.view.getBackgroundPageBounds();
d=F.width;f=F.height;var C=new mxRectangle(g*l.x,g*l.y,q.width*y,q.height*y),H=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,aa=F.x+d,da=F.y+f;null==this.horizontalPageBreaks&&0<H&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(ba){if(null!=ba){for(var Y=ba==this.horizontalPageBreaks?H:G,qa=0;qa<=Y;qa++){var O=ba==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
E(this.horizontalPageBreaks);E(this.verticalPageBreaks)};var e=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(E,d,f){for(var g=0;g<d.length;g++){if(this.graph.isTableCell(d[g])||this.graph.isTableRow(d[g]))return!1;if(this.graph.getModel().isVertex(d[g])){var l=this.graph.getCellGeometry(d[g]);if(null!=l&&l.relative)return!1}}return e.apply(this,arguments)};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=
l=this.graph.pageScale,q=g.width*l;g=g.height*l;l=Math.floor(Math.min(0,d)/q);var y=Math.floor(Math.min(0,f)/g);return new mxRectangle(this.scale*(this.translate.x+l*q),this.scale*(this.translate.y+y*g),this.scale*(Math.ceil(Math.max(1,d+E.width/this.scale)/q)-l)*q,this.scale*(Math.ceil(Math.max(1,f+E.height/this.scale)/g)-y)*g)};var n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){n.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=E+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var D=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(E,d,f,g,l,q){var y=D.apply(this,arguments);null==q||q||mxEvent.addListener(y,"mousedown",function(F){mxEvent.consume(F)});return y};var t=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(E,d,f){var g=this.graph.model.getParent(E);if(d){var l=this.graph.model.isEdge(E)?null:this.graph.getCellGeometry(E);l=!this.graph.model.isEdge(g)&&!this.graph.isSiblingSelected(E)&&(null!=l&&l.relative||!this.graph.isContainer(g)||this.graph.isPart(E))}else if(l=t.apply(this,arguments),this.graph.isTableCell(E)||this.graph.isTableRow(E))l=g,this.graph.isTable(l)||(l=this.graph.model.getParent(l)),l=!this.graph.selectionCellsHandler.isHandled(l)||this.graph.isCellSelected(l)&&this.graph.isToggleEvent(f.getEvent())||
this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return l};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),l=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);l=l||q;if(q||!l&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var I=D.apply(this,arguments),V=this.backgroundImage;if(null!=V&&null!=V.width&&null!=V.height){var Q=this.view.translate,R=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((Q.x+V.x)*R,(Q.y+V.y)*R,V.width*R,V.height*R))}return I};n.useCssTransforms&&(this.lazyZoomDelay=
n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),l=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<l.length;e++)for(k=0;k<l[e].length;k++)t.push(l[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(I,V,Q,R,fa,la,ra){R=null!=R?R:n.currentVertexStyle;fa=null!=fa?fa:n.currentEdgeStyle;la=null!=la?la:!0;Q=null!=Q?Q:n.getModel();if(ra){ra=[];for(var u=0;u<I.length;u++)ra=ra.concat(Q.getDescendants(I[u]));I=ra}Q.beginUpdate();try{for(u=0;u<I.length;u++){var J=I[u];if(V)var N=["fontSize",
"fontFamily","fontColor"];else{var W=Q.getStyle(J),S=null!=W?W.split(";"):[];N=t.slice();for(var P=0;P<S.length;P++){var Z=S[P],oa=Z.indexOf("=");if(0<=oa){var va=Z.substring(0,oa),Aa=mxUtils.indexOf(N,va);0<=Aa&&N.splice(Aa,1);for(ra=0;ra<l.length;ra++){var sa=l[ra];if(0<=mxUtils.indexOf(sa,va))for(var Ba=0;Ba<sa.length;Ba++){var ta=mxUtils.indexOf(N,sa[Ba]);0<=ta&&N.splice(ta,1)}}}}}var Na=Q.isEdge(J);ra=Na?fa:R;var Ca=Q.getStyle(J);for(P=0;P<N.length;P++){va=N[P];var Qa=ra[va];null!=Qa&&"edgeStyle"!=
EditorUi.prototype.updateSelectionStateForTableCells=function(b){if(1<b.cells.length&&b.cell){for(var e=mxUtils.sortCells(b.cells),k=this.editor.graph.model,n=k.getParent(e[0]),D=k.getParent(n),t=n.getIndex(e[0]),E=D.getIndex(n),d=null,f=1,g=1,l=0,q=E<D.getChildCount()-1?k.getChildAt(k.getChildAt(D,E+1),t):null;l<e.length-1;){var y=e[++l];null==q||q!=y||null!=d&&f!=d||(d=f,f=0,g++,n=k.getParent(q),q=E+g<D.getChildCount()?k.getChildAt(k.getChildAt(D,E+g),t):null);var F=this.editor.graph.view.getState(y);
if(y==k.getChildAt(n,t+f)&&null!=F&&1==mxUtils.getValue(F.style,"colspan",1)&&1==mxUtils.getValue(F.style,"rowspan",1))f++;else break}l==g*f-1&&(b.mergeCell=e[0],b.colspan=f,b.rowspan=g)}};
b.popupMenuHandler.isMenuShowing=function(){return n.apply(this,arguments)||null!=e.shapePicker};var D=b.dblClick;b.dblClick=function(f,g){if(this.isEnabled())if(null!=g||null==e.sidebar||mxEvent.isShiftDown(f)||b.isCellLocked(b.getDefaultParent()))D.apply(this,arguments);else{var l=mxUtils.convertPoint(this.container,mxEvent.getClientX(f),mxEvent.getClientY(f));mxEvent.consume(f);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(l.x,l.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
k);var t=this.hoverIcons.drag;this.hoverIcons.drag=function(){e.hideShapePicker();t.apply(this,arguments)};var E=this.hoverIcons.execute;this.hoverIcons.execute=function(f,g,l){var q=l.getEvent();this.graph.isCloneEvent(q)||mxEvent.isShiftDown(q)?E.apply(this,arguments):this.graph.connectVertex(f.cell,g,this.graph.defaultEdgeLength,q,null,null,mxUtils.bind(this,function(y,F,C){var H=b.getCompositeParent(f.cell);y=b.getCellGeometry(H);for(l.consume();null!=H&&b.model.isVertex(H)&&null!=y&&y.relative;)cell=
H,H=b.model.getParent(cell),y=b.getCellGeometry(H);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(l.getGraphX(),l.getGraphY(),H,mxUtils.bind(this,function(G){C(G);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(G))}),g)}),30)}),mxUtils.bind(this,function(y){this.graph.selectCellsForConnectVertex(y,q,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d);d=window.setTimeout(mxUtils.bind(this,function(){var l=
g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");l=l.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+l.x-F.x;F=b.container.scrollTop+l.y-F.y;var H=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,H,mxUtils.bind(this,function(aa){null!=aa&&b.connectVertex(H,q,b.defaultEdgeLength,y,!0,!0,function(da,ba,Y){Y(aa);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(aa))},
function(da){b.selectCellsForConnectVertex(da)},y,this.hoverIcons)}),q,!0);this.centerShapePicker(G,l,C,F,q);mxUtils.setOpacity(G,30);mxEvent.addListener(G,"mouseenter",function(){mxUtils.setOpacity(G,100)});mxEvent.addListener(G,"mouseleave",function(){e.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d)}))}};
EditorUi.prototype.createShapePicker=function(b,e,k,n,D,t,E,d){var f=null;if(null!=E&&0<E.length){var g=this,l=this.editor.graph;f=document.createElement("div");D=l.view.getState(k);var q=null==k||null!=D&&l.isTransparentState(D)?null:l.copyStyle(k);k=6>E.length?35*E.length:140;f.className="geToolbarContainer geSidebarContainer";f.style.cssText="position:absolute;left:"+b+"px;top:"+e+"px;width:"+k+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(f.style,"transform","translate(-22px,-22px)");null!=l.background&&l.background!=mxConstants.NONE&&(f.style.backgroundColor=l.background);l.container.appendChild(f);k=mxUtils.bind(this,function(y){var F=document.createElement("a");F.className="geItem";F.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";f.appendChild(F);null!=q&&"1"!=urlParams.sketch?
this.sidebar.graph.pasteStyle(q,[y]):g.insertHandler([y],""!=y.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([y],25,25,F,null,!0,!1,y.geometry.width,y.geometry.height);mxEvent.addListener(F,"click",function(){var C=l.cloneCell(y);if(null!=n)n(C);else{C.geometry.x=l.snap(Math.round(b/l.view.scale)-l.view.translate.x-y.geometry.width/2);C.geometry.y=l.snap(Math.round(e/l.view.scale)-l.view.translate.y-y.geometry.height/2);l.model.beginUpdate();try{l.addCell(C)}finally{l.model.endUpdate()}l.setSelectionCell(C);
l.scrollCellToVisible(C);l.startEditingAtCell(C);null!=g.hoverIcons&&g.hoverIcons.update(l.view.getState(C))}null!=t&&t()})});for(D=0;D<(d?Math.min(E.length,4):E.length);D++)k(E[D]);E=f.offsetTop+f.clientHeight-(l.container.scrollTop+l.container.offsetHeight);0<E&&(f.style.top=Math.max(l.container.scrollTop+22,e-E)+"px");E=f.offsetLeft+f.clientWidth-(l.container.scrollLeft+l.container.offsetWidth);0<E&&(f.style.left=Math.max(l.container.scrollLeft+22,b-E)+"px")}return f};
EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipboard.cut=function(t){t.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):e.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(t){var E=null;if(t.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{E=E||t.getSelectionCells();E=t.getExportableCells(t.model.getTopmostCells(E));for(var d={},f=t.createCellLookup(E),g=t.cloneCells(E,null,d),l=new mxGraphModel,q=l.getChildAt(l.getRoot(),
0),y=0;y<g.length;y++){l.add(q,g[y]);var F=t.view.getState(E[y]);if(null!=F){var C=t.getCellGeometry(g[y]);null!=C&&C.relative&&!l.isEdge(E[y])&&null==f[mxObjectIdentity.get(l.getParent(E[y]))]&&(C.offset=null,C.relative=!1,C.x=F.x/F.view.scale-F.view.translate.x,C.y=F.y/F.view.scale-F.view.translate.y)}}t.updateCustomLinks(t.createCellMapping(d,f),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return E};var k=mxClipboard.paste;mxClipboard.paste=function(t){var E=
this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(Q){this.actions.get("nextPage").funct();mxEvent.consume(Q)}),Editor.nextImage,mxResources.get("nextPage")),l=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerHTML="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");l()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",l)}t(mxUtils.bind(this,function(Q){this.actions.get("zoomOut").funct();mxEvent.consume(Q)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){this.actions.get("zoomIn").funct();
EditorUi.prototype.addSplitHandler=function(b,e,k,n){function D(q){if(null!=E){var y=new mxPoint(mxEvent.getClientX(q),mxEvent.getClientY(q));n(Math.max(0,d+(e?y.x-E.x:E.y-y.y)-k));mxEvent.consume(q);d!=l()&&(f=!0,g=null)}}function t(q){D(q);E=d=null}var E=null,d=null,f=!0,g=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var l=mxUtils.bind(this,function(){var q=parseInt(e?b.style.left:b.style.bottom);e||(q=q+k-this.footerHeight);return q});mxEvent.addGestureListeners(b,function(q){E=new mxPoint(mxEvent.getClientX(q),
mxEvent.getClientY(q));d=l();f=!1;mxEvent.consume(q)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(q){if(!f&&this.hsplitClickEnabled){var y=null!=g?g-k:0;g=l();n(y);mxEvent.consume(q)}}));mxEvent.addGestureListeners(document,null,D,t);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,D,t)})};
EditorUi.prototype.showError=function(b,e,k,n,D,t,E,d,f,g,l,q,y){b=new ErrorDialog(this,b,e,k||mxResources.get("ok"),n,D,t,E,q,d,f);e=Math.ceil(null!=e?e.length/50:1);this.showDialog(b.container,g||340,l||100+20*e,!0,!1,y);b.init()};EditorUi.prototype.showDialog=function(b,e,k,n,D,t,E,d,f,g){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,e,k,n,D,t,E,d,f,g);this.dialogs.push(this.dialog)};
0<=d&&d<E.length-3&&(E=E.substring(0,d+3))}catch(l){}try{var f=t.getElementsByTagName("span"),g=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(E);this.isCompatibleString(g)&&(E=g)}catch(l){}}catch(l){}b(this.isCompatibleString(E)?E:null)}))["catch"](function(D){b(null)})}))["catch"](function(n){b(null)});else if(null!=k&&0<k.length&&"text"==e&&0<=mxUtils.indexOf(k[0].types,"text/plain"))k[0].getType("text/plain").then(function(n){n.text().then(function(D){b(D)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
mxUtils.bind(this,function(q,y,F,C){var H=this.actions.get(F);null!=H&&(F=function(){H.isEnabled()&&H.funct()},y?C?D.bindControlShiftKey(q,F):D.bindControlKey(q,F):C?D.bindShiftKey(q,F):D.bindKey(q,F))});var g=this,l=D.escape;D.escape=function(q){l.apply(this,arguments)};D.enter=function(){};D.bindControlShiftKey(36,function(){n.exitGroup()});D.bindControlShiftKey(35,function(){n.enterGroup()});D.bindShiftKey(36,function(){n.home()});D.bindKey(35,function(){n.refresh()});D.bindAction(107,!0,"zoomIn");
arguments[2])}var d=Number(D.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),k);for(var f=e(this)?Object(new this(d)):Array(d),g=0,l;g<d;)l=D[g],f[g]=t?"undefined"===typeof E?t(l,g):t.call(E,l,g):l,g+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,l=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,V){if("mouseDown"==V.getProperty("eventName")&&this.isEnabled()){I=V.getProperty("event");var Q=I.getState();V=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=Q)if(this.model.isEdge(Q.cell))if(E=new mxPoint(I.getGraphX(),I.getGraphY()),l=this.isCellSelected(Q.cell),f=Q,d=I,null!=Q.text&&null!=
V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var fa=this.selectionCellsHandler.getHandler(Q.cell);null==fa&&this.model.isEdge(Q.cell)&&(fa=this.createHandler(Q));if(null!=fa&&null!=fa.bends&&0<fa.bends.length){I=fa.getHandleForEvent(d);var la=this.view.getEdgeStyle(Q);R=la==mxEdgeStyle.EntityRelation;l||g!=mxEvent.LABEL_HANDLE||(I=g);if(R&&0!=I&&I!=fa.bends.length-1&&I!=mxEvent.LABEL_HANDLE)!R||null==Q.visibleSourceState&&null==Q.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(I==
l=!1;E=d=f=g=null}}else if(Q=V.getState(),null!=Q&&this.isCellEditable(Q.cell)){fa=null;if(this.model.isEdge(Q.cell)){if(I=new mxRectangle(V.getGraphX(),V.getGraphY()),I.grow(mxEdgeHandler.prototype.handleImage.width/2),R=Q.absolutePoints,null!=R)if(null!=Q.text&&null!=Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,V.getGraphX(),V.getGraphY()))fa="move";else if(mxUtils.contains(I,R[0].x,R[0].y)||mxUtils.contains(I,R[R.length-1].x,R[R.length-1].y))fa="pointer";else if(null!=Q.visibleSourceState||
Graph.sanitizeHtml=function(b,e){return Graph.domPurify(b,!1)};Graph.sanitizeLink=function(b){var e=document.createElement("a");e.setAttribute("href",b);Graph.sanitizeNode(e);return e.getAttribute("href")};Graph.sanitizeNode=function(b){return Graph.domPurify(b,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(b){b.hasAttribute("xlink:href")&&!b.getAttribute("xlink:href").match(/^#/)&&b.remove()});
Graph.clipSvgDataUri=function(b,e){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var k=document.createElement("div");k.style.position="absolute";k.style.visibility="hidden";var n=decodeURIComponent(escape(atob(b.substring(26)))),D=n.indexOf("<svg");if(0<=D){k.innerHTML=n.substring(D);Graph.sanitizeNode(k);var t=k.getElementsByTagName("svg");if(0<t.length){if(e||null!=t[0].getAttribute("preserveAspectRatio")){document.body.appendChild(k);try{n=
e=1;var E=t[0].getAttribute("width"),d=t[0].getAttribute("height");E=null!=E&&"%"!=E.charAt(E.length-1)?parseFloat(E):NaN;d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN;var f=t[0].getAttribute("viewBox");if(null!=f&&!isNaN(E)&&!isNaN(d)){var g=f.split(" ");4<=f.length&&(e=parseFloat(g[2])/E,n=parseFloat(g[3])/d)}var l=t[0].getBBox();0<l.width&&0<l.height&&(k.getElementsByTagName("svg")[0].setAttribute("viewBox",l.x+" "+l.y+" "+l.width+" "+l.height),k.getElementsByTagName("svg")[0].setAttribute("width",
l.width/e),k.getElementsByTagName("svg")[0].setAttribute("height",l.height/n))}catch(q){}finally{document.body.removeChild(k)}}b=Editor.createSvgDataUri(mxUtils.getXml(t[0]))}}}catch(q){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(k,n){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var D=k.view.graph.tolerance,t=!0,E=null,d=mxUtils.bind(this,function(l){t=!0;E=new mxPoint(mxEvent.getClientX(l),mxEvent.getClientY(l))}),f=mxUtils.bind(this,function(l){t=t&&null!=E&&Math.abs(E.x-mxEvent.getClientX(l))<D&&Math.abs(E.y-mxEvent.getClientY(l))<D}),g=mxUtils.bind(this,function(l){if(t)for(var q=mxEvent.getSource(l);null!=
q&&q!=n.node;){if("a"==q.nodeName.toLowerCase()){k.view.graph.labelLinkClicked(k,q,l);break}q=q.parentNode}});mxEvent.addGestureListeners(n.node,d,f,g);mxEvent.addListener(n.node,"click",function(l){mxEvent.consume(l)})};if(null!=this.tooltipHandler){var e=this.tooltipHandler.init;this.tooltipHandler.init=function(){e.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(k){var n=mxEvent.getSource(k);"A"==n.nodeName&&(n=n.getAttribute("href"),null!=
d,0==f)}return d};Graph.prototype.mergeStyle=function(E,d,f){if(null!=E){var g={},l;for(l in E){var q=E[l];null!=q&&(g[l]=!0,null==d[l]&&f?d[l]=q:d[l]!=q&&delete d[l])}for(l in d)g[l]||delete d[l]}};Graph.prototype.getStartEditingCell=function(E,d){d=this.getCellStyle(E);d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(E)&&(!this.isSwimlane(E)||0==d)&&""==this.getLabel(E)&&0<this.model.getChildCount(E)&&(E=this.model.getChildAt(E,0),d=this.getCellStyle(E),d=parseInt(mxUtils.getValue(d,
function(E,d){this.model.beginUpdate();try{for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var g=this.getCellStyle(d[f],!1),l;for(l in E){var q=E[l];g[l]!=q&&this.setCellStyles(l,q,[d[f]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==
mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(E,d,f,g,l,q){this.useCssTransforms&&(E=E/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(E,d,f,g,l,q){g=null!=g?g:!0;l=null!=l?l:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var y=this.model.getChildCount(f)-1;0<=
y;y--){var F=this.model.getChildAt(f,y),C=this.getScaledCellAt(E,d,F,g,l,q);if(null!=C)return C;if(this.isCellVisible(F)&&(l&&this.model.isEdge(F)||g&&this.model.isVertex(F))&&(C=this.view.getState(F),null!=C&&(null==q||!q(C,E,d))&&this.intersects(C,E,d)))return F}return null};Graph.prototype.isRecursiveVertexResize=function(E){return!this.isSwimlane(E.cell)&&0<this.model.getChildCount(E.cell)&&!this.isCellCollapsed(E.cell)&&"1"==mxUtils.getValue(E.style,"recursiveResize","1")&&null==mxUtils.getValue(E.style,
"childLayout",null)};Graph.prototype.getAbsoluteParent=function(E){for(var d=this.getCellGeometry(E);null!=d&&d.relative;)E=this.getModel().getParent(E),d=this.getCellGeometry(E);return E};Graph.prototype.isPart=function(E){return"1"==mxUtils.getValue(this.getCurrentCellStyle(E),"part","0")||this.isTableCell(E)||this.isTableRow(E)};Graph.prototype.getCompositeParents=function(E){for(var d=new mxDictionary,f=[],g=0;g<E.length;g++){var l=this.getCompositeParent(E[g]);this.isTableCell(l)&&(l=this.graph.model.getParent(l));
this.isTableRow(l)&&(l=this.graph.model.getParent(l));null==l||d.get(l)||(d.put(l,!0),f.push(l))}return f};Graph.prototype.getCompositeParent=function(E){for(;this.isPart(E);){var d=this.model.getParent(E);if(!this.model.isVertex(d))break;E=d}return E};Graph.prototype.filterSelectionCells=function(E){var d=this.getSelectionCells();if(null!=E){for(var f=[],g=0;g<d.length;g++)E(d[g])||f.push(d[g]);d=f}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(E){if(this.useCssTransforms){var d=
mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.useCssTransforms,l=this.view.scale,q=this.view.translate;g&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);t.apply(this,arguments);g&&(this.view.scale=l,this.view.translate=q,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),e;if("circleLayout"==b.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==b.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==b.childLayout)return new TableLayout(this.graph)}return null}};
Graph.prototype.createEdgeWipeAnimation=function(b,e){var k=b.absolutePoints.slice(),n=b.segments,D=b.length,t=k.length;return{execute:mxUtils.bind(this,function(E,d){if(null!=b.shape){var f=[k[0]];d=E/d;e||(d=1-d);for(var g=D*d,l=1;l<t;l++)if(g<=n[l-1]){f.push(new mxPoint(k[l-1].x+(k[l].x-k[l-1].x)*g/n[l-1],k[l-1].y+(k[l].y-k[l-1].y)*g/n[l-1]));break}else g-=n[l-1],f.push(k[l]);b.shape.points=f;b.shape.redraw();0==E&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
/\d/.test(b)||(e=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");e=String(n.masks[e]||e||n.masks["default"]);"UTC:"==e.slice(0,4)&&(e=e.slice(4),k=!0);var d=k?"getUTC":"get",f=b[d+"Date"](),g=b[d+"Day"](),l=b[d+"Month"](),q=b[d+"FullYear"](),y=b[d+"Hours"](),F=b[d+"Minutes"](),C=b[d+"Seconds"]();d=b[d+"Milliseconds"]();var H=k?0:b.getTimezoneOffset(),G={d:f,dd:E(f),ddd:n.i18n.dayNames[g],dddd:n.i18n.dayNames[g+7],m:l+1,mm:E(l+1),mmm:n.i18n.monthNames[l],mmmm:n.i18n.monthNames[l+
Graph.prototype.createLayersDialog=function(b,e){var k=document.createElement("div");k.style.position="absolute";for(var n=this.getModel(),D=n.getChildCount(n.root),t=0;t<D;t++)mxUtils.bind(this,function(E){function d(){n.isVisible(E)?(l.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(l.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var f=this.convertValueToString(E)||mxResources.get("background")||"Background",g=document.createElement("div");g.style.overflow=
"hidden";g.style.textOverflow="ellipsis";g.style.padding="2px";g.style.whiteSpace="nowrap";g.style.cursor="pointer";g.setAttribute("title",mxResources.get(n.isVisible(E)?"hideIt":"show",[f]));var l=document.createElement("img");l.setAttribute("draggable","false");l.setAttribute("align","absmiddle");l.setAttribute("border","0");l.style.position="relative";l.style.width="16px";l.style.padding="0px 6px 0 4px";e&&(l.style.filter="invert(100%)",l.style.top="-2px");g.appendChild(l);mxUtils.write(g,f);k.appendChild(g);
Graph.prototype.connectVertex=function(b,e,k,n,D,t,E,d){t=t?t:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),g=f?b:this.getCompositeParent(b),l=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);e==mxConstants.DIRECTION_NORTH?(l.x+=g.geometry.width/2,l.y-=k):e==
mxConstants.DIRECTION_SOUTH?(l.x+=g.geometry.width/2,l.y+=g.geometry.height+k):(l.x=e==mxConstants.DIRECTION_WEST?l.x-k:l.x+(g.geometry.width+k),l.y+=g.geometry.height/2);var q=this.view.getState(this.model.getParent(b));k=this.view.scale;var y=this.view.translate;g=y.x*k;y=y.y*k;null!=q&&this.model.isVertex(q.cell)&&(g=q.x,y=q.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(l.x+=b.parent.geometry.x,l.y+=b.parent.geometry.y);t=t?null:(new mxRectangle(g+l.x*k,y+l.y*k)).grow(40*k);t=null!=t?
!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;aa&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?l.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?l.y+=b.geometry.height/2:l.x=e==mxConstants.DIRECTION_WEST?l.x-b.geometry.width/2:l.x+b.geometry.width/2);var da=[],ba=C;C=F;D=mxUtils.bind(this,function(Y){if(null==E||null!=Y||null==C&&f){this.model.beginUpdate();try{if(null==ba&&aa){var qa=this.getAbsoluteParent(null!=Y?Y:b);qa=f?b:this.getCompositeParent(qa);ba=null!=Y?Y:this.duplicateCells([qa],
!1)[0];null!=Y&&this.addCells([ba],this.model.getParent(b),null,null,null,!0);var O=this.getCellGeometry(ba);null!=O&&(null!=Y&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?l.y-=O.height/2:e==mxConstants.DIRECTION_SOUTH?l.y+=O.height/2:l.x=e==mxConstants.DIRECTION_WEST?l.x-O.width/2:l.x+O.width/2),O.x=l.x-O.width/2,O.y=l.y-O.height/2);null!=F?(this.addCells([ba],F,null,null,null,!0),C=null):aa&&!f&&this.addCells([ba],this.getDefaultParent(),null,null,null,!0)}var X=mxEvent.isControlDown(n)&&
ba,ea));null!=X&&da.push(X);null==C&&null!=ba&&da.push(ba);null==ba&&null!=X&&X.geometry.setTerminalPoint(l,!1);null!=X&&this.fireEvent(new mxEventObject("cellsInserted","cells",[X]))}finally{this.model.endUpdate()}}if(null!=d)d(da);else return da});if(null==E||null!=ba||!aa||null==C&&f)return D(ba);E(g+l.x*k,y+l.y*k,D)};
Graph.prototype.foldCells=function(b,e,k,n,D){e=null!=e?e:!1;null==k&&(k=this.getFoldableCells(this.getSelectionCells(),b));if(null!=k){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var t=0;t<k.length;t++){var E=this.view.getState(k[t]),d=this.getCellGeometry(k[t]);if(null!=E&&null!=d){var f=Math.round(d.width-E.width/this.view.scale),g=Math.round(d.height-E.height/this.view.scale);if(0!=g||0!=f){var l=this.model.getParent(k[t]),q=this.layoutManager.getLayout(l);
null==q?null!=D&&this.isMoveCellsEvent(D,E)&&this.moveSiblings(E,l,f,g):null!=D&&mxEvent.isAltDown(D)||q.constructor!=mxStackLayout||q.resizeLast||this.resizeParentStacks(l,q,f,g)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(k)}};
(k=e.rotationShape.boundingBox));e=mxUtils.bind(this,function(d,f,g){if(null!=k){var l=new mxRectangle(f,g,d.clientWidth,d.clientHeight);mxUtils.intersects(l,k)&&(d==this.arrowUp?g-=l.y+l.height-k.y:d==this.arrowRight?f+=k.x+k.width-l.x:d==this.arrowDown?g+=k.y+k.height-l.y:d==this.arrowLeft&&(f-=l.x+l.width-k.x))}d.style.left=f+"px";d.style.top=g+"px";mxUtils.setOpacity(d,this.inactiveOpacity)});e(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
Graph.prototype.visitTableCells=function(b,e){var k=null,n=this.model.getChildCells(b,!0);b=this.getActualStartSize(b,!0);for(var D=0;D<n.length;D++){for(var t=this.getActualStartSize(n[D],!0),E=this.model.getChildCells(n[D],!0),d=this.getCellStyle(n[D],!0),f=null,g=[],l=0;l<E.length;l++){var q=this.getCellGeometry(E[l]),y={cell:E[l],rospan:1,colspan:1,row:D,col:l,geo:q};q=null!=q.alternateBounds?q.alternateBounds:q;y.point=new mxPoint(q.width+(null!=f?f.point.x:b.x+t.x),q.height+(null!=k&&null!=
k[0]?k[0].point.y:b.y+t.y));y.actual=y;null!=k&&null!=k[l]&&1<k[l].rowspan?(y.rowspan=k[l].rowspan-1,y.colspan=k[l].colspan,y.actual=k[l].actual):null!=f&&1<f.colspan?(y.rowspan=f.rowspan,y.colspan=f.colspan-1,y.actual=f.actual):(f=this.getCurrentCellStyle(E[l],!0),null!=f&&(y.rowspan=parseInt(f.rowspan||1),y.colspan=parseInt(f.colspan||1)));f=1==mxUtils.getValue(d,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(d,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;e(y,E.length,
Graph.prototype.setTableRowHeight=function(b,e,k){k=null!=k?k:!0;var n=this.getModel();n.beginUpdate();try{var D=this.getCellGeometry(b);if(null!=D){D=D.clone();D.height+=e;n.setGeometry(b,D);var t=n.getParent(b),E=n.getChildCells(t,!0);if(!k){var d=mxUtils.indexOf(E,b);if(d<E.length-1){var f=E[d+1],g=this.getCellGeometry(f);null!=g&&(g=g.clone(),g.y+=e,g.height-=e,n.setGeometry(f,g))}}var l=this.getCellGeometry(t);null!=l&&(k||(k=b==E[E.length-1]),k&&(l=l.clone(),l.height+=e,n.setGeometry(t,l)))}}finally{n.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(b,e,k){k=null!=k?k:!1;var n=this.getModel(),D=n.getParent(b),t=n.getParent(D),E=n.getChildCells(D,!0);b=mxUtils.indexOf(E,b);var d=b==E.length-1;n.beginUpdate();try{for(var f=n.getChildCells(t,!0),g=0;g<f.length;g++){D=f[g];E=n.getChildCells(D,!0);var l=E[b],q=this.getCellGeometry(l);null!=q&&(q=q.clone(),q.width+=e,null!=q.alternateBounds&&(q.alternateBounds.width+=e),n.setGeometry(l,q));b<E.length-1&&(l=E[b+1],q=this.getCellGeometry(l),null!=q&&(q=q.clone(),
q.x+=e,k||(q.width-=e,null!=q.alternateBounds&&(q.alternateBounds.width-=e)),n.setGeometry(l,q)))}if(d||k){var y=this.getCellGeometry(t);null!=y&&(y=y.clone(),y.width+=e,n.setGeometry(t,y))}null!=this.layoutManager&&this.layoutManager.executeLayout(t)}finally{n.endUpdate()}};function TableLayout(b){mxGraphLayout.call(this,b)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.execute=function(b){if(null!=b){var e=this.graph.getActualStartSize(b,!0),k=this.graph.getCellGeometry(b),n=this.graph.getCellStyle(b),D="1"==mxUtils.getValue(n,"resizeLastRow","0"),t="1"==mxUtils.getValue(n,"resizeLast","0");n="1"==mxUtils.getValue(n,"fixedRows","0");var E=this.graph.getModel(),d=0;E.beginUpdate();try{for(var f=k.height-e.y-e.height,g=k.width-e.x-e.width,l=E.getChildCells(b,!0),q=0;q<l.length;q++)E.setVisible(l[q],!0);var y=this.getSize(l,!1);if(0<f&&0<g&&0<
l.length&&0<y){if(D){var F=this.graph.getCellGeometry(l[l.length-1]);null!=F&&(F=F.clone(),F.height=f-y+F.height,E.setGeometry(l[l.length-1],F))}var C=t?null:this.getRowLayout(l[0],g),H=[],G=e.y;for(q=0;q<l.length;q++)F=this.graph.getCellGeometry(l[q]),null!=F&&(F=F.clone(),F.x=e.x,F.width=g,F.y=Math.round(G),G=D||n?G+F.height:G+F.height/y*f,F.height=Math.round(G)-F.y,E.setGeometry(l[q],F)),d=Math.max(d,this.layoutRow(l[q],C,F.height,g,H));n&&f<y&&(k=k.clone(),k.height=G+e.height,E.setGeometry(b,
0;q<l.length;q++)E.setVisible(l[q],!1)}finally{E.endUpdate()}}};
(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var e=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(l,q){q=null!=q?q:!0;var y=this.getState(l);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&!y.invalid&&this.updateLineJumps(y)&&this.graph.cellRenderer.redraw(y,!1,this.isRendering());y=e.apply(this,
arguments);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(y);return y};var k=mxShape.prototype.paint;mxShape.prototype.paint=function(){k.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var l=this.node.getElementsByTagName("path");if(1<l.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&l[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var q=this.state.view.graph.getFlowAnimationStyle();null!=q&&l[1].setAttribute("class",q.getAttribute("id"))}}};var n=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(l,q){return n.apply(this,arguments)||null!=l.routedPoints&&null!=q.routedPoints&&!mxUtils.equalPoints(q.routedPoints,l.routedPoints)};var D=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(l){D.apply(this,arguments);this.graph.model.isEdge(l.cell)&&1!=l.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(l)};mxGraphView.prototype.updateLineJumps=function(l){var q=l.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=l.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(l.style,"jumpStyle","none")){var C=function(ja,U,I){var V=new mxPoint(U,I);V.type=ja;F.push(V);V=null!=l.routedPoints?l.routedPoints[F.length-1]:null;return null==V||V.type!=
ja||V.x!=U||V.y!=I},H=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var aa=q[G+1],da=q[G],ba=[],Y=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(da.x,da.y,Y.x,Y.y,aa.x,aa.y)<1*this.scale*this.scale;)aa=Y,G++,Y=q[G+2];y=C(0,da.x,da.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var O=this.validEdges[qa],X=O.absolutePoints;if(null!=X&&mxUtils.intersects(l,O)&&"1"!=O.style.noJump)for(O=0;O<X.length-1;O++){var ea=X[O+1],ka=X[O];for(Y=X[O+2];O<X.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Y.x,Y.y,
Y.x&&ba[ba.length-1].y===Y.y||ba.push(Y)}}}for(O=0;O<ba.length;O++)y=C(1,ba[O].x,ba[O].y)||y}Y=q[q.length-1];y=C(0,Y.x,Y.y)||y}l.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(l,q,y){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,H=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,aa=null,da=null,ba=[],Y=null;l.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var O=this.state.routedPoints[qa],X=new mxPoint(O.x/this.scale,O.y/this.scale);0==qa?X=q[0]:qa==this.state.routedPoints.length-1&&(X=q[q.length-1]);var ea=!1;if(null!=aa&&1==O.type){var ka=this.state.routedPoints[qa+1];O=ka.x/this.scale-
X.x;ka=ka.y/this.scale-X.y;O=O*O+ka*ka;null==Y&&(Y=new mxPoint(X.x-aa.x,X.y-aa.y),da=Math.sqrt(Y.x*Y.x+Y.y*Y.y),0<da?(Y.x=Y.x*C/da,Y.y=Y.y*C/da):Y=null);O>C*C&&0<da&&(O=aa.x-X.x,ka=aa.y-X.y,O=O*O+ka*ka,O>C*C&&(ea=new mxPoint(X.x-Y.x,X.y-Y.y),O=new mxPoint(X.x+Y.x,X.y+Y.y),ba.push(ea),this.addPoints(l,ba,y,F,!1,null,G),ba=0>Math.round(Y.x)||0==Math.round(Y.x)&&0>=Math.round(Y.y)?1:-1,G=!1,"sharp"==H?(l.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),l.lineTo(O.x-Y.y*ba,O.y+Y.x*ba),l.lineTo(O.x,O.y)):"line"==H?(l.moveTo(ea.x+
Y.y*ba,ea.y-Y.x*ba),l.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),l.moveTo(O.x-Y.y*ba,O.y+Y.x*ba),l.lineTo(O.x+Y.y*ba,O.y-Y.x*ba),l.moveTo(O.x,O.y)):"arc"==H?(ba*=1.3,l.curveTo(ea.x-Y.y*ba,ea.y+Y.x*ba,O.x-Y.y*ba,O.y+Y.x*ba,O.x,O.y)):(l.moveTo(O.x,O.y),G=!0),ba=[O],ea=!0))}else Y=null;ea||(ba.push(X),aa=X)}this.addPoints(l,ba,y,F,!1,null,G);l.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(l,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(l,q,y,F){if(null==q||null==l||"1"!=q.style.snapToPoint&&"1"!=l.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(l,q,F);var C=this.getNextPoint(l,y,F),H=this.graph.isOrthogonal(l),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),aa=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
G){var da=Math.cos(-G),ba=Math.sin(-G);C=mxUtils.getRotatedPoint(C,da,ba,aa)}da=parseFloat(l.style[mxConstants.STYLE_PERIMETER_SPACING]||0);da+=parseFloat(l.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&H,da);0!=G&&(da=Math.cos(G),ba=Math.sin(G),C=mxUtils.getRotatedPoint(C,da,ba,aa));l.setAbsoluteTerminalPoint(this.snapToAnchorPoint(l,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(l,q,y,F,C){if(null!=
q&&null!=l){l=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=l)for(var H=0;H<l.length;H++){var G=this.graph.getConnectionPoint(q,l[H]);if(null!=G){var aa=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||aa<F)y=G,F=aa}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(l,q,y){var F=f.apply(this,arguments);"1"==l.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,
F));return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(l){if(null!=l.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(l.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],T)}finally{this.model.endUpdate()}L=!0}return L};var l=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,T,ca,ia,ma){if(this.swapShapes(z,L,M,T,ca,ia,ma))return z;ma=null!=ma?ma:{};if(this.isTable(ca)){for(var pa=[],ua=0;ua<z.length;ua++)this.isTable(z[ua])?pa=pa.concat(this.model.getChildCells(z[ua],!0).reverse()):pa.push(z[ua]);z=pa}this.model.beginUpdate();try{pa=[];for(ua=0;ua<z.length;ua++)if(null!=ca&&this.isTableRow(z[ua])){var ya=
!0),Sa=this.model.getChildCells(Oa[0],!0),za=Sa.length-Pa.length;if(0<za)for(var wa=0;wa<za;wa++){var Da=this.cloneCell(Pa[Pa.length-1]);null!=Da&&(Da.value="",this.model.add(z[ua],Da))}else if(0>za)for(wa=0;wa>za;wa--)this.model.remove(Pa[Pa.length+wa-1]);Pa=this.model.getChildCells(z[ua],!0);for(wa=0;wa<Sa.length;wa++){var Ea=this.getCellGeometry(Sa[wa]),La=this.getCellGeometry(Pa[wa]);null!=Ea&&null!=La&&(La=La.clone(),La.width=Ea.width,this.model.setGeometry(Pa[wa],La))}}}}var Ta=l.apply(this,
null!=this.linkHint&&(this.linkHint.style.visibility="")};var $a=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){$a.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(c,m,x){mxShape.call(this);this.line=c;this.stroke=m;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function l(){mxShape.call(this)}function q(){mxShape.call(this)}
function y(c,m,x,p){mxShape.call(this);this.bounds=c;this.fill=m;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function H(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function da(){mxActor.call(this)}function ba(){mxActor.call(this)}function Y(){mxActor.call(this)}function qa(){mxActor.call(this)}function O(){mxActor.call(this)}function X(c,m){this.canvas=c;this.canvas.setLineJoin("round");
this.canvas.setLineCap("round");this.defaultVariation=m;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
function pa(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ya(){mxRhombus.call(this)}function Fa(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Sa(){mxActor.call(this)}function za(){mxActor.call(this)}function wa(){mxActor.call(this)}function Da(c,m,x,p){mxShape.call(this);this.bounds=c;this.fill=m;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
!0;this.indent=2;this.rectOutline="single"}function Ea(){mxConnector.call(this)}function La(c,m,x,p,v,A,B,ha,K,xa){B+=K;var na=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(na.x-v-B,na.y-A-B,2*B,2*B);xa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var m=0;m<this.line.length;m++){var x=this.line[m];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,m,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,m,x,p){if(null!=m){var v=null;c.begin();for(var A=0;A<m.length;A++){var B=m[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var m=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
p=0;p<this.line.length&&!m;p++){var v=this.line[p];null!=v&&null!=x&&(m=mxUtils.rectangleIntersectsSegment(c,x,v));x=v}return m};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,m,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):
!1,B=this.isHorizontal(),ha=this.getTitleSize();0==ha||this.outline?Oa.prototype.paintVertexShape.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-m,-x));A||this.outline||!(B&&ha<v||!B&&ha<p)||this.paintForeground(c,m,x,p,v)};e.prototype.paintForeground=function(c,m,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ha=A;A=B;B=ha}c.rotate(-this.getShapeRotation(),
A,B,m+p/2,x+v/2);s=this.scale;m=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/s;this.paintTableForeground(c,m,x,p,v)}};e.prototype.paintTableForeground=function(c,m,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],m,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?
c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,
parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ha=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));c.translate(m,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),
n);var Ta=Math.tan(mxUtils.toRadians(30)),Wa=(.5-Ta)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,m,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(m+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(m,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=
20;t.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(p,v/Ta);c.translate((p-m)/2,(v-m)/2+m/4);c.moveTo(0,.25*m);c.lineTo(.5*m,m*Wa);c.lineTo(m,.25*m);c.lineTo(.5*m,(.5-Wa)*m);c.lineTo(0,.25*m);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,m,x,p,v,A){m=Math.min(p,v/(.5+Ta));A?(c.moveTo(0,.25*m),c.lineTo(.5*m,(.5-Wa)*m),c.lineTo(m,.25*m),c.moveTo(.5*m,(.5-Wa)*m),c.lineTo(.5*m,(1-Wa)*m)):(c.translate((p-
m)/2,(v-m)/2),c.moveTo(0,.25*m),c.lineTo(.5*m,m*Wa),c.lineTo(m,.25*m),c.lineTo(m,.75*m),c.lineTo(.5*m,(1-Wa)*m),c.lineTo(0,.75*m),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,m,x,p,v,A){m=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,m),c.curveTo(0,2*m,p,2*m,p,m),A||(c.stroke(),c.begin()),c.translate(0,m/2),c.moveTo(0,m),c.curveTo(0,2*m,p,2*m,p,m),A||(c.stroke(),
c.begin()),c.translate(0,m/2),c.moveTo(0,m),c.curveTo(0,2*m,p,2*m,p,m),A||(c.stroke(),c.begin()),c.translate(0,-m);A||(c.moveTo(0,m),c.curveTo(0,-m/3,p,-m/3,p,m),c.lineTo(p,v-m),c.curveTo(p,v+m/3,0,v+m/3,0,v-m),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=
function(c,m,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(m,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-
A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,m*this.scale),0,0)}return null};mxUtils.extend(l,mxShape);l.prototype.isoAngle=15;l.prototype.paintVertexShape=
function(c,m,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(m,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",l);mxUtils.extend(q,mxShape);
q.prototype.size=15;q.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(m,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};
mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=15;y.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(m,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),
c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,m,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=
60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;C.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,x);m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ha=mxUtils.getValue(this.style,"absoluteArcSize",!1),K=parseFloat(mxUtils.getValue(this.style,
"arcSize",this.arcSize));ha||(K*=Math.min(p,v));K=Math.min(K,.5*p,.5*(v-x));m=Math.max(m,K);m=Math.min(p-K,m);B||(K=0);c.begin();"left"==A?(c.moveTo(Math.max(K,0),x),c.lineTo(Math.max(K,0),0),c.lineTo(m,0),c.lineTo(m,x)):(c.moveTo(p-m,x),c.lineTo(p-m,0),c.lineTo(p-Math.max(K,0),0),c.lineTo(p-Math.max(K,0),x));B?(c.moveTo(0,K+x),c.arcTo(K,K,0,0,1,K,x),c.lineTo(p-K,x),c.arcTo(K,K,0,0,1,p,K+x),c.lineTo(p,v-K),c.arcTo(K,K,0,0,1,p-K,v),c.lineTo(K,v),c.arcTo(K,K,0,0,1,0,v-K)):(c.moveTo(0,x),c.lineTo(p,
x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,
"tabWidth",15)*this.scale;m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-m));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-m)):new mxRectangle(Math.min(c.width,
c.width-x),0,A,Math.min(c.height,c.height-m))}return new mxRectangle(0,Math.min(c.height,m),0,0)}return null};mxUtils.extend(H,mxCylinder);H.prototype.arcSize=.1;H.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);m=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(m*=Math.min(p,v));m=Math.min(m,.5*p,.5*v);A||(m=
0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,m);c.arcTo(m,m,0,0,1,A+m,0);c.lineTo(p-m,0);c.arcTo(m,m,0,0,1,p,m);c.lineTo(p,v-m);c.arcTo(m,m,0,0,1,p-m,v);c.lineTo(A+m,v);c.arcTo(m,m,0,0,1,A,v-m);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,
function(){return!0};G.prototype.redrawPath=function(c,m,x,p,v){m=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(m,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,m)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(aa,mxActor);aa.prototype.size=.4;aa.prototype.redrawPath=function(c,m,
x,p,v){m=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,m/2);c.quadTo(p/4,1.4*m,p/2,m/2);c.quadTo(3*p/4,m*(1-1.4),p,m/2);c.lineTo(p,v-m/2);c.quadTo(3*p/4,v-1.4*m,p/2,v-m/2);c.quadTo(p/4,v-m*(1-1.4),0,v-m/2);c.lineTo(0,m/2);c.close();c.end()};aa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
this.direction==mxConstants.DIRECTION_WEST)return m*=p,new mxRectangle(c.x,c.y+m,x,p-2*m);m*=x;return new mxRectangle(c.x+m,c.y,x-2*m,p)}return c};mxCellRenderer.registerShape("tape",aa);mxUtils.extend(da,mxActor);da.prototype.size=.3;da.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};da.prototype.redrawPath=function(c,m,x,p,v){m=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c.moveTo(0,0);c.lineTo(p,0);c.lineTo(p,v-m/2);c.quadTo(3*p/4,v-1.4*m,p/2,v-m/2);c.quadTo(p/4,v-m*(1-1.4),0,v-m/2);c.lineTo(0,m/2);c.close();c.end()};mxCellRenderer.registerShape("document",da);var fb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,m,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):fb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var m=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*m),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(m/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*m*this.scale),0,Math.max(0,.3*m*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-m));p||(A=0);return"left"==
mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-m)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-m))}return new mxRectangle(0,Math.min(c.height,m),0,0)}return null};H.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=
function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,m*this.scale),0,Math.max(0,m*this.scale))}return null};mxUtils.extend(ba,mxActor);ba.prototype.size=.2;ba.prototype.fixedSize=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,m,x,p,v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(m,0),new mxPoint(p,0),new mxPoint(p-m,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",ba);mxUtils.extend(Y,mxActor);Y.prototype.size=.2;Y.prototype.fixedSize=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(c,m,x,p,v){m="0"!=
mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(m,0),new mxPoint(p-m,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Y);mxUtils.extend(qa,mxActor);qa.prototype.size=
.5;qa.prototype.redrawPath=function(c,m,x,p,v){c.setFillColor(null);m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(m,0),new mxPoint(m,v/2),new mxPoint(0,v/2),new mxPoint(m,v/2),new mxPoint(m,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(O,mxActor);O.prototype.redrawPath=
function(c,m,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);m=p/5;c.rect(0,0,m,v);c.fillAndStroke();c.rect(2*m,0,m,v);c.fillAndStroke();c.rect(4*m,0,m,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",O);X.prototype.moveTo=function(c,m){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=m;this.firstX=c;this.firstY=m};X.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
arguments));this.originalClose.apply(this.canvas,arguments)};X.prototype.quadTo=function(c,m,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};X.prototype.curveTo=function(c,m,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};X.prototype.arcTo=function(c,m,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};X.prototype.lineTo=function(c,m){if(null!=this.lastX&&null!=this.lastY){var x=function(na){return"number"===
typeof na?na?0>na?-1:1:na===na?0:NaN:NaN},p=Math.abs(c-this.lastX),v=Math.abs(m-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=m;return}var B=Math.round(A/10),ha=this.defaultVariation;5>B&&(B=5,ha/=3);var K=x(c-this.lastX)*p/B;x=x(m-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var xa=(Math.random()-.5)*ha;this.originalLineTo.call(this.canvas,K*A+this.lastX-xa*v,x*A+this.lastY-xa*p)}this.originalLineTo.call(this.canvas,c,m)}else this.originalLineTo.apply(this.canvas,
arguments);this.lastX=c;this.lastY=m};X.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var gb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){gb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&tb.apply(this,arguments)};var qb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,m,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=X)qb.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
A,v*A)),c.moveTo(m+A,x),c.lineTo(m+p-A,x),c.quadTo(m+p,x,m+p,x+A),c.lineTo(m+p,x+v-A),c.quadTo(m+p,x+v,m+p-A,x+v),c.lineTo(m+A,x+v),c.quadTo(m,x+v,m,x+v-A),c.lineTo(m,x+A),c.quadTo(m,x,m+A,x)):(c.moveTo(m,x),c.lineTo(m+p,x),c.lineTo(m+p,x+v),c.lineTo(m,x+v),c.lineTo(m,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=.1;ea.prototype.fixedSize=!1;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var m=c.width,x=c.height;c=new mxRectangle(c.x,c.y,m,x);var p=m*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;p=Math.max(p,Math.min(m*v,x*v))}c.x+=Math.round(p);c.width-=Math.round(2*p);return c}return c};
ea.prototype.paintForeground=function(c,m,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(m+B,x);c.lineTo(m+B,x+v);c.moveTo(m+p-B,x);c.lineTo(m+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",ea);mxCellRenderer.registerShape("process2",ea);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,m,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(m,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,m,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ja,mxHexagon);ja.prototype.size=30;ja.prototype.position=.5;ja.prototype.position2=.5;ja.prototype.base=20;ja.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(c,m,x,p,v){m=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),ha=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ha),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,m,!0,[4])};mxCellRenderer.registerShape("callout",ja);mxUtils.extend(U,mxActor);U.prototype.size=.2;U.prototype.fixedSize=20;U.prototype.isRoundable=function(){return!0};U.prototype.redrawPath=function(c,m,x,p,
v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p-m,0),new mxPoint(p,v/2),new mxPoint(p-m,v),new mxPoint(0,v),new mxPoint(m,v/2)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("step",
U);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,m,x,p,v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(m,
0),new mxPoint(p-m,0),new mxPoint(p,.5*v),new mxPoint(p-m,v),new mxPoint(m,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(V,mxRectangleShape);V.prototype.isHtmlAllowed=function(){return!1};V.prototype.paintForeground=function(c,m,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(m+p/2,x+A);c.lineTo(m+p/2,x+v-A);c.moveTo(m+A,x+v/2);c.lineTo(m+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
V);var cb=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var m=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+m,c.y+m,c.width-2*m,c.height-2*m)}return c};mxRhombus.prototype.paintVertexShape=function(c,m,x,p,v){cb.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);m+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),cb.apply(this,[c,m,x,p,v]))}};mxUtils.extend(Q,mxRectangleShape);Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var m=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+m,c.y+m,c.width-2*m,c.height-2*m)}return c};Q.prototype.paintForeground=function(c,m,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);m+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ha=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],xa=this.style["symbol"+A+"Width"],na=this.style["symbol"+A+"Height"],ab=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
ab,db=this.style["symbol"+A+"ArcSpacing"];null!=db&&(db*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),ab+=db,jb+=db);db=m;var Ga=x;db=ha==mxConstants.ALIGN_CENTER?db+(p-xa)/2:ha==mxConstants.ALIGN_RIGHT?db+(p-xa-ab):db+ab;Ga=K==mxConstants.ALIGN_MIDDLE?Ga+(v-na)/2:K==mxConstants.ALIGN_BOTTOM?Ga+(v-na-jb):Ga+jb;c.save();ha=new B;ha.style=this.style;B.prototype.paintVertexShape.call(ha,c,db,Ga,xa,na);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
mxCellRenderer.registerShape("ext",Q);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,m,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",fa);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
la);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(m+p/8,x+v);c.lineTo(m+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ra);mxUtils.extend(u,mxShape);u.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",u);mxUtils.extend(J,mxShape);
J.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};J.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};J.prototype.paintForeground=function(c,m,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(N,mxRectangleShape);N.prototype.size=
40;N.prototype.isHtmlAllowed=function(){return!1};N.prototype.getLabelBounds=function(c){var m=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,m)};N.prototype.paintBackground=function(c,m,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,m,
x,p,A):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=N&&(B=new B,B.apply(this.state),c.save(),B.paintVertexShape(c,m,x,p,A),c.restore()));A<v&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(m+p/2,x+A),c.lineTo(m+p/2,x+v),c.end(),c.stroke())};N.prototype.paintForeground=function(c,m,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,m,x,p,Math.min(v,
A))};mxCellRenderer.registerShape("umlLifeline",N);mxUtils.extend(W,mxShape);W.prototype.width=60;W.prototype.height=30;W.prototype.corner=10;W.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};W.prototype.paintBackground=function(c,m,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),ha=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),K=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);K!=mxConstants.NONE&&(c.setFillColor(K),c.rect(m,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,m,x,p,v),c.setGradient(this.fill,this.gradient,m,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
c.moveTo(m,x);c.lineTo(m+B,x);c.lineTo(m+B,x+Math.max(0,ha-1.5*A));c.lineTo(m+Math.max(0,B-A),x+ha);c.lineTo(m,x+ha);c.close();c.fillAndStroke();c.begin();c.moveTo(m+B,x);c.lineTo(m+p,x);c.lineTo(m+p,x+v);c.lineTo(m,x+v);c.lineTo(m,x+ha);c.stroke()};mxCellRenderer.registerShape("umlFrame",W);mxPerimeter.CenterPerimeter=function(c,m,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
m,x,p){p=N.prototype.size;null!=m&&(p=mxUtils.getValue(m.style,"size",p)*m.view.scale);m=parseFloat(m.style[mxConstants.STYLE_STROKEWIDTH]||1)*m.view.scale/2-1;x.x<c.getCenterX()&&(m=-1*(m+1));return new mxPoint(c.getCenterX()+m,Math.min(c.y+c.height,Math.max(c.y+p,x.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,m,x,p){p=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,m,x,p){p=parseFloat(m.style[mxConstants.STYLE_STROKEWIDTH]||1)*m.view.scale/2-1;null!=m.style.backboneSize&&(p+=parseFloat(m.style.backboneSize)*m.view.scale/2-1);if("south"==m.style[mxConstants.STYLE_DIRECTION]||"north"==m.style[mxConstants.STYLE_DIRECTION])return x.x<c.getCenterX()&&(p=-1*(p+1)),new mxPoint(c.getCenterX()+p,Math.min(c.y+c.height,Math.max(c.y,x.y)));x.y<c.getCenterY()&&(p=-1*(p+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,m,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(m.style,"size",ja.prototype.size))*m.view.scale))),m.style),m,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
m,x,p){var v="0"!=mxUtils.getValue(m.style,"fixedSize","0"),A=v?ba.prototype.fixedSize:ba.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha+v),new mxPoint(B+
K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]):(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,m,x,p){var v="0"!=
mxUtils.getValue(m.style,"fixedSize","0"),A=v?Y.prototype.fixedSize:Y.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+
v,ha)]):m==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,ha)]):m==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+
K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,m,x,p){var v="0"!=mxUtils.getValue(m.style,"fixedSize","0"),A=v?U.prototype.fixedSize:U.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=c.x,
ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,c),new mxPoint(B,ha)]):m==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,
A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,c),new mxPoint(B+K,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]):m==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa),new mxPoint(na,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(na,ha+
v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,m,x,p){var v="0"!=mxUtils.getValue(m.style,"fixedSize","0"),A=v?I.prototype.fixedSize:I.prototype.size;null!=m&&(A=mxUtils.getValue(m.style,"size",A));v&&(A*=m.view.scale);var B=
c.x,ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v),new mxPoint(na,ha)]):(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,
Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(S,mxShape);S.prototype.size=10;S.prototype.paintBackground=function(c,m,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
c.translate(m,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",S);mxUtils.extend(P,mxShape);P.prototype.size=10;P.prototype.inset=2;P.prototype.paintBackground=function(c,m,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(m,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(Z,mxShape);Z.prototype.paintBackground=function(c,m,x,p,v){c.translate(m,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Z);mxUtils.extend(oa,mxShape);oa.prototype.inset=2;oa.prototype.paintBackground=function(c,m,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
"inset",this.inset))+this.strokewidth;c.translate(m,x);c.ellipse(0,A,p-2*A,v-2*A);c.fillAndStroke();c.begin();c.moveTo(p/2,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",oa);mxUtils.extend(va,mxCylinder);va.prototype.jettyWidth=20;va.prototype.jettyHeight=10;va.prototype.redrawPath=function(c,m,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));m=parseFloat(mxUtils.getValue(this.style,"jettyHeight",
this.jettyHeight));x=B/2;B=x+B/2;var ha=Math.min(m,v-m),K=Math.min(ha+2*m,v-m);A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+m),c.lineTo(x,ha+m),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+m),c.lineTo(x,K+m)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+m),c.lineTo(0,K+m),c.lineTo(0,K),c.lineTo(x,K),c.lineTo(x,ha+m),c.lineTo(0,ha+m),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("module",va);mxUtils.extend(Aa,mxCylinder);Aa.prototype.jettyWidth=
32;Aa.prototype.jettyHeight=12;Aa.prototype.redrawPath=function(c,m,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));m=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ha=.3*v-m/2,K=.7*v-m/2;A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+m),c.lineTo(x,ha+m),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+m),c.lineTo(x,K+m)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+m),c.lineTo(0,K+m),c.lineTo(0,K),c.lineTo(x,
K),c.lineTo(x,ha+m),c.lineTo(0,ha+m),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("component",Aa);mxUtils.extend(sa,mxRectangleShape);sa.prototype.paintForeground=function(c,m,x,p,v){var A=p/2,B=v/2,ha=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(m+A,x),new mxPoint(m+p,x+B),new mxPoint(m+A,x+v),new mxPoint(m,x+B)],this.isRounded,ha,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("associativeEntity",sa);mxUtils.extend(Ba,mxDoubleEllipse);Ba.prototype.outerStroke=!0;Ba.prototype.paintVertexShape=function(c,m,x,p,v){var A=Math.min(4,Math.min(p/5,v/5));0<p&&0<v&&(c.ellipse(m+A,x+A,p-2*A,v-2*A),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(m,x,p,v),c.stroke())};mxCellRenderer.registerShape("endState",Ba);mxUtils.extend(ta,Ba);ta.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ta);mxUtils.extend(Na,mxArrowConnector);
"startWidth",this.defaultArrowWidth)};Ca.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Ca);mxUtils.extend(Qa,mxActor);Qa.prototype.size=30;Qa.prototype.isRoundable=function(){return!0};Qa.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(v,parseFloat(mxUtils.getValue(this.style,
"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,m),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Qa);mxUtils.extend(Ua,mxRectangleShape);Ua.prototype.dx=20;Ua.prototype.dy=20;Ua.prototype.isHtmlAllowed=function(){return!1};Ua.prototype.paintForeground=function(c,m,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(m,x+A);c.lineTo(m+p,x+A);c.end();c.stroke();c.begin();c.moveTo(m+B,x);c.lineTo(m+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Ua);
mxUtils.extend(Ka,mxActor);Ka.prototype.dx=20;Ka.prototype.dy=20;Ka.prototype.redrawPath=function(c,m,x,p,v){m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(m,x),
new mxPoint(m,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",Ka);mxUtils.extend(bb,mxActor);bb.prototype.redrawPath=function(c,m,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",bb);mxUtils.extend(Va,mxActor);Va.prototype.dx=20;Va.prototype.dy=20;Va.prototype.redrawPath=function(c,m,x,p,v){m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint((p+m)/2,x),new mxPoint((p+m)/2,v),new mxPoint((p-m)/2,v),new mxPoint((p-m)/2,x),new mxPoint(0,x)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("tee",Va);mxUtils.extend($a,
mxActor);$a.prototype.arrowWidth=.3;$a.prototype.arrowSize=.2;$a.prototype.redrawPath=function(c,m,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,x),new mxPoint(p-m,x),new mxPoint(p-m,0),new mxPoint(p,v/2),new mxPoint(p-
m,v),new mxPoint(p-m,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("singleArrow",$a);mxUtils.extend(z,mxActor);z.prototype.redrawPath=function(c,m,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth))));m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(m,0),new mxPoint(m,x),new mxPoint(p-m,x),new mxPoint(p-m,0),new mxPoint(p,v/2),new mxPoint(p-m,v),new mxPoint(p-m,A),new mxPoint(m,A),new mxPoint(m,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,m,x,p,v){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(m,0);c.lineTo(p,0);c.quadTo(p-2*m,v/2,p,v);c.lineTo(m,v);c.quadTo(m-2*m,v/2,m,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,m,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,
m,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",T);mxUtils.extend(ca,mxActor);ca.prototype.size=20;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(m,0),new mxPoint(p-m,0),
new mxPoint(p,.8*m),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*m)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ia,mxActor);ia.prototype.size=.375;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,m,x,p,v){m=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
0),new mxPoint(p,v-m),new mxPoint(p/2,v),new mxPoint(0,v-m)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ia);mxUtils.extend(ma,mxEllipse);ma.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(m+p/2,x+v);c.lineTo(m+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",ma);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(m,x+v/2);c.lineTo(m+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(m+p/2,x);c.lineTo(m+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",pa);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(m+.145*p,x+.145*v);c.lineTo(m+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(m+.855*p,x+.145*v);c.lineTo(m+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",ua);mxUtils.extend(ya,mxRhombus);ya.prototype.paintVertexShape=function(c,m,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(m,x+v/2);c.lineTo(m+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ya);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(c,m,x,p,v){c.begin();c.moveTo(m,x);c.lineTo(m+p,x);c.lineTo(m+p/2,x+v/2);c.close();c.fillAndStroke();
c.begin();c.moveTo(m,x+v);c.lineTo(m+p,x+v);c.lineTo(m+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Fa);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,m,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ha=x+v-B/2;c.begin();c.moveTo(m,x);c.lineTo(m,x+v);c.moveTo(m+A,ha);c.lineTo(m+A+B,ha-B/2);c.moveTo(m+A,ha);c.lineTo(m+A+B,ha+B/2);c.moveTo(m+A,ha);c.lineTo(m+p-A,ha);c.moveTo(m+p,x);c.lineTo(m+p,x+v);c.moveTo(m+p-A,ha);c.lineTo(m+p-B-A,ha-B/2);c.moveTo(m+
p-A,ha);c.lineTo(m+p-B-A,ha+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(Oa,mxEllipse);Oa.prototype.drawHidden=!0;Oa.prototype.paintVertexShape=function(c,m,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ha="1"==mxUtils.getValue(this.style,"top","1"),K="1"==mxUtils.getValue(this.style,
"left","1"),xa="1"==mxUtils.getValue(this.style,"right","1"),na="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ha||xa||na||K?(c.rect(m,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(m,x),this.outline||ha?c.lineTo(m+p,x):c.moveTo(m+p,x),this.outline||xa?c.lineTo(m+p,x+v):c.moveTo(m+p,x+v),this.outline||na?c.lineTo(m,x+v):c.moveTo(m,x+v),(this.outline||K)&&c.lineTo(m,x),c.end(),c.stroke(),c.setLineCap("flat")):
c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Oa);mxUtils.extend(Pa,mxEllipse);Pa.prototype.paintVertexShape=function(c,m,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(m+p/2,x),c.lineTo(m+p/2,x+v)):(c.moveTo(m,x+v/2),c.lineTo(m+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Pa);mxUtils.extend(Sa,mxActor);Sa.prototype.redrawPath=function(c,
m,x,p,v){m=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-m,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-m,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Sa);mxUtils.extend(za,mxActor);za.prototype.size=.2;za.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(v,p);var A=Math.max(0,Math.min(m,m*parseFloat(mxUtils.getValue(this.style,"size",this.size))));m=(v-A)/2;x=m+A;var B=(p-A)/2;A=B+A;c.moveTo(0,m);c.lineTo(B,m);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,m);c.lineTo(p,m);c.lineTo(p,x);
c.lineTo(A,x);c.lineTo(A,v);c.lineTo(B,v);c.lineTo(B,x);c.lineTo(0,x);c.close();c.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(c,m,x,p,v){m=Math.min(p,v/2);x=Math.min(p-m,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*p);c.moveTo(0,v/2);c.lineTo(x,0);c.lineTo(p-m,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-m,v);c.lineTo(x,v);c.close();c.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Da,
dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Da.prototype.paintVertexShape=function(c,m,x,p,v){c.translate(m,
x);this.strictDrawShape(c,0,0,p,v)};Da.prototype.strictDrawShape=function(c,m,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ha=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),K=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),xa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),na=A&&A.indent?
Ib=Math.max(0,Math.min(50,K));A=Da.prototype;c.setDashed(ab);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);K=Math.min(.5*v,.5*p,K);ha||(K=Ib*Math.min(p,v)/100);K=Math.min(K,.5*Math.min(p,v));ha||(na=Math.min(db*Math.min(p,v)/100));na=Math.min(na,.5*Math.min(p,v)-K);(Ga||Ja||Ia||Ha)&&"frame"!=xa&&(c.begin(),Ga?A.moveNW(c,m,x,p,v,B,Ra,K,Ha):c.moveTo(0,0),Ga&&A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),Ja&&A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),Ia&&
A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),Ha&&A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),ab=ha=Hb,"none"==Cb&&(ha=0),"none"==Db&&(ab=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ha,ab),c.begin(),Ga?A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha):c.moveTo(na,0),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),Ia&&Ja&&A.paintSEInner(c,
m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),Ja&&Ga&&A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),Ga&&Ha&&A.paintNWInner(c,m,x,p,v,B,Ra,K,na),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,m,x,p,v,B,Ra,Xa,Ya,Za,K,Ga,Ja,Ia,Ha),c.stroke()));Ga||Ja||Ia||!Ha?Ga||Ja||!Ia||Ha?!Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==
xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),
c.fillAndStroke()):Ga||!Ja||Ia||Ha?!Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,
K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,
m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&
Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga||Ja||Ia||Ha?
Ga&&!Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,
m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke(),c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,
K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,
K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,
x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,
m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,
m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,
m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,
v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,
m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):
Ga&&Ja&&Ia&&Ha&&("frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),c.close(),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,
B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.paintNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.paintSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.paintSW(c,m,x,p,v,B,Za,K,Ia),
A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),c.close(),A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,m,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,m,x,p,v,B,Ya,K,na),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,m,x,p,v,B,Xa,K,na),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,m,x,p,v,B,Ra,K,na),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=xa?(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,
m,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,m,x,p,v,B,Ra,K,Ha),A.paintTop(c,m,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,m,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,m,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,m,x,p,v,B,Xa,K,Ga),A.paintRight(c,m,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,m,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,m,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,m,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,m,x,p,v,B,Ya,K,Ja),A.paintBottom(c,m,x,p,v,B,Za,K,Ha),A.lineSWInner(c,m,x,p,v,B,Za,K,na,Ha),
A.paintBottomInner(c,m,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,m,x,p,v,B,Ra,K,Ia),A.paintLeft(c,m,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,m,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,m,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,m,x,p,v,B,Ra,Xa,
Ya,Za,K,Ga,Ja,Ia,Ha);c.stroke()};Da.prototype.moveNW=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,0):c.moveTo(0,ha)};Da.prototype.moveNE=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,0):c.moveTo(p-ha,0)};Da.prototype.moveSE=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,v):c.moveTo(p,v-ha)};Da.prototype.moveSW=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,
v):c.moveTo(ha,v)};Da.prototype.paintNW=function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,ha,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ha,0);else c.lineTo(0,0)};Da.prototype.paintTop=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,0):c.lineTo(p-ha,0)};Da.prototype.paintNE=
function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,p,ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ha);else c.lineTo(p,0)};Da.prototype.paintRight=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,v):c.lineTo(p,v-ha)};Da.prototype.paintLeft=function(c,m,x,p,v,A,B,ha,K){"square"==
B||"default"==B&&"square"==A||!K?c.lineTo(0,0):c.lineTo(0,ha)};Da.prototype.paintSE=function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,p-ha,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ha,v);else c.lineTo(p,v)};Da.prototype.paintBottom=function(c,m,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(0,
v):c.lineTo(ha,v)};Da.prototype.paintSW=function(c,m,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){m=0;if("rounded"==B||"default"==B&&"rounded"==A)m=1;c.arcTo(ha,ha,0,0,m,0,v-ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ha);else c.lineTo(0,v)};Da.prototype.paintNWInner=function(c,m,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,K,.5*K+ha);else if("invRound"==
B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,K,K+ha);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(K,.5*K+ha);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,K+ha),c.lineTo(K,K+ha)};Da.prototype.paintTopInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(0,K):xa&&!na?c.lineTo(K,0):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ha+.5*K,K):c.lineTo(ha+K,K):c.lineTo(0,
K):c.lineTo(0,0)};Da.prototype.paintNEInner=function(c,m,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-ha-.5*K,K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-ha-K,K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ha-.5*K,K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,ha+K),c.lineTo(p-ha-K,K)};Da.prototype.paintRightInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p-K,0):xa&&!na?c.lineTo(p,
K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):c.lineTo(p-K,ha+K):c.lineTo(p-K,0):c.lineTo(p,0)};Da.prototype.paintLeftInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,v):xa&&!na?c.lineTo(0,v-K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):c.lineTo(K,v-ha-K):
c.lineTo(K,v):c.lineTo(0,v)};Da.prototype.paintSEInner=function(c,m,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-K,v-ha-.5*K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-K,v-ha-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-K,v-ha-.5*K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,v-ha-K),c.lineTo(p-K,v-ha-K)};Da.prototype.paintBottomInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p,
v-K):xa&&!na?c.lineTo(p-K,v):"square"==B||"default"==B&&"square"==A||!xa?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ha-.5*K,v-K):c.lineTo(p-ha-K,v-K):c.lineTo(p,v)};Da.prototype.paintSWInner=function(c,m,x,p,v,A,B,ha,K,xa){if(!xa)c.lineTo(K,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(K,v-K);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,ha+.5*K,v-K);else if("invRound"==B||"default"==B&&"invRound"==
A)c.arcTo(ha+K,ha+K,0,0,1,ha+K,v-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ha+.5*K,v-K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,v-ha-K),c.lineTo(K+ha,v-K)};Da.prototype.moveSWInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(K,v-ha-K):
c.moveTo(0,v-K)};Da.prototype.lineSWInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,v-ha-K):c.lineTo(0,v-K)};Da.prototype.moveSEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,v-ha-K):c.moveTo(p-K,v)};Da.prototype.lineSEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,v-ha-K):
c.lineTo(p-K,v)};Da.prototype.moveNEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.moveTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,ha+K):c.moveTo(p,K)};Da.prototype.lineNEInner=function(c,m,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,ha+K):c.lineTo(p,K)};Da.prototype.moveNWInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.moveTo(K,0):xa&&!na?c.moveTo(0,K):"square"==B||"default"==B&&"square"==A?c.moveTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
B&&"fold"==A)&&c.moveTo(K,ha+K):c.moveTo(0,0)};Da.prototype.lineNWInner=function(c,m,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,0):xa&&!na?c.lineTo(0,K):"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,ha+K):c.lineTo(0,0)};Da.prototype.paintFolds=function(c,m,x,p,v,A,B,ha,K,xa,na,ab,jb,db,Ga){if("fold"==
Da.prototype.constraints=null;mxUtils.extend(Ea,mxConnector);Ea.prototype.origPaintEdgeShape=Ea.prototype.paintEdgeShape;Ea.prototype.paintEdgeShape=function(c,m,x){for(var p=[],v=0;v<m.length;v++)p.push(mxUtils.clone(m[v]));v=c.state.dashed;var A=c.state.fixDash;Ea.prototype.origPaintEdgeShape.apply(this,[c,p,x]);3<=c.state.strokeWidth&&(p=mxUtils.getValue(this.style,"fillColor",null),null!=p&&(c.setStrokeColor(p),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(v,A),Ea.prototype.origPaintEdgeShape.apply(this,
[c,m,x])))};mxCellRenderer.registerShape("filledEdge",Ea);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var m=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==m.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,m,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();
c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.stroke()}});mxMarker.addMarker("box",function(c,m,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.x+na/2,db=p.y+ab/2;p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb-na/2-ab/2,db-ab/2+na/2);c.lineTo(jb-na/2+ab/2,db-ab/2-na/2);c.lineTo(jb+ab/2-3*na/2,db-3*ab/2-na/2);c.lineTo(jb-ab/2-3*na/2,db-3*ab/2+na/2);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,m,x,p,v,A,B,ha,K,
xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.moveTo(p.x-na/2+ab/2,p.y-ab/2-na/2);c.lineTo(p.x-ab/2-3*na/2,p.y-3*ab/2+na/2);c.stroke()}});mxMarker.addMarker("circle",La);mxMarker.addMarker("circlePlus",function(c,m,x,p,v,A,B,ha,K,xa){var na=p.clone(),ab=La.apply(this,arguments),jb=v*(B+2*K),db=A*(B+2*K);return function(){ab.apply(this,arguments);c.begin();c.moveTo(na.x-v*K,na.y-A*K);c.lineTo(na.x-2*jb+
v*K,na.y-2*db+A*K);c.moveTo(na.x-jb-db+A*K,na.y-db+jb-v*K);c.lineTo(na.x+db-jb-A*K,na.y-db-jb+v*K);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,m,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.clone();p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb.x-ab,jb.y+na);c.quadTo(p.x-ab,p.y+na,p.x,p.y);c.quadTo(p.x+ab,p.y-na,jb.x+ab,jb.y-na);c.stroke()}});mxMarker.addMarker("async",function(c,m,x,p,v,A,B,ha,K,xa){m=v*K*1.118;x=A*K*1.118;v*=B+K;A*=B+K;var na=p.clone();na.x-=m;na.y-=
x;p.x+=-v-m;p.y+=-A-x;return function(){c.begin();c.moveTo(na.x,na.y);ha?c.lineTo(na.x-v-A/2,na.y-A+v/2):c.lineTo(na.x+A/2-v,na.y-A-v/2);c.lineTo(na.x-v,na.y-A);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(m,x,p,v,A,B,ha,K,xa,na){A*=ha+xa;B*=ha+xa;var ab=v.clone();return function(){m.begin();m.moveTo(ab.x,ab.y);K?m.lineTo(ab.x-A-B/c,ab.y-B+A/c):m.lineTo(ab.x+B/c-A,ab.y-B-A/c);m.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var hb=
function(c,m,x){return lb(c,["width"],m,function(p,v,A,B,ha){ha=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ha/2,B.y+A*p/4-v*ha/2)},function(p,v,A,B,ha,K){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ha.x,ha.y,K.x,K.y));c.style.width=Math.round(2*p)/c.view.scale-x})},lb=function(c,m,x,p,v){return eb(c,m,function(A){var B=c.absolutePoints,ha=B.length-1;A=c.view.translate;var K=c.view.scale,xa=x?B[0]:B[ha];B=x?B[1]:B[ha-1];ha=B.x-xa.x;var na=B.y-xa.y,ab=Math.sqrt(ha*ha+na*na);xa=
p.call(this,ab,ha/ab,na/ab,xa,B);return new mxPoint(xa.x/K-A.x,xa.y/K-A.y)},function(A,B,ha){var K=c.absolutePoints,xa=K.length-1;A=c.view.translate;var na=c.view.scale,ab=x?K[0]:K[xa];K=x?K[1]:K[xa-1];xa=K.x-ab.x;var jb=K.y-ab.y,db=Math.sqrt(xa*xa+jb*jb);B.x=(B.x+A.x)*na;B.y=(B.y+A.y)*na;v.call(this,db,xa/db,jb/db,ab,K,B,ha)})},rb=function(c){return function(m){return[eb(m,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",$a.prototype.arrowWidth))),
v=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",$a.prototype.arrowSize)));return new mxPoint(x.x+(1-v)*x.width,x.y+(1-p)*x.height/2)},function(x,p){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(x.y+x.height/2-p.y)/x.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(x.x+x.width-p.x)/x.width))})]}},vb=function(c){return function(m){return[eb(m,["size"],function(x){var p=Math.max(0,Math.min(.5*x.height,parseFloat(mxUtils.getValue(this.state.style,"size",
c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},ob=function(c,m,x){return function(p){var v=[eb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",m)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
!1)&&v.push(kb(p));return v}},Ab=function(c,m,x,p,v){x=null!=x?x:.5;return function(A){var B=[eb(A,["size"],function(ha){var K=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,xa=parseFloat(mxUtils.getValue(this.state.style,"size",K?v:c));return new mxPoint(ha.x+Math.max(0,Math.min(.5*ha.width,xa*(K?1:ha.width))),ha.getCenterY())},function(ha,K,xa){ha=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?K.x-ha.x:Math.max(0,Math.min(x,(K.x-ha.x)/ha.width));this.state.style.size=
ha},!1,p)];m&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(kb(A));return B}},Bb=function(c,m,x){c=null!=c?c:.5;return function(p){var v=[eb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ha=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:m)));return new mxPoint(A.x+Math.min(.75*A.width*c,ha*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(kb(p));return v}},ub=function(){return function(c){var m=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m}},kb=function(c,m){return eb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=m?m:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},eb=function(c,m,x,p,v,A,B){var ha=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ha.execute=function(xa){for(var na=0;na<m.length;na++)this.copyStyle(m[na]);B&&B(xa)};ha.getPosition=x;ha.setPosition=p;ha.ignoreGrid=null!=v?v:!0;if(A){var K=ha.positionChanged;ha.positionChanged=function(){K.apply(this,arguments);c.view.invalidate(this.state.cell);
c.view.validate()}}return ha},mb={link:function(c){return[hb(c,!0,10),hb(c,!1,10)]},flexArrow:function(c){var m=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<m/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(lb(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(xa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<m/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<m&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,
c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(xa.getEvent())||mxEvent.isControlDown(xa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<m/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),
m/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<m&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var m=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));m.push(kb(c,x/2))}m.push(eb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ha=0;ha<A.length;ha++)A[ha]!=c.cell&&v.isSwimlane(A[ha])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ha]))==p&&B.push(A[ha]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return m},label:ub(),ext:ub(),rectangle:ub(),
triangle:ub(),rhombus:ub(),umlLifeline:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(m.height,parseFloat(mxUtils.getValue(this.state.style,"size",N.prototype.size))));return new mxPoint(m.getCenterX(),m.y+x)},function(m,x){this.state.style.size=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},umlFrame:function(c){return[eb(c,["width","height"],function(m){var x=Math.max(W.prototype.corner,Math.min(m.width,mxUtils.getValue(this.state.style,"width",W.prototype.width))),
p=Math.max(1.5*W.prototype.corner,Math.min(m.height,mxUtils.getValue(this.state.style,"height",W.prototype.height)));return new mxPoint(m.x+x,m.y+p)},function(m,x){this.state.style.width=Math.round(Math.max(W.prototype.corner,Math.min(m.width,x.x-m.x)));this.state.style.height=Math.round(Math.max(1.5*W.prototype.corner,Math.min(m.height,x.y-m.y)))},!1)]},process:function(c){var m=[eb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
"size",ea.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},cross:function(c){return[eb(c,["size"],function(m){var x=Math.min(m.width,m.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"size",za.prototype.size)))*x/2;return new mxPoint(m.getCenterX()-x,m.getCenterY()-x)},function(m,x){var p=Math.min(m.width,m.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,m.getCenterY()-x.y)/p*2,Math.max(0,m.getCenterX()-x.x)/p*2)))})]},note:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(m.width,Math.min(m.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(m.x+m.width-x,m.y+x)},function(m,x){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(m.width,m.x+m.width-x.x),Math.min(m.height,x.y-m.y))))})]},note2:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(m.width,Math.min(m.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(m.x+m.width-x,m.y+x)},function(m,x){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(m.width,m.x+m.width-x.x),Math.min(m.height,x.y-m.y))))})]},manualInput:function(c){var m=[eb(c,["size"],function(x){var p=
Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Qa.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},dataStorage:function(c){return[eb(c,["size"],function(m){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?L.prototype.fixedSize:
L.prototype.size));return new mxPoint(m.x+m.width-p*(x?1:m.width),m.getCenterY())},function(m,x){m="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(m.width,m.x+m.width-x.x)):Math.max(0,Math.min(1,(m.x+m.width-x.x)/m.width));this.state.style.size=m},!1)]},callout:function(c){var m=[eb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},internalStorage:function(c){var m=[eb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Ua.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
"dy",Ua.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&m.push(kb(c));return m},module:function(c){return[eb(c,["jettyWidth","jettyHeight"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"jettyWidth",va.prototype.jettyWidth))),p=Math.max(0,Math.min(m.height,
mxUtils.getValue(this.state.style,"jettyHeight",va.prototype.jettyHeight)));return new mxPoint(m.x+x/2,m.y+2*p)},function(m,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(m.width,x.x-m.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(m.height,x.y-m.y))/2)})]},corner:function(c){return[eb(c,["dx","dy"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"dx",Ka.prototype.dx))),p=Math.max(0,Math.min(m.height,mxUtils.getValue(this.state.style,
"dy",Ka.prototype.dy)));return new mxPoint(m.x+x,m.y+p)},function(m,x){this.state.style.dx=Math.round(Math.max(0,Math.min(m.width,x.x-m.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},tee:function(c){return[eb(c,["dx","dy"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"dx",Va.prototype.dx))),p=Math.max(0,Math.min(m.height,mxUtils.getValue(this.state.style,"dy",Va.prototype.dy)));return new mxPoint(m.x+(m.width+x)/2,m.y+p)},function(m,
x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(m.width/2,x.x-m.x-m.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},singleArrow:rb(1),doubleArrow:rb(.5),folder:function(c){return[eb(c,["tabWidth","tabHeight"],function(m){var x=Math.max(0,Math.min(m.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(m.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=m.width-x);return new mxPoint(m.x+x,m.y+p)},function(m,x){var p=Math.max(0,Math.min(m.width,x.x-m.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=m.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(m.height,x.y-m.y)))},!1)]},document:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",da.prototype.size))));return new mxPoint(m.x+3*m.width/4,m.y+(1-x)*m.height)},function(m,x){this.state.style.size=Math.max(0,Math.min(1,(m.y+m.height-x.y)/m.height))},!1)]},tape:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(m.getCenterX(),m.y+x*m.height/2)},function(m,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-m.y)/m.height*2))},!1)]},isoCube2:function(c){return[eb(c,
["isoAngle"],function(m){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",l.isoAngle))))*Math.PI/200;return new mxPoint(m.x,m.y+Math.min(m.width*Math.tan(x),.5*m.height))},function(m,x){this.state.style.isoAngle=Math.max(0,50*(x.y-m.y)/m.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[eb(c,["size"],function(m){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size))));
return new mxPoint(m.getCenterX(),m.y+(1-x)*m.height)},function(m,x){this.state.style.size=Math.max(0,Math.min(1,(m.y+m.height-x.y)/m.height))},!1)]},"mxgraph.basic.rect":function(c){var m=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});m.push(c);return m},step:Ab(U.prototype.size,!0,null,!0,U.prototype.fixedSize),hexagon:Ab(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:Ab(qa.prototype.size,!1),display:Ab(wa.prototype.size,!1),cube:ob(1,
n.prototype.size,!1),card:ob(.5,G.prototype.size,!0),loopLimit:ob(.5,ca.prototype.size,!0),trapezoid:Bb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:Bb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=eb;Graph.handleFactory=mb;var wb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=wb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var m=this.state.style.shape;null==mxCellRenderer.defaultShapes[m]&&
null==mxStencilRegistry.getStencil(m)?m=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(m=mxConstants.SHAPE_SWIMLANE);m=mb[m];null==m&&null!=this.state.shape&&this.state.shape.isRoundable()&&(m=mb[mxConstants.SHAPE_RECTANGLE]);null!=m&&(m=m(this.state),null!=m&&(c=null==c?m:c.concat(m)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);
c=mb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var pb=new mxPoint(1,0),xb=new mxPoint(1,0),zb=mxUtils.toRadians(-30);pb=mxUtils.getRotatedPoint(pb,Math.cos(zb),Math.sin(zb));var yb=mxUtils.toRadians(-150);xb=mxUtils.getRotatedPoint(xb,Math.cos(yb),Math.sin(yb));mxEdgeStyle.IsometricConnector=function(c,m,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ha=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
null==ha&&null!=m&&(ha=new mxPoint(m.getCenterX(),m.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var K=pb.x,xa=pb.y,na=xb.x,ab=xb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ha){c=function(Ga,Ja,Ia){Ga-=db.x;var Ha=Ja-db.y;Ja=(ab*Ga-na*Ha)/(K*ab-xa*na);Ga=(xa*Ga-K*Ha)/(xa*na-K*ab);jb?(Ia&&(db=new mxPoint(db.x+K*Ja,db.y+xa*Ja),v.push(db)),db=new mxPoint(db.x+na*Ga,db.y+ab*Ga)):(Ia&&(db=new mxPoint(db.x+na*Ga,db.y+ab*Ga),v.push(db)),
db=new mxPoint(db.x+K*Ja,db.y+xa*Ja));v.push(db)};var db=ha;null==p&&(p=new mxPoint(ha.x+(B.x-ha.x)/2,ha.y+(B.y-ha.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var nb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,m){if(m==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return nb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
function(c,m,x){c=[];var p=Math.tan(mxUtils.toRadians(30)),v=(.5-p)/2;p=Math.min(m,x/(.5+p));m=(m-p)/2;x=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+.5*p,x+p*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+p,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+p,x+.75*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m+.5*p,x+(1-v)*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,x+.75*p));return c};l.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;p=Math.min(m*Math.tan(p),.5*x);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,x-p));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ja.prototype.getConstraints=function(c,m,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=m*Math.max(0,
Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x-p)));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));m>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;V.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(m-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));m>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};G.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));m>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};n.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(m+p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));return c};y.prototype.getConstraints=function(c,m,x){c=[];m=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,m));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,m));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-m));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-m));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,m+.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,m+.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,x-m-.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-m-.5*(.5*x-m)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*m));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*m));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-m));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-m));return c};C.prototype.getConstraints=
function(c,m,x){c=[];var p=Math.max(0,Math.min(m,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),v))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,
ua.prototype.constraints=mxEllipse.prototype.constraints;Pa.prototype.constraints=mxEllipse.prototype.constraints;Qa.prototype.constraints=mxRectangleShape.prototype.constraints;Sa.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(c,m,x){c=[];var p=Math.min(m,x/2),v=Math.min(m-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*m);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+m-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+m-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};va.prototype.getConstraints=function(c,m,x){m=parseFloat(mxUtils.getValue(c,
"jettyWidth",va.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",va.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,m),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,m),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,m));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1,null,m));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,m));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ia.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;Va.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*m+.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(m+p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*m-.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};Ka.prototype.getConstraints=function(c,m,x){c=[];var p=Math.max(0,Math.min(m,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
function(c,m,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),v=m*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-v),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m-v),x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));return c};z.prototype.getConstraints=function(c,m,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth)))),v=m*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*m,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*m,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};za.prototype.getConstraints=
function(c,m,x){c=[];var p=Math.min(x,m),v=Math.max(0,Math.min(p,p*parseFloat(mxUtils.getValue(this.style,"size",this.size))));p=(x-v)/2;var A=p+v,B=(m-v)/2;v=B+v;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+v),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,m,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,m,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(m+v),A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*B,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
Actions.prototype.init=function(){function b(g){t.escape();g=t.deleteCells(t.getDeletableCells(t.getSelectionCells()),g);null!=g&&t.setSelectionCells(g)}function e(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{for(var g=t.getSelectionCells(),l=0;l<g.length;l++)t.cellLabelChanged(g[l],"")}finally{t.getModel().endUpdate()}}}function k(g,l,q,y,F){F.getModel().beginUpdate();try{var C=F.getCellGeometry(g);null!=C&&q&&y&&(q/=y,C=C.clone(),1<q?C.height=C.width/q:C.width=C.height*q,F.getModel().setGeometry(g,
C));F.setCellStyles(mxConstants.STYLE_CLIP_PATH,l,[g]);F.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[g])}finally{F.getModel().endUpdate()}}var n=this.editorUi,D=n.editor,t=D.graph,E=function(){return Action.prototype.isEnabled.apply(this,arguments)&&t.isEnabled()};this.addAction("new...",function(){t.openLink(n.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";n.openFile()});this.addAction("smartFit",function(){t.popupMenuHandler.hideMenu();var g=t.view.scale,
l=t.view.translate.x,q=t.view.translate.y;n.actions.get("resetView").funct();1E-5>Math.abs(g-t.view.scale)&&l==t.view.translate.x&&q==t.view.translate.y&&n.actions.get(t.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){t.isEnabled()&&(t.isSelectionEmpty()?n.actions.get("smartFit").funct():t.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){n.hideDialog()}));
window.openFile.setConsumer(mxUtils.bind(this,function(g,l){try{var q=mxUtils.parseXml(g);D.graph.setSelectionCells(D.graph.importGraphModel(q.documentElement))}catch(y){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+y.message)}}));n.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=E;this.addAction("save",function(){n.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=E;this.addAction("saveAs...",function(){n.saveFile(!0)},null,
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(t,null,10,10)});this.addAction("undo",function(){n.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){n.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var g=null;try{g=n.copyXml(),null!=g&&t.removeCells(g,!1)}catch(l){}null==g&&mxClipboard.cut(t)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{n.copyXml()}catch(g){}try{mxClipboard.copy(t)}catch(g){n.handleError(g)}},
null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(l){if(null!=l){t.getModel().beginUpdate();try{n.pasteXml(l,!0)}finally{t.getModel().endUpdate()}}else mxClipboard.paste(t)}),g=!0)}catch(l){}g||mxClipboard.paste(t)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(g){function l(y){if(null!=y){for(var F=!0,C=0;C<
y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var H=t.view.translate;C=t.view.scale;var G=H.x,aa=H.y;H=null;if(1==y.length&&F){var da=t.getCellGeometry(y[0]);null!=da&&(H=da.getTerminalPoint(!0))}H=null!=H?H:t.getBoundingBoxFromGeometry(y,F);null!=H&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-aa)),t.cellsMoved(y,F-H.x,C-H.y))}}function q(){t.getModel().beginUpdate();try{l(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
!t.isCellLocked(t.getDefaultParent())){g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(y){if(null!=y){t.getModel().beginUpdate();try{l(n.pasteXml(y,!0))}finally{t.getModel().endUpdate()}}else q()}),g=!0)}catch(y){}g||q()}});this.addAction("copySize",function(){var g=t.getSelectionCell();t.isEnabled()&&null!=g&&t.getModel().isVertex(g)&&(g=t.getCellGeometry(g),null!=g&&(n.copiedSize=new mxRectangle(g.x,g.y,g.width,g.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedSize){t.getModel().beginUpdate();try{for(var g=t.getResizableCells(t.getSelectionCells()),l=0;l<g.length;l++)if(t.getModel().isVertex(g[l])){var q=t.getCellGeometry(g[l]);null!=q&&(q=q.clone(),q.width=n.copiedSize.width,q.height=n.copiedSize.height,t.getModel().setGeometry(g[l],q))}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var g=t.getSelectionCell()||t.getModel().getRoot();t.isEnabled()&&
null!=g&&(g=g.cloneValue(),null==g||isNaN(g.nodeType)||(n.copiedValue=g))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(g,l){function q(C,H){var G=y.getValue(C);H=C.cloneValue(H);H.removeAttribute("placeholders");null==G||isNaN(G.nodeType)||H.setAttribute("placeholders",G.getAttribute("placeholders"));null!=g&&mxEvent.isShiftDown(g)||H.setAttribute("label",t.convertValueToString(C));y.setValue(C,H)}g=null!=l?l:g;var y=t.getModel();if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedValue){y.beginUpdate();
try{var F=t.getEditableCells(t.getSelectionCells());if(0==F.length)q(y.getRoot(),n.copiedValue);else for(l=0;l<F.length;l++)q(F[l],n.copiedValue)}finally{y.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(g,l){g=null!=l?l:g;null!=g&&mxEvent.isShiftDown(g)?e():b(null!=g&&(mxEvent.isControlDown(g)||mxEvent.isMetaDown(g)||mxEvent.isAltDown(g)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){e()},null,null,Editor.ctrlKey+
new Action(mxResources.get("unmerge"),function(){var g=n.getSelectionState();if(0<g.cells.length){t.getModel().beginUpdate();try{t.setCellStyles("rowspan",null,g.cells),t.setCellStyles("colspan",null,g.cells)}finally{t.getModel().endUpdate()}}}));this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(g,l){g=null!=l?l:g;t.turnShapes(t.getResizableCells(t.getSelectionCells()),null!=g?mxEvent.isShiftDown(g):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));
null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),l=t.getCurrentCellStyle(t.getSelectionCell()),q=1==mxUtils.getValue(l,mxConstants.STYLE_EDITABLE,1)?0:1;t.setCellStyles(mxConstants.STYLE_MOVABLE,q,g);t.setCellStyles(mxConstants.STYLE_RESIZABLE,q,g);t.setCellStyles(mxConstants.STYLE_ROTATABLE,q,g);t.setCellStyles(mxConstants.STYLE_DELETABLE,q,g);t.setCellStyles(mxConstants.STYLE_EDITABLE,
(g=t.getCellsForGroup(g),1<g.length&&t.setSelectionCell(t.groupCells(null,0,g))):t.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(t.isEnabled()){var g=t.getEditableCells(t.getSelectionCells());t.model.beginUpdate();try{var l=t.ungroupCells();if(null!=g)for(var q=0;q<g.length;q++)t.model.contains(g[q])&&(0==t.model.getChildCount(g[q])&&t.model.isVertex(g[q])&&t.setCellStyles("container","0",[g[q]]),l.push(g[q]))}finally{t.model.endUpdate()}0<
l.length&&t.setSelectionCells(l)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(t.isEnabled()){var g=t.getSelectionCells();if(null!=g){for(var l=[],q=0;q<g.length;q++)t.isTableRow(g[q])||t.isTableCell(g[q])||l.push(g[q]);t.removeCellsFromParent(l)}}});this.addAction("edit",function(){t.isEnabled()&&t.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var g=t.getSelectionCell()||t.getModel().getRoot();n.showDataDialog(g)},null,
null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var l="";if(mxUtils.isNode(g.value)){var q=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&g.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(q=g.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==q&&(q=g.value.getAttribute("tooltip"));null!=q&&(l=q)}l=new TextareaDialog(n,mxResources.get("editTooltip")+":",l,function(y){t.setTooltipForCell(g,
y)});n.showDialog(l.container,320,200,!0,!0);l.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var g=t.getLinkForCell(t.getSelectionCell());null!=g&&t.openLink(g)});this.addAction("editLink...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var l=t.getLinkForCell(g)||"";n.showLinkDialog(l,mxResources.get("apply"),function(q,y,F){q=mxUtils.trim(q);t.setLinkForCell(g,0<q.length?q:null);t.setAttributeForCell(g,"linkTarget",F)},!0,t.getLinkTargetForCell(g))}},
null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&(t.clearSelection(),n.actions.get("image").funct())})).isEnabled=E;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&n.showLinkDialog("",mxResources.get("insert"),function(g,l,q){g=mxUtils.trim(g);if(0<g.length){var y=null,F=t.getLinkTitle(g);null!=l&&0<l.length&&(y=l[0].iconUrl,
F=l[0].name||l[0].type,F=F.charAt(0).toUpperCase()+F.substring(1),30<F.length&&(F=F.substring(0,30)+"..."));l=new mxCell(F,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=y?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+y:"spacing=10;"));l.vertex=!0;y=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry([l],!0));l.geometry.x=y.x;l.geometry.y=y.y;t.setAttributeForCell(l,"linkTarget",q);t.setLinkForCell(l,g);t.cellSizeUpdated(l,
!0);t.getModel().beginUpdate();try{l=t.addCell(l),t.fireEvent(new mxEventObject("cellsInserted","cells",[l]))}finally{t.getModel().endUpdate()}t.setSelectionCell(l);t.scrollCellToVisible(t.getSelectionCell())}},!0)})).isEnabled=E;this.addAction("link...",mxUtils.bind(this,function(){if(t.isEnabled())if(t.cellEditor.isContentEditing()){var g=t.getSelectedElement(),l=t.getParentByName(g,"A",t.cellEditor.textarea),q="";if(null==l&&null!=g&&null!=g.getElementsByTagName)for(var y=g.getElementsByTagName("a"),
F=0;F<y.length&&null==l;F++)y[F].textContent==g.textContent&&(l=y[F]);null!=l&&"A"==l.nodeName&&(q=l.getAttribute("href")||"",t.selectNode(l));var C=t.cellEditor.saveSelection();n.showLinkDialog(q,mxResources.get("apply"),mxUtils.bind(this,function(H){t.cellEditor.restoreSelection(C);null!=H&&t.insertLink(H)}))}else t.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=E;this.addAction("autosize",function(){var g=t.getSelectionCells();if(null!=g){t.getModel().beginUpdate();
try{for(var l=0;l<g.length;l++){var q=g[l];0<t.getModel().getChildCount(q)?t.updateGroupBounds([q],0,!0):t.updateCellSize(q)}}finally{t.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",function(){t.snapCellsToGrid(t.getSelectionCells(),t.gridSize)});this.addAction("formattedText",function(){t.stopEditing();var g=t.getCommonStyle(t.getSelectionCells());g="1"==mxUtils.getValue(g,"html","0")?null:"1";t.getModel().beginUpdate();try{for(var l=t.getEditableCells(t.getSelectionCells()),
q=0;q<l.length;q++)if(state=t.getView().getState(l[q]),null!=state){var y=mxUtils.getValue(state.style,"html","0");if("1"==y&&null==g){var F=t.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var C=document.createElement("div");C.innerHTML=t.sanitizeHtml(F);F=mxUtils.extractTextWithWhitespace(C.childNodes);t.cellLabelChanged(state.cell,F);t.setCellStyles("html",g,[l[q]])}else"0"==y&&"1"==g&&(F=mxUtils.htmlEntities(t.convertValueToString(state.cell),
!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"<br/>")),t.cellLabelChanged(state.cell,t.sanitizeHtml(F)),t.setCellStyles("html",g,[l[q]]))}n.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=g?g:"0"],"cells",l))}finally{t.getModel().endUpdate()}});this.addAction("wordWrap",function(){var g=t.getView().getState(t.getSelectionCell()),l="wrap";t.stopEditing();null!=g&&"wrap"==g.style[mxConstants.STYLE_WHITE_SPACE]&&(l=null);t.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
l)});this.addAction("rotation",function(){var g="0",l=t.getView().getState(t.getSelectionCell());null!=l&&(g=l.style[mxConstants.STYLE_ROTATION]||g);g=new FilenameDialog(n,g,mxResources.get("apply"),function(q){null!=q&&0<q.length&&t.setCellStyles(mxConstants.STYLE_ROTATION,q)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");n.showDialog(g.container,375,80,!0,!0);g.init()});this.addAction("resetView",function(){t.zoomTo(1);n.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
function(g){t.isFastZoomEnabled()?t.lazyZoom(!0,!0,n.buttonZoomDelay):t.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(g){t.isFastZoomEnabled()?t.lazyZoom(!1,!0,n.buttonZoomDelay):t.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var g=t.isSelectionEmpty()?t.getGraphBounds():t.getBoundingBox(t.getSelectionCells()),l=t.view.translate,q=t.view.scale;g.x=g.x/q-l.x;g.y=g.y/q-l.y;g.width/=q;
g.height/=q;null!=t.backgroundImage&&(g=mxRectangle.fromRectangle(g),g.add(new mxRectangle(0,0,t.backgroundImage.width,t.backgroundImage.height)));0==g.width||0==g.height?(t.zoomTo(1),n.resetScrollbars()):(l=Editor.fitWindowBorders,null!=l&&(g.x-=l.x,g.y-=l.y,g.width+=l.width+l.x,g.height+=l.height+l.y),t.fitWindow(g))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,l=t.pageScale;t.zoomTo(Math.floor(20*
Math.min((t.container.clientWidth-10)/g.width/l,(t.container.clientHeight-10)/g.height/l))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=g.y*t.view.scale-1,t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,l=t.pageScale;t.zoomTo(Math.floor(20*Math.min((t.container.clientWidth-
10)/(2*g.width)/l,(t.container.clientHeight-10)/g.height/l))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=Math.min(g.y,(t.container.scrollHeight-t.container.clientHeight)/2),t.container.scrollLeft=Math.min(g.x,(t.container.scrollWidth-t.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();t.zoomTo(Math.floor(20*(t.container.clientWidth-10)/t.pageFormat.width/
t.pageScale)/20);if(mxUtils.hasScrollbars(t.container)){var g=t.getPagePadding();t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(l){l=parseInt(l);!isNaN(l)&&0<l&&t.zoomTo(l/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(g.container,
300,80,!0,!0);g.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(l){l=parseInt(l);!isNaN(l)&&0<l&&(l=new ChangePageSetup(n,null,null,null,l/100),l.ignoreColor=!0,l.ignoreImage=!0,t.model.execute(l))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(g.container,300,80,!0,!0);g.init()}));var d=null;d=this.addAction("grid",
"/help"+g+".html")});var f=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){f||(n.showDialog((new AboutDialog(n)).container,320,280,!0,!0,function(){f=!1}),f=!0)}));d=mxUtils.bind(this,function(g,l,q,y){return this.addAction(g,function(){if(null!=q&&t.cellEditor.isContentEditing())q();else{t.stopEditing(!1);t.getModel().beginUpdate();try{var F=t.getEditableCells(t.getSelectionCells());t.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,l,F);(l&mxConstants.FONT_BOLD)==
mxConstants.FONT_BOLD?t.updateLabelElements(F,function(H){H.style.fontWeight=null;"B"==H.nodeName&&t.replaceElement(H)}):(l&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?t.updateLabelElements(F,function(H){H.style.fontStyle=null;"I"==H.nodeName&&t.replaceElement(H)}):(l&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&t.updateLabelElements(F,function(H){H.style.textDecoration=null;"U"==H.nodeName&&t.replaceElement(H)});for(var C=0;C<F.length;C++)0==t.model.getChildCount(F[C])&&t.autoSizeCell(F[C],
this.addAction("rounded",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),t.setCellStyles(mxConstants.STYLE_CURVED,"0"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!t.isSelectionEmpty()&&t.isEnabled()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),l=t.getCurrentCellStyle(g[0]),
q="1"==mxUtils.getValue(l,mxConstants.STYLE_ROUNDED,"0")?"0":"1";t.setCellStyles(mxConstants.STYLE_ROUNDED,q);t.setCellStyles(mxConstants.STYLE_CURVED,null);n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[q,"0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}});this.addAction("curved",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),t.setCellStyles(mxConstants.STYLE_CURVED,
"1"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("collapsible",function(){var g=t.view.getState(t.getSelectionCell()),l="1";null!=g&&null!=t.getFoldingImage(g)&&(l="0");t.setCellStyles("collapsible",l);n.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[l],"cells",t.getSelectionCells()))});this.addAction("editStyle...",
mxUtils.bind(this,function(){var g=t.getEditableCells(t.getSelectionCells());if(null!=g&&0<g.length){var l=t.getModel();l=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",l.getStyle(g[0])||"",function(q){null!=q&&t.setCellStyle(mxUtils.trim(q),g)},null,null,400,220);this.editorUi.showDialog(l.container,420,300,!0,!0);l.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){t.isEnabled()&&!t.isSelectionEmpty()&&n.setDefaultStyle(t.getSelectionCell())},
null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){t.isEnabled()&&n.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var g=t.getSelectionCell();if(null!=g&&t.getModel().isEdge(g)){var l=D.graph.selectionCellsHandler.getHandler(g);if(l instanceof mxEdgeHandler){var q=t.view.translate,y=t.view.scale,F=q.x;q=q.y;g=t.getModel().getParent(g);for(var C=t.getCellGeometry(g);t.getModel().isVertex(g)&&null!=C;)F+=C.x,q+=C.y,g=
t.getModel().getParent(g),C=t.getCellGeometry(g);F=Math.round(t.snap(t.popupMenuHandler.triggerX/y-F));y=Math.round(t.snap(t.popupMenuHandler.triggerY/y-q));l.addPointAt(l.state,F,y)}}});this.addAction("removeWaypoint",function(){var g=n.actions.get("removeWaypoint");null!=g.handler&&g.handler.removePoint(g.handler.state,g.index)});this.addAction("clearWaypoints",function(g,l){g=null!=l?l:g;var q=t.getSelectionCells();if(null!=q){q=t.getEditableCells(t.addAllEdges(q));t.getModel().beginUpdate();try{for(var y=
0;y<q.length;y++){var F=q[y];if(t.getModel().isEdge(F)){var C=t.getCellGeometry(F);null!=l&&mxEvent.isShiftDown(g)?(t.setCellStyles(mxConstants.STYLE_EXIT_X,null,[F]),t.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[F])):null!=C&&(C=C.clone(),C.points=null,C.x=0,C.y=0,C.offset=null,t.getModel().setGeometry(F,C))}}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",
mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=mxResources.get("image")+" ("+mxResources.get("url")+"):",l=t.getView().getState(t.getSelectionCell()),
q="",y=null;null!=l&&(q=l.style[mxConstants.STYLE_IMAGE]||q,y=l.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,H,G,aa,da,ba){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,H,G);else{var Y=t.getSelectionCells();if(null!=C&&(0<C.length||0<Y.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Y.length){Y=[t.insertVertex(t.getDefaultParent(),null,"",0,0,H,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
null!=g){var l=t.getCurrentCellStyle(g),q=l[mxConstants.STYLE_IMAGE],y=l[mxConstants.STYLE_SHAPE];q&&"image"==y&&(l=new CropImageDialog(n,q,l[mxConstants.STYLE_CLIP_PATH],function(F,C,H){k(g,F,C,H,t)}),n.showDialog(l.container,300,390,!0,!0))}}).isEnabled=E;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(n,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("layers"))})),
this.outlineWindow.window.setVisible(!0),n.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&null!=g){var l=new ConnectionPointsDialog(n,
g);n.showDialog(l.container,350,450,!0,!1,function(){l.destroy()});l.init()}}).isEnabled=E};Actions.prototype.addAction=function(b,e,k,n,D){if("..."==b.substring(b.length-3)){b=b.substring(0,b.length-3);var t=mxResources.get(b)+"..."}else t=mxResources.get(b);return this.put(b,new Action(t,e,k,n,D))};Actions.prototype.put=function(b,e){return this.actions[b]=e};Actions.prototype.get=function(b){return this.actions[b]};
DrawioFile.prototype.mergeFile=function(b,e,k,n){var D=!0;try{this.stats.fileMerged++;var t=this.getShadowPages(),E=b.getShadowPages();if(null!=E&&0<E.length){var d=[this.ui.diffPages(null!=n?n:t,E)],f=this.ignorePatches(d);this.setShadowPages(E);if(f)EditorUi.debug("File.mergeFile",[this],"file",[b],"ignored",f);else{null!=this.sync&&this.sync.sendLocalChanges();this.backupPatch=this.isModified()?this.ui.diffPages(t,this.ui.pages):null;n={};f={};var g=this.ui.patchPages(t,d[0]),l=this.ui.getHashValueForPages(g,
n),q=this.ui.getHashValueForPages(E,f);EditorUi.debug("File.mergeFile",[this],"file",[b],"shadow",t,"pages",this.ui.pages,"patches",d,"backup",this.backupPatch,"checksum",l,"current",q,"valid",l==q,"from",this.getCurrentRevisionId(),"to",b.getCurrentRevisionId(),"modified",this.isModified());if(null!=l&&l!=q){var y=this.compressReportData(this.getAnonymizedXmlForPages(E)),F=this.compressReportData(this.getAnonymizedXmlForPages(g)),C=this.ui.hashValue(b.getCurrentEtag()),H=this.ui.hashValue(this.getCurrentEtag());
this.checksumError(k,d,"Shadow Details: "+JSON.stringify(n)+"\nChecksum: "+l+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+C+"\nTo: "+H+"\n\nFile Data:\n"+y+"\nPatched Shadow:\n"+F,null,"mergeFile");return}if(null!=this.sync){var G=this.sync.patchRealtime(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null);null==G||mxUtils.isEmptyObject(G)||d.push(G)}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw D=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=
DrawioFile.prototype.sendErrorReport=function(b,e,k,n){try{var D=this.compressReportData(this.getAnonymizedXmlForPages(this.getShadowPages()),25E3),t=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),E=this.getCurrentUser(),d=null!=E?this.ui.hashValue(E.id):"unknown",f=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",g=this.getTitle(),l=g.lastIndexOf(".");E="xml";0<l&&(E=g.substring(l));var q=null!=k?k.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
DrawioFile.prototype.patch=function(b,e,k){if(null!=b){var n=this.ui.editor.undoManager,D=n.history.slice(),t=n.indexOfNextAdd,E=this.ui.editor.graph;E.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=k;var f=E.foldingEnabled,g=E.mathEnabled,l=E.cellRenderer.redraw;E.cellRenderer.redraw=function(q){q.view.graph.isEditing(q.cell)&&(q.view.graph.scrollCellToVisible(q.cell),q.view.graph.cellEditor.resize());l.apply(this,arguments)};E.model.beginUpdate();
try{this.ui.pages=this.ui.applyPatches(this.ui.pages,b,!0,e,this.isModified()),0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage()),0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{E.container.style.visibility="";E.model.endUpdate();E.cellRenderer.redraw=l;this.changeListenerEnabled=d;k||(n.history=D,n.indexOfNextAdd=t,n.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)g!=E.mathEnabled?
LocalFile.prototype.saveFile=function(b,e,k,n,D){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;D||this.updateFileData();var t=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var E=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=k&&k()}),f=mxUtils.bind(this,function(g){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var l=mxUtils.bind(this,
function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(C){try{var H=this.desc;this.savingFile=!1;this.desc=C;this.fileSaved(E,H,d,l);this.removeDraft()}catch(G){l(G)}}),l)}),l)}),l):(this.inConflictState=!0,l())}),mxUtils.bind(this,function(F){this.invalidFileHandle=!0;l(F)}))}),l)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(g,b,t?"image/png":"text/xml",t);else if(g.length<MAX_REQUEST_SIZE){var q=b.lastIndexOf(".");q=0<q?b.substring(q+1):"xml";
N=J.getId():null!=u.currentPage&&(N=u.currentPage.getId());return N});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var l=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?l.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=
mxClient.IS_SF)nb.writeln('<style type="text/css">'),nb.writeln(Editor.mathJaxWebkitCss),nb.writeln("</style>");mxClient.IS_GC&&(nb.writeln('<style type="text/css">'),nb.writeln("@media print {"),nb.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),nb.writeln("}"),nb.writeln("</style>"));null!=u.editor.fontCss&&(nb.writeln('<style type="text/css">'),nb.writeln(u.editor.fontCss),nb.writeln("</style>"));for(var c=cb.getCustomFonts(),m=0;m<c.length;m++){var x=c[m].name,p=c[m].url;Graph.isCssFontUrl(p)?
nb.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(p)+'" charset="UTF-8" type="text/css">'):(nb.writeln('<style type="text/css">'),nb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(x)+'";\nsrc: url("'+mxUtils.htmlEntities(p)+'");\n}'),nb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var yb=hb.renderPage;hb.renderPage=function(nb,c,m,x,p,v){var A=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!u.editor.useForeignObjectForMath?!0:u.editor.originalNoForeignObject;
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.2";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,l,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
"1"!=urlParams.dev)try{if(d!=EditorUi.lastErrorMessage&&(null==d||null==f||-1==d.indexOf("Script error")&&-1==d.indexOf("extension"))&&null!=d&&0>d.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=d;var C=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";q=null!=q?q:Error(d);(new Image).src=C+"/log?severity="+y+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(d)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(g)+(null!=l?":colno:"+
encodeURIComponent(l):"")+(null!=q&&null!=q.stack?"&stack="+encodeURIComponent(q.stack):"")}}catch(H){}try{F||null==window.console||console.error(y,d,f,g,l,q)}catch(H){}};EditorUi.logEvent=function(d){if("1"==urlParams.dev)EditorUi.debug("logEvent",d);else if(EditorUi.enableLogging)try{var f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=d?"&data="+encodeURIComponent(JSON.stringify(d)):"")}catch(g){}};EditorUi.sendReport=
f.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=q&&6<q.length}catch(y){}};g.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(q){}try{f=document.createElement("canvas");f.width=f.height=1;var l=f.toDataURL("image/jpeg");
EditorUi.prototype.jpgSupported=null!==l.match("image/jpeg")}catch(q){}})();EditorUi.prototype.openLink=function(d,f,g){return this.editor.graph.openLink(d,f,g)};EditorUi.prototype.showSplash=function(d){};EditorUi.prototype.getLocalData=function(d,f){f(localStorage.getItem(d))};EditorUi.prototype.setLocalData=function(d,f,g){localStorage.setItem(d,f);null!=g&&g()};EditorUi.prototype.removeLocalData=function(d,f){localStorage.removeItem(d);f()};EditorUi.prototype.setShareCursorPosition=function(d){this.shareCursorPosition=
EditorUi.prototype.createSpinner=function(d,f,g){var l=null==d||null==f;g=null!=g?g:24;var q=new Spinner({lines:12,length:g,width:Math.round(g/3),radius:Math.round(g/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),y=q.spin;q.spin=function(C,H){var G=!1;this.active||(y.call(this,C),this.active=!0,null!=H&&(l&&(f=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,d=document.body.clientWidth/2-2),G=document.createElement("div"),
return q};EditorUi.prototype.isCompatibleString=function(d){try{var f=mxUtils.parseXml(d),g=this.editor.extractGraphModel(f.documentElement,!0);return null!=g&&0==g.getElementsByTagName("parsererror").length}catch(l){}return!1};EditorUi.prototype.isVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&
EditorUi.prototype.createKeyHandler=function(d){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var g=f.getFunction,l=this.editor.graph,q=this;f.getFunction=function(y){if(l.isSelectionEmpty()&&null!=q.pages&&0<q.pages.length){var F=q.getSelectedPageIndex();if(mxEvent.isShiftDown(y)){if(37==y.keyCode)return function(){0<F&&q.movePage(F,F-1)};if(38==y.keyCode)return function(){0<F&&q.movePage(F,0)};if(39==y.keyCode)return function(){F<q.pages.length-1&&q.movePage(F,
var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var f=e.apply(this,arguments);if(null==f)try{var g=d.indexOf("&lt;mxfile ");if(0<=g){var l=d.lastIndexOf("&lt;/mxfile&gt;");l>g&&(f=d.substring(g,l+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else{var q=mxUtils.parseXml(d),y=this.editor.extractGraphModel(q.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility);f=null!=
f.model.beginUpdate();try{var g=null!=this.pages?this.pages.slice():null,l=d.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<l.length||1==l.length&&l[0].hasAttribute("name")){this.fileNode=d;this.pages=null!=this.pages?this.pages:[];for(var q=l.length-1;0<=q;q--){var y=this.updatePageRoot(new DiagramPage(l[q]));null==y.getName()&&y.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,y,0==q?y:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
function(d,f,g,l,q,y,F,C,H,G,aa){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;H=null!=H?H:!0;var da=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var ba="_blank";else da=ba=l;if(null==d)return"";var Y=d;if("mxfile"!=Y.nodeName.toLowerCase()){if(aa){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Y=Graph.compress(qa);if(Graph.decompress(Y)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
aa=aa?mxUtils.getPrettyXml(Y):mxUtils.getXml(Y);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))aa=this.getHtml2(mxUtils.getXml(Y),f,null!=g?g.getTitle():null,ba,da);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(l=null),aa=this.getEmbeddedSvg(aa,f,l,null,C,H,da);return aa};EditorUi.prototype.getXmlFileData=function(d,f,g,l){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
l);if(d&&null!=this.fileNode&&null!=this.currentPage)if(d=function(H){var G=H.getElementsByTagName("mxGraphModel");G=0<G.length?G[0]:null;null==G&&g?(G=mxUtils.trim(mxUtils.getTextContent(H)),H=H.cloneNode(!1),0<G.length&&(G=Graph.decompress(G),null!=G&&0<G.length&&H.appendChild(mxUtils.parseXml(G).documentElement))):null==G||g?H=H.cloneNode(!0):(H=H.cloneNode(!1),mxUtils.setTextContent(H,Graph.compressNode(G)));q.appendChild(H)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(q)),q=this.fileNode.cloneNode(!1),f)d(this.currentPage.node);else for(f=0;f<this.pages.length;f++){var y=this.pages[f],F=y.node;if(y!=this.currentPage)if(y.needsUpdate){var C=new mxCodec(mxUtils.createXmlDocument());C=C.encode(new mxGraphModel(y.root));this.editor.graph.saveViewState(y.viewState,C,null,l);EditorUi.removeChildNodes(F);mxUtils.setTextContent(F,Graph.compressNode(C));delete y.needsUpdate}else l&&(this.updatePageRoot(y),null!=y.viewState.backgroundImage&&(null!=y.viewState.backgroundImage.originalSrc?
y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.originalSrc,y):Graph.isPageLink(y.viewState.backgroundImage.src)&&(y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.src,y))),null!=y.viewState.backgroundImage&&null!=y.viewState.backgroundImage.originalSrc&&(C=new mxCodec(mxUtils.createXmlDocument()),C=C.encode(new mxGraphModel(y.root)),this.editor.graph.saveViewState(y.viewState,C,null,l),F=F.cloneNode(!1),mxUtils.setTextContent(F,
Graph.compressNode(C))));d(F)}return q};EditorUi.prototype.anonymizeString=function(d,f){for(var g=[],l=0;l<d.length;l++){var q=d.charAt(l);0<=EditorUi.ignoredAnonymizedChars.indexOf(q)?g.push(q):isNaN(parseInt(q))?q.toLowerCase()!=q?g.push(String.fromCharCode(65+Math.round(25*Math.random()))):q.toUpperCase()!=q?g.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(q)?g.push(" "):g.push("?"):g.push(f?"0":Math.round(9*Math.random()))}return g.join("")};EditorUi.prototype.anonymizePatch=
function(d){if(null!=d[EditorUi.DIFF_INSERT])for(var f=0;f<d[EditorUi.DIFF_INSERT].length;f++)try{var g=mxUtils.parseXml(d[EditorUi.DIFF_INSERT][f].data).documentElement.cloneNode(!1);null!=g.getAttribute("name")&&g.setAttribute("name",this.anonymizeString(g.getAttribute("name")));d[EditorUi.DIFF_INSERT][f].data=mxUtils.getXml(g)}catch(y){d[EditorUi.DIFF_INSERT][f].data=y.message}if(null!=d[EditorUi.DIFF_UPDATE]){for(var l in d[EditorUi.DIFF_UPDATE]){var q=d[EditorUi.DIFF_UPDATE][l];null!=q.name&&
delete d[EditorUi.DIFF_UPDATE][l]}mxUtils.isEmptyObject(d[EditorUi.DIFF_UPDATE])&&delete d[EditorUi.DIFF_UPDATE]}return d};EditorUi.prototype.anonymizeAttributes=function(d,f){if(null!=d.attributes)for(var g=0;g<d.attributes.length;g++)"as"!=d.attributes[g].name&&d.setAttribute(d.attributes[g].name,this.anonymizeString(d.attributes[g].value,f));if(null!=d.childNodes)for(g=0;g<d.childNodes.length;g++)this.anonymizeAttributes(d.childNodes[g],f)};EditorUi.prototype.anonymizeNode=function(d,f){f=d.getElementsByTagName("mxCell");
function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,l,q,y,F,C,H,G,aa){q=null!=q?q:!0;y=null!=y?y:!1;var da=this.editor.graph;if(f||!d&&null!=H&&/(\.svg)$/i.test(H.getTitle())){var ba=null!=da.themes&&"darkTheme"==da.defaultThemeName;G=!1;if(ba||null!=this.pages&&this.currentPage!=this.pages[0]){var Y=da.getGlobalVariable;da=this.createTemporaryGraph(ba?da.getDefaultStylesheet():da.getStylesheet());
G,aa);H=null!=H?H:this.getCurrentFile();d=this.createFileData(F,da,H,window.location.href,d,f,g,l,q,C,G);da!=this.editor.graph&&da.container.parentNode.removeChild(da.container);return d};EditorUi.prototype.getHtml=function(d,f,g,l,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var H=f.view.scale;y=Math.floor(F.x/H-f.view.translate.x);H=Math.floor(F.y/H-f.view.translate.y);F=f.background;null==
q&&(f=this.getBasenames().join(";"),0<f.length&&(C=EditorUi.drawHost+"/embed.js?s="+f));d.setAttribute("x0",y);d.setAttribute("y0",H)}null!=d&&(d.setAttribute("pan","1"),d.setAttribute("zoom","1"),d.setAttribute("resize","0"),d.setAttribute("fit","0"),d.setAttribute("border","20"),d.setAttribute("links","1"),null!=l&&d.setAttribute("edit",l));null!=q&&(q=q.replace(/&/g,"&amp;"));d=null!=d?Graph.zapGremlins(mxUtils.getXml(d)):"";l=Graph.compress(d);Graph.decompress(l)!=d&&(l=encodeURIComponent(d));
l+"</div>\n</div>\n"+(null==q?'<script type="text/javascript" src="'+C+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+q+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(d,f,g,l,q){f=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=q&&(q=q.replace(/&/g,"&amp;"));d={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){g=null;this.fileNode=f;this.pages=[];for(var l=0;l<d.length;l++)null==d[l].getAttribute("id")&&d[l].setAttribute("id",l),f=new DiagramPage(d[l]),null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[l+1])),this.pages.push(f),null!=urlParams["page-id"]&&f.getId()==urlParams["page-id"]&&(g=f);this.currentPage=null!=g?g:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];f=this.currentPage.node}"0"!=
urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(f.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(f);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var q=urlParams["layer-ids"].split(" ");f={};for(l=0;l<q.length;l++)f[q[l]]=!0;var y=this.editor.graph.getModel(),
F=y.getChildren(y.root);for(l=0;l<F.length;l++){var C=F[l];y.setVisible(C,f[C.id]||!1)}}catch(H){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,l,q,y,F,C,H,G,aa,da){try{l=null!=l?l:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,l,q,null,null,null,f);this.saveData(Y,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
fa){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ra=this.createDownloadRequest(R,d,l,fa,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ra}catch(u){this.handleError(u)}}))}else{var U=null,I=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
if(F||V==mxConstants.NONE)V=null;var Q=this.editor.graph.getSvg(V,null,null,null,null,l);g&&this.editor.graph.addSvgShadow(Q);this.editor.convertImages(Q,mxUtils.bind(this,mxUtils.bind(this,function(R){this.spinner.stop();I(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(R))})))}else Y=ba+".svg",U=this.getFileData(!1,!0,null,mxUtils.bind(this,function(R){this.spinner.stop();I(R)}),l)}}catch(R){this.handleError(R)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,l,q,y,F,C,H,
this.currentPage){O="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};H&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+O+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+l+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(da&&isFinite(da)?"&w="+da:"")+(ba&&isFinite(ba)?"&h="+ba:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var l=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
decodeURIComponent(urlParams.title):this.defaultFilename,!0);y.getHash=function(){return l};this.fileLoaded(y);"csv"==d.format&&this.importCsv(F,mxUtils.bind(this,function(da){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=d.update){var C=null!=d.interval?parseInt(d.interval):6E4,H=null,G=mxUtils.bind(this,function(){var da=this.currentPage;mxUtils.post(d.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ja){var U=new mxCellOverlay(ja.image||q.warningImage,ja.tooltip,ja.align,ja.valign,ja.offset);U.addListener(mxEvent.CLICK,function(I,V){l.alert(ja.tooltip)});return U}var g=null,l=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
d.hasAttribute("dy"))q.view.translate=new mxPoint(parseFloat(d.getAttribute("dx")||0),parseFloat(d.getAttribute("dy")||0))}else"fit"==d.nodeName&&(F=d.hasAttribute("max-scale")?parseFloat(d.getAttribute("max-scale")):1);d=d.nextSibling}}finally{y.endUpdate()}null!=F&&this.chromelessResize&&this.chromelessResize(!0,F)}return g};EditorUi.prototype.getCopyFilename=function(d,f){var g=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;d="";var l=g.lastIndexOf(".");0<=l&&(d=g.substring(l),g=
g.substring(0,l));if(f){f=g;var q=new Date;g=q.getFullYear();l=q.getMonth()+1;var y=q.getDate(),F=q.getHours(),C=q.getMinutes();q=q.getSeconds();g=f+(" "+(g+"-"+l+"-"+y+"-"+F+"-"+C+"-"+q))}return g=mxResources.get("copyOf",[g])+d};EditorUi.prototype.fileLoaded=function(d,f){var g=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var l=!1;this.hideDialog();null!=g&&(EditorUi.debug("File.closed",[g]),g.removeListener(this.descriptorChangedListener),g.close());
this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));l=!0;if(!this.isOffline()&&null!=d.getMode()){var y="1"==urlParams.sketch?"sketch":uiTheme;if(null==y)y="default";else if("sketch"==y||"min"==y)y+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:d.getMode().toUpperCase()+"-OPEN-FILE-"+d.getHash(),action:"size_"+d.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+y})}EditorUi.debug("File.opened",[d]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));
F.stack})}catch(C){}d=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=g?this.fileLoaded(g)||q():q()});f?d():this.handleError(F,mxResources.get("errorLoadingFile"),d,!0,null,null,!0)}else q();return l};EditorUi.prototype.getHashValueForPages=function(d,f){var g=0,l=new mxGraphModel,q=new mxCodec;null!=f&&(f.byteCount=0,f.attrCount=0,f.eltCount=0,f.nodeCount=0);for(var y=0;y<d.length;y++){this.updatePageRoot(d[y]);
var F=d[y].node.cloneNode(!1);F.removeAttribute("name");l.root=d[y].root;var C=q.encode(l);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(H,G,aa,da){return!da||"mxGeometry"!=H.nodeName&&"mxPoint"!=H.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?da&&"mxCell"==H.nodeName&&
"previous"==G?null:aa:Math.round(aa)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var l=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(l^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(l^=this.hashValue(y,
f,g)+this.hashValue(F,f,g))}}if(null!=d.childNodes)for(q=0;q<d.childNodes.length;q++)l=(l<<5)-l+this.hashValue(d.childNodes[q],f,g)<<0}else if(null!=d&&"function"!==typeof d){d=String(d);f=0;null!=g&&(g.byteCount+=d.length);for(q=0;q<d.length;q++)f=(f<<5)-f+d.charCodeAt(q)<<0;l^=f}return l};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(d,f,g,l,q,y,F){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||
if(null==d){var g=this.sidebar.palettes["L.scratchpad"];null==g&&(g=this.sidebar.palettes.search);null!=g&&(d=g[g.length-1].nextSibling)}d=null!=d?d:f.firstChild.nextSibling.nextSibling;g=f.lastChild;var l=g.previousSibling;f.insertBefore(g,d);f.insertBefore(l,g)};EditorUi.prototype.loadLibrary=function(d,f){var g=mxUtils.parseXml(d.getData());if("mxlibrary"==g.documentElement.nodeName){var l=JSON.parse(mxUtils.getTextContent(g.documentElement));this.libraryLoaded(d,l,g.documentElement.getAttribute("title"),
f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,l){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ja){0==ka.length&&d.isEditable()?
(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ja.appendChild(y)):this.addLibraryEntries(ka,ja)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=l?l:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var H=C.parentNode.previousSibling;l=H.getAttribute("title");
null!=l&&0<l.length&&".scratchpad"!=d.title&&H.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+l);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";H.style.position="relative";var aa=document.createElement("img");aa.setAttribute("src",Editor.crossImage);aa.setAttribute("title",mxResources.get("close"));aa.setAttribute("valign","absmiddle");aa.setAttribute("border","0");aa.style.position=
mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});l=aa.cloneNode(!1);l.setAttribute("src",Editor.plusImage);l.setAttribute("title",mxResources.get("add"));G.insertBefore(l,
G.firstChild);mxEvent.addListener(l,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(l=document.createElement("span"),l.setAttribute("title",mxResources.get("help")),l.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(l,"?"),mxEvent.addGestureListeners(l,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(l,G.firstChild))}H.appendChild(G);H.style.paddingRight=
18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var l=d[g],q=l.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==l.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,l.w,l.h,"",l.title||"",!1,null,!0))}else null!=l.xml&&(q=this.stringToCells(Graph.decompress(l.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
l.w,l.h,l.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=d?d[mxLanguage]||d.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground=
Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(d,f,g,l,q,y,F){d=new ImageDialog(this,d,f,g,l,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,l){l||(g=new ChangePageSetup(this,null,g),
g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,l,q){d=new LibraryDialog(this,d,f,g,l,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);
f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(l){l.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(l){this.actions.get("shapes").funct();mxEvent.consume(l)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,l,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?
l,q)}),aa,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Y(){ea.innerHTML="";for(var ka=0;ka<qa.length;ka++){var ja=document.createElement("option");mxUtils.write(ja,qa[ka].displayName);ja.value=ka;ea.appendChild(ja);ja=document.createElement("option");ja.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ja,"<"+qa[ka].email+">");ja.setAttribute("disabled","disabled");ea.appendChild(ja)}ja=document.createElement("option");mxUtils.write(ja,mxResources.get("addAccount"));ja.value=qa.length;
")"),ba=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(H.ownerEmail))}));this.showError(f,F,G,g,aa,null,null,y,ba,null,null,null,l?g:null)}else null!=g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,l,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/
50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},l,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};EditorUi.prototype.showBanner=function(d,f,g,l){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(l?"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");
F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";if(!l){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var H=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||l)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=
function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,l){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,
"tEXt","mxfile",encodeURIComponent(f))),0<l&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",l));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,l,q){var y="jpeg"==g?"jpg":g;l=this.getBaseFilename(l)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(l,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(d,f){d=new TextareaDialog(this,d,f,null,null,mxResources.get("close"));this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(d,f,g,l,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||
/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)d=l?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,
g,l);else{var F=document.createElement("a");y=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(l?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},
2E4),F.click(),F.parentNode.removeChild(F)}catch(H){}}else this.createEchoRequest(d,f,g,l,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,l,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(l?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,l=Math.ceil(g/1024),q=Array(l),
y=0;y<l;++y){for(var F=1024*y,C=Math.min(F+1024,g),H=Array(C-F),G=0;F<C;++G,++F)H[G]=d[F].charCodeAt(0);q[y]=new Uint8Array(H)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,l,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var H=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,aa){try{if("_blank"==aa)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,
g,l);else if(null!=g&&"text/html"==g.substring(0,9)){var da=new EmbedDialog(this,d);this.showDialog(da.container,450,240,!0,!0);da.init()}else{var ba=window.open("about:blank");null==ba?mxUtils.popup(d,!0):(ba.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),ba.document.close())}else aa==App.MODE_DEVICE||"download"==aa?this.doSaveLocalFile(d,G,g,l,null,C):null!=G&&0<G.length&&this.pickFolder(aa,mxUtils.bind(this,function(Y){try{this.exportFile(d,G,g,l,aa,Y)}catch(qa){this.handleError(qa)}}))}catch(Y){this.handleError(Y)}}),
mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,y,F,null,1<q,H,d,g,l);y=this.isServices(q)?q>H?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var l=window.open("about:blank");null==l||null==l.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"==f?l.document.write("<html>"+d+"</html>"):(d=g?d:btoa(unescape(encodeURIComponent(d))),l.document.write('<html><img style="max-width:100%;" src="data:'+
f+";base64,"+d+'"/></html>')):l.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),l.document.close())};var n=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(d){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;
var f=d(mxUtils.bind(this,function(l){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding=
4+"px";q=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=q.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(l)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var l=this.editor.graph.getAllTags();f.style.display=0<l.length?"":"none"}))}n.apply(this,arguments);this.editor.addListener("tagsDialogShown",
function(l){var q=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",q);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)q.apply(this);else{this.exportDialog=document.createElement("div");var y=g.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";
Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",q);document.body.appendChild(this.exportDialog)}mxEvent.consume(l)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(d,f,g,l,q){this.isLocalFileSave()?this.saveLocalFile(g,d,l,q,f):this.saveRequest(d,f,mxUtils.bind(this,function(y,F){return this.createEchoRequest(g,y,l,q,f,F)}),g,q,l)};EditorUi.prototype.saveRequest=function(d,f,g,l,q,y,F){F=null!=F?F:!mxClient.IS_IOS||!navigator.standalone;
var C=this.getServiceCount(!1);isLocalStorage&&C++;var H=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,aa){if("_blank"==aa||null!=G&&0<G.length){var da=g("_blank"==aa?null:G,aa==App.MODE_DEVICE||"download"==aa||null==aa||"_blank"==aa?"0":"1");null!=da&&(aa==App.MODE_DEVICE||"download"==aa||"_blank"==aa?da.simulate(document,"_blank"):this.pickFolder(aa,mxUtils.bind(this,function(ba){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=l)try{this.exportFile(l,G,y,!0,aa,
!1,!1,F,null,1<C,H,l,y,q);C=this.isServices(C)?4<C?390:280:160;this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,l,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba,Y){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();
g=null!=g?g:qa;var O=f?null:this.editor.graph.background;O==mxConstants.NONE&&(O=null);null==O&&0==f&&(O=aa?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var X=this.editor.graph.getSvg(O,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!ba,aa,da);l&&this.editor.graph.addSvgShadow(X);var ea=this.getBaseFilename()+(q?".drawio":"")+".svg";Y=null!=Y?Y:mxUtils.bind(this,function(U){this.isLocalFileSave()||U.length<=MAX_REQUEST_SIZE?this.saveData(ea,"svg",U,"image/svg+xml"):
(this.thumbImageCache={}),this.editor.convertImages(U,ka,this.thumbImageCache)):ka(U)});ba?this.embedFonts(X,ja):(this.editor.addFontCss(X),ja(X))}catch(U){this.handleError(U)}};EditorUi.prototype.addRadiobox=function(d,f,g,l,q,y,F){return this.addCheckbox(d,g,l,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,l,q,y,F,C){y=null!=y?y:!0;var H=document.createElement("input");H.style.marginRight="8px";H.style.marginTop="16px";H.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();
H.id=F;null!=C&&H.setAttribute("name",C);g&&(H.setAttribute("checked","checked"),H.defaultChecked=!0);l&&H.setAttribute("disabled","disabled");y&&(d.appendChild(H),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return H};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var l=this.getCurrentFile(),q="";null!=l&&l.getMode()!=App.MODE_DEVICE&&l.getMode()!=
App.MODE_BROWSER&&(q=window.location.href);var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";l=document.createElement("option");l.setAttribute("value","blank");mxUtils.write(l,mxResources.get("makeCopy"));y.appendChild(l);l=document.createElement("option");l.setAttribute("value","custom");mxUtils.write(l,mxResources.get("custom")+"...");y.appendChild(l);d.appendChild(y);mxEvent.addListener(y,
"')");F.innerHTML="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+":");var l=document.createElement("select");l.style.width="100px";l.style.padding="0px";l.style.marginLeft="8px";l.style.marginRight="10px";l.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));l.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));l.appendChild(q);
q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,mxResources.get("openInThisWindow"));l.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),l.appendChild(f));d.appendChild(l);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(H){y=H;g()});
mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return l.value},focus:function(){l.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,l,q,y,F){F=null!=F?F:[];l&&("https://viewer.diagrams.net"==
EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,l,q,y,F,C,
H,G){H=this.createUrlParameters(d,f,g,l,q,y,H);d=this.getCurrentFile();f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&H.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(H.push("open="+
g.substring(1)),g="");return(l&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<H.length?"?"+H.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,l,q,y,F,C,H,G,aa,da){this.getBasenames();var ba={};""!=q&&q!=mxConstants.NONE&&(ba.highlight=q);"auto"!==l&&(ba.target=l);G||(ba.lightbox=!1);ba.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||
mxUtils.htmlEntities(JSON.stringify(ba))+'"></div>';d=null!=d?"&fetch="+encodeURIComponent(d):"";da(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(d,f,g,l){var q=document.createElement("div");
ja.style.marginBottom="16px";F+=50;mxEvent.addListener(ea,"change",function(){ea.checked?ja.removeAttribute("disabled"):ja.setAttribute("disabled","disabled");ja.checked&&ea.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){l(C.checked?g:null,da.checked,ba.value,aa.getTarget(),aa.getColor(),Y.checked,qa.checked,O.checked,X.checked,ea.checked,null!=ka?ka.getLink():null)}),null,d,f);
this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=function(d,f,g,l,q,y,F,C){var H=document.createElement("div");H.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";H.appendChild(G);var aa=this.getCurrentFile();d=0;if(null==aa||aa.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";
null,mxResources.get(null!=I?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(I.container,300,80,!0,!1);I.init()}))}))}var ba=null,Y=null;if(null!=g||null!=l)d+=30,mxUtils.write(H,mxResources.get("width")+":"),ba=document.createElement("input"),ba.setAttribute("type","text"),ba.style.marginRight="16px",ba.style.width="50px",ba.style.marginLeft="6px",ba.style.marginRight="16px",ba.style.marginBottom="10px",ba.value="100%",H.appendChild(ba),mxUtils.write(H,mxResources.get("height")+
":"),Y=document.createElement("input"),Y.setAttribute("type","text"),Y.style.width="50px",Y.style.marginLeft="6px",Y.style.marginBottom="10px",Y.value=l+"px",H.appendChild(Y),mxUtils.br(H);var qa=this.addLinkSection(H,y);g=null!=this.pages&&1<this.pages.length;var O=null;if(null==aa||aa.constructor!=window.DriveFile||f)O=this.addCheckbox(H,mxResources.get("allPages"),g,!g);var X=this.addCheckbox(H,mxResources.get("lightbox"),!0,null,null,!y),ea=this.addEditButton(H,X),ka=ea.getEditInput();y&&(ka.style.marginLeft=
!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,l,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";
C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var H=document.createElement("input");H.setAttribute("type","text");H.style.marginRight="16px";H.style.width="60px";H.style.marginLeft="4px";H.value=this.lastExportBorder||"0";y.appendChild(H);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),aa=l?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),
Editor.defaultIncludeDiagram);F=this.editor.graph;var da=l?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=da&&(da.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var ba=parseInt(C.value)/100||1,Y=parseInt(H.value)||0;g(!G.checked,null!=aa?aa.checked:!1,null!=da?da.checked:!1,ba,Y)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(l?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
function(d,f,g,l,q,y,F,C,H){F=null!=F?F:Editor.defaultIncludeDiagram;var G=document.createElement("div");G.style.whiteSpace="nowrap";var aa=this.editor.graph,da="jpeg"==C?220:300,ba=document.createElement("h3");mxUtils.write(ba,d);ba.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(ba);mxUtils.write(G,mxResources.get("zoom")+":");var Y=document.createElement("input");Y.setAttribute("type","text");Y.style.marginRight="16px";Y.style.width="60px";Y.style.marginLeft=
V.checked,R.checked,fa.checked,qa.value,X.checked,!1,ra.value,null!=Q?Q.checked:null,null!=I?I.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,l);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,l,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var H=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&l,!l),aa=this.addCheckbox(y,g),da=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,da),Y=ba.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),O=this.addCheckbox(y,mxResources.get("layers"),
da.checked,ba.getLink(),O.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,l,q,y,F,C){function H(Y){var qa=" ",O="";l&&(qa=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=aa?"&page="+aa:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",O+="cursor:pointer;");d&&(O+="max-width:100%;");var X="";g&&(X=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Y+'"'+X+(""!=O?' style="'+O+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),aa=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Y){var qa=l?this.getFileData(!0):null;
Y=this.createImageDataUri(Y,qa,"png");H(Y)}),null,null,null,mxUtils.bind(this,function(Y){C({message:mxResources.get("unknownError")})}),null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var da="";g&&(da="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var ba=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(l?"1":"0")+da+"&xml="+encodeURIComponent(f));ba.send(mxUtils.bind(this,function(){200<=
ba.getStatus()&&299>=ba.getStatus()?H("data:image/png;base64,"+ba.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,f,g,l,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),H=C.getElementsByTagName("a");if(null!=H)for(var G=0;G<H.length;G++){var aa=H[G].getAttribute("href");null!=aa&&"#"==aa.charAt(0)&&"_blank"==H[G].getAttribute("target")&&H[G].removeAttribute("target")}l&&
C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var da=" ",ba="";l&&(da="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(q?"&edit=_blank":"")+(y?"&layers=1":
"")+"');}})(this);\"",ba+="cursor:pointer;");d&&(ba+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Y){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Y))+'"'+(""!=ba?' style="'+ba+'"':"")+da+"/>")}))}else ba="",l&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
d.nodeName)g=d;else if("mxfile"==d.nodeName){var l=d.getElementsByTagName("diagram");if(0<l.length){g=l[0];var q=f.getGlobalVariable;f.getGlobalVariable=function(y){return"page"==y?g.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==y?1:q.apply(this,arguments)}}}null!=g&&(d=Editor.parseDiagramNode(g))}l=this.editor.graph;try{this.editor.graph=f,this.editor.setGraphXml(d)}catch(y){}finally{this.editor.graph=l}return d};EditorUi.prototype.getPngFileProperties=function(d){var f=
1,g=0;if(null!=d){if(d.hasAttribute("scale")){var l=parseFloat(d.getAttribute("scale"));!isNaN(l)&&0<l&&(f=l)}d.hasAttribute("border")&&(l=parseInt(d.getAttribute("border")),!isNaN(l)&&0<l&&(g=l))}return{scale:f,border:g}};EditorUi.prototype.getEmbeddedPng=function(d,f,g,l,q){try{var y=this.editor.graph,F=null!=y.themes&&"darkTheme"==y.defaultThemeName,C=null;if(null!=g&&0<g.length)y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet()),document.body.appendChild(y.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,
f&&f(aa)}),null,null,l,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(aa){null!=f&&f(aa)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba){C=null!=C?C:!0;aa=null!=aa?aa:0;F=null!=H?H:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,aa,null,null,y,null,null,null,f.shadowVisible||da,null,ba,"diagram");(f.shadowVisible||da)&&f.addSvgShadow(y,null,null,0==aa);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Y=mxUtils.bind(this,
function(qa){qa=(l?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(O){Y(O)})):Y(qa)}));else return Y(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(l){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba){H=null!=H?H:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Y=this.editor.graph.isSelectionEmpty();g=null!=g?g:Y;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
q?this.getFileData(!0,null,null,null,g,C):null,H,null==this.pages||0==this.pages.length,aa)}catch(O){this.handleError(O)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,l,null,null,y,F,G,da,ba)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,l,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
this.currentPage,ba))}}else if(0<da.length){y=[];var Y=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[da[0].getAttribute("id")]=this.pages[0].getId(),aa=Editor.parseDiagramNode(da[0]),l=!1,Y=1);for(;Y<da.length;Y++){var qa=da[Y].getAttribute("id");da[Y].removeAttribute("id");var O=this.updatePageRoot(new DiagramPage(da[Y]));d[qa]=da[Y].getAttribute("id");var X=this.pages.length;null==O.getName()&&O.setName(mxResources.get("pageWithNumber",[X+1]));H.model.execute(new ChangePage(this,
O,O,X,!0));y.push(O)}this.updatePageLinks(d,y)}}if(null!=aa&&"mxGraphModel"===aa.nodeName){C=H.importGraphModel(aa,f,g,l);if(null!=C)for(Y=0;Y<C.length;Y++)this.updatePageLinksForCell(d,C[Y]);var ea=H.parseBackgroundImage(aa.getAttribute("backgroundImage"));if(null!=ea&&null!=ea.originalSrc){this.updateBackgroundPageLink(d,ea);var ka=new ChangePageSetup(this,null,ea);ka.ignoreColor=!0;H.model.execute(ka)}}F&&this.insertHandler(C,null,null,H.defaultVertexStyle,H.defaultEdgeStyle,!1,!0)}finally{H.model.endUpdate()}}}catch(ja){if(q)throw ja;
this.handleError(ja)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(l){}};EditorUi.prototype.updatePageLinksForCell=
function(d,f){var g=document.createElement("div"),l=this.editor.graph,q=l.getLinkForCell(f);null!=q&&l.setLinkForCell(f,this.updatePageLink(d,q));if(l.isHtmlLabel(f)){g.innerHTML=l.sanitizeHtml(l.getLabel(f));for(var y=g.getElementsByTagName("a"),F=!1,C=0;C<y.length;C++)q=y[C].getAttribute("href"),null!=q&&(y[C].setAttribute("href",this.updatePageLink(d,q)),F=!0);F&&l.labelChanged(f,g.innerHTML)}for(C=0;C<l.model.getChildCount(f);C++)this.updatePageLinksForCell(d,l.model.getChildAt(f,C))};EditorUi.prototype.updatePageLink=
function(d,f){if(Graph.isPageLink(f)){var g=d[f.substring(f.indexOf(",")+1)];f=null!=g?"data:page/id,"+g:null}else if("data:action/json,"==f.substring(0,17))try{var l=JSON.parse(f.substring(17));if(null!=l.actions){for(var q=0;q<l.actions.length;q++){var y=l.actions[q];if(null!=y.open&&Graph.isPageLink(y.open)){var F=y.open.substring(y.open.indexOf(",")+1);g=d[F];null!=g?y.open="data:page/id,"+g:null==this.getPageById(F)&&delete y.open}}f="data:action/json,"+JSON.stringify(l)}}catch(C){}return f};
EditorUi.prototype.isRemoteVisioFormat=function(d){return/(\.v(sd|dx))($|\?)/i.test(d)||/(\.vs(s|x))($|\?)/i.test(d)};EditorUi.prototype.importVisio=function(d,f,g,l,q){l=null!=l?l:d.name;g=null!=g?g:mxUtils.bind(this,function(F){this.handleError(F)});var y=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var F=this.isRemoteVisioFormat(l);try{var C="UNKNOWN-VISIO",H=l.lastIndexOf(".");if(0<=H&&H<l.length)C=l.substring(H+1).toUpperCase();else{var G=l.lastIndexOf("/");0<=
G&&G<l.length&&(l=l.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+l,label:F?"remote":"local"})}catch(da){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,l);var aa=new XMLHttpRequest;aa.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(l)?"?stencil=1":""));aa.responseType="blob";this.addRemoteServiceSecurityCheck(aa);
null!=q&&aa.setRequestHeader("x-convert-custom",q);aa.onreadystatechange=mxUtils.bind(this,function(){if(4==aa.readyState)if(200<=aa.status&&299>=aa.status)try{var da=aa.response;if("text/xml"==da.type){var ba=new FileReader;ba.onload=mxUtils.bind(this,function(Y){try{f(Y.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});ba.readAsText(da)}else this.doImportVisio(da,f,g,l)}catch(Y){g(Y)}else try{""==aa.responseType||"text"==aa.responseType?g({message:aa.responseText}):(ba=
new FileReader,ba.onload=function(){g({message:JSON.parse(ba.result).Message})},ba.readAsText(aa.response))}catch(Y){g({})}});aa.send(F)}else try{this.doImportVisio(d,f,g,l)}catch(da){g(da)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,
function(q){this.handleError(q)});var l=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?l():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",l))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=
!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var l=mxUtils.bind(this,
console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(l,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
function(){mxscript("js/orgchart/mxOrgChartLayout.js",l)})})})}):mxscript("js/extensions.min.js",l))};EditorUi.prototype.generateMermaidImage=function(d,f,g,l){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=
F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");if(0<C.length){var H=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(H)||isNaN(G))try{var aa=C[0].getAttribute("viewBox").split(/\s+/);H=parseFloat(aa[2]);G=parseFloat(aa[3])}catch(da){H=H||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),H,G)}else l({message:mxResources.get("invalidInput")})}catch(da){l(da)}})}catch(F){l(F)}};
"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,l){function q(C,H,G){c1=C>>2;c2=(C&3)<<4|H>>4;c3=(H&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+
f)g(this.response);else{var H=new FileReader;H.readAsDataURL(this.response);H.onloadend=function(G){var aa=new Image;aa.onload=function(){try{var da=aa.width,ba=aa.height;if(0==da&&0==ba){var Y=H.result,qa=Y.indexOf(","),O=decodeURIComponent(escape(atob(Y.substring(qa+1)))),X=mxUtils.parseXml(O).getElementsByTagName("svg");0<X.length&&(da=parseFloat(X[0].getAttribute("width")),ba=parseFloat(X[0].getAttribute("height")))}g(H.result,da,ba)}catch(ea){l(ea)}};aa.src=H.result};H.onerror=function(G){l(G)}}else l(C)};
F.onerror=function(C){l(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var l=this.editor.graph,q=null;l.getModel().beginUpdate();try{q=l.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),l.updateCellSize(q,!0)}finally{l.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,l,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?
Y);H.setSelectionCell(H.insertVertex(null,null,"",H.snap(f),H.snap(g),qa,ba,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";"))}}),mxUtils.bind(this,function(){var ba=null;H.getModel().beginUpdate();try{ba=H.insertVertex(H.getDefaultParent(),null,d,H.snap(f),H.snap(g),1,1,"text;"+(l?"html=1;":"")),H.updateCellSize(ba),H.fireEvent(new mxEventObject("textInserted","cells",[ba]))}finally{H.getModel().endUpdate()}H.setSelectionCell(ba)}))}else{d=
Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,function(ba){this.editor.graph.setSelectionCells(this.importXml(ba,f,g,y,null,C))}),mxUtils.bind(this,function(ba){this.handleError(ba)}));else{H=this.editor.graph;q=null;H.getModel().beginUpdate();try{q=H.insertVertex(H.getDefaultParent(),null,"",H.snap(f),H.snap(g),1,1,"text;whiteSpace=wrap;"+(l?"html=1;":""));
"none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.getFileContent(this,F,C,H)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.deleteFile(this,F,C,H)});if(!f){var l=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=
function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=l;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(d,f,g){var l=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,H=!1;y.forEach(function(G,aa){G=
aa.name.toLowerCase();"diagram/diagram.xml"==G?(H=!0,aa.async("string").then(function(da){0==da.indexOf("<mxfile ")?f(da):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=aa))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&l.isRemoteFileFormat(G,d.name)?l.isOffline()?l.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):l.parseFileData(G,mxUtils.bind(this,function(aa){4==aa.readyState&&(200<=aa.status&&299>=aa.status?f(aa.responseText):
g())}),d.name):g()}):H||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,l,q,y,F,C,H,G,aa,da){G=null!=G?G:!0;var ba=!1,Y=null,qa=mxUtils.bind(this,function(O){var X=null;null!=O&&"<mxlibrary"==O.substring(0,10)?this.loadLibrary(new LocalLibrary(this,O,F)):X=this.importXml(O,g,l,G,null,null!=da?mxEvent.isControlDown(da):null);null!=C&&
C(X)});"image"==f.substring(0,5)?(H=!1,"image/png"==f.substring(0,9)&&(f=aa?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Y=this.importXml(f,g,l,G,null,null!=da?mxEvent.isControlDown(da):null),H=!0)),H||(f=this.editor.graph,H=d.indexOf(";"),0<H&&(d=d.substring(0,H)+d.substring(d.indexOf(",",H+1))),G&&f.isGridEnabled()&&(g=f.snap(g),l=f.snap(l)),Y=[f.insertVertex(null,null,"",g,l,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
q,F)):0==d.indexOf("PK")&&null!=H?(ba=!0,this.importZipFile(H,qa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,l,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),g,l,!0,null,G,null,null!=da?mxEvent.isControlDown(da):null));ba||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,l,q,y,F,C,H,G,aa,da,ba){l=null!=l?l:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=
if(null==ta||0==ta.length)Aa.setAttribute("viewBox","0 0 "+sa+" "+Ba);else if(isNaN(sa)||isNaN(Ba)){var Na=ta.split(" ");3<Na.length&&(sa=parseFloat(Na[2]),Ba=parseFloat(Na[3]))}N=Editor.createSvgDataUri(mxUtils.getXml(Aa));var Ca=Math.min(1,Math.min(l/Math.max(1,sa)),l/Math.max(1,Ba)),Qa=q(N,ra.type,f+la*U,g+la*U,Math.max(1,Math.round(sa*Ca)),Math.max(1,Math.round(Ba*Ca)),ra.name);if(isNaN(sa)||isNaN(Ba)){var Ua=new Image;Ua.onload=mxUtils.bind(this,function(){sa=Math.max(1,Ua.width);Ba=Math.max(1,
this.loadImage(J.target.result,mxUtils.bind(this,function(va){this.resizeImage(va,J.target.result,mxUtils.bind(this,function(Aa,sa,Ba){R(la,mxUtils.bind(this,function(){if(null!=Aa&&Aa.length<G){var ta=qa&&this.isResampleImageSize(ra.size,aa)?Math.min(1,Math.min(l/sa,l/Ba)):1;return q(Aa,ra.type,f+la*U,g+la*U,Math.round(sa*ta),Math.round(Ba*ta),ra.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),qa,l,aa,ra.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else N=
function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==l||f?this.showDialog((new ConfirmDialog(this,
mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,l)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var l=new FileReader;l.onload=mxUtils.bind(this,function(){this.parseFileData(l.result,
f,g)});l.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var l=new XMLHttpRequest;l.open("POST",OPEN_URL);l.setRequestHeader("Content-Type","application/x-www-form-urlencoded");l.onreadystatechange=function(){f(l)};l.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
f};EditorUi.prototype.resizeImage=function(d,f,g,l,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),H=Math.max(1,d.height);if(l&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,H/q);if(1<G){var aa=Math.round(C/G),da=Math.round(H/G),ba=document.createElement("canvas");ba.width=aa;ba.height=da;ba.getContext("2d").drawImage(d,0,0,aa,da);var Y=ba.toDataURL();if(Y.length<f.length){var qa=document.createElement("canvas");qa.width=aa;qa.height=da;var O=qa.toDataURL();
Y!==O&&(f=Y,C=aa,H=da)}}}catch(X){}g(f,C,H)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var l=new Image;l.onload=function(){l.width=0<l.width?l.width:120;l.height=0<l.height?l.height:120;f(l)};null!=g&&(l.onerror=g);l.src=d}catch(q){if(null!=g)g(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?
"mermaidData"),null!=ka)this.editMermaidData(X,ea,ka);else{var ja=f.getCellStyle(X);"1"==mxUtils.getValue(ja,"metaEdit","0")?d.showDataDialog(X):g.apply(this,arguments)}}catch(U){d.handleError(U)}};f.getLinkTitle=function(X){return d.getLinkTitle(X)};f.customLinkClicked=function(X){var ea=!1;try{d.handleCustomLink(X),ea=!0}catch(ka){d.handleError(ka)}return ea};var l=f.parseBackgroundImage;f.parseBackgroundImage=function(X){var ea=l.apply(this,arguments);null!=ea&&null!=ea.src&&Graph.isPageLink(ea.src)&&
mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,l=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){l=!0;break}if(!l){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(H,G,aa,da,ba,Y){d.insertImage(H,ba,Y)},function(){},function(H){return"image/"==H.type.substring(0,6)},function(H){for(var G=0;G<H.length;G++)H[G]()});
"false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var l=!1;this.keyHandler.bindControlKey(88,
null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||l||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",
f.container.appendChild(g),l=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!l||224!=F&&17!=F&&91!=F&&93!=F||(l=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),
d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(l,q,y){null==l[q]&&(l[q]=y)},g=this.editor.graph;
this.editor.exportToCanvas(mxUtils.bind(this,function(l,q){try{this.spinner.stop();var y=this.createImageDataUri(l,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,F,C,mxUtils.bind(this,function(H){this.handleError(H)}))}catch(H){this.handleError(H)}}),null,null,null,mxUtils.bind(this,function(l){this.spinner.stop();this.handleError(l)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,
null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(l){this.handleError(l)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,l){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](l)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerHTML="";else{var l=
mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(l));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(l,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),
f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,l){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),l);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,
function(d,f,g,l){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var H=decodeURIComponent(F);this.isCompatibleString(H)&&(C=!0,F=H)}catch(da){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,
y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(da){console.log("Miro import error:",da)}this.pasteXml(y,l,C,d);try{mxEvent.consume(d)}catch(da){}}else if(!g){var aa=this.editor.graph;aa.lastPasteXml=null;aa.pasteCounter=0}}catch(da){this.handleError(da)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=
0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(l){null!=f&&(f.parentNode.removeChild(f),f=null);l.stopPropagation();l.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(l){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());l.stopPropagation();l.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(l){null!=f&&(f.parentNode.removeChild(f),
f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<l.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(l.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(l)&&!mxEvent.isShiftDown(l)):this.openFiles(l.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(l);if(null==q){var y=null!=l.dataTransfer?l.dataTransfer:l.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):
(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?l.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,
"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}l.stopPropagation();l.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var l=document.body;var q=document.documentElement;var y=(l.clientWidth||q.clientWidth)-3;l=Math.max(l.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,l=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border=
"3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,l-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),
l=new mxGraphModel;g.decode(f,l);f=l.getChildAt(l.getRoot(),0);for(g=0;g<l.getChildCount(f);g++)d.push(l.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,l,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,
10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,l);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(H){this.handleError(H,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,l)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();
(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,l)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,l);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==
d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,l)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,l=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,l,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=
0;g<d.length;g++)mxUtils.bind(this,function(l){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,l.name,l,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();this.handleError(y);window.openFile=null});"image"!==l.type.substring(0,5)&&"application/pdf"!==l.type||"image/svg"===l.type.substring(0,9)?q.readAsText(l):q.readAsDataURL(l)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,l,q){var y=this.getCurrentFile(),
F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,d,f||this.defaultFilename,g,l,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=l)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=l)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),
0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var l=this.editor.graph,q=l.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));l.model.isEdge(d)&&
(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=l.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(l.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=
this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,l,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=l?l:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var l=f.background;if(null==l||l==mxConstants.NONE)l=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,l,1,this.embedExportBorder)}else d||
g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,l=!1,q=null,y=mxUtils.bind(this,function(H,G){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayoutList(G.layouts);return}if("prompt"==G.action){this.spinner.stop();var Y=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(P){null!=P?F.postMessage(JSON.stringify({event:"prompt",value:P,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",message:G}),"*")},null!=G.titleKey?
mxResources.get(G.titleKey):G.title);this.showDialog(Y.container,300,80,!0,!1);Y.init();return}if("draft"==G.action){var qa=da(G.xml);this.spinner.stop();Y=new DraftDialog(this,mxResources.get("draftFound",[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",message:G}),"*")}),G.editKey?
mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),"*")}):null);this.showDialog(Y.container,640,480,!0,!1,mxUtils.bind(this,function(P){P&&this.actions.get("exit").funct()}));try{Y.init()}catch(P){F.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();var O=1==G.enableRecent,
X=1==G.enableSearch,ea=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ja=new TemplatesDialog(this,function(P,Z,oa){P=P||this.emptyDiagramXml;F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa.url,libs:oa.libs,builtIn:null!=oa.info&&null!=oa.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=ka?ka.id:null,O?mxUtils.bind(this,
function(P,Z,oa){this.remoteInvoke("getRecentDiagrams",[oa],null,P,Z)}):null,X?mxUtils.bind(this,function(P,Z,oa,va){this.remoteInvoke("searchDiagrams",[P,va],null,Z,oa)}):null,mxUtils.bind(this,function(P,Z,oa){this.remoteInvoke("getFileContent",[P.url],null,Z,oa)}),null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,!1,!1,!0,!0);this.showDialog(ja.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}Y=new NewDialog(this,
!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(P,Z,oa,va){P=P||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa,libs:va,builtIn:!0,message:G}),"*"):(d(P,H,P!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,O?mxUtils.bind(this,function(P){this.remoteInvoke("getRecentDiagrams",[null],null,P,function(){P(null,"Network Error!")})}):
null,X?mxUtils.bind(this,function(P,Z){this.remoteInvoke("searchDiagrams",[P,null],null,Z,function(){Z(null,"Network Error!")})}):null,mxUtils.bind(this,function(P,Z,oa){F.postMessage(JSON.stringify({event:"template",docUrl:P,info:Z,name:oa}),"*")}),null,null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(P){this.sidebar.hideTooltip();P&&this.actions.get("exit").funct()}));
Y.init();return}if("textContent"==G.action){var U=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:U,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var I=null!=G.messageKey?mxResources.get(G.messageKey):G.message;null==
G.show||G.show?this.spinner.spin(document.body,I):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var V=null!=G.xml?G.xml:this.getFileData(!0);
this.editor.graph.setEnabled(!1);var Q=this.editor.graph,R=mxUtils.bind(this,function(P){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=P;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),fa=mxUtils.bind(this,function(P){null==P&&(P=Editor.blankImage);"xmlpng"==G.format&&(P=Editor.writeGraphModelToPng(P,"tEXt","mxfile",encodeURIComponent(V)));Q!=this.editor.graph&&Q.container.parentNode.removeChild(Q.container);R(P)}),
la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ra=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var P=Q.getGlobalVariable;Q=this.createTemporaryGraph(Q.getStylesheet());for(var Z,oa=0;oa<this.pages.length;oa++)if(this.pages[oa].getId()==la){Z=this.updatePageRoot(this.pages[oa]);break}null==Z&&(Z=this.currentPage);Q.getGlobalVariable=function(Ba){return"page"==Ba?Z.getName():"pagenumber"==
Ba?1:P.apply(this,arguments)};document.body.appendChild(Q.container);Q.model.setRoot(Z.root)}if(null!=G.layerIds){var va=Q.model,Aa=va.getChildCells(va.getRoot()),sa={};for(oa=0;oa<G.layerIds.length;oa++)sa[G.layerIds[oa]]=!0;for(oa=0;oa<Aa.length;oa++)va.setVisible(Aa[oa],sa[Aa[oa].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ba){fa(Ba.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){fa(null)}),null,null,G.scale,G.transparent,G.shadow,null,Q,G.border,
null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(V),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ra)},0):ra()):ra()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,
G.action){ba=G.toSketch;l=1==G.autosave;this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var u=Editor.sketchMode;this.doSetSketchMode(G.rough);u!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(u=Editor.darkMode,this.doSetDarkMode(G.dark),
function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),S=mxUtils.bind(this,function(P,Z){g=!0;try{d(P,Z,null,ba)}catch(oa){this.handleError(oa)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=W();l&&null==f&&(f=mxUtils.bind(this,function(oa,va){oa=W();oa==q||g||(va=this.createLoadMessage("autosave"),va.xml=oa,(window.opener||window.parent).postMessage(JSON.stringify(va),"*"));q=oa}),this.editor.graph.model.addListener(mxEvent.CHANGE,
href:H,target:G,allowOpener:aa}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var l="1"==
urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,l);f.setAttribute("title",l);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),d.appendChild(f),"1"==urlParams.saveAndExit&&
":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(d,f){for(var g=this.editor.graph,l=g.getSelectionCells(),q=0;q<d.length;q++){var y=new window[d[q].layout](g);if(null!=d[q].config)for(var F in d[q].config)y[F]=
d[q].config[F];this.executeLayout(function(){y.execute(g.getDefaultParent(),0==l.length?null:l)},q==d.length-1,f)}};EditorUi.prototype.importCsv=function(d,f){try{var g=d.split("\n"),l=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,qa=null,O=null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",I="auto",V=null,Q=null,R=40,fa=40,la=100,ra=0,u=function(){null!=f?f(ma):(H.setSelectionCells(ma),H.scrollCellToVisible(H.getSelectionCell()))},
J=H.getFreeInsertPoint(),N=J.x,W=J.y;J=W;var S=null,P="auto";ka=null;for(var Z=[],oa=null,va=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),Aa++;if("#"!=d.charAt(1)){var sa=d.indexOf(":");if(0<sa){var Ba=mxUtils.trim(d.substring(1,sa)),ta=mxUtils.trim(d.substring(sa+1));"label"==Ba?S=H.sanitizeHtml(ta):"labelname"==Ba&&0<ta.length&&"-"!=ta?Y=
ta:"labels"==Ba&&0<ta.length&&"-"!=ta?O=JSON.parse(ta):"style"==Ba?aa=ta:"parentstyle"==Ba?X=ta:"unknownStyle"==Ba&&"-"!=ta?qa=ta:"stylename"==Ba&&0<ta.length&&"-"!=ta?ba=ta:"styles"==Ba&&0<ta.length&&"-"!=ta?da=JSON.parse(ta):"vars"==Ba&&0<ta.length&&"-"!=ta?G=JSON.parse(ta):"identity"==Ba&&0<ta.length&&"-"!=ta?ea=ta:"parent"==Ba&&0<ta.length&&"-"!=ta?ka=ta:"namespace"==Ba&&0<ta.length&&"-"!=ta?ja=ta:"width"==Ba?U=ta:"height"==Ba?I=ta:"left"==Ba&&0<ta.length?V=ta:"top"==Ba&&0<ta.length?Q=ta:"ignore"==
Ba?va=ta.split(","):"connect"==Ba?Z.push(JSON.parse(ta)):"link"==Ba?oa=ta:"padding"==Ba?ra=parseFloat(ta):"edgespacing"==Ba?R=parseFloat(ta):"nodespacing"==Ba?fa=parseFloat(ta):"levelspacing"==Ba?la=parseFloat(ta):"layout"==Ba&&(P=ta)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));var Na=this.editor.csvToArray(g[Aa].replace(/\r$/,""));sa=d=null;Ba=[];for(ta=0;ta<Na.length;ta++)ea==Na[ta]&&(d=ta),ka==Na[ta]&&(sa=ta),Ba.push(mxUtils.trim(Na[ta]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,
"").replace(/_+$/,""));null==S&&(S="%"+Ba[0]+"%");if(null!=Z)for(var Ca=0;Ca<Z.length;Ca++)null==C[Z[Ca].to]&&(C[Z[Ca].to]={});ea=[];for(ta=Aa+1;ta<g.length;ta++){var Qa=this.editor.csvToArray(g[ta].replace(/\r$/,""));if(null==Qa){var Ua=40<g[ta].length?g[ta].substring(0,40)+"...":g[ta];throw Error(Ua+" ("+ta+"):\n"+mxResources.get("containsValidationErrors"));}0<Qa.length&&ea.push(Qa)}H.model.beginUpdate();try{for(ta=0;ta<ea.length;ta++){Qa=ea[ta];var Ka=null,bb=null!=d?ja+Qa[d]:null;null!=bb&&(Ka=
H.model.getCell(bb));g=null!=Ka;var Va=new mxCell(S,new mxGeometry(N,J,0,0),aa||"whiteSpace=wrap;html=1;");Va.vertex=!0;Va.id=bb;Ua=null!=Ka?Ka:Va;for(var $a=0;$a<Qa.length;$a++)H.setAttributeForCell(Ua,Ba[$a],Qa[$a]);if(null!=Y&&null!=O){var z=O[Ua.getAttribute(Y)];null!=z&&H.labelChanged(Ua,z)}if(null!=ba&&null!=da){var L=da[Ua.getAttribute(ba)];null!=L&&(Ua.style=L)}H.setAttributeForCell(Ua,"placeholders","1");Ua.style=H.replacePlaceholders(Ua,Ua.style,G);g?(0>mxUtils.indexOf(y,Ka)&&y.push(Ka),
H.fireEvent(new mxEventObject("cellsInserted","cells",[Ka]))):H.fireEvent(new mxEventObject("cellsInserted","cells",[Va]));Ka=Va;if(!g)for(Ca=0;Ca<Z.length;Ca++)C[Z[Ca].to][Ka.getAttribute(Z[Ca].to)]=Ka;null!=oa&&"link"!=oa&&(H.setLinkForCell(Ka,Ka.getAttribute(oa)),H.setAttributeForCell(Ka,oa,null));var M=this.editor.graph.getPreferredSizeForCell(Ka);ka=null!=sa?H.model.getCell(ja+Qa[sa]):null;if(Ka.vertex){Ua=null!=ka?0:N;Aa=null!=ka?0:W;null!=V&&null!=Ka.getAttribute(V)&&(Ka.geometry.x=Ua+parseFloat(Ka.getAttribute(V)));
null!=Q&&null!=Ka.getAttribute(Q)&&(Ka.geometry.y=Aa+parseFloat(Ka.getAttribute(Q)));var T="@"==U.charAt(0)?Ka.getAttribute(U.substring(1)):null;Ka.geometry.width=null!=T&&"auto"!=T?parseFloat(Ka.getAttribute(U.substring(1))):"auto"==U||"auto"==T?M.width+ra:parseFloat(U);var ca="@"==I.charAt(0)?Ka.getAttribute(I.substring(1)):null;Ka.geometry.height=null!=ca&&"auto"!=ca?parseFloat(ca):"auto"==I||"auto"==ca?M.height+ra:parseFloat(I);J+=Ka.geometry.height+fa}g?(null==F[bb]&&(F[bb]=[]),F[bb].push(Ka)):
(l.push(Ka),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ka,ka),q.push(ka)):y.push(H.addCell(Ka)))}for(ta=0;ta<q.length;ta++)T="@"==U.charAt(0)?q[ta].getAttribute(U.substring(1)):null,ca="@"==I.charAt(0)?q[ta].getAttribute(I.substring(1)):null,"auto"!=U&&"auto"!=T||"auto"!=I&&"auto"!=ca||H.updateGroupBounds([q[ta]],ra,!0);var ia=y.slice(),ma=y.slice();for(Ca=0;Ca<Z.length;Ca++){var pa=Z[Ca];for(ta=0;ta<l.length;ta++){Ka=l[ta];var ua=mxUtils.bind(this,function(Ea,La,Ta){var Wa=La.getAttribute(Ta.from);
if(null!=Wa&&""!=Wa){Wa=Wa.split(",");for(var fb=0;fb<Wa.length;fb++){var gb=C[Ta.to][Wa[fb]];if(null==gb&&null!=qa){gb=new mxCell(Wa[fb],new mxGeometry(N,W,0,0),qa);gb.style=H.replacePlaceholders(La,gb.style,G);var ib=this.editor.graph.getPreferredSizeForCell(gb);gb.geometry.width=ib.width+ra;gb.geometry.height=ib.height+ra;C[Ta.to][Wa[fb]]=gb;gb.vertex=!0;gb.id=Wa[fb];y.push(H.addCell(gb))}if(null!=gb){ib=Ta.label;null!=Ta.fromlabel&&(ib=(La.getAttribute(Ta.fromlabel)||"")+(ib||""));null!=Ta.sourcelabel&&
(ib=H.replacePlaceholders(La,Ta.sourcelabel,G)+(ib||""));null!=Ta.tolabel&&(ib=(ib||"")+(gb.getAttribute(Ta.tolabel)||""));null!=Ta.targetlabel&&(ib=(ib||"")+H.replacePlaceholders(gb,Ta.targetlabel,G));var tb="target"==Ta.placeholders==!Ta.invert?gb:Ea;tb=null!=Ta.style?H.replacePlaceholders(tb,Ta.style,G):H.createCurrentEdgeStyle();ib=H.insertEdge(null,null,ib||"",Ta.invert?gb:Ea,Ta.invert?Ea:gb,tb);if(null!=Ta.labels)for(tb=0;tb<Ta.labels.length;tb++){var qb=Ta.labels[tb],cb=new mxCell(qb.label||
tb,new mxGeometry(null!=qb.x?qb.x:0,null!=qb.y?qb.y:0,0,0),"resizable=0;html=1;");cb.vertex=!0;cb.connectable=!1;cb.geometry.relative=!0;null!=qb.placeholders&&(cb.value=H.replacePlaceholders("target"==qb.placeholders==!Ta.invert?gb:Ea,cb.value,G));if(null!=qb.dx||null!=qb.dy)cb.geometry.offset=new mxPoint(null!=qb.dx?qb.dx:0,null!=qb.dy?qb.dy:0);ib.insert(cb)}ma.push(ib);mxUtils.remove(Ta.invert?Ea:gb,ia)}}}});ua(Ka,Ka,pa);if(null!=F[Ka.id])for($a=0;$a<F[Ka.id].length;$a++)ua(Ka,F[Ka.id][$a],pa)}}if(null!=
va)for(ta=0;ta<l.length;ta++)for(Ka=l[ta],$a=0;$a<va.length;$a++)H.setAttributeForCell(Ka,mxUtils.trim(va[$a]),null);if(0<y.length){var ya=new mxParallelEdgeLayout(H);ya.spacing=R;ya.checkOverlap=!0;var Fa=function(){0<ya.spacing&&ya.execute(H.getDefaultParent());for(var Ea=0;Ea<y.length;Ea++){var La=H.getCellGeometry(y[Ea]);La.x=Math.round(H.snap(La.x));La.y=Math.round(H.snap(La.y));"auto"==U&&(La.width=Math.round(H.snap(La.width)));"auto"==I&&(La.height=Math.round(H.snap(La.height)))}};if("["==
P.charAt(0)){var Ma=u;H.view.validate();this.executeLayoutList(JSON.parse(P),function(){Fa();Ma()});u=null}else if("circle"==P){var Oa=new mxCircleLayout(H);Oa.disableEdgeStyle=!1;Oa.resetEdges=!1;var Pa=Oa.isVertexIgnored;Oa.isVertexIgnored=function(Ea){return Pa.apply(this,arguments)||0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){Oa.execute(H.getDefaultParent());Fa()},!0,u);u=null}else if("horizontaltree"==P||"verticaltree"==P||"auto"==P&&ma.length==2*y.length-1&&1==ia.length){H.view.validate();
var Sa=new mxCompactTreeLayout(H,"horizontaltree"==P);Sa.levelDistance=fa;Sa.edgeRouting=!1;Sa.resetEdges=!1;this.executeLayout(function(){Sa.execute(H.getDefaultParent(),0<ia.length?ia[0]:null)},!0,u);u=null}else if("horizontalflow"==P||"verticalflow"==P||"auto"==P&&1==ia.length){H.view.validate();var za=new mxHierarchicalLayout(H,"horizontalflow"==P?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=fa;za.parallelEdgeSpacing=R;za.interRankCellSpacing=la;za.disableEdgeStyle=
!1;this.executeLayout(function(){za.execute(H.getDefaultParent(),ma);H.moveCells(ma,N,W)},!0,u);u=null}else if("organic"==P||"auto"==P&&ma.length>y.length){H.view.validate();var wa=new mxFastOrganicLayout(H);wa.forceConstant=3*fa;wa.disableEdgeStyle=!1;wa.resetEdges=!1;var Da=wa.isVertexIgnored;wa.isVertexIgnored=function(Ea){return Da.apply(this,arguments)||0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){wa.execute(H.getDefaultParent());Fa()},!0,u);u=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=
u&&u()}}catch(Ea){this.handleError(Ea)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",l;for(l in urlParams)0>mxUtils.indexOf(d,l)&&null!=urlParams[l]&&(f+=g+l+"="+urlParams[l],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
l;for(l in urlParams)0>mxUtils.indexOf(g,l)&&(d=0==f?d+"?":d+"&",null!=urlParams[l]&&(d+=l+"="+urlParams[l],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,l,q){d=new LinkDialog(this,d,f,g,!0,l,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);
this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);
this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};
EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,
f=this.getCurrentFile(),g=this.getSelectionState(),l=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(l);this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());this.actions.get("guides").setEnabled(l);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(l);this.actions.get("connectionArrows").setEnabled(l);this.actions.get("connectionPoints").setEnabled(l);this.actions.get("copyStyle").setEnabled(l&&!d.isSelectionEmpty());
this.actions.get("pasteStyle").setEnabled(l&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(l);this.actions.get("createRevision").setEnabled(l);this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(l&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=
this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);
f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(l&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=
!1,ExportDialog.exportFile=function(d,f,g,l,q,y,F,C){var H=d.editor.graph;if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,"svg",mxUtils.getXml(H.getSvg(l,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),aa=H.getGraphBounds(),da=Math.floor(aa.width*q/H.view.scale),ba=Math.floor(aa.height*q/H.view.scale);if(G.length<=MAX_REQUEST_SIZE&&da*ba<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=
g&&"jpeg"!=g||!d.isExportToCanvas()){var Y={globalVars:H.getExportVariables()};C&&(Y.grid={size:H.gridSize,steps:H.view.gridSteps,color:H.view.gridColor});d.saveRequest(f,g,function(qa,O){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(O||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Y))+(0<F?"&dpi="+F:"")+"&bg="+(null!=l?l:"none")+"&w="+da+"&h="+ba+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==l||
"none"==l,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var l=d;this.currentPage!=this.pages[g]&&(l=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),l.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+
l.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxUtils.htmlEntities(d));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(l);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";
q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var H=JSON.parse(decodeURIComponent(C.substring(1)));y[H[0]]={id:H[0],title:H[1],downloadUrl:H[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerHTML="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+
"</div>";else for(var aa=0;aa<G.length;aa++){var da=G[aa];y[da.id]&&(f[da.id]=da);var ba=this.addCheckbox(q,da.title,y[da.id]);(function(Y,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Y.id]=Y:delete f[Y.id]})})(da,ba)}},mxUtils.bind(this,function(G){q.innerHTML="";var aa=document.createElement("div");aa.style.padding="8px";aa.style.textAlign="center";mxUtils.write(aa,mxResources.get("error")+": ");mxUtils.write(aa,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));
q.appendChild(aa)}));g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,aa;for(aa in f)null==y[aa]&&(G++,mxUtils.bind(this,function(da){this.remoteInvoke("getFileContent",[da.downloadUrl],null,mxUtils.bind(this,function(ba){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,ba,da))}catch(Y){this.handleError(Y,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&
this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(f[aa]));for(aa in y)f[aa]||this.closeLibrary(new RemoteLibrary(this,null,y[aa]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,
allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==
g)throw Error("No callback for "+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,l,q){var y=!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&l.apply(this,arguments)}),H=mxUtils.bind(this,function(){window.clearTimeout(F);
y&&q.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:C,error:H});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,aa){var da={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=aa?da.error={errResp:aa}:null!=G&&
(da.resp=G);this.remoteWin.postMessage(JSON.stringify(da),"*")});try{var l=d.funtionName,q=this.remoteInvokableFns[l];if(null!=q&&"function"===typeof this[l]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+l+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),
this[l].apply(this,C);else{var H=this[l].apply(this,C);g([H])}}else g(null,"Invalid Call: "+l+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var l=g.open("database",2);l.onupgradeneeded=function(q){try{var y=l.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",
{keyPath:"title"}),y.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(F){null!=f&&f(F)}};l.onsuccess=mxUtils.bind(this,function(q){var y=l.result;this.database=y;EditorUi.migrateStorageFiles&&(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=
document.createElement("iframe");C.style.display="none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(C);var H=!0,G=!1,aa,da=0,ba=mxUtils.bind(this,function(){G=!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Y=mxUtils.bind(this,function(){da++;qa()}),qa=mxUtils.bind(this,function(){try{if(da>=aa.length)ba();else{var X=
aa[da];StorageFile.getFileContent(this,X,mxUtils.bind(this,function(ea){null==ea||".scratchpad"==X&&ea==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[X]}),"*"):Y()}),Y)}}catch(ea){console.log(ea)}}),O=mxUtils.bind(this,function(X){try{this.setDatabaseItem(null,[{title:X.title,size:X.data.length,lastModified:Date.now(),type:X.isLib?"L":"F"},{title:X.title,data:X.data}],Y,Y,["filesInfo","files"])}catch(ea){console.log(ea)}});
F=mxUtils.bind(this,function(X){try{if(X.source==C.contentWindow){var ea={};try{ea=JSON.parse(X.data)}catch(ka){}"init"==ea.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=ea.event||G||(H?null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?(aa=ea.resp[0],H=!1,qa()):ba():null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?O(ea.resp[0]):
Y())}}catch(ka){console.log(ka)}});window.addEventListener("message",F)}})));d(y);y.onversionchange=function(){y.close()}});l.onerror=f;l.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,f,g,l,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=l;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&
null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=l&&l(C)}}),l)};EditorUi.prototype.removeDatabaseItem=function(d,f,g,l){this.openDatabase(mxUtils.bind(this,function(q){l=l||"objects";Array.isArray(l)||(l=[l],d=[d]);q=q.transaction(l,"readwrite");q.oncomplete=f;q.onerror=g;for(var y=0;y<l.length;y++)q.objectStore(l[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,l){this.openDatabase(mxUtils.bind(this,function(q){try{l=l||"objects";var y=q.transaction([l],"readonly").objectStore(l).get(d);
y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(l){try{g=g||"objects";var q=l.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,
function(l){try{g=g||"objects";var q=l.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=
d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=function(d,f,g){var l=this.getCurrentFile();null!=l?l.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=
function(d,f){var g=this.getCurrentFile();return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();
return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,f,g,l,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,l,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");
return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,
f,g,l,q,y,F,C,H,G,aa,da,ba,Y,qa,O){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,l,q,y,F,C,H,G,aa,da,ba,Y,qa,O)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,f,g,l){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,l)};EditorUi.prototype.convertImageToDataUri=
function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,l){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,l)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};
EditorUi.prototype.writeGraphModelToPng=function(d,f,g,l,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,l,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),l=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<l.length){var q="<mxfile "===
l.substring(0,8)||"<?xml"===l.substring(0,5)||"\x3c!--[if IE]>"===l.substring(0,12);l="<mxlibrary>"===l.substring(0,11);(q||l)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
mxUtils.write(U,mxResources.get("timeAgo",[I],"{1} ago"));U.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var U=document.createElement("img");U.className="geCommentBusyImg";U.src=IMAGE_PATH+"/spin.gif";ja.appendChild(U);ja.busyImg=U}function l(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,U,I,V,Q){function R(S,P,Z){var oa=document.createElement("li");oa.className=
function(Ca){ta.id=Ca;ja.replies.push(ta);q(Na);Z&&Z()},function(Ca){sa();l(Na);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},oa,va)}function sa(){d(ta,Na,function(Ca){Aa()},!0)}var Ba=fa().pdiv,ta=b.newComment(S,b.getCurrentUser());ta.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var Na=y(ta,ja.replies,Ba,V+1);P?sa():Aa()}if(Q||!ja.isResolved){ba.style.display="none";var ra=document.createElement("div");ra.className="geCommentContainer";ra.setAttribute("data-commentId",
!0)},ja.isResolved);J=b.getCurrentUser();null==J||J.id!=ja.user.id||F||ja.isLocked||(R(mxResources.get("edit"),function(){function S(){d(ja,ra,function(){g(ra);ja.editComment(ja.content,function(){q(ra)},function(P){l(ra);S();b.handleError(P,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}S()},ja.isResolved),R(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(ra);ja.deleteComment(function(S){if(!0===S){S=ra.querySelector(".geCommentTxt");
S.innerHTML="";mxUtils.write(S,mxResources.get("msgDeleted"));var P=ra.querySelectorAll(".geCommentAction");for(S=0;S<P.length;S++)P[S].parentNode.removeChild(P[S]);q(ra);ra.style.opacity="0.5"}else{P=fa(ja).replies;for(S=0;S<P.length;S++)da.removeChild(P[S]);for(S=0;S<U.length;S++)if(U[S]==ja){U.splice(S,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(S){l(ra);b.handleError(S,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
aa.className="geButton";if(!F){var qa=aa.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ja){function U(){d(I,V,function(Q){g(V);b.addComment(Q,function(R){Q.id=R;X.push(Q);q(V)},function(R){l(V);U();b.handleError(R,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var I=b.newComment("",b.getCurrentUser()),V=y(I,X,null,0);
this.window.getX(),U=this.window.getY();this.window.setLocation(ja,U)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,l){var q=document.createElement("div");q.style.textAlign="center";l=null!=l?l:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=l+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
1),D=null,t=0;t<this.pages.length;t++)mxUtils.bind(this,function(g,l){this.pages[g]==this.currentPage?(l.className="geActivePage",l.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):l.className="geInactivePage";l.setAttribute("draggable","true");mxEvent.addListener(l,"dragstart",mxUtils.bind(this,function(q){b.isEnabled()?(mxClient.IS_FF&&q.dataTransfer.setData("Text","<diagram/>"),D=g):mxEvent.consume(q)}));mxEvent.addListener(l,"dragend",mxUtils.bind(this,function(q){D=null;q.stopPropagation();
q.preventDefault()}));mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(q){null!=D&&(q.dataTransfer.dropEffect="move");q.stopPropagation();q.preventDefault()}));mxEvent.addListener(l,"drop",mxUtils.bind(this,function(q){null!=D&&g!=D&&this.movePage(D,g);q.stopPropagation();q.preventDefault()}));e.appendChild(l)})(t,this.createTabForPage(this.pages[t],n,this.pages[t]!=this.currentPage,t+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(e);n=this.createPageMenuTab();this.tabContainer.appendChild(n);
var D=new mxPopupMenu(mxUtils.bind(this,function(d,f){var g=mxUtils.bind(this,function(){for(var F=0;F<this.pages.length;F++)mxUtils.bind(this,function(C){var H=d.addItem(this.pages[C].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[C])}),f),G=this.pages[C].getId();H.setAttribute("title",this.pages[C].getName()+" ("+(C+1)+"/"+this.pages.length+")"+(null!=G?" ["+G+"]":""));this.pages[C]==this.currentPage&&d.addCheckmark(H,Editor.checkmarkImage)})(F)}),l=mxUtils.bind(this,function(){d.addItem(mxResources.get("insertPage"),
null,mxUtils.bind(this,function(){this.insertPage()}),f)});e||g();if(this.editor.graph.isEnabled()){e||(d.addSeparator(f),l());var q=this.currentPage;if(null!=q){d.addSeparator(f);var y=q.getName();d.addItem(mxResources.get("removeIt",[y]),null,mxUtils.bind(this,function(){this.removePage(q)}),f);d.addItem(mxResources.get("renameIt",[y]),null,mxUtils.bind(this,function(){this.renamePage(q,q.getName())}),f);e||d.addSeparator(f);d.addItem(mxResources.get("duplicateIt",[y]),null,mxUtils.bind(this,function(){this.duplicatePage(q,
mxResources.get("copyOf",[q.getName()]))}),f)}}e&&(d.addSeparator(f),l(),d.addSeparator(f),g())}));D.div.className+=" geMenubarMenu";D.smartSeparators=!0;D.showDisabled=!0;D.autoExpand=!0;D.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(D,arguments);D.destroy()});var t=mxEvent.getClientX(n),E=mxEvent.getClientY(n);D.popup(t,E,null,n);this.setCurrentMenu(D);mxEvent.consume(n)}));return b};
null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(t,E,d,f,g,l){t=this.createUrlParameters(t,E,d,f,g,l);d||t.push("hide-pages=1");D.isSelectionEmpty()||(d=D.getBoundingBox(D.getSelectionCells()),E=D.view.translate,g=D.view.scale,d.width/=g,d.height/=g,d.x=d.x/g-E.x,d.y=d.y/g-E.y,t.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
u=0:V==mxConstants.DIRECTION_NORTH?(u=0,J=-J):V==mxConstants.DIRECTION_WEST?(u=-u,J=0):V==mxConstants.DIRECTION_EAST&&(J=0);C.moveCells(ra,u,J);return C.addCells(R,fa)}finally{C.model.endUpdate()}}function l(I,V){C.model.beginUpdate();try{var Q=C.model.getParent(I),R=C.getIncomingTreeEdges(I),fa=d(I);0==R.length&&(R=[C.createEdge(Q,null,"",null,null,C.createCurrentEdgeStyle())],fa=V);var la=C.cloneCells([R[0],I]);C.model.setTerminal(la[0],I,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},O=F.onKeyDown;F.onKeyDown=function(I){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var V=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==I.which?V=mxEvent.isShiftDown(I)?g(C.getSelectionCell()):l(C.getSelectionCell()):13==I.which&&(V=f(C.getSelectionCell(),!mxEvent.isShiftDown(I))));if(null!=V&&0<V.length)1==
return J==V||0==u.length?l(I,V):N==W?g(I):f(I,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(I){var V=[I];!D(I)&&!n(I)||E(I)||C.traverse(I,!0,function(Q,R){var fa=null!=R&&C.isTreeEdge(R);fa&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||fa)&&0>mxUtils.indexOf(V,Q)&&V.push(Q);return null==R||fa});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
l.geometry.relative=!0;l.edge=!0;E.insertEdge(l,!0);g.insertEdge(l,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');q.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");C.geometry.relative=!0;C.edge=!0;E.insertEdge(C,!0);F.insertEdge(C,!1);t.insert(f);t.insert(l);t.insert(y);t.insert(C);t.insert(E);t.insert(d);t.insert(g);t.insert(q);t.insert(F);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var t=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');g.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
l.geometry.relative=!0;l.edge=!0;E.insertEdge(l,!0);g.insertEdge(l,!1);t.insert(f);t.insert(l);t.insert(E);t.insert(d);t.insert(g);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree root",function(){var t=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');D.setAttributeForCell(t,"treeRoot",
EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var l=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(O,
X){null!=X.shortcut&&900>n&&!mxClient.IS_IOS?O.firstChild.nextSibling.setAttribute("title",X.shortcut):l.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var O=this.userElement;O.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+O.style.display;O.className="geToolbarButton";O.innerHTML="";O.style.backgroundImage="url("+Editor.userImage+")";O.style.backgroundPosition="center center";
fa)})));mxUtils.bind(this,function(){var R=this.get("insert"),fa=R.funct;R.funct=function(la,ra){"1"==urlParams.sketch?(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ra),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ra),O.menus.addSubmenu("insertLayout",la,ra,mxResources.get("layout")),O.menus.addSubmenu("insertAdvanced",la,ra,mxResources.get("advanced"))):(fa.apply(this,arguments),O.menus.addSubmenu("table",la,ra))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var l=this.graph.getGlobalVariable;d=this;this.graph.getGlobalVariable=function(H){var G=f[d.currentPage];return"page"==H?G.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==H?d.currentPage+1:"pagecount"==H?f.length:l.apply(this,arguments)}}}this.diagrams=[];var q=null;this.selectPage=function(H){this.handlingResize||(this.currentPage=mxUtils.mod(H,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
"mouseleave",function(){I.style.backgroundColor="#eee"}),mxUtils.setOpacity(ea,60),I.style.cursor="pointer"):mxUtils.setOpacity(I,30);I.appendChild(ea);k.appendChild(I);l++;return I}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(ea,ka){},mouseUp:function(ea,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,l=0,q=null,y=null,F=null,C=null,H=0;H<g.length;H++){var G=
(G=this.graphConfig["toolbar-buttons"][G],null!=G&&(G.elem=b(null==G.enabled||G.enabled?G.handler:function(){},G.image,G.title,G.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*l);null!=this.graphConfig.title&&(g=e.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),
mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*l;var O=e.style.border,X=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var ea=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
n.refresh=function(){};var D=mxUtils.bind(this,function(l){27==l.keyCode&&n.destroy()}),t=n.destroy;n.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",D);document.body.removeChild(b);document.body.removeChild(e);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;t.apply(this,arguments)};var E=n.editor.graph,d=E.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
"keydown",D)):(b.style.display="none",e.style.display="none");var f=this;E.getImageFromBundles=function(l){return f.getImageUrl(l)};var g=n.createTemporaryGraph;n.createTemporaryGraph=function(){var l=g.apply(this,arguments);l.getImageFromBundles=function(q){return f.getImageUrl(q)};return l};this.graphConfig.move&&(E.isMoveCellsEvent=function(l){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
function(ea,ka,ja){ea.attachEvent?ea.attachEvent("on"+ka,ja):ea.addEventListener(ka,ja)};X(F,"scroll",y);X(H,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var l=k.length;f<l;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<
var mxClient={VERSION:"18.1.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-fa8c4ce5"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"a65d8820cc22a2193adb2a2914854f08"},{url:"js/extensions.min.js",revision:"b2a9feb52ee2b2eaf0228f5d19f4c3b2"},{url:"js/stencils.min.js",revision:"98924b5296c015cef20b904ef861eeea"},{url:"js/shapes-14-6-5.min.js",revision:"f0e1d4c09054df2f3ea3793491e9fe08"},{url:"js/math-print.js",revision:"0611491c663261a732ff18224906184d"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"4f2c07c4585347249c95cd9158872fb2"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"daad07a8c635bb21d612ad973a747740"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"c96db1790184cb35781f791e8d1dafd9"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6d5a85e70c7b82ba685782ca6df2b9d5"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"e00ad51fc16b87c362d6eaf930ab1fa5"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"c6552981ba1add209fe3e12ffcf79c9a"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"fab9a95f19a57bb836e42f67a1c0078b"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"d089f12446d443ca01752a5115456fcc"},{url:"connect/confluence/viewer-init.js",revision:"2bd677096ebffd3aa5cab0c347851e3f"},{url:"connect/confluence/viewer.js",revision:"a9d84488d17425d28e5d85d464e0a8f8"},{url:"connect/confluence/viewer-1-4-42.html",revision:"4c58f3a1a4c99b1c4264593b6e05100b"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"352d2782274de07617d117926b68c205"},{url:"connect/confluence/includeDiagram.html",revision:"5cefef0227d058cf716d1f51f2cf202f"},{url:"connect/confluence/macro-editor.js",revision:"412bc4b87e630b697a40f247c579d398"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"ecd1272c2f82949798a04cb8f66ff3ee"},{url:"resources/dia_am.txt",revision:"c6e8d4d3c87ac58bc27910395478d53a"},{url:"resources/dia_ar.txt",revision:"ab53b54466bb6d8fffdda985a98904fa"},{url:"resources/dia_bg.txt",revision:"277860dcd73984aacb184807b8d62c1a"},{url:"resources/dia_bn.txt",revision:"15c2219c6df0fd0435dd20e540f660b3"},{url:"resources/dia_bs.txt",revision:"9ae286629a23096d8f9762856f766d10"},{url:"resources/dia_ca.txt",revision:"1a8dadcc44bcb01edcfc963abbde6b7e"},{url:"resources/dia_cs.txt",revision:"92e03c81f1e504dca34e6684f8b6a5db"},{url:"resources/dia_da.txt",revision:"57571c1ffdcb1f38b88536a2e4458f9c"},{url:"resources/dia_de.txt",revision:"4ec5758340635d39267a2d2f4a44733c"},{url:"resources/dia_el.txt",revision:"9e443a6f508e6a56d53b424b5d339459"},{url:"resources/dia_eo.txt",revision:"2e2907adc02b8e5bcf01f427d7819386"},{url:"resources/dia_es.txt",revision:"998b9d2f3baf9feb51f27b991c418f2b"},{url:"resources/dia_et.txt",revision:"213e2532fcb5246935186e4125cbc02f"},{url:"resources/dia_eu.txt",revision:"a58e60cd45cfd326d724e868ef914946"},{url:"resources/dia_fa.txt",revision:"9120574954a1b9e585fceebd91e41b2a"},{url:"resources/dia_fi.txt",revision:"c3d2afb2f671914c507a5e76be743dd5"},{url:"resources/dia_fil.txt",revision:"5267fbfd3de10a73ce5f02abf284440d"},{url:"resources/dia_fr.txt",revision:"15ec3d98bcf1f5c6706bd8148abe924b"},{url:"resources/dia_gl.txt",revision:"6bb32f99a71eca6c085fa9e9e0c668f1"},{url:"resources/dia_gu.txt",revision:"51e1f57f871a1bb461f4aa23433863be"},{url:"resources/dia_he.txt",revision:"82f44b58e13d35b65073de4592905b5f"},{url:"resources/dia_hi.txt",revision:"66727087d16f3d7a896ac96c0ed4bb12"},{url:"resources/dia_hr.txt",revision:"09cae77fd2b68f8aa72024668a620d02"},{url:"resources/dia_hu.txt",revision:"4aabd810c5eff7066bf7aa60791baa89"},{url:"resources/dia_id.txt",revision:"68c9ad519cc43d9a489ede9664090d82"},{url:"resources/dia_it.txt",revision:"b95b119986f220bf7ff83588a312fd39"},{url:"resources/dia_ja.txt",revision:"45663f3802a3413c570ddde795d558a5"},{url:"resources/dia_kn.txt",revision:"5afb57332ab236a738c3e4b726610fd6"},{url:"resources/dia_ko.txt",revision:"2d21536ebc634b5733a4bb76d3a8463b"},{url:"resources/dia_lt.txt",revision:"759a18f3980636d68960c589c369685f"},{url:"resources/dia_lv.txt",revision:"a60a93d03224b0b45424dc82d414d4e7"},{url:"resources/dia_ml.txt",revision:"6a612de626f2a97bde4dc7324f39d1bb"},{url:"resources/dia_mr.txt",revision:"3ad007afaf6d9ea9d62e0fceacd444ba"},{url:"resources/dia_ms.txt",revision:"4d656b8d5941af0210047bd0a4a8b220"},{url:"resources/dia_my.txt",revision:"ecd1272c2f82949798a04cb8f66ff3ee"},{url:"resources/dia_nl.txt",revision:"b7bdb116504c66e5fcf5a7b04caea637"},{url:"resources/dia_no.txt",revision:"c7305c4f9d931ac0998cbeaf4ad18001"},{url:"resources/dia_pl.txt",revision:"d27c3f414da4d10b6f6f2855b9a39bbf"},{url:"resources/dia_pt-br.txt",revision:"71fb61fc0e4071311448f35a1b609e4d"},{url:"resources/dia_pt.txt",revision:"14760b220857a06ff21d92a645c534df"},{url:"resources/dia_ro.txt",revision:"35fd67bfefa319adeee13881768f28de"},{url:"resources/dia_ru.txt",revision:"a314f456b1dd8f1e1c1b098a1097fcb3"},{url:"resources/dia_si.txt",revision:"ecd1272c2f82949798a04cb8f66ff3ee"},{url:"resources/dia_sk.txt",revision:"0eabe3919053707b3d048ac2aa1401e2"},{url:"resources/dia_sl.txt",revision:"a09b6ffcb3f14723bae58725764580e0"},{url:"resources/dia_sr.txt",revision:"d9c78f7d9fab3321e1319b8598217cad"},{url:"resources/dia_sv.txt",revision:"f6c6cb1e29d30bc8f73bcb01f00cc211"},{url:"resources/dia_sw.txt",revision:"dac7a32667a57b89753495e0e2c3a816"},{url:"resources/dia_ta.txt",revision:"0cd6675983bc4c9a8ef55428673ecb1d"},{url:"resources/dia_te.txt",revision:"0761babe2bca09ac6f7149595209e66e"},{url:"resources/dia_th.txt",revision:"a9231170c124a621417de04786cf790a"},{url:"resources/dia_tr.txt",revision:"d2930cbea7421f94be60d67a6eb27d42"},{url:"resources/dia_uk.txt",revision:"546d91953769b655a6409d03bf8dd5b6"},{url:"resources/dia_vi.txt",revision:"c149d086ec329f2c088c7d914119597e"},{url:"resources/dia_zh-tw.txt",revision:"c5ce2fbc85a9955ecf43f2b4550c09e2"},{url:"resources/dia_zh.txt",revision:"1038621ef1951547208eb39d49344a09"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/57acea54d91d91cef383647f288fdbb5/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.19.2/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n  if (event.data && event.data.type === 'SKIP_WAITING') {\n    self.skipWaiting();\n  }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n  {\n    \"url\": \"js/app.min.js\",\n    \"revision\": \"a65d8820cc22a2193adb2a2914854f08\"\n  },\n  {\n    \"url\": \"js/extensions.min.js\",\n    \"revision\": \"b2a9feb52ee2b2eaf0228f5d19f4c3b2\"\n  },\n  {\n    \"url\": \"js/stencils.min.js\",\n    \"revision\": \"98924b5296c015cef20b904ef861eeea\"\n  },\n  {\n    \"url\": \"js/shapes-14-6-5.min.js\",\n    \"revision\": \"f0e1d4c09054df2f3ea3793491e9fe08\"\n  },\n  {\n    \"url\": \"js/math-print.js\",\n    \"revision\": \"0611491c663261a732ff18224906184d\"\n  },\n  {\n    \"url\": \"index.html\",\n    \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n  },\n  {\n    \"url\": \"open.html\",\n    \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n  },\n  {\n    \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n    \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n  },\n  {\n    \"url\": \"styles/grapheditor.css\",\n    \"revision\": \"4f2c07c4585347249c95cd9158872fb2\"\n  },\n  {\n    \"url\": \"styles/atlas.css\",\n    \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n  },\n  {\n    \"url\": \"styles/dark.css\",\n    \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n  },\n  {\n    \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n    \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n  },\n  {\n    \"url\": \"js/onedrive/OneDrive.js\",\n    \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n  },\n  {\n    \"url\": \"js/viewer-static.min.js\",\n    \"revision\": \"daad07a8c635bb21d612ad973a747740\"\n  },\n  {\n    \"url\": \"connect/jira/editor-1-3-3.html\",\n    \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n  },\n  {\n    \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n    \"revision\": \"c96db1790184cb35781f791e8d1dafd9\"\n  },\n  {\n    \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n    \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n  },\n  {\n    \"url\": \"connect/jira/viewerPanel.js\",\n    \"revision\": \"6d5a85e70c7b82ba685782ca6df2b9d5\"\n  },\n  {\n    \"url\": \"connect/jira/spinner.gif\",\n    \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n  },\n  {\n    \"url\": \"connect/jira/editor.js\",\n    \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n  },\n  {\n    \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n    \"revision\": \"e00ad51fc16b87c362d6eaf930ab1fa5\"\n  },\n  {\n    \"url\": \"connect/jira/fullscreen-viewer.js\",\n    \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n  },\n  {\n    \"url\": \"plugins/connectJira.js\",\n    \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n  },\n  {\n    \"url\": \"plugins/cConf-comments.js\",\n    \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n  },\n  {\n    \"url\": \"plugins/cConf-1-4-8.js\",\n    \"revision\": \"c6552981ba1add209fe3e12ffcf79c9a\"\n  },\n  {\n    \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n    \"revision\": \"fab9a95f19a57bb836e42f67a1c0078b\"\n  },\n  {\n    \"url\": \"connect/new_common/cac.js\",\n    \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n  },\n  {\n    \"url\": \"connect/gdrive_common/gac.js\",\n    \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n  },\n  {\n    \"url\": \"connect/onedrive_common/ac.js\",\n    \"revision\": \"d089f12446d443ca01752a5115456fcc\"\n  },\n  {\n    \"url\": \"connect/confluence/viewer-init.js\",\n    \"revision\": \"2bd677096ebffd3aa5cab0c347851e3f\"\n  },\n  {\n    \"url\": \"connect/confluence/viewer.js\",\n    \"revision\": \"a9d84488d17425d28e5d85d464e0a8f8\"\n  },\n  {\n    \"url\": \"connect/confluence/viewer-1-4-42.html\",\n    \"revision\": \"4c58f3a1a4c99b1c4264593b6e05100b\"\n  },\n  {\n    \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n    \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n  },\n  {\n    \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n    \"revision\": \"352d2782274de07617d117926b68c205\"\n  },\n  {\n    \"url\": \"connect/confluence/includeDiagram.html\",\n    \"revision\": \"5cefef0227d058cf716d1f51f2cf202f\"\n  },\n  {\n    \"url\": \"connect/confluence/macro-editor.js\",\n    \"revision\": \"412bc4b87e630b697a40f247c579d398\"\n  },\n  {\n    \"url\": \"math/MathJax.js\",\n    \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n  },\n  {\n    \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n    \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n    \"revision\": \"495e5a410955d1b6178870e605890ede\"\n  },\n  {\n    \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n    \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n    \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n    \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n    \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n  },\n  {\n    \"url\": \"resources/dia.txt\",\n    \"revision\": \"ecd1272c2f82949798a04cb8f66ff3ee\"\n  },\n  {\n    \"url\": \"resources/dia_am.txt\",\n    \"revision\": \"c6e8d4d3c87ac58bc27910395478d53a\"\n  },\n  {\n    \"url\": \"resources/dia_ar.txt\",\n    \"revision\": \"ab53b54466bb6d8fffdda985a98904fa\"\n  },\n  {\n    \"url\": \"resources/dia_bg.txt\",\n    \"revision\": \"277860dcd73984aacb184807b8d62c1a\"\n  },\n  {\n    \"url\": \"resources/dia_bn.txt\",\n    \"revision\": \"15c2219c6df0fd0435dd20e540f660b3\"\n  },\n  {\n    \"url\": \"resources/dia_bs.txt\",\n    \"revision\": \"9ae286629a23096d8f9762856f766d10\"\n  },\n  {\n    \"url\": \"resources/dia_ca.txt\",\n    \"revision\": \"1a8dadcc44bcb01edcfc963abbde6b7e\"\n  },\n  {\n    \"url\": \"resources/dia_cs.txt\",\n    \"revision\": \"92e03c81f1e504dca34e6684f8b6a5db\"\n  },\n  {\n    \"url\": \"resources/dia_da.txt\",\n    \"revision\": \"57571c1ffdcb1f38b88536a2e4458f9c\"\n  },\n  {\n    \"url\": \"resources/dia_de.txt\",\n    \"revision\": \"4ec5758340635d39267a2d2f4a44733c\"\n  },\n  {\n    \"url\": \"resources/dia_el.txt\",\n    \"revision\": \"9e443a6f508e6a56d53b424b5d339459\"\n  },\n  {\n    \"url\": \"resources/dia_eo.txt\",\n    \"revision\": \"2e2907adc02b8e5bcf01f427d7819386\"\n  },\n  {\n    \"url\": \"resources/dia_es.txt\",\n    \"revision\": \"998b9d2f3baf9feb51f27b991c418f2b\"\n  },\n  {\n    \"url\": \"resources/dia_et.txt\",\n    \"revision\": \"213e2532fcb5246935186e4125cbc02f\"\n  },\n  {\n    \"url\": \"resources/dia_eu.txt\",\n    \"revision\": \"a58e60cd45cfd326d724e868ef914946\"\n  },\n  {\n    \"url\": \"resources/dia_fa.txt\",\n    \"revision\": \"9120574954a1b9e585fceebd91e41b2a\"\n  },\n  {\n    \"url\": \"resources/dia_fi.txt\",\n    \"revision\": \"c3d2afb2f671914c507a5e76be743dd5\"\n  },\n  {\n    \"url\": \"resources/dia_fil.txt\",\n    \"revision\": \"5267fbfd3de10a73ce5f02abf284440d\"\n  },\n  {\n    \"url\": \"resources/dia_fr.txt\",\n    \"revision\": \"15ec3d98bcf1f5c6706bd8148abe924b\"\n  },\n  {\n    \"url\": \"resources/dia_gl.txt\",\n    \"revision\": \"6bb32f99a71eca6c085fa9e9e0c668f1\"\n  },\n  {\n    \"url\": \"resources/dia_gu.txt\",\n    \"revision\": \"51e1f57f871a1bb461f4aa23433863be\"\n  },\n  {\n    \"url\": \"resources/dia_he.txt\",\n    \"revision\": \"82f44b58e13d35b65073de4592905b5f\"\n  },\n  {\n    \"url\": \"resources/dia_hi.txt\",\n    \"revision\": \"66727087d16f3d7a896ac96c0ed4bb12\"\n  },\n  {\n    \"url\": \"resources/dia_hr.txt\",\n    \"revision\": \"09cae77fd2b68f8aa72024668a620d02\"\n  },\n  {\n    \"url\": \"resources/dia_hu.txt\",\n    \"revision\": \"4aabd810c5eff7066bf7aa60791baa89\"\n  },\n  {\n    \"url\": \"resources/dia_id.txt\",\n    \"revision\": \"68c9ad519cc43d9a489ede9664090d82\"\n  },\n  {\n    \"url\": \"resources/dia_it.txt\",\n    \"revision\": \"b95b119986f220bf7ff83588a312fd39\"\n  },\n  {\n    \"url\": \"resources/dia_ja.txt\",\n    \"revision\": \"45663f3802a3413c570ddde795d558a5\"\n  },\n  {\n    \"url\": \"resources/dia_kn.txt\",\n    \"revision\": \"5afb57332ab236a738c3e4b726610fd6\"\n  },\n  {\n    \"url\": \"resources/dia_ko.txt\",\n    \"revision\": \"2d21536ebc634b5733a4bb76d3a8463b\"\n  },\n  {\n    \"url\": \"resources/dia_lt.txt\",\n    \"revision\": \"759a18f3980636d68960c589c369685f\"\n  },\n  {\n    \"url\": \"resources/dia_lv.txt\",\n    \"revision\": \"a60a93d03224b0b45424dc82d414d4e7\"\n  },\n  {\n    \"url\": \"resources/dia_ml.txt\",\n    \"revision\": \"6a612de626f2a97bde4dc7324f39d1bb\"\n  },\n  {\n    \"url\": \"resources/dia_mr.txt\",\n    \"revision\": \"3ad007afaf6d9ea9d62e0fceacd444ba\"\n  },\n  {\n    \"url\": \"resources/dia_ms.txt\",\n    \"revision\": \"4d656b8d5941af0210047bd0a4a8b220\"\n  },\n  {\n    \"url\": \"resources/dia_my.txt\",\n    \"revision\": \"ecd1272c2f82949798a04cb8f66ff3ee\"\n  },\n  {\n    \"url\": \"resources/dia_nl.txt\",\n    \"revision\": \"b7bdb116504c66e5fcf5a7b04caea637\"\n  },\n  {\n    \"url\": \"resources/dia_no.txt\",\n    \"revision\": \"c7305c4f9d931ac0998cbeaf4ad18001\"\n  },\n  {\n    \"url\": \"resources/dia_pl.txt\",\n    \"revision\": \"d27c3f414da4d10b6f6f2855b9a39bbf\"\n  },\n  {\n    \"url\": \"resources/dia_pt-br.txt\",\n    \"revision\": \"71fb61fc0e4071311448f35a1b609e4d\"\n  },\n  {\n    \"url\": \"resources/dia_pt.txt\",\n    \"revision\": \"14760b220857a06ff21d92a645c534df\"\n  },\n  {\n    \"url\": \"resources/dia_ro.txt\",\n    \"revision\": \"35fd67bfefa319adeee13881768f28de\"\n  },\n  {\n    \"url\": \"resources/dia_ru.txt\",\n    \"revision\": \"a314f456b1dd8f1e1c1b098a1097fcb3\"\n  },\n  {\n    \"url\": \"resources/dia_si.txt\",\n    \"revision\": \"ecd1272c2f82949798a04cb8f66ff3ee\"\n  },\n  {\n    \"url\": \"resources/dia_sk.txt\",\n    \"revision\": \"0eabe3919053707b3d048ac2aa1401e2\"\n  },\n  {\n    \"url\": \"resources/dia_sl.txt\",\n    \"revision\": \"a09b6ffcb3f14723bae58725764580e0\"\n  },\n  {\n    \"url\": \"resources/dia_sr.txt\",\n    \"revision\": \"d9c78f7d9fab3321e1319b8598217cad\"\n  },\n  {\n    \"url\": \"resources/dia_sv.txt\",\n    \"revision\": \"f6c6cb1e29d30bc8f73bcb01f00cc211\"\n  },\n  {\n    \"url\": \"resources/dia_sw.txt\",\n    \"revision\": \"dac7a32667a57b89753495e0e2c3a816\"\n  },\n  {\n    \"url\": \"resources/dia_ta.txt\",\n    \"revision\": \"0cd6675983bc4c9a8ef55428673ecb1d\"\n  },\n  {\n    \"url\": \"resources/dia_te.txt\",\n    \"revision\": \"0761babe2bca09ac6f7149595209e66e\"\n  },\n  {\n    \"url\": \"resources/dia_th.txt\",\n    \"revision\": \"a9231170c124a621417de04786cf790a\"\n  },\n  {\n    \"url\": \"resources/dia_tr.txt\",\n    \"revision\": \"d2930cbea7421f94be60d67a6eb27d42\"\n  },\n  {\n    \"url\": \"resources/dia_uk.txt\",\n    \"revision\": \"546d91953769b655a6409d03bf8dd5b6\"\n  },\n  {\n    \"url\": \"resources/dia_vi.txt\",\n    \"revision\": \"c149d086ec329f2c088c7d914119597e\"\n  },\n  {\n    \"url\": \"resources/dia_zh-tw.txt\",\n    \"revision\": \"c5ce2fbc85a9955ecf43f2b4550c09e2\"\n  },\n  {\n    \"url\": \"resources/dia_zh.txt\",\n    \"revision\": \"1038621ef1951547208eb39d49344a09\"\n  },\n  {\n    \"url\": \"favicon.ico\",\n    \"revision\": \"fab2d88b37c72d83607527573de45281\"\n  },\n  {\n    \"url\": \"images/manifest.json\",\n    \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n  },\n  {\n    \"url\": \"images/logo.png\",\n    \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n  },\n  {\n    \"url\": \"images/drawlogo.svg\",\n    \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n  },\n  {\n    \"url\": \"images/drawlogo48.png\",\n    \"revision\": \"8b13428373aca67b895364d025f42417\"\n  },\n  {\n    \"url\": \"images/drawlogo-gray.svg\",\n    \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n  },\n  {\n    \"url\": \"images/drawlogo-text-bottom.svg\",\n    \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n  },\n  {\n    \"url\": \"images/default-user.jpg\",\n    \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n  },\n  {\n    \"url\": \"images/logo-flat-small.png\",\n    \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n  },\n  {\n    \"url\": \"images/apple-touch-icon.png\",\n    \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n  },\n  {\n    \"url\": \"images/favicon-16x16.png\",\n    \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n  },\n  {\n    \"url\": \"images/favicon-32x32.png\",\n    \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n  },\n  {\n    \"url\": \"images/android-chrome-196x196.png\",\n    \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n  },\n  {\n    \"url\": \"images/android-chrome-512x512.png\",\n    \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n  },\n  {\n    \"url\": \"images/delete.png\",\n    \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n  },\n  {\n    \"url\": \"images/droptarget.png\",\n    \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n  },\n  {\n    \"url\": \"images/help.png\",\n    \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n  },\n  {\n    \"url\": \"images/download.png\",\n    \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n  },\n  {\n    \"url\": \"images/logo-flat.png\",\n    \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n  },\n  {\n    \"url\": \"images/google-drive-logo.svg\",\n    \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n  },\n  {\n    \"url\": \"images/onedrive-logo.svg\",\n    \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n  },\n  {\n    \"url\": \"images/dropbox-logo.svg\",\n    \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n  },\n  {\n    \"url\": \"images/github-logo.svg\",\n    \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n  },\n  {\n    \"url\": \"images/gitlab-logo.svg\",\n    \"revision\": \"0faea8c818899e58533e153c44b10517\"\n  },\n  {\n    \"url\": \"images/trello-logo.svg\",\n    \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n  },\n  {\n    \"url\": \"images/osa_drive-harddisk.png\",\n    \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n  },\n  {\n    \"url\": \"images/osa_database.png\",\n    \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n  },\n  {\n    \"url\": \"images/google-drive-logo-white.svg\",\n    \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n  },\n  {\n    \"url\": \"images/dropbox-logo-white.svg\",\n    \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n  },\n  {\n    \"url\": \"images/onedrive-logo-white.svg\",\n    \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n  },\n  {\n    \"url\": \"images/github-logo-white.svg\",\n    \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n  },\n  {\n    \"url\": \"images/gitlab-logo-white.svg\",\n    \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n  },\n  {\n    \"url\": \"images/trello-logo-white-orange.svg\",\n    \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n  },\n  {\n    \"url\": \"images/logo-confluence.png\",\n    \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n  },\n  {\n    \"url\": \"images/logo-jira.png\",\n    \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n  },\n  {\n    \"url\": \"images/clear.gif\",\n    \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n  },\n  {\n    \"url\": \"images/spin.gif\",\n    \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n  },\n  {\n    \"url\": \"images/checkmark.gif\",\n    \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n  },\n  {\n    \"url\": \"images/hs.png\",\n    \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n  },\n  {\n    \"url\": \"images/aui-wait.gif\",\n    \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n  },\n  {\n    \"url\": \"mxgraph/css/common.css\",\n    \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n  },\n  {\n    \"url\": \"mxgraph/images/expanded.gif\",\n    \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n  },\n  {\n    \"url\": \"mxgraph/images/collapsed.gif\",\n    \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n  },\n  {\n    \"url\": \"mxgraph/images/maximize.gif\",\n    \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n  },\n  {\n    \"url\": \"mxgraph/images/minimize.gif\",\n    \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n  },\n  {\n    \"url\": \"mxgraph/images/close.gif\",\n    \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n  },\n  {\n    \"url\": \"mxgraph/images/resize.gif\",\n    \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n  },\n  {\n    \"url\": \"mxgraph/images/separator.gif\",\n    \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n  },\n  {\n    \"url\": \"mxgraph/images/window.gif\",\n    \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n  },\n  {\n    \"url\": \"mxgraph/images/window-title.gif\",\n    \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n  },\n  {\n    \"url\": \"mxgraph/images/button.gif\",\n    \"revision\": \"00759bdc3ad218fa739f584369541809\"\n  },\n  {\n    \"url\": \"mxgraph/images/point.gif\",\n    \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n  }\n], {\n  \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,YACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC"}

Fixed code:
26-MAY-2022: 18.1.3

- Adds spacing dialog for parallels layout
- Adds allowlist for layout constructor names
- Adds JSON values for childLayout styles
- Adds size check for fetched connection data
- Allows custom protocols in links

18.1.3
	private static final int MAX_FILE_SIZE = 50 * 1024 * 1024; // 50 MB
				int total = 0;

					total += bytesRead;

					if (total > MAX_FILE_SIZE)
					{
						postRequest.close();
						throw new Exception("File size exceeds the maximum allowed size of " + MAX_FILE_SIZE + " bytes.");
					}
	/**
	 * Max fetch size
	 */
	protected static int MAX_FETCH_SIZE = 50 * 1024 * 1024; // 50 MB

			int sizeLimit = MAX_FETCH_SIZE;
						String contentLength = connection.getHeaderField("Content-Length");

						// If content length is available, use it to enforce maximum size
						if (contentLength != null && Long.parseLong(contentLength) > sizeLimit)
						{
							break;
						}

						sizeLimit -= Utils.copyRestricted(connection.getInputStream(), stream, sizeLimit);
	private static int MAX_FETCH_SIZE = 50 * 1024 * 1024; // 50 MB

				Utils.copyRestricted(request.getInputStream(), params, MAX_FETCH_SIZE);
	/**
	 * Max fetch size
	 */
	protected static int MAX_FETCH_SIZE = 50 * 1024 * 1024; // 50 MB

						String contentLength = connection.getHeaderField("Content-Length");

						// If content length is available, use it to enforce maximum size
						if (contentLength != null && Long.parseLong(contentLength) > MAX_FETCH_SIZE)
						{
							throw new UnsupportedContentException();
						}

			int total = 0;

			    {
					total += len;

					if (total > MAX_FETCH_SIZE)
					{
						throw new IOException("Size limit exceeded");
					}

			Utils.copyRestricted(is, out, MAX_FETCH_SIZE);
	/**
	 * Copies the input stream to the output stream using the default buffer size
	 * @param in the input stream
	 * @param out the output stream
	 * @param sizeLimit the maximum number of bytes to copy
	 * @throws IOException
	 */
	public static int copyRestricted(InputStream in, OutputStream out, int sizeLimit) throws IOException
	{
		return copy(in, out, IO_BUFFER_SIZE, sizeLimit);
	}

	{
		copy(in, out, bufferSize, 0);
	}

	/**
	 * Copies the input stream to the output stream using the specified buffer size
	 * @param in the input stream
	 * @param out the output stream
	 * @param bufferSize the buffer size to use when copying
	 * @param sizeLimit the maximum number of bytes to copy
	 * @throws IOException
	 */
	public static int copy(InputStream in, OutputStream out, int bufferSize, int sizeLimit)
			throws IOException
		int read, total = 0;
			total += read;

			if (sizeLimit > 0 && total > sizeLimit)
			{
				throw new IOException("Size limit exceeded");
			}


		return total;
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
Editor=function(a,b,f,e,g){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=e||this.createGraph(b,f);this.editable=null!=g?g:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(d){this.status=d;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
(function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(b){}})();Editor.defaultHtmlFont='-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"';Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.extractGraphModelFromPng=function(a){var b=null;try{var f=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0);EditorUi.parsePng(e,mxUtils.bind(this,function(g,d,k){g=e.substring(g+8,g+8+k);"zTXt"==d?(k=g.indexOf(String.fromCharCode(0)),"mxGraphModel"==g.substring(0,k)&&(g=pako.inflateRaw(Graph.stringToArrayBuffer(g.substring(k+2)),{to:"string"}).replace(/\+/g," "),null!=g&&0<g.length&&(b=g))):"tEXt"==d&&(g=g.split(String.fromCharCode(0)),1<g.length&&("mxGraphModel"==
g[0]||"mxfile"==g[0])&&(b=g[1]));if(null!=b||"IDAT"==d)return!0}))}catch(g){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.isDarkMode=function(a){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.editAsNew=function(a,b){b=null!=b?"?title="+encodeURIComponent(b):"";null!=urlParams.ui&&(b+=(0<b.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var f=null,e=mxUtils.bind(this,function(g){"ready"==g.data&&g.source==f&&(mxEvent.removeListener(window,"message",e),f.postMessage(a,"*"))});mxEvent.addListener(window,"message",e);f=this.graph.openLink(this.getEditBlankUrl(b+(0<b.length?"&":"?")+"client=1"),
null,!0)}else this.graph.openLink(this.getEditBlankUrl(b)+"#R"+encodeURIComponent(a))};Editor.prototype.createGraph=function(a,b){a=new Graph(null,b,null,null,a);a.transparentBackground=!1;var f=a.isCssTransformsSupported,e=this;a.isCssTransformsSupported=function(){return f.apply(this,arguments)&&(!e.chromeless||!mxClient.IS_SF)};this.chromeless||(a.isBlankLink=function(g){return!this.isExternalProtocol(g)});return a};
Editor.prototype.readGraphState=function(a){var b=a.getAttribute("grid");if(null==b||""==b)b=this.graph.defaultGridEnabled?"1":"0";this.graph.gridEnabled="0"!=b&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=a.getAttribute("guides");this.graph.setTooltips("0"!=a.getAttribute("tooltips"));this.graph.setConnectable("0"!=a.getAttribute("connect"));this.graph.connectionArrowsEnabled=
"0"!=a.getAttribute("arrows");this.graph.foldingEnabled="0"!=a.getAttribute("fold");this.isChromelessView()&&this.graph.foldingEnabled&&(this.graph.foldingEnabled="1"==urlParams.nav,this.graph.cellRenderer.forceControlClickHandler=this.graph.foldingEnabled);b=parseFloat(a.getAttribute("pageScale"));!isNaN(b)&&0<b?this.graph.pageScale=b:this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.isLightboxView()||this.graph.isViewer()?this.graph.pageVisible=!1:(b=a.getAttribute("page"),this.graph.pageVisible=
null!=b?"0"!=b:this.graph.defaultPageVisible);this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;b=parseFloat(a.getAttribute("pageWidth"));var f=parseFloat(a.getAttribute("pageHeight"));isNaN(b)||isNaN(f)||(this.graph.pageFormat=new mxRectangle(0,0,b,f));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null};
Editor.prototype.setGraphXml=function(a){if(null!=a){var b=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),b.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var f=b.document.createElement("mxGraphModel");f.appendChild(a);b.decode(f,this.graph.getModel());
Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(e,g){b.undoableEditHappened(g.getProperty("edit"))};var f=mxUtils.bind(this,function(e,g){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(e,g){e=a.getSelectionCellsForChanges(g.getProperty("edit").changes,function(k){return!(k instanceof mxChildChange)});if(0<e.length){a.getModel();g=[];for(var d=0;d<e.length;d++)null!=
a.view.getState(e[d])&&g.push(e[d]);a.setSelectionCells(g)}};b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};
function Dialog(a,b,f,e,g,d,k,n,u,m,r){var x=u?57:0,A=f,C=e,F=u?0:64,K=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(K.height=window.innerHeight);var E=K.height,O=Math.max(1,Math.round((K.width-f-F)/2)),R=Math.max(1,Math.round((E-e-a.footerHeight)/3));b.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-F):f;e=Math.min(e,E-F);0<a.dialogs.length&&(this.zIndex+=
R+=a.embedViewport.y,O+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var Q=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(O,R,f,e);O=g.x;R=g.y;Q.style.width=f+"px";Q.style.height=e+"px";Q.style.left=O+"px";Q.style.top=R+"px";Q.style.zIndex=this.zIndex;Q.appendChild(b);document.body.appendChild(Q);!n&&b.clientHeight>Q.clientHeight-F&&(b.style.overflowY="auto");b.style.overflowX="hidden";if(d&&(d=document.createElement("img"),d.setAttribute("src",Dialog.prototype.closeImage),
"px";!n&&b.clientHeight>Q.clientHeight-F&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=R+14+"px",this.dialogImg.style.left=O+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=Q;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
var ErrorDialog=function(a,b,f,e,g,d,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=b){var A=document.createElement("div");A.style.padding="0px";A.style.margin="0px";A.style.fontSize="18px";A.style.paddingBottom="16px";A.style.marginBottom="10px";A.style.borderBottom="1px solid #c0c0c0";A.style.color="gray";A.style.whiteSpace="nowrap";A.style.textOverflow="ellipsis";A.style.overflow="hidden";mxUtils.write(A,b);A.setAttribute("title",b);x.appendChild(A)}b=
document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;x.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=d&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();d()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=r&&r()}),m.className="geBtn",f.appendChild(m));var C=mxUtils.button(e,function(){u&&a.hideDialog();null!=g&&g()});
C.className="geBtn";f.appendChild(C);null!=k&&(e=mxUtils.button(k,function(){u&&a.hideDialog();null!=n&&n()}),e.className="geBtn gePrimaryBtn",f.appendChild(e));this.init=function(){C.focus()};x.appendChild(f);this.container=x},PrintDialog=function(a,b){this.create(a,b)};
PrintDialog.prototype.create=function(a){function b(C){var F=k.checked||m.checked,K=parseInt(x.value)/100;isNaN(K)&&(K=1,x.value="100%");K*=.75;var E=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,O=1/f.pageScale;if(F){var R=k.checked?1:parseInt(r.value);isNaN(R)||(O=mxUtils.getScaleForPageCount(R,f,E))}f.getGraphBounds();var Q=R=0;E=mxRectangle.fromRectangle(E);E.width=Math.ceil(E.width*K);E.height=Math.ceil(E.height*K);O*=K;!F&&f.pageVisible?(K=f.getPageLayout(),R-=K.x*E.width,Q-=K.y*E.height):
n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});A.className="geBtn";n.appendChild(A)}A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});A.className="geBtn gePrimaryBtn";n.appendChild(A);a.editor.cancelFirst||
n.appendChild(u);d.appendChild(n);g.appendChild(d);e.appendChild(g);this.container=e};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(f){}};
PrintDialog.createPrintPreview=function(a,b,f,e,g,d,k){b=new mxPrintPreview(a,b,f,e,g,d);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var n=b.writeHead;b.writeHead=function(u){n.apply(this,arguments);u.writeln('<style type="text/css">');u.writeln("@media screen {");u.writeln("  body > div { padding:30px;box-sizing:content-box; }");u.writeln("}");u.writeln("</style>")};return b};
var PageSetupDialog=function(a){function b(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var E=F;null!=E&&Graph.isPageLink(E.src)&&(E=a.createImageForPageLink(E.src,null));null!=E&&null!=E.src?(C.setAttribute("src",E.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var e=a.editor.graph,g=document.createElement("table");g.style.width=
mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var r=e.background;b();mxEvent.addListener(m,
"click",function(E){a.pickColor(r||"none",function(O){r=O;b()});mxEvent.consume(E)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=e.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var E=parseInt(x.value);x.value=Math.max(1,isNaN(E)?e.getGridSize():E)});k.appendChild(n);d.appendChild(k);k=document.createElement("tr");
PageSetupDialog.addPageFormatPanel=function(a,b,f,e){function g(aa,T,U){if(U||x!=document.activeElement&&A!=document.activeElement){aa=!1;for(T=0;T<F.length;T++)U=F[T],R?"custom"==U.key&&(n.value=U.key,R=!1):null!=U.format&&("a4"==U.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==U.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==U.format.width&&
n.value="custom",u.style.display="none",r.style.display="")}}b="format-"+b;var d=document.createElement("input");d.setAttribute("name",b);d.setAttribute("type","radio");d.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",b);k.setAttribute("type","radio");k.setAttribute("value","landscape");var n=document.createElement("select");n.style.marginBottom="8px";n.style.borderRadius="4px";n.style.border="1px solid rgb(160, 160, 160)";n.style.width="206px";var u=
document.createElement("div");u.style.marginLeft="4px";u.style.width="210px";u.style.height="24px";d.style.marginRight="6px";u.appendChild(d);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));u.appendChild(b);k.style.marginLeft="10px";k.style.marginRight="6px";u.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));u.appendChild(m);var r=document.createElement("div");r.style.marginLeft=
Math.floor(100*parseFloat(A.value)));"custom"!=n.value&&k.checked&&(aa=new mxRectangle(0,0,aa.height,aa.width));T&&R||aa.width==Q.width&&aa.height==Q.height||(Q=aa,null!=e&&e(Q))};mxEvent.addListener(b,"click",function(aa){d.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(m,"click",function(aa){k.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(A,"blur",P);mxEvent.addListener(A,"click",P);mxEvent.addListener(k,"change",
var FilenameDialog=function(a,b,f,e,g,d,k,n,u,m,r,x){u=null!=u?u:!0;var A=document.createElement("table"),C=document.createElement("tbody");A.style.position="absolute";A.style.top="30px";A.style.left="20px";var F=document.createElement("tr");var K=document.createElement("td");K.style.textOverflow="ellipsis";K.style.textAlign="right";K.style.maxWidth="100px";K.style.fontSize="10pt";K.style.width="84px";mxUtils.write(K,(g||mxResources.get("filename"))+":");F.appendChild(K);var E=document.createElement("input");
E.setAttribute("value",b||"");E.style.marginLeft="4px";E.style.width=null!=x?x+"px":"180px";var O=mxUtils.button(f,function(){if(null==d||d(E.value))u&&a.hideDialog(),e(E.value)});O.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(E.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?E.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=A.parentNode;if(null!=R){var Q=null;mxEvent.addListener(R,"dragleave",function(P){null!=Q&&(Q.style.backgroundColor=
K=document.createElement("td"),K.style.whiteSpace="nowrap",F.appendChild(K),b=FilenameDialog.createFileTypes(a,E,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",K.appendChild(b),E.style.width=null!=x?x-40+"px":"190px",F.appendChild(K),C.appendChild(F)));null!=k&&(F=document.createElement("tr"),K=document.createElement("td"),K.colSpan=2,K.appendChild(k),F.appendChild(K),C.appendChild(F));F=document.createElement("tr");K=document.createElement("td");K.colSpan=2;K.style.paddingTop=
FilenameDialog.createTypeHint=function(a,b,f){var e=document.createElement("img");e.style.backgroundPosition="center bottom";e.style.backgroundRepeat="no-repeat";e.style.margin="2px 0 0 4px";e.style.verticalAlign="top";e.style.cursor="pointer";e.style.height="16px";e.style.width="16px";mxUtils.setOpacity(e,70);var g=function(){e.setAttribute("src",Editor.helpImage);e.setAttribute("title",mxResources.get("help"));for(var d=0;d<f.length;d++)if(0<f[d].ext.length&&b.value.toLowerCase().substring(b.value.length-
f[d].ext.length-1)=="."+f[d].ext){e.setAttribute("title",mxResources.get(f[d].title));break}};mxEvent.addListener(b,"keyup",g);mxEvent.addListener(b,"change",g);mxEvent.addListener(e,"click",function(d){var k=e.getAttribute("title");e.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=k&&a.showError(null,k,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(d)});
FilenameDialog.createFileTypes=function(a,b,f){var e=document.createElement("select");for(a=0;a<f.length;a++){var g=document.createElement("option");g.setAttribute("value",a);mxUtils.write(g,mxResources.get(f[a].description)+" (."+f[a].extension+")");e.appendChild(g)}mxEvent.addListener(e,"change",function(d){d=f[e.value].extension;var k=b.value.lastIndexOf(".drawio.");k=0<k?k:b.value.lastIndexOf(".");"drawio"!=d&&(d="drawio."+d);b.value=0<k?b.value.substring(0,k+1)+d:b.value+"."+d;"createEvent"in
document?(d=document.createEvent("HTMLEvents"),d.initEvent("change",!1,!0),b.dispatchEvent(d)):b.fireEvent("onchange")});a=function(d){d=b.value.toLowerCase();for(var k=0,n=0;n<f.length;n++){var u=f[n].extension,m=null;"drawio"!=u&&(m=u,u=".drawio."+u);if(d.substring(d.length-u.length-1)=="."+u||null!=m&&d.substring(d.length-m.length-1)=="."+m){k=n;break}}e.value=k};mxEvent.addListener(b,"change",a);mxEvent.addListener(b,"keyup",a);a();return e};
k(this.verticalPageBreaks)};var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(k,n,u){for(var m=0;m<n.length;m++){if(this.graph.isTableCell(n[m])||this.graph.isTableRow(n[m]))return!1;if(this.graph.getModel().isVertex(n[m])){var r=this.graph.getCellGeometry(n[m]);if(null!=r&&r.relative)return!1}}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var k=
this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var e=this.editor.graph;e.lightbox=f;var g=e.getGraphBounds;e.getGraphBounds=function(){var I=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var H=this.view.translate,S=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((H.x+L.x)*S,(H.y+L.y)*S,L.width*S,L.height*S))}return I};e.useCssTransforms&&(this.lazyZoomDelay=
e.currentVertexStyle=mxUtils.clone(e.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<u.length;b++)0>mxUtils.indexOf(d,u[b])&&d.push(u[b]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),r=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<r.length;b++)for(f=0;f<r[b].length;f++)d.push(r[b][f]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(d,k[b])&&d.push(k[b]);var x=function(I,L,H,S,V,ea,ka){S=null!=S?S:e.currentVertexStyle;V=null!=V?V:e.currentEdgeStyle;ea=null!=ea?ea:!0;H=null!=H?H:e.getModel();if(ka){ka=[];for(var wa=0;wa<I.length;wa++)ka=ka.concat(H.getDescendants(I[wa]));I=ka}H.beginUpdate();try{for(wa=0;wa<I.length;wa++){var W=I[wa];if(L)var Z=["fontSize",
A,this.footerContainer.onselectstart=A,this.footerContainer.onmousedown=A,null!=this.tabContainer&&(this.tabContainer.onselectstart=A));!this.editor.chromeless||this.editor.editable?(b=function(I){if(null!=I){var L=mxEvent.getSource(I);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return A(I)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=
b):e.panningHandler.usePopupTrigger=!1;e.init(this.diagramContainer);mxClient.IS_SVG&&null!=e.view.getDrawPane()&&(b=e.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=e.graphHandler){var C=e.graphHandler.start;e.graphHandler.start=function(){null!=fa.hoverIcons&&fa.hoverIcons.reset();C.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(I){var L=mxUtils.getOffset(this.diagramContainer);
EditorUi.parsePng=function(a,b,f){function e(n,u){var m=d;d+=u;return n.substring(m,d)}function g(n){n=e(n,4);return n.charCodeAt(3)+(n.charCodeAt(2)<<8)+(n.charCodeAt(1)<<16)+(n.charCodeAt(0)<<24)}var d=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(e(a,4),"IHDR"!=e(a,4))null!=f&&f();else{e(a,17);do{f=g(a);var k=e(a,4);if(null!=b&&b(d-8,k,f))break;value=e(a,f);e(a,4);if("IEND"==k)break}while(f)}};mxUtils.extend(EditorUi,mxEventSource);
"keydown",mxUtils.bind(this,function(e){this.onKeyDown(e)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(e){this.onKeyPress(e)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var b=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){b.apply(this,
EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,b=a.getSelectionCells(),f=this.initSelectionState(),e=!0,g=0;g<b.length;g++){var d=a.getCurrentCellStyle(b[g]);"0"!=mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(f,b[g],b,e),e=!1)}this.updateSelectionStateForTableCells(f);return f};
EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var b=mxUtils.sortCells(a.cells),f=this.editor.graph.model,e=f.getParent(b[0]),g=f.getParent(e),d=e.getIndex(b[0]),k=g.getIndex(e),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),d):null;r<b.length-1;){var A=b[++r];null==x||x!=A||null!=n&&u!=n||(n=u,u=0,m++,e=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),d):null);var C=this.editor.graph.view.getState(A);
if(A==f.getChildAt(e,d+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=b[0],a.colspan=u,a.rowspan=m)}};
EditorUi.prototype.updateSelectionStateForCell=function(a,b,f,e){f=this.editor.graph;a.cells.push(b);if(f.getModel().isVertex(b)){a.connections=0<f.model.getEdgeCount(b);a.unlocked=a.unlocked&&!f.isCellLocked(b);a.resizable=a.resizable&&f.isCellResizable(b);a.rotatable=a.rotatable&&f.isCellRotatable(b);a.movable=a.movable&&f.isCellMovable(b)&&!f.isTableRow(b)&&!f.isTableCell(b);a.swimlane=a.swimlane||f.isSwimlane(b);a.table=a.table||f.isTable(b);a.cell=a.cell||f.isTableCell(b);a.row=a.row||f.isTableRow(b);
a.vertices.push(b);var g=f.getCellGeometry(b);if(null!=g&&(0<g.width?null==a.width?a.width=g.width:a.width!=g.width&&(a.width=""):a.containsLabel=!0,0<g.height?null==a.height?a.height=g.height:a.height!=g.height&&(a.height=""):a.containsLabel=!0,!g.relative||null!=g.offset)){var d=g.relative?g.offset.x:g.x;g=g.relative?g.offset.y:g.y;null==a.x?a.x=d:a.x!=d&&(a.x="");null==a.y?a.y=g:a.y!=g&&(a.y="")}}else f.getModel().isEdge(b)&&(a.edges.push(b),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=
!1);b=f.view.getState(b);null!=b&&(a.autoSize=a.autoSize||f.isAutoSizeState(b),a.glass=a.glass&&f.isGlassState(b),a.rounded=a.rounded&&f.isRoundedState(b),a.lineJumps=a.lineJumps&&f.isLineJumpState(b),a.image=a.image&&f.isImageState(b),a.shadow=a.shadow&&f.isShadowState(b),a.fill=a.fill&&f.isFillState(b),a.stroke=a.stroke&&f.isStrokeState(b),d=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==d,f.mergeStyle(b.style,a.style,e))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,b=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(u,m){"mouseDown"==m.getProperty("eventName")&&b.hideShapePicker()}));var f=mxUtils.bind(this,function(){b.hideShapePicker(!0)});a.addListener("wheel",f);a.addListener(mxEvent.ESCAPE,f);a.view.addListener(mxEvent.SCALE,f);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,f);a.getSelectionModel().addListener(mxEvent.CHANGE,f);var e=a.popupMenuHandler.isMenuShowing;
a.popupMenuHandler.isMenuShowing=function(){return e.apply(this,arguments)||null!=b.shapePicker};var g=a.dblClick;a.dblClick=function(u,m){if(this.isEnabled())if(null!=m||null==b.sidebar||mxEvent.isShiftDown(u)||a.isCellLocked(a.getDefaultParent()))g.apply(this,arguments);else{var r=mxUtils.convertPoint(this.container,mxEvent.getClientX(u),mxEvent.getClientY(u));mxEvent.consume(u);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.x,r.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
f);var d=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();d.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(A,C,F){var K=a.getCompositeParent(u.cell);A=a.getCellGeometry(K);for(r.consume();null!=K&&a.model.isVertex(K)&&null!=A&&A.relative;)cell=
K,K=a.model.getParent(cell),A=a.getCellGeometry(K);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.getGraphX(),r.getGraphY(),K,mxUtils.bind(this,function(E){F(E);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(E))}),m)}),30)}),mxUtils.bind(this,function(A){this.graph.selectCellsForConnectVertex(A,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
m.getProperty("arrow"),x=m.getProperty("direction"),A=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),F=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var K=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),E=b.showShapePicker(F,C,K,mxUtils.bind(this,function(O){null!=O&&a.connectVertex(K,x,a.defaultEdgeLength,A,!0,!0,function(R,Q,P){P(O);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(O))},
function(R){a.selectCellsForConnectVertex(R)},A,this.hoverIcons)}),x,!0);this.centerShapePicker(E,r,F,C,x);mxUtils.setOpacity(E,30);mxEvent.addListener(E,"mouseenter",function(){mxUtils.setOpacity(E,100)});mxEvent.addListener(E,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
EditorUi.prototype.centerShapePicker=function(a,b,f,e,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)a.style.width="40px";var d=a.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(f-=d.width/2-10,e-=d.height+6):g==mxConstants.DIRECTION_SOUTH?(f-=d.width/2-10,e+=b.height+6):g==mxConstants.DIRECTION_WEST?(f-=d.width+6,e-=d.height/2-10):g==mxConstants.DIRECTION_EAST&&(f+=b.width+6,e-=d.height/2-10);a.style.left=f+"px";a.style.top=e+"px"};
EditorUi.prototype.showShapePicker=function(a,b,f,e,g,d){a=this.createShapePicker(a,b,f,e,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(f,d),d);null!=a&&(null==this.hoverIcons||d||this.hoverIcons.reset(),d=this.editor.graph,d.popupMenuHandler.hideMenu(),d.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=e,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,b,f,e,g,d,k,n){var u=null;if(null!=k&&0<k.length){var m=this,r=this.editor.graph;u=document.createElement("div");g=r.view.getState(f);var x=null==f||null!=g&&r.isTransparentState(g)?null:r.copyStyle(f);f=6>k.length?35*k.length:140;u.className="geToolbarContainer geSidebarContainer";u.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+f+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
this.sidebar.graph.pasteStyle(x,[A]):m.insertHandler([A],""!=A.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([A],25,25,C,null,!0,!1,A.geometry.width,A.geometry.height);mxEvent.addListener(C,"click",function(){var F=r.cloneCell(A);if(null!=e)e(F);else{F.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-A.geometry.width/2);F.geometry.y=r.snap(Math.round(b/r.view.scale)-r.view.translate.y-A.geometry.height/2);r.model.beginUpdate();try{r.addCell(F)}finally{r.model.endUpdate()}r.setSelectionCell(F);
r.scrollCellToVisible(F);r.startEditingAtCell(F);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(F))}null!=d&&d()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,b-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
EditorUi.prototype.getCellsForShapePicker=function(a,b){b=mxUtils.bind(this,function(f,e,g,d){return this.editor.graph.createVertex(null,null,d||"",0,0,e||120,g||60,f,!1)});return[null!=a?this.editor.graph.cloneCell(a):b("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),b("whiteSpace=wrap;html=1;"),b("ellipse;whiteSpace=wrap;html=1;"),b("rhombus;whiteSpace=wrap;html=1;",80,80),b("rounded=1;whiteSpace=wrap;html=1;"),b("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),
b("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),b("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),b("triangle;whiteSpace=wrap;html=1;",60,80),b("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),b("shape=tape;whiteSpace=wrap;html=1;",120,100),b("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80),b("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),b("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
EditorUi.prototype.onKeyDown=function(a){var b=this.editor.graph;if(9==a.which&&b.isEnabled()&&!mxEvent.isControlDown(a)){if(b.isEditing())if(mxEvent.isAltDown(a))b.stopEditing(!1);else try{var f=b.cellEditor.isContentEditing()&&b.cellEditor.isTextSelected();if(window.getSelection&&b.cellEditor.isContentEditing()&&!f&&!mxClient.IS_IE&&!mxClient.IS_IE11){var e=window.getSelection(),g=0<e.rangeCount?e.getRangeAt(0).commonAncestorContainer:null;f=null!=g&&("LI"==g.nodeName||null!=g.parentNode&&"LI"==
g.parentNode.nodeName)}f?document.execCommand(mxEvent.isShiftDown(a)?"outdent":"indent",!1,null):mxEvent.isShiftDown(a)?b.stopEditing(!1):b.cellEditor.insertTab(b.cellEditor.isContentEditing()?null:4)}catch(d){}else mxEvent.isAltDown(a)?b.selectParentCell():b.selectCell(!mxEvent.isShiftDown(a));mxEvent.consume(a)}};
EditorUi.prototype.onKeyPress=function(a){var b=this.editor.graph;!this.isImmediateEditingEvent(a)||b.isEditing()||b.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(b.escape(),b.startEditing(),mxClient.IS_FF&&(b=b.cellEditor,null!=b.textarea&&(b.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(b.textarea),a.collapse(!1),b=window.getSelection(),b.removeAllRanges(),b.addRange(a))))};
EditorUi.prototype.getCssClassForMarker=function(a,b,f,e){return"flexArrow"==b?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==f||"halfCircle"==f?"geSprite geSvgSprite geSprite-"+f+("end"==a?" geFlipSprite":""):f==mxConstants.ARROW_CLASSIC?"1"==e?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==e?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(b.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(d){var k=null;if(d.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{k=k||d.getSelectionCells();k=d.getExportableCells(d.model.getTopmostCells(k));for(var n={},u=d.createCellLookup(k),m=d.cloneCells(k,null,n),r=new mxGraphModel,x=r.getChildAt(r.getRoot(),
this.scale*H.height*S.height)};a.getPreferredPageSize=function(H,S,V){H=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,H.width*S.width,H.height*S.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(H,S,V,ea){if(null!=a.container&&!a.isViewer()){V=null!=V?V:0;ea=null!=ea?ea:0;var ka=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,Z=a.view.scale,
20:null);a.view.scale!=ea&&(null!=ba&&(ka+=S.x-ba.x,wa+=S.y-ba.y),null!=b&&f.chromelessResize(!1,null,ka*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==ka&&0==wa||(a.container.scrollLeft-=ka*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=I&&U.setAttribute("filter",I);a.cumulativeZoomFactor=1;I=qa=ha=ba=fa=null}),null!=H?H:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(H,S,
20*(V-1):null!=H.movementY&&"pointermove"==H.type&&(V=1+Math.max(1,Math.abs(H.movementY))/20*(V-1),ea=-1),a.lazyZoom(S,null,ea,V),mxEvent.consume(H),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(H){a.cumulativeZoomFactor=H.scale;a.lazyZoom(0<H.scale,!0);mxEvent.consume(H)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,f=60;null!=b&&(f=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))};
EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var f=mxUtils.parseXml(a);this.editor.setGraphXml(f.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=b&&(this.editor.setFilename(b),this.updateDocumentTitle())}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange();
this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(a,b,f,e){this.editor.graph.popupMenuHandler.hideMenu();var g=new mxPopupMenu(a);g.div.className+=" geMenubarMenu";g.smartSeparators=!0;g.showDisabled=!0;g.autoExpand=!0;g.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(g,arguments);g.destroy()});g.popup(b,f,null,e);this.setCurrentMenu(g)};
EditorUi.prototype.setCurrentMenu=function(a,b){this.currentMenuElt=b;this.currentMenu=a};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())};EditorUi.prototype.updateDocumentTitle=function(){var a=this.editor.getOrCreateFilename();null!=this.editor.appName&&(a+=" - "+this.editor.appName);document.title=a};
EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(a){}};EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var b=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);b==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(f){}};
EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()};EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0,f;for(f in urlParams)a=0==b?a+"?":a+"&",a+=f+"="+urlParams[f],b++;return a};
EditorUi.prototype.setScrollbars=function(a){var b=this.editor.graph,f=b.container.style.overflow;b.scrollbars=a;this.editor.updateGraphComponents();f!=b.container.style.overflow&&(b.container.scrollTop=0,b.container.scrollLeft=0,b.view.scaleAndTranslate(1,0,0),this.resetScrollbars());this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars};
EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.editor.extendCanvas)a.container.scrollTop=0,a.container.scrollLeft=0,mxUtils.hasScrollbars(a.container)||a.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(a.container))if(a.pageVisible){var b=a.getPagePadding();a.container.scrollTop=Math.floor(b.y-this.editor.initialTopSpacing)-1;a.container.scrollLeft=Math.floor(Math.min(b.x,(a.container.scrollWidth-a.container.clientWidth)/2))-
1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{b=a.getGraphBounds();var f=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height,
a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-f)/2)))}else{b=mxRectangle.fromRectangle(a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds());f=a.view.translate;var e=a.view.scale;b.x=b.x/e-f.x;b.y=b.y/e-f.y;b.width/=e;b.height/=e;a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x+2),Math.floor((a.pageVisible?0:Math.max(0,(a.container.clientHeight-b.height)/4))-b.y+1))}};
EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,f=mxUtils.hasScrollbars(b.container),e=0,g=0;f&&(e=b.view.translate.x*b.view.scale-b.container.scrollLeft,g=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();if(f){var d=b.getSelectionCells();b.clearSelection();b.setSelectionCells(d)}b.sizeDidChange();f&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-e,b.container.scrollTop=b.view.translate.y*
b.view.scale-g);b.defaultPageVisible=a;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(a,b){this.ui=a;this.color=b}ChangeGridColor.prototype.execute=function(){var a=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=a};(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(a)})();
function ChangePageSetup(a,b,f,e,g){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=f;this.previousFormat=this.format=e;this.previousPageScale=this.pageScale=g;this.ignoreImage=this.ignoreColor=!1}
ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var b=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=b}if(!this.ignoreImage){this.image=this.previousImage;b=a.backgroundImage;var f=this.previousImage;null!=f&&null!=f.src&&"data:page/id,"==f.src.substring(0,13)&&(f=this.ui.createImageForPageLink(f.src,this.ui.currentPage));this.ui.setBackgroundImage(f);this.previousImage=b}null!=this.previousFormat&&
(this.format=this.previousFormat,b=a.pageFormat,this.previousFormat.width!=b.width||this.previousFormat.height!=b.height)&&(this.ui.setPageFormat(this.previousFormat),this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled);null!=this.previousPageScale&&(a=this.ui.editor.graph.pageScale,this.previousPageScale!=a&&(this.ui.setPageScale(this.previousPageScale),
this.previousPageScale=a))};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat","previousPageScale"]);a.afterDecode=function(b,f,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;e.previousPageScale=e.pageScale;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);return e};mxCodecRegistry.register(a)})();
EditorUi.prototype.setPageFormat=function(a,b){b=null!=b?b:"1"==urlParams.sketch;this.editor.graph.pageFormat=a;b||(this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct());this.fireEvent(new mxEventObject("pageFormatChanged"))};
EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),f=this.editor.undoManager,e=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,e);f.addListener(mxEvent.UNDO,e);f.addListener(mxEvent.REDO,e);f.addListener(mxEvent.CLEAR,e);var g=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){g.apply(this,arguments);e()};var d=this.editor.graph.cellEditor.stopEditing;
EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,b=this.getSelectionState(),f=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),e="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),g=0;g<e.length;g++)this.actions.get(e[g]).setEnabled(0<b.cells.length);
this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<b.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<b.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==b.cells.length);this.actions.get("sendBackward").setEnabled(1==
b.cells.length);this.actions.get("rotation").setEnabled(1==b.vertices.length);this.actions.get("wordWrap").setEnabled(1==b.vertices.length);this.actions.get("autosize").setEnabled(1==b.vertices.length);this.actions.get("copySize").setEnabled(1==b.vertices.length);this.actions.get("clearWaypoints").setEnabled(b.connections);this.actions.get("curved").setEnabled(0<b.edges.length);this.actions.get("turn").setEnabled(0<b.cells.length);this.actions.get("group").setEnabled(!b.row&&!b.cell&&(1<b.cells.length||
1==b.vertices.length&&0==a.model.getChildCount(b.cells[0])&&!a.isContainer(b.vertices[0])));this.actions.get("ungroup").setEnabled(!b.row&&!b.cell&&!b.table&&0<b.vertices.length&&(a.isContainer(b.vertices[0])||0<a.getModel().getChildCount(b.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==b.cells.length&&a.getModel().isVertex(a.getModel().getParent(b.cells[0])));this.actions.get("collapsible").setEnabled(1==b.vertices.length&&(0<a.model.getChildCount(b.vertices[0])||a.isContainer(b.vertices[0])));
this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.cells.length&&a.isValidRoot(b.cells[0]));this.actions.get("editLink").setEnabled(1==b.cells.length);this.actions.get("openLink").setEnabled(1==b.cells.length&&null!=a.getLinkForCell(b.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(f);this.actions.get("selectEdges").setEnabled(f);
this.actions.get("selectAll").setEnabled(f);this.actions.get("selectNone").setEnabled(f);e=1==b.vertices.length&&a.isCellFoldable(b.vertices[0]);this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.menus.get("navigation").setEnabled(0<b.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(f);this.menus.get("insert").setEnabled(f);this.menus.get("direction").setEnabled(b.unlocked&&1==b.vertices.length);this.menus.get("distribute").setEnabled(b.unlocked&&
1<b.vertices.length);this.menus.get("align").setEnabled(b.unlocked&&0<b.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=this.container.clientWidth,f=this.container.clientHeight;this.container==document.body&&(b=document.body.clientWidth||document.documentElement.clientWidth,f=document.documentElement.clientHeight);var e=0;mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&window.innerHeight!=document.documentElement.clientHeight&&(e=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var g=Math.max(0,Math.min(this.hsplitPosition,
b-this.splitSize-20));b=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",b+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",b+=this.toolbarHeight);0<b&&(b+=1);var d=0;if(null!=this.sidebarFooterContainer){var k=this.footerHeight+e;d=Math.max(0,Math.min(f-b-k,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=g+"px";this.sidebarFooterContainer.style.height=
d+"px";this.sidebarFooterContainer.style.bottom=k+"px"}f=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=b+"px";this.sidebarContainer.style.width=g+"px";this.formatContainer.style.top=b+"px";this.formatContainer.style.width=f+"px";this.formatContainer.style.display=null!=this.format?"":"none";k=this.getDiagramContainerOffset();var n=null!=this.hsplit.parentNode?g+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
d+e+"px";this.formatContainer.style.bottom=this.footerHeight+e+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=n+k.x+"px",this.diagramContainer.style.top=b+k.y+"px",this.diagramContainer.style.right=f+"px",this.diagramContainer.style.bottom=this.footerHeight+e+g+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
!0,0,mxUtils.bind(this,function(b){this.hsplitPosition=b;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a;0==this.statusContainer.getElementsByTagName("div").length&&(this.statusContainer.innerHTML="",a=this.createStatusDiv(a),this.statusContainer.appendChild(a))};
EditorUi.prototype.createStatusDiv=function(a){var b=document.createElement("div");b.setAttribute("title",a);b.innerHTML=a;return b};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};
EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b};
EditorUi.prototype.addSplitHandler=function(a,b,f,e){function g(x){if(null!=k){var A=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));e(Math.max(0,n+(b?A.x-k.x:k.y-A.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function d(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(b?a.style.left:a.style.bottom);b||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
EditorUi.prototype.prompt=function(a,b,f){a=new FilenameDialog(this,b,mxResources.get("apply"),function(e){f(parseFloat(e))},a);this.showDialog(a.container,300,80,!0,!0);a.init()};
EditorUi.prototype.handleError=function(a,b,f,e,g){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var d=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(g=mxUtils.htmlEntities(a.message));this.showError(b,g,d,f,null,null,null,null,null,null,null,null,e?f:null)}else null!=f&&f()};
EditorUi.prototype.showError=function(a,b,f,e,g,d,k,n,u,m,r,x,A){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),e,g,d,k,x,n,u);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,r||100+20*b,!0,!1,A);a.init()};EditorUi.prototype.showDialog=function(a,b,f,e,g,d,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,e,g,d,k,n,u,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,b,f){null!=this.dialogs&&0<this.dialogs.length&&(null==f||f==this.dialog.container.firstChild)&&(f=this.dialogs.pop(),0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var b=a.getSelectionCells(),f=new mxDictionary,e=[],g=0;g<b.length;g++){var d=a.isTableCell(b[g])?a.model.getParent(b[g]):b[g];null==d||f.get(d)||(f.put(d,!0),e.push(d))}a.setSelectionCells(a.duplicateCells(e,!1))}catch(k){this.handleError(k)}};
EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,e=f.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));a=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(d){f.cellEditor.restoreSelection(e);b(d)},function(){f.cellEditor.restoreSelection(e)});this.showDialog(a.container,230,g,!0,!1);a.init()};
EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var f=a.indexOf("&lt;mxGraphModel ");if(0<=f){var e=a.lastIndexOf("&lt;/mxGraphModel&gt;");e>f&&(b=a.substring(f,e+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(g){}return b};
EditorUi.prototype.readGraphModelFromClipboard=function(a){this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(b){null!=b?a(b):this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(f){if(null!=f){var e=decodeURIComponent(f);this.isCompatibleString(e)&&(f=e)}a(f)}),"text")}),"html")};
EditorUi.prototype.readGraphModelFromClipboardWithType=function(a,b){navigator.clipboard.read().then(mxUtils.bind(this,function(f){if(null!=f&&0<f.length&&"html"==b&&0<=mxUtils.indexOf(f[0].types,"text/html"))f[0].getType("text/html").then(mxUtils.bind(this,function(e){e.text().then(mxUtils.bind(this,function(g){try{var d=this.parseHtmlData(g),k="text/plain"!=d.getAttribute("data-type")?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);try{var n=k.lastIndexOf("%3E");
0<=n&&n<k.length-3&&(k=k.substring(0,n+3))}catch(r){}try{var u=d.getElementsByTagName("span"),m=null!=u&&0<u.length?mxUtils.trim(decodeURIComponent(u[0].textContent)):decodeURIComponent(k);this.isCompatibleString(m)&&(k=m)}catch(r){}}catch(r){}a(this.isCompatibleString(k)?k:null)}))["catch"](function(g){a(null)})}))["catch"](function(e){a(null)});else if(null!=f&&0<f.length&&"text"==b&&0<=mxUtils.indexOf(f[0].types,"text/plain"))f[0].getType("text/plain").then(function(e){e.text().then(function(g){a(g)})["catch"](function(){a(null)})})["catch"](function(){a(null)});
EditorUi.prototype.parseHtmlData=function(a){var b=null;if(null!=a&&0<a.length){var f="<meta "==a.substring(0,6);b=document.createElement("div");b.innerHTML=(f?'<meta charset="utf-8">':"")+this.editor.graph.sanitizeHtml(a);asHtml=!0;a=b.getElementsByTagName("style");if(null!=a)for(;0<a.length;)a[0].parentNode.removeChild(a[0]);null!=b.firstChild&&b.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=b.firstChild.nextSibling&&b.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==
b.firstChild.nodeName&&"A"==b.firstChild.nextSibling.nodeName&&null==b.firstChild.nextSibling.nextSibling&&(a=null==b.firstChild.nextSibling.innerText?mxUtils.getTextContent(b.firstChild.nextSibling):b.firstChild.nextSibling.innerText,a==b.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(b,a),asHtml=!1));f=f&&null!=b.firstChild?b.firstChild.nextSibling:b.firstChild;null!=f&&null==f.nextSibling&&f.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==f.nodeName?(a=f.getAttribute("src"),
null!=a&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(b,a),asHtml=!1)):(f=b.getElementsByTagName("img"),1==f.length&&(f=f[0],a=f.getAttribute("src"),null!=a&&f.parentNode==b&&1==b.children.length&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(b,a),asHtml=!1)));asHtml&&Graph.removePasteFormatting(b)}asHtml||b.setAttribute("data-type","text/plain");return b};
EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,0<=mxUtils.indexOf(a.types,"text/plain")&&(null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=Graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&&
(b=f);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(b){this.save(b)}),null,mxUtils.bind(this,function(b){if(null!=b&&0<b.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())};
EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var b=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,b);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(b.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(b))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
EditorUi.prototype.executeLayouts=function(a,b){this.executeLayout(mxUtils.bind(this,function(){var f=new mxCompositeLayout(this.editor.graph,a),e=this.editor.graph.getSelectionCells();f.execute(this.editor.graph.getDefaultParent(),0==e.length?null:e)}),!0,b)};
EditorUi.prototype.executeLayout=function(a,b,f){var e=this.editor.graph;if(e.isEnabled()){e.getModel().beginUpdate();try{a()}catch(g){throw g;}finally{this.allowAnimation&&b&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(a=new mxMorphing(e),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){e.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(e.getModel().endUpdate(),null!=f&&f())}}};
EditorUi.prototype.showImageDialog=function(a,b,f,e){e=this.editor.graph.cellEditor;var g=e.saveSelection(),d=mxUtils.prompt(a,b);e.restoreSelection(g);if(null!=d&&0<d.length){var k=new Image;k.onload=function(){f(d,k.width,k.height)};k.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};k.src=d}else f(null)};EditorUi.prototype.showLinkDialog=function(a,b,f){a=new LinkDialog(this,a,b,f);this.showDialog(a.container,420,90,!0,!0);a.init()};
EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(e){e=new ChangePageSetup(this,null,e);e.ignoreColor=!0;this.editor.graph.model.execute(e)});var f=mxUtils.prompt(mxResources.get("backgroundImage"),null!=b?b.src:"");null!=f&&0<f.length?(b=new Image,b.onload=function(){a(new mxImage(f,b.width,b.height),!1)},b.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},b.src=f):a(null)};
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()};EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){b.update(!1)});return b};
EditorUi.prototype.createKeyHandler=function(a){function b(x,A,C){if(!e.isSelectionEmpty()&&e.isEnabled()){A=null!=A?A:1;var F=e.getCompositeParents(e.getSelectionCells()),K=0<F.length?F[0]:null;if(null!=K)if(C){e.getModel().beginUpdate();try{for(K=0;K<F.length;K++)if(e.getModel().isVertex(F[K])&&e.isCellResizable(F[K])){var E=e.getCellGeometry(F[K]);null!=E&&(E=E.clone(),37==x?E.width=Math.max(0,E.width-A):38==x?E.height=Math.max(0,E.height-A):39==x?E.width+=A:40==x&&(E.height+=A),e.getModel().setGeometry(F[K],
e.defaultEdgeLength,x,!0);null!=C&&0<C.length&&(1==C.length&&e.model.isEdge(C[0])?e.setSelectionCell(e.model.getTerminal(C[0],!1)):e.setSelectionCell(C[C.length-1]),e.scrollCellToVisible(e.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(e.view.getState(e.getSelectionCell())))}}else return this.isControlDown(x)?function(){b(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null,!0)}:function(){b(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null)}}return u.apply(this,arguments)};g.bindAction=mxUtils.bind(this,
this.scrollHandler=null);if(null!=this.destroyFunctions){for(a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}var b=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog];for(a=0;a<b.length;a++)null!=b[a]&&null!=b[a].parentNode&&b[a].parentNode.removeChild(b[a])};function Sidebar(a,b){this.editorUi=a;this.container=b;this.palettes={};this.taglist={};this.lastCreated=0;this.showTooltips=!0;this.graph=a.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());this.graph.cellRenderer.minSvgStrokeWidth=this.minThumbStrokeWidth;this.graph.cellRenderer.antiAlias=this.thumbAntiAlias;this.graph.container.style.visibility="hidden";this.graph.foldingEnabled=!1;document.body.appendChild(this.graph.container);this.pointerUpHandler=mxUtils.bind(this,function(){if(null==
"pointerout":"mouseout",this.pointerOutHandler);mxEvent.addListener(b,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0;this.hideTooltip()}));this.init()}
Sidebar.prototype.getTooltipOffset=function(a,b){b=b.height+2*this.tooltipBorder;return new mxPoint(this.container.offsetWidth+this.editorUi.splitSize+10+this.editorUi.container.offsetLeft,Math.min(Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)-b-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop-b/2+16)))};
Sidebar.prototype.createTooltip=function(a,b,f,e,g,d,k,n,u,m,r){r=null!=r?r:!0;this.tooltipMouseDown=u;null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.userSelect="none",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),mxEvent.addMouseWheelListener(mxUtils.bind(this,function(x){this.hideTooltip()}),this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),
b=this.graph2.cloneCells(b);this.editorUi.insertHandler(b,null,this.graph2.model,r?null:this.editorUi.editor.graph.defaultVertexStyle,r?null:this.editorUi.editor.graph.defaultEdgeStyle,r,!0);this.graph2.addCells(b);mxClient.NO_FO=d;r=this.graph2.getGraphBounds();n&&0<f&&0<e&&(r.width>f||r.height>e)?(f=Math.round(100*Math.min(f/r.width,e/r.height))/100,mxClient.NO_FO?(this.graph2.view.setScale(Math.round(100*Math.min(this.maxTooltipWidth/r.width,this.maxTooltipHeight/r.height))/100),r=this.graph2.getGraphBounds()):
Sidebar.prototype.showTooltip=function(a,b,f,e,g,d){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=a){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var k=mxUtils.bind(this,function(){this.createTooltip(a,b,f,e,g,d)});null!=this.tooltip&&"none"!=this.tooltip.style.display?k():this.thread=window.setTimeout(k,this.tooltipDelay);this.currentElt=a}};
Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.currentElt=null);this.tooltipMouseDown=null};Sidebar.prototype.addDataEntry=function(a,b,f,e,g){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(g,b,f,e)}))};
Sidebar.prototype.addEntries=function(a){for(var b=0;b<a.length;b++)mxUtils.bind(this,function(f){var e=f.data,g=null!=f.title?f.title:"";null!=f.tags&&(g+=" "+f.tags);null!=e&&0<g.length?this.addEntry(g,mxUtils.bind(this,function(){e=this.editorUi.convertDataUri(e);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==f.aspect&&(d+="aspect=fixed;");return this.createVertexTemplate(d+"image="+e,f.w,f.h,"",f.title||"",!1,!1,!0)})):null!=f.xml&&0<g.length&&this.addEntry(g,
mxUtils.bind(this,function(){var d=this.editorUi.stringToCells(Graph.decompress(f.xml));return this.createVertexTemplateFromCells(d,f.w,f.h,f.title||"",!0,!1,!0)}))})(a[b])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,b){this.currentSearchEntryLibrary=null!=a?{id:a,lib:b}:null};
Sidebar.prototype.addEntry=function(a,b){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(b.parentLibraries=[this.currentSearchEntryLibrary]);a=a.toLowerCase().replace(/[\/,\(\)]/g," ").split(" ");for(var f=[],e={},g=0;g<a.length;g++){null==e[a[g]]&&(e[a[g]]=!0,f.push(a[g]));var d=a[g].replace(/\.*\d*$/,"");d!=a[g]&&null==e[d]&&(e[d]=!0,f.push(d))}for(g=0;g<f.length;g++)this.addEntryForTag(f[g],b)}return b};
Sidebar.prototype.addEntryForTag=function(a,b){if(null!=a&&1<a.length){var f=this.taglist[a];"object"!==typeof f&&(f={entries:[]},this.taglist[a]=f);f.entries.push(b)}};
Sidebar.prototype.searchEntries=function(a,b,f,e,g){if(null!=this.taglist&&null!=a){var d=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*b;a=[];for(var n=0,u=0;u<d.length;u++)if(0<d[u].length){var m=this.taglist[d[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var A=0;A<x.length;A++)if(m=x[A],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==d.length-1&&a.length==k)){e(a.slice(f*b,k),k,!0,d);return}}else a=[];g=r;n++}g=a.length;e(a.slice(f*b,(f+1)*b),g,!1,d)}else e([],null,
null,d)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var b=[],f={},e=0;e<a.length;e++)null==f[a[e]]&&(f[a[e]]="1",b.push(a[e]));return b.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,b){a=a.clone();null!=b&&(a.value=b);return a};Sidebar.prototype.showPopupMenuForEntry=function(a,b,f){};
Sidebar.prototype.addSearchPalette=function(a){var b=document.createElement("div");b.style.visibility="hidden";this.container.appendChild(b);var f=document.createElement("div");f.className="geSidebar";f.style.boxSizing="border-box";f.style.overflow="hidden";f.style.width="100%";f.style.padding="8px";f.style.paddingTop="14px";f.style.paddingBottom="0px";a||(f.style.display="none");var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.paddingBottom="8px";
E.stopPropagation();E.cancelBubble=!0});a=document.createElement("div");a.appendChild(f);this.container.appendChild(a);this.palettes.search=[b,a]};
Sidebar.prototype.insertSearchHint=function(a,b,f,e,g,d,k,n){0==g.length&&1==e&&(f=document.createElement("div"),f.className="geTitle",f.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(f,mxResources.get("noResultsFor",[b])),a.appendChild(f))};
Sidebar.prototype.addGeneralPalette=function(a){this.setCurrentSearchEntryLibrary("general","general");var b=this,f=parseInt(this.editorUi.editor.graph.defaultVertexStyle.fontSize);f=isNaN(f)?"":"fontSize="+Math.min(16,f)+";";var e=new mxCell("List Item",new mxGeometry(0,0,80,30),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;"+f);e.vertex=!0;f=[this.createVertexTemplateEntry("rounded=0;whiteSpace=wrap;html=1;",
g.vertex=!0;g.insert(b.cloneCell(e,"Item 1"));g.insert(b.cloneCell(e,"Item 2"));g.insert(b.cloneCell(e,"Item 3"));return b.createVertexTemplateFromCells([g],g.geometry.width,g.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return b.createVertexTemplateFromCells([b.cloneCell(e,"List Item")],e.geometry.width,e.geometry.height,"List Item")}),this.addEntry("curve",mxUtils.bind(this,function(){var g=new mxCell("",new mxGeometry(0,0,50,50),"curved=1;endArrow=classic;html=1;");
Sidebar.prototype.addMiscPalette=function(a){var b=this;this.setCurrentSearchEntryLibrary("general","misc");var f=[this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;",100,40,"Title","Title",null,null,"text heading title"),this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;",100,80,"<ul><li>Value 1</li><li>Value 2</li><li>Value 3</li></ul>",
this.addEntry("shape group container",function(){var e=new mxCell("Label",new mxGeometry(0,0,160,70),"html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;");e.vertex=!0;var g=new mxCell("",new mxGeometry(20,20,20,30),"triangle;html=1;whiteSpace=wrap;");g.vertex=!0;e.insert(g);return b.createVertexTemplateFromCells([e],e.geometry.width,e.geometry.height,"Shape Group")}),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;",120,
Sidebar.prototype.createAdvancedShapes=function(){var a=this,b=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");b.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(b,"Item 1"));f.insert(a.cloneCell(b,"Item 2"));
f.insert(a.cloneCell(b,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(b,"List Item")],b.geometry.width,b.geometry.height,"List Item")})]};
Sidebar.prototype.createAdvancedShapes=function(){var a=this,b=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");b.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(b,"Item 1"));f.insert(a.cloneCell(b,"Item 2"));
f.insert(a.cloneCell(b,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(b,"List Item")],b.geometry.width,b.geometry.height,"List Item")})]};
Sidebar.prototype.addUmlPalette=function(a){var b=this,f=new mxCell("+ field: type",new mxGeometry(0,0,100,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");f.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");
d.vertex=!0;d.insert(f.clone());d.insert(e.clone());d.insert(b.cloneCell(f,"+ method(type): type"));return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class")}),this.addEntry("uml static class section subsection",function(){var d=new mxCell("Classname",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");d.vertex=
!0;d.insert(f.clone());d.insert(f.clone());d.insert(f.clone());return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class 2")}),this.addEntry("uml static class item member method function variable field attribute label",function(){return b.createVertexTemplateFromCells([b.cloneCell(f,"+ item: attribute")],f.geometry.width,f.geometry.height,"Item 1")}),this.addEntry("uml static class item member method function variable field attribute label",function(){var d=new mxCell("item: attribute",
new mxGeometry(0,0,120,f.geometry.height),"label;fontStyle=0;strokeColor=none;fillColor=none;align=left;verticalAlign=top;overflow=hidden;spacingLeft=28;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;imageWidth=16;imageHeight=16;image="+b.gearImage);d.vertex=!0;return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Item 2")}),this.addEntry("uml static class divider hline line separator",function(){return b.createVertexTemplateFromCells([e.clone()],
e.geometry.width,e.geometry.height,"Divider")}),this.addEntry("uml static class spacer space gap separator",function(){var d=new mxCell("",new mxGeometry(0,0,20,14),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=4;spacingRight=4;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Spacer")}),this.createVertexTemplateEntry("text;align=center;fontStyle=1;verticalAlign=middle;spacingLeft=3;spacingRight=3;strokeColor=none;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;",
80,26,"Title","Title",null,null,"uml static class title label"),this.addEntry("uml static class component",function(){var d=new mxCell("&laquo;Annotation&raquo;<br/><b>Component</b>",new mxGeometry(0,0,180,90),"html=1;dropTarget=0;");d.vertex=!0;var k=new mxCell("",new mxGeometry(1,0,20,20),"shape=module;jettyWidth=8;jettyHeight=4;");k.vertex=!0;k.geometry.relative=!0;k.geometry.offset=new mxPoint(-27,7);d.insert(k);return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component")}),
return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component with Attributes")}),this.createVertexTemplateEntry("verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;html=1;",180,120,"Block","Block",null,null,"uml static class block"),this.createVertexTemplateEntry("shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;",100,50,"Module","Module",null,null,"uml static class module component"),
function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div>',new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 3")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div><hr size="1"/><div style="height:2px;"></div>',
new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 4")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method(): Type</p>',
new mxGeometry(0,0,160,90),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 5")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;Interface&gt;&gt;</i><br/><b>Interface</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field1: Type<br/>+ field2: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method1(Type): Type<br/>+ method2(Type, Type): Type</p>',
new mxGeometry(0,0,190,140),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Interface 2")}),this.createVertexTemplateEntry("shape=providedRequiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",20,20,"","Provided/Required Interface",null,null,"uml provided required interface lollipop notation"),this.createVertexTemplateEntry("shape=requiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",
10,20,"","Required Interface",null,null,"uml required interface lollipop notation"),this.addEntry("uml lollipop notation provided required interface",function(){return b.createVertexTemplateFromData("zVRNT8MwDP01uaLSMu6sfFxAmrQDcAytaQJZXLnu2u7XkzQZXTUmuIA4VIqf/ZzkvdQiyzf9HclaPWAJRmQ3IssJkcNq0+dgjEgTXYrsWqRp4j6R3p7Ino/ZpJYEln9CSANhK00LAQlAw4OJAGFrS/D1iciWSKywQivNPWLtwHMHvgHzsNY7z5Ato4MUb0zMgi2viLBzoUULAbnVxsSWzTtwofYBtlTACkhvgIHWtSy0rWKSJVXAJ5Lh4FBWMNMicAJ0cSzPWBW1uQN0fWlwJQRGst7OW8kmhNVn3Sd1hdp1TJMhVCzmhHipUDO54RYHm07Q6NHXfmV/65eS5jXXVJhj15yCNDz54GyxD58PwjL2v/SmMuE7POqSVdxj5vm/cK6PG4X/5deNvPjeSEfQdeOV75Rm8K/dZzo3LOaGSaMr69aF0wbIA00NhZfpVff+JSwJGr2TL2Nnr3jtbzDeabEUi2v/Tlo22kKO1gbq0Z8ZDwzE0J+cNidM2ROinF18CR6KeivQleI59pVrM8knfV04Dc1gx+FM/QA=",
k.geometry.setTerminalPoint(new mxPoint(15,90),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return b.createVertexTemplateFromCells([d,k],30,90,"Start")}),this.addEntry("uml activity state",function(){var d=new mxCell("Activity",new mxGeometry(0,0,120,40),"rounded=1;whiteSpace=wrap;html=1;arcSize=40;fontColor=#000000;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");
k.geometry.setTerminalPoint(new mxPoint(60,100),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return b.createVertexTemplateFromCells([d,k],120,100,"Activity")}),this.addEntry("uml activity composite state",function(){var d=new mxCell("Composite State",new mxGeometry(0,0,160,60),"swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=0;resizeLast=1;container=0;fontColor=#000000;collapsible=0;rounded=1;arcSize=30;strokeColor=#ff0000;fillColor=#ffffc0;swimlaneFillColor=#ffffc0;dropTarget=0;");
!0);return b.createVertexTemplateFromCells([d,k],160,120,"Composite State")}),this.addEntry("uml activity condition",function(){var d=new mxCell("Condition",new mxGeometry(0,0,80,40),"rhombus;whiteSpace=wrap;html=1;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("no",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(180,20),!1);k.geometry.relative=
!0;k.geometry.x=-1;k.edge=!0;d.insertEdge(k,!0);var n=new mxCell("yes",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=top;endArrow=open;endSize=8;strokeColor=#ff0000;");n.geometry.setTerminalPoint(new mxPoint(40,100),!1);n.geometry.relative=!0;n.geometry.x=-1;n.edge=!0;d.insertEdge(n,!0);return b.createVertexTemplateFromCells([d,k,n],180,100,"Condition")}),this.addEntry("uml activity fork join",function(){var d=new mxCell("",new mxGeometry(0,0,200,10),"shape=line;html=1;strokeWidth=6;strokeColor=#ff0000;");
d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(100,80),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return b.createVertexTemplateFromCells([d,k],200,80,"Fork/Join")}),this.createVertexTemplateEntry("ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;",30,30,"","End",null,null,"uml activity state end"),this.createVertexTemplateEntry("shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;",
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;startArrow=oval;endArrow=block;startSize=8;");k.geometry.setTerminalPoint(new mxPoint(-60,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);return b.createVertexTemplateFromCells([d,k],10,80,"Found Message")}),this.addEntry("uml sequence invoke call delegation synchronous invocation activation",function(){var d=new mxCell("",new mxGeometry(0,0,10,80),"html=1;points=[];perimeter=orthogonalPerimeter;");
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;");k.geometry.setTerminalPoint(new mxPoint(-70,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);var n=new mxCell("return",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;exitX=0;exitY=0.95;");n.geometry.setTerminalPoint(new mxPoint(-70,76),!1);n.geometry.relative=!0;n.edge=!0;d.insertEdge(n,!0);return b.createVertexTemplateFromCells([d,
!0;k.edge=!0;d.insertEdge(k,!1);return b.createVertexTemplateFromCells([d,k],10,60,"Self Call")}),this.addEntry("uml sequence invoke call delegation callback activation",function(){return b.createVertexTemplateFromData("xZRNT8MwDIZ/Ta6oaymD47rBTkiTuMAxW6wmIm0q19s6fj1OE3V0Y2iCA4dK8euP2I+riGxedUuUjX52CqzIHkU2R+conKpuDtaKNDFKZAuRpgl/In264J303qSRCDVdk5CGhJ20WwhKEFo62ChoqritxURkReNMTa2X80LkC68AmgoIkEWHpF3pamlXR7WIFwASdBeb7KXY4RIc5+KBQ/ZGkY4RYY5Egyl1zLqLmmyDXQ6Zx4n5EIf+HkB2BmAjrV3LzftPIPw4hgNn1pQ1a2tH5Cp2QK1miG7vNeu4iJe4pdeY2BtvbCQDGlAljMCQxBJotJ8rWCFYSWY3LvUdmZi68rvkkLiU6QnL1m1xAzHoBOdw61WEb88II9AW67/ydQ2wq1Cy1aAGvOrFfPh6997qDA3g+dxzv3nIL6MPU/8T+kMw8+m4QPgdfrEJNo8PSQj/+s58Ag==",
!0;d.edge=!0;return b.createEdgeTemplateFromCells([d],80,0,"Return")}),this.addEntry("uml relation",function(){var d=new mxCell("name",new mxGeometry(0,0,0,0),"endArrow=block;endFill=1;html=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.edge=!0;var k=new mxCell("1",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return b.createEdgeTemplateFromCells([d],160,0,"Relation 1")}),this.addEntry("uml association",function(){var d=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.edge=!0;var k=new mxCell("parent",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("child",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=bottom;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return b.createEdgeTemplateFromCells([d],160,0,"Association 1")}),this.addEntry("uml aggregation",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");
d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return b.createEdgeTemplateFromCells([d],160,0,"Aggregation 1")}),this.addEntry("uml composition",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");d.geometry.setTerminalPoint(new mxPoint(0,
0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return b.createEdgeTemplateFromCells([d],160,0,"Composition 1")}),this.addEntry("uml relation",function(){var d=new mxCell("Relation",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=
!0;d.edge=!0;var k=new mxCell("0..n",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("1",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return b.createEdgeTemplateFromCells([d],160,0,"Relation 2")}),this.createEdgeTemplateEntry("endArrow=open;endSize=12;dashed=1;html=1;",160,
160,0,"","Association 3",null,"uml association")];this.addPaletteFunctions("uml",mxResources.get("uml"),a||!1,g);this.setCurrentSearchEntryLibrary()};Sidebar.prototype.createTitle=function(a){var b=document.createElement("a");b.setAttribute("title",mxResources.get("sidebarTooltip"));b.className="geTitle";mxUtils.write(b,a);return b};
Sidebar.prototype.createThumb=function(a,b,f,e,g,d,k){this.graph.labelsVisible=null==d||d;d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;this.graph.view.scaleAndTranslate(1,0,0);this.graph.addCells(a);a=this.graph.getGraphBounds();var n=Math.floor(100*Math.min((b-2*this.thumbBorder)/a.width,(f-2*this.thumbBorder)/a.height))/100;this.graph.view.scaleAndTranslate(n,Math.floor((b-a.width*n)/2/n-a.x),Math.floor((f-a.height*n)/2/n-a.y));this.graph.dialect!=mxConstants.DIALECT_SVG||
mxClient.NO_FO||null==this.graph.view.getCanvas().ownerSVGElement?(n=this.graph.container.cloneNode(!1),n.innerHTML=this.graph.container.innerHTML):n=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0);this.graph.getModel().clear();mxClient.NO_FO=d;n.style.position="relative";n.style.overflow="hidden";n.style.left=this.thumbBorder+"px";n.style.top=this.thumbBorder+"px";n.style.width=b+"px";n.style.height=f+"px";n.style.visibility="";n.style.minWidth="";n.style.minHeight="";e.appendChild(n);
this.sidebarTitles&&null!=g&&0!=k&&(e.style.height=this.thumbHeight+0+this.sidebarTitleSize+8+"px",b=document.createElement("div"),b.style.color=Editor.isDarkMode()?"#A0A0A0":"#303030",b.style.fontSize=this.sidebarTitleSize+"px",b.style.textAlign="center",b.style.whiteSpace="nowrap",b.style.overflow="hidden",b.style.textOverflow="ellipsis",mxClient.IS_IE&&(b.style.height=this.sidebarTitleSize+12+"px"),b.style.paddingTop="4px",mxUtils.write(b,g),e.appendChild(b));return a};
Sidebar.prototype.createSection=function(a){return mxUtils.bind(this,function(){var b=document.createElement("div");b.setAttribute("title",a);b.style.textOverflow="ellipsis";b.style.whiteSpace="nowrap";b.style.textAlign="center";b.style.overflow="hidden";b.style.width="100%";b.style.padding="14px 0";mxUtils.write(b,a);return b})};
Sidebar.prototype.createItem=function(a,b,f,e,g,d,k,n){n=null!=n?n:!0;var u=document.createElement("a");u.className="geItem";u.style.overflow="hidden";var m=2*this.thumbBorder;u.style.width=this.thumbWidth+m+"px";u.style.height=this.thumbHeight+m+"px";u.style.padding=this.thumbPadding+"px";mxEvent.addListener(u,"click",function(x){mxEvent.consume(x)});m=a;a=this.graph.cloneCells(a);this.editorUi.insertHandler(m,null,this.graph.model,this.editorUi.editor.graph.defaultVertexStyle,this.editorUi.editor.graph.defaultEdgeStyle,
!0,!0);this.createThumb(m,this.thumbWidth,this.thumbHeight,u,b,f,e,g,d);var r=new mxRectangle(0,0,g,d);1<a.length||a[0].vertex?(e=this.createDragSource(u,this.createDropHandler(a,!0,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a),e.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})):null!=a[0]&&a[0].edge&&(e=this.createDragSource(u,this.createDropHandler(a,!1,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a));
!mxClient.IS_IOS&&n&&mxEvent.addGestureListeners(u,null,mxUtils.bind(this,function(x){mxEvent.isMouseEvent(x)&&this.showTooltip(u,a,r.width,r.height,b,f)}));return u};
Sidebar.prototype.updateShapes=function(a,b){var f=this.editorUi.editor.graph,e=f.getCellStyle(a),g=[];f.model.beginUpdate();try{for(var d=f.getModel().getStyle(a),k="shadow dashed dashPattern fontFamily fontSize fontColor align startFill startSize endFill endSize strokeColor strokeWidth fillColor gradientColor html part noEdgeStyle edgeStyle elbow childLayout recursiveResize container collapsible connectable comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),n=
0;n<b.length;n++){var u=b[n];if(f.getModel().isVertex(u)==f.getModel().isVertex(a)||f.getModel().isEdge(u)==f.getModel().isEdge(a)){var m=f.getCellStyle(b[n],!1);f.getModel().setStyle(u,d);if("1"==mxUtils.getValue(m,"composite","0"))for(var r=f.model.getChildCount(u);0<=r;r--)f.model.remove(f.model.getChildAt(u,r));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=e[mxConstants.STYLE_SHAPE]&&(f.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[u]),f.setCellStyles("participant",e[mxConstants.STYLE_SHAPE],
Sidebar.prototype.createDropHandler=function(a,b,f,e){f=null!=f?f:!0;return mxUtils.bind(this,function(g,d,k,n,u,m){for(m=m?null:mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d)?document.elementFromPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)):mxEvent.getSource(d);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&g.isEnabled()){a=g.getImportableCells(a);if(0<a.length){g.stopEditing();m=null==k||mxEvent.isAltDown(d)?!1:g.isValidDropTarget(k,a,d);var r=null;null==k||m||(k=null);if(!g.isCellLocked(k||
g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(b&&g.isSplitTarget(k,a,d)){var x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,K=g.cloneCells(a);g.splitEdge(k,K,null,n-e.width/2,u-e.height/2,C,F);r=K}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var E=g.layoutManager.getLayout(k);if(null!=E)for(x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,k=0;k<r.length;k++)E.moveCell(r[k],C,F)}!f||null!=d&&mxEvent.isShiftDown(d)||
Sidebar.prototype.createDragPreview=function(a,b){var f=document.createElement("div");f.className="geDragPreview";f.style.width=a+"px";f.style.height=b+"px";return f};
Sidebar.prototype.dropAndConnect=function(a,b,f,e,g){var d=this.getDropAndConnectGeometry(a,b[e],f,b),k=[];if(null!=d){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(b[e]),x=n.model.getParent(a),A=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(A=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var F=C=0;if(null!=k){var K=k.origin;C=K.x;F=K.y;var E=d.getTerminalPoint(!1);null!=
E&&(E.x+=K.x,E.y+=K.y)}var O=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&A),R=n.getCellAt((d.x+C+n.view.translate.x)*n.view.scale,(d.y+F+n.view.translate.y)*n.view.scale,null,null,null,function(aa,T,U){return!n.isContainer(aa.cell)});if(null!=R&&R!=x)k=n.view.getState(R),null!=k&&(K=k.origin,x=R,O=!0,n.model.isEdge(a)||(d.x-=K.x-C,d.y-=K.y-F));else if(!A||n.isTableRow(a)||n.isTableCell(a))d.x+=C,d.y+=F;C=r.x;F=r.y;n.model.isEdge(b[e])&&(F=C=0);k=b=n.importCells(b,
d.x-(O?C:0),d.y-(O?F:0),O?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,b[e],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(b[e])){n.model.setTerminal(b[e],a,!0);var Q=n.getCellGeometry(b[e]);Q.points=null;if(null!=Q.getTerminalPoint(!1))Q.setTerminalPoint(d.getTerminalPoint(!1),!1);else if(O&&n.model.isVertex(x)){var P=n.view.getState(x);K=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(b,K.x,K.y,null,null,!0)}}else r=n.getCellGeometry(b[e]),C=d.x-Math.round(r.x),F=
d.y-Math.round(r.y),d.x=Math.round(r.x),d.y=Math.round(r.y),n.model.setGeometry(b[e],d),n.cellsMoved(b,C,F,null,null,!0),k=b.slice(),u=1==k.length?k[0]:null,b.push(n.insertEdge(null,null,"",a,b[e],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(aa){this.editorUi.handleError(aa)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
Sidebar.prototype.getDropAndConnectGeometry=function(a,b,f,e){var g=this.editorUi.editor.graph,d=g.view,k=1<e.length,n=g.getCellGeometry(a);e=g.getCellGeometry(b);null!=n&&null!=e&&(e=e.clone(),g.model.isEdge(a)?(a=g.view.getState(a),n=a.absolutePoints,b=n[0],g=n[n.length-1],f==mxConstants.DIRECTION_NORTH?(e.x=b.x/d.scale-d.translate.x-e.width/2,e.y=b.y/d.scale-d.translate.y-e.height/2):(e.x=g.x/d.scale-d.translate.x-e.width/2,e.y=g.y/d.scale-d.translate.y-e.height/2)):(n.relative&&(a=g.view.getState(a),
n=n.clone(),n.x=(a.x-d.translate.x)/d.scale,n.y=(a.y-d.translate.y)/d.scale),d=g.defaultEdgeLength,g.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=e.getTerminalPoint(!1)?(b=e.getTerminalPoint(!0),g=e.getTerminalPoint(!1),d=g.x-b.x,b=g.y-b.y,d=Math.sqrt(d*d+b*b),e.x=n.getCenterX(),e.y=n.getCenterY(),e.width=1,e.height=1,f==mxConstants.DIRECTION_NORTH?(e.height=d,e.y=n.y-d,e.setTerminalPoint(new mxPoint(e.x,e.y),!1)):f==mxConstants.DIRECTION_EAST?(e.width=d,e.x=n.x+n.width,e.setTerminalPoint(new mxPoint(e.x+
e.width/2+d:f==mxConstants.DIRECTION_SOUTH?e.y=e.y+n.height/2+e.height/2+d:f==mxConstants.DIRECTION_WEST&&(e.x=e.x-n.width/2-e.width/2-d),g.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=b.getTerminal(!1)&&(n=g.getCellGeometry(b.getTerminal(!1)),null!=n&&(f==mxConstants.DIRECTION_NORTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()+n.height/2):f==mxConstants.DIRECTION_EAST?(e.x-=n.getCenterX()-n.width/2,e.y-=n.getCenterY()):f==mxConstants.DIRECTION_SOUTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()-n.height/
2):f==mxConstants.DIRECTION_WEST&&(e.x-=n.getCenterX()+n.width/2,e.y-=n.getCenterY()))))));return e};Sidebar.prototype.isDropStyleEnabled=function(a,b){var f=!0;null!=b&&1==a.length&&(a=this.graph.getCellStyle(a[b]),null!=a&&(f=mxUtils.getValue(a,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(a,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE));return f};
Sidebar.prototype.createDragSource=function(a,b,f,e,g){function d(Z,oa){var va=mxUtils.createImage(Z.src);va.style.width=Z.width+"px";va.style.height=Z.height+"px";null!=oa&&va.setAttribute("title",oa);mxUtils.setOpacity(va,Z==this.refreshTarget?30:20);va.style.position="absolute";va.style.cursor="crosshair";return va}function k(Z,oa,va,Ja){null!=Ja.parentNode&&(mxUtils.contains(va,Z,oa)?(mxUtils.setOpacity(Ja,100),L=Ja):mxUtils.setOpacity(Ja,Ja==fa?30:20));return va}for(var n=this.editorUi,u=n.editor.graph,
e&&null!=L&&null!=E&&L!=fa?(sa=Z.model.isEdge(E.cell)||null==m?r:m,Z.setSelectionCells(this.dropAndConnect(E.cell,e,I,sa,oa))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(Z.view.getState(Z.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(Z,oa){F.isActive()&&F.reset()});var K=F.mouseDown;F.mouseDown=function(Z){mxEvent.isPopupTrigger(Z)||mxEvent.isMultiTouchEvent(Z)||u.isCellLocked(u.getDefaultParent())||(u.stopEditing(),
Sidebar.prototype.itemClicked=function(a,b,f,e){e=this.editorUi.editor.graph;e.container.focus();if(mxEvent.isAltDown(f)&&1==e.getSelectionCount()&&e.model.isVertex(e.getSelectionCell())){b=null;for(var g=0;g<a.length&&null==b;g++)e.model.isVertex(a[g])&&(b=g);null!=b&&(e.setSelectionCells(this.dropAndConnect(e.getSelectionCell(),a,mxEvent.isMetaDown(f)||mxEvent.isControlDown(f)?mxEvent.isShiftDown(f)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(f)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,b,f)),e.scrollCellToVisible(e.getSelectionCell()))}else mxEvent.isShiftDown(f)&&!e.isSelectionEmpty()?(f=e.getEditableCells(e.getSelectionCells()),this.updateShapes(a[0],f),e.scrollCellToVisible(f)):(a=mxEvent.isAltDown(f)?e.getFreeInsertPoint():e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(a,!0)),b.drop(e,f,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,b,f){var e=b.mouseDown,g=b.mouseMove,d=b.mouseUp,k=this.editorUi.editor.graph.tolerance,n=null,u=this;b.mouseDown=function(m){e.apply(this,arguments);n=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(m){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=n&&(Math.abs(n.x-mxEvent.getClientX(m))>k||Math.abs(n.y-mxEvent.getClientY(m))>
k)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));g.apply(this,arguments)};b.mouseUp=function(m){try{mxEvent.isPopupTrigger(m)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||u.itemClicked(f,b,m,a),d.apply(b,arguments),mxUtils.setOpacity(a,100),n=null,u.currentElt=a}catch(r){b.reset(),u.editorUi.handleError(r)}}};
Sidebar.prototype.createVertexTemplateEntry=function(a,b,f,e,g,d,k,n){null!=n&&null!=g&&(n+=" "+g);n=null!=n&&0<n.length?n:null!=g?g.toLowerCase():"";return this.addEntry(n,mxUtils.bind(this,function(){return this.createVertexTemplate(a,b,f,e,g,d,k)}))};Sidebar.prototype.createVertexTemplate=function(a,b,f,e,g,d,k,n,u){a=[new mxCell(null!=e?e:"",new mxGeometry(0,0,b,f),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,b,f,g,d,k,n,u)};
Sidebar.prototype.createVertexTemplateFromData=function(a,b,f,e,g,d,k,n){a=mxUtils.parseXml(Graph.decompress(a));var u=new mxCodec(a),m=new mxGraphModel;u.decode(a.documentElement,m);a=this.graph.cloneCells(m.root.getChildAt(0).children);return this.createVertexTemplateFromCells(a,b,f,e,g,d,k,n)};Sidebar.prototype.createVertexTemplateFromCells=function(a,b,f,e,g,d,k,n){return this.createItem(a,e,g,d,b,f,k,n)};
Sidebar.prototype.createEdgeTemplateEntry=function(a,b,f,e,g,d,k,n,u){k=null!=k&&0<k.length?k:g.toLowerCase();return this.addEntry(k,mxUtils.bind(this,function(){return this.createEdgeTemplate(a,b,f,e,g,d,n,u)}))};
Sidebar.prototype.createEdgeTemplate=function(a,b,f,e,g,d,k,n){a=new mxCell(null!=e?e:"",new mxGeometry(0,0,b,f),a);a.geometry.setTerminalPoint(new mxPoint(0,f),!0);a.geometry.setTerminalPoint(new mxPoint(b,0),!1);a.geometry.relative=!0;a.edge=!0;return this.createEdgeTemplateFromCells([a],b,f,g,d,k,n)};Sidebar.prototype.createEdgeTemplateFromCells=function(a,b,f,e,g,d,k,n){return this.createItem(a,e,g,null!=n?n:!0,b,f,d,k)};
Sidebar.prototype.addPaletteFunctions=function(a,b,f,e){this.addPalette(a,b,f,mxUtils.bind(this,function(g){for(var d=0;d<e.length;d++)g.appendChild(e[d](g))}))};
Sidebar.prototype.addPalette=function(a,b,f,e){b=this.createTitle(b);this.container.appendChild(b);var g=document.createElement("div");g.className="geSidebar";mxClient.IS_POINTER&&(g.style.touchAction="none");f?(e(g),e=null):g.style.display="none";this.addFoldingHandler(b,g,e);f=document.createElement("div");f.appendChild(g);this.container.appendChild(f);null!=a&&(this.palettes[a]=[b,f]);return g};
Sidebar.prototype.addFoldingHandler=function(a,b,f){var e=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==b.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if("none"==b.style.display){if(e)b.style.display="block";else if(e=!0,null!=f){a.style.cursor="wait";var d=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){b.style.display="block";a.style.cursor="";a.innerHTML=d;var k=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;f(b,a);mxClient.NO_FO=k},mxClient.IS_FF?20:0)}else b.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",b.style.display="none";mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(g){g.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){this.palettes[a]=null;for(a=0;a<b.length;a++)this.container.removeChild(b[a]);return!0}return!1};
Sidebar.prototype.addImagePalette=function(a,b,f,e,g,d,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var A=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=A?A:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+e,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=d?d[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,b,!1,n)};
Sidebar.prototype.getTagsForStencil=function(a,b,f){a=a.split(".");for(var e=1;e<a.length;e++)a[e]=a[e].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=f&&a.push(f);return a.slice(1,a.length)};
Sidebar.prototype.addStencilPalette=function(a,b,f,e,g,d,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,A,C,F,K){if(null==g||0>mxUtils.indexOf(g,A)){C=this.getTagsForStencil(x,A);var E=null!=n?n[A]:null;null!=E&&C.push(E);r.push(this.createVertexTemplateEntry("shape="+x+A.toLowerCase()+e,Math.round(F*k),Math.round(K*k),"",A.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
!0,!0);this.addPaletteFunctions(a,b,!1,r)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(x){null==e&&(e="");null!=d&&d.call(this,x);if(null!=u)for(var A=0;A<u.length;A++)u[A](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,F,K,E,O){(null==g||0>mxUtils.indexOf(g,F))&&x.appendChild(this.createVertexTemplate("shape="+C+F.toLowerCase()+e,Math.round(E*k),Math.round(O*k),"",F.replace(/_/g," "),!0))}),!0)}))};
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(f){for(var e=0;e<a.length;e++)f=f.replace(new RegExp("&"+a[e][0]+";","g"),"&#"+a[e][1]+";");return b(f)}})();
Date.prototype.toISOString||function(){function a(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,b=function(e){return"function"===typeof e||"[object Function]"===a.call(e)},f=Math.pow(2,53)-1;return function(e){var g=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var d=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof d){if(!b(d))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
arguments[2])}var n=Number(g.length);n=isNaN(n)?0:0!==n&&isFinite(n)?(0<n?1:-1)*Math.floor(Math.abs(n)):n;n=Math.min(Math.max(n,0),f);for(var u=b(this)?Object(new this(n)):Array(n),m=0,r;m<n;)r=g[m],u[m]=d?"undefined"===typeof k?d(r,m):d.call(k,r,m):r,m+=1;u.length=n;return u}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
Graph=function(a,b,f,e,g,d){mxGraph.call(this,a,b,f,e);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=d?d:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
Graph.createOffscreenGraph=function(a){var b=new Graph(document.createElement("div"));b.stylesheet.styles=mxUtils.clone(a.styles);b.resetViewOnRootChange=!1;b.setConnectable(!1);b.gridEnabled=!1;b.autoScroll=!1;b.setTooltips(!1);b.setEnabled(!1);b.container.style.visibility="hidden";b.container.style.position="absolute";b.container.style.overflow="hidden";b.container.style.height="1px";b.container.style.width="1px";return b};
Graph.createSvgImage=function(a,b,f,e,g){f=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" '+(null!=e&&null!=g?'viewBox="0 0 '+e+" "+g+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,b)};
Graph.createSvgNode=function(a,b,f,e,g){var d=mxUtils.createXmlDocument(),k=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"svg"):d.createElement("svg");null!=g&&(null!=k.style?k.style.backgroundColor=g:k.setAttribute("style","background-color:"+g));null==d.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);k.setAttribute("version","1.1");
k.setAttribute("width",f+"px");k.setAttribute("height",e+"px");k.setAttribute("viewBox",a+" "+b+" "+f+" "+e);d.appendChild(k);return k};Graph.htmlToPng=function(a,b,f,e){var g=document.createElement("canvas");g.width=b;g.height=f;var d=document.createElement("img");d.onload=mxUtils.bind(this,function(){g.getContext("2d").drawImage(d,0,0);e(g.toDataURL())});d.src="data:image/svg+xml,"+encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml"><style>em{color:red;}</style><em>I</em> lick <span>cheese</span></div></foreignObject></svg>')};
Graph.zapGremlins=function(a){for(var b=0,f=[],e=0;e<a.length;e++){var g=a.charCodeAt(e);(32<=g||9==g||10==g||13==g)&&65535!=g&&65534!=g||(f.push(a.substring(b,e)),b=e+1)}0<b&&b<a.length&&f.push(a.substring(b));return 0==f.length?a:f.join("")};Graph.stringToBytes=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=a.charCodeAt(f);return b};Graph.bytesToString=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=String.fromCharCode(a[f]);return b.join("")};
Graph.base64EncodeUnicode=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,f){return String.fromCharCode(parseInt(f,16))}))};Graph.base64DecodeUnicode=function(a){return decodeURIComponent(Array.prototype.map.call(atob(a),function(b){return"%"+("00"+b.charCodeAt(0).toString(16)).slice(-2)}).join(""))};Graph.compressNode=function(a,b){a=mxUtils.getXml(a);return Graph.compress(b?a:Graph.zapGremlins(a))};
Graph.arrayBufferToString=function(a){var b="";a=new Uint8Array(a);for(var f=a.byteLength,e=0;e<f;e++)b+=String.fromCharCode(a[e]);return b};Graph.stringToArrayBuffer=function(a){return Uint8Array.from(a,function(b){return b.charCodeAt(0)})};
Graph.arrayBufferIndexOfString=function(a,b,f){var e=b.charCodeAt(0),g=1,d=-1;for(f=f||0;f<a.byteLength;f++)if(a[f]==e){d=f;break}for(f=d+1;-1<d&&f<a.byteLength&&f<d+b.length-1;f++){if(a[f]!=b.charCodeAt(g))return Graph.arrayBufferIndexOfString(a,b,d+1);g++}return g==b.length-1?d:-1};Graph.compress=function(a,b){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=b?pako.deflate(encodeURIComponent(a)):pako.deflateRaw(encodeURIComponent(a));return btoa(Graph.arrayBufferToString(new Uint8Array(a)))};
Graph.decompress=function(a,b,f){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=Graph.stringToArrayBuffer(atob(a));b=decodeURIComponent(b?pako.inflate(a,{to:"string"}):pako.inflateRaw(a,{to:"string"}));return f?b:Graph.zapGremlins(b)};
Graph.fadeNodes=function(a,b,f,e,g){g=null!=g?g:1E3;Graph.setTransitionForNodes(a,null);Graph.setOpacityForNodes(a,b);window.setTimeout(function(){Graph.setTransitionForNodes(a,"all "+g+"ms ease-in-out");Graph.setOpacityForNodes(a,f);window.setTimeout(function(){Graph.setTransitionForNodes(a,null);null!=e&&e()},g)},0)};Graph.removeKeys=function(a,b){for(var f in a)b(f)&&delete a[f]};
Graph.setTransitionForNodes=function(a,b){for(var f=0;f<a.length;f++)mxUtils.setPrefixedStyle(a[f].style,"transition",b)};Graph.setOpacityForNodes=function(a,b){for(var f=0;f<a.length;f++)a[f].style.opacity=b};Graph.removePasteFormatting=function(a){for(;null!=a;)null!=a.firstChild&&Graph.removePasteFormatting(a.firstChild),a.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=a.style&&(a.style.whiteSpace="","#000000"==a.style.color&&(a.style.color="")),a=a.nextSibling};
Graph.sanitizeHtml=function(a,b){return Graph.domPurify(a,!1)};Graph.sanitizeLink=function(a){var b=document.createElement("a");b.setAttribute("href",a);Graph.sanitizeNode(b);return b.getAttribute("href")};Graph.sanitizeNode=function(a){return Graph.domPurify(a,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(a){"use"==a.nodeName&&a.hasAttribute("xlink:href")&&!a.getAttribute("xlink:href").match(/^#/)&&a.remove()});
Graph.domPurify=function(a,b){window.DOM_PURIFY_CONFIG.IN_PLACE=b;return DOMPurify.sanitize(a,window.DOM_PURIFY_CONFIG)};
Graph.clipSvgDataUri=function(a,b){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=a&&"data:image/svg+xml;base64,"==a.substring(0,26))try{var f=document.createElement("div");f.style.position="absolute";f.style.visibility="hidden";var e=decodeURIComponent(escape(atob(a.substring(26)))),g=e.indexOf("<svg");if(0<=g){f.innerHTML=Graph.sanitizeHtml(e.substring(g));var d=f.getElementsByTagName("svg");if(0<d.length){if(b||null!=d[0].getAttribute("preserveAspectRatio")){document.body.appendChild(f);try{e=b=
1;var k=d[0].getAttribute("width"),n=d[0].getAttribute("height");k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN;n=null!=n&&"%"!=n.charAt(n.length-1)?parseFloat(n):NaN;var u=d[0].getAttribute("viewBox");if(null!=u&&!isNaN(k)&&!isNaN(n)){var m=u.split(" ");4<=u.length&&(b=parseFloat(m[2])/k,e=parseFloat(m[3])/n)}var r=d[0].getBBox();0<r.width&&0<r.height&&(f.getElementsByTagName("svg")[0].setAttribute("viewBox",r.x+" "+r.y+" "+r.width+" "+r.height),f.getElementsByTagName("svg")[0].setAttribute("width",
r.width/b),f.getElementsByTagName("svg")[0].setAttribute("height",r.height/e))}catch(x){}finally{document.body.removeChild(f)}}a=Editor.createSvgDataUri(mxUtils.getXml(d[0]))}}}catch(x){}return a};Graph.stripQuotes=function(a){null!=a&&("'"==a.charAt(0)&&(a=a.substring(1)),"'"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)),'"'==a.charAt(0)&&(a=a.substring(1)),'"'==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)));return a};
Graph.createRemoveIcon=function(a,b){var f=document.createElement("img");f.setAttribute("src",Dialog.prototype.clearImage);f.setAttribute("title",a);f.setAttribute("width","13");f.setAttribute("height","10");f.style.marginLeft="4px";f.style.marginBottom="-1px";f.style.cursor="pointer";mxEvent.addListener(f,"click",b);return f};Graph.isPageLink=function(a){return null!=a&&"data:page/id,"==a.substring(0,13)};Graph.isLink=function(a){return null!=a&&Graph.linkPattern.test(a)};
x&&x!=e.node;){if("a"==x.nodeName.toLowerCase()){f.view.graph.labelLinkClicked(f,x,r);break}x=x.parentNode}});mxEvent.addGestureListeners(e.node,n,u,m);mxEvent.addListener(e.node,"click",function(r){mxEvent.consume(r)})};if(null!=this.tooltipHandler){var b=this.tooltipHandler.init;this.tooltipHandler.init=function(){b.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(f){var e=mxEvent.getSource(f);"A"==e.nodeName&&(e=e.getAttribute("href"),null!=
u)}return k};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var b=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(k){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);b.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),
Graph.prototype.labelLinkClicked=function(a,b,f){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&(mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(f)}};
Graph.prototype.openLink=function(a,b,f){var e=window;try{if(a=Graph.sanitizeLink(a),null!=a)if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top){var g=a.split("#")[1];window.location.hash=="#"+g&&(window.location.hash="");window.location.hash=g}else e=window.open(a,null!=b?b:"_blank"),null==e||f||(e.opener=null)}catch(d){}return e};
Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.hasLayout=function(a){return null!=this.graph.getCellStyle(a).childLayout};this.layoutManager.getLayout=function(a,b){var f=this.graph.model.getParent(a);if(!this.graph.isCellCollapsed(a)&&(b!=mxEvent.BEGIN_UPDATE||this.hasLayout(f,b))){a=this.graph.getCellStyle(a);if("stackLayout"==a.childLayout)return b=new mxStackLayout(this.graph,!0),b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax",
"1"),b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.resizeLast="1"==mxUtils.getValue(a,"resizeLast","0"),b.spacing=a.stackSpacing||b.spacing,b.border=a.stackBorder||b.border,b.marginLeft=a.marginLeft||0,b.marginRight=a.marginRight||0,b.marginTop=a.marginTop||0,b.marginBottom=a.marginBottom||0,b.allowGaps=a.allowGaps||0,b.fill=!0,b.allowGaps&&(b.gridSize=parseFloat(mxUtils.getValue(a,"stackUnitSize",20))),b;if("treeLayout"==
a.childLayout)return b=new mxCompactTreeLayout(this.graph),b.horizontal="1"==mxUtils.getValue(a,"horizontalTree","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.groupPadding=mxUtils.getValue(a,"parentPadding",20),b.levelDistance=mxUtils.getValue(a,"treeLevelDistance",30),b.maintainParentLocation=!0,b.edgeRouting=!1,b.resetEdges=!1,b;if("flowLayout"==a.childLayout)return b=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),b.resizeParent=
"1"==mxUtils.getValue(a,"resizeParent","1"),b.parentBorder=mxUtils.getValue(a,"parentPadding",20),b.maintainParentLocation=!0,b.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),b.interRankCellSpacing=mxUtils.getValue(a,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),b.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),b.parallelEdgeSpacing=mxUtils.getValue(a,
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),b;if("circleLayout"==a.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==a.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==a.childLayout)return new TableLayout(this.graph);if(null!=a.childLayout&&"["==a.childLayout.charAt(0))try{return new mxCompositeLayout(this.graph,this.graph.createLayouts(JSON.parse(a.childLayout)))}catch(e){null!=window.console&&console.error(e)}}return null}};
Graph.prototype.createLayouts=function(a){for(var b=[],f=0;f<a.length;f++)if(0<=mxUtils.indexOf(Graph.layoutNames,a[f].layout)){var e=new window[a[f].layout](this);if(null!=a[f].config)for(var g in a[f].config)e[g]=a[f].config[g];b.push(e)}else throw Error(mxResources.get("invalidCallFnNotFound",[a[f].layout]));return b};
Graph.prototype.getDataForCells=function(a){for(var b=[],f=0;f<a.length;f++){var e=null!=a[f].value?a[f].value.attributes:null,g={};g.id=a[f].id;if(null!=e)for(var d=0;d<e.length;d++)g[e[d].nodeName]=e[d].nodeValue;else g.label=this.convertValueToString(a[f]);b.push(g)}return b};
Graph.prototype.getNodesForCells=function(a){for(var b=[],f=0;f<a.length;f++){var e=this.view.getState(a[f]);if(null!=e){for(var g=this.cellRenderer.getShapesForState(e),d=0;d<g.length;d++)null!=g[d]&&null!=g[d].node&&b.push(g[d].node);null!=e.control&&null!=e.control.node&&b.push(e.control.node)}}return b};
Graph.prototype.createWipeAnimations=function(a,b){for(var f=[],e=0;e<a.length;e++){var g=this.view.getState(a[e]);null!=g&&null!=g.shape&&(this.model.isEdge(g.cell)&&null!=g.absolutePoints&&1<g.absolutePoints.length?f.push(this.createEdgeWipeAnimation(g,b)):this.model.isVertex(g.cell)&&null!=g.shape.bounds&&f.push(this.createVertexWipeAnimation(g,b)))}return f};
Graph.prototype.createEdgeWipeAnimation=function(a,b){var f=a.absolutePoints.slice(),e=a.segments,g=a.length,d=f.length;return{execute:mxUtils.bind(this,function(k,n){if(null!=a.shape){var u=[f[0]];n=k/n;b||(n=1-n);for(var m=g*n,r=1;r<d;r++)if(m<=e[r-1]){u.push(new mxPoint(f[r-1].x+(f[r].x-f[r-1].x)*m/e[r-1],f[r-1].y+(f[r].y-f[r-1].y)*m/e[r-1]));break}else m-=e[r-1],u.push(f[r]);a.shape.points=u;a.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=
a.text.node&&(a.text.node.style.opacity=n)}}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.points=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};
Graph.prototype.createVertexWipeAnimation=function(a,b){var f=new mxRectangle.fromRectangle(a.shape.bounds);return{execute:mxUtils.bind(this,function(e,g){null!=a.shape&&(g=e/g,b||(g=1-g),a.shape.bounds=new mxRectangle(f.x,f.y,f.width*g,f.height),a.shape.redraw(),0==e&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=g))}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.bounds=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&
(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};Graph.prototype.executeAnimations=function(a,b,f,e){f=null!=f?f:30;e=null!=e?e:30;var g=null,d=0,k=mxUtils.bind(this,function(){if(d==f||this.stoppingCustomActions){window.clearInterval(g);for(var n=0;n<a.length;n++)a[n].stop();null!=b&&b()}else for(n=0;n<a.length;n++)a[n].execute(d,f);d++});g=window.setInterval(k,e);k()};
Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var f=Math.floor(Math.ceil(b.x/this.view.scale-this.view.translate.x)/a.width),e=Math.floor(Math.ceil(b.y/this.view.scale-this.view.translate.y)/a.height);return new mxRectangle(f,e,Math.ceil((Math.floor((b.x+b.width)/this.view.scale)-this.view.translate.x)/a.width)-f,Math.ceil((Math.floor((b.y+b.height)/this.view.scale)-this.view.translate.y)/a.height)-
e)};Graph.prototype.sanitizeHtml=function(a,b){return Graph.sanitizeHtml(a,b)};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var f=this.model.cells[b];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")};
Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isAltDown(a)&&!mxEvent.isShiftDown(a)&&!mxEvent.isControlDown(a)&&!mxEvent.isMetaDown(a)};Graph.prototype.isEdgeIgnored=function(a){var b=!1;null!=a&&(a=this.getCurrentCellStyle(a),b="1"==mxUtils.getValue(a,"ignoreEdge","0"));return b};Graph.prototype.isSplitTarget=function(a,b,f){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};
Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b};Graph.prototype.isLabelMovable=function(a){var b=this.getCurrentCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(b,"labelMovable","0")))};
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var b=this.getLinkForCell(a);if(null!=b)return b;a=this.model.getParent(a)}while(null!=a);return null};
Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b};
Graph.prototype.formatDate=function(a,b,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(e.masks[b]||b||e.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),A=a[n+"Hours"](),C=a[n+"Minutes"](),F=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var K=f?0:a.getTimezoneOffset(),E={d:u,dd:k(u),ddd:e.i18n.dayNames[m],dddd:e.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:e.i18n.monthNames[r],mmmm:e.i18n.monthNames[r+
12],yy:String(x).slice(2),yyyy:x,h:A%12||12,hh:k(A%12||12),H:A,HH:k(A),M:C,MM:k(C),s:F,ss:k(F),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>A?"a":"p",tt:12>A?"am":"pm",T:12>A?"A":"P",TT:12>A?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(d,""),o:(0<K?"-":"+")+k(100*Math.floor(Math.abs(K)/60)+Math.abs(K)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(O){return O in E?E[O]:O.slice(1,
O.length-1)})};Graph.prototype.getLayerForCells=function(a){var b=null;if(0<a.length){for(b=a[0];!this.model.isLayer(b);)b=this.model.getParent(b);for(var f=1;f<a.length;f++)if(!this.model.isAncestor(b,a[f])){b=null;break}}return b};
Graph.prototype.createLayersDialog=function(a,b){var f=document.createElement("div");f.style.position="absolute";for(var e=this.getModel(),g=e.getChildCount(e.root),d=0;d<g;d++)mxUtils.bind(this,function(k){function n(){e.isVisible(k)?(r.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(m,75)):(r.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(m,25))}var u=this.convertValueToString(k)||mxResources.get("background")||"Background",m=document.createElement("div");m.style.overflow=
"hidden";m.style.textOverflow="ellipsis";m.style.padding="2px";m.style.whiteSpace="nowrap";m.style.cursor="pointer";m.setAttribute("title",mxResources.get(e.isVisible(k)?"hideIt":"show",[u]));var r=document.createElement("img");r.setAttribute("draggable","false");r.setAttribute("align","absmiddle");r.setAttribute("border","0");r.style.position="relative";r.style.width="16px";r.style.padding="0px 6px 0 4px";b&&(r.style.filter="invert(100%)",r.style.top="-2px");m.appendChild(r);mxUtils.write(m,u);f.appendChild(m);
Graph.prototype.replacePlaceholders=function(a,b,f,e){e=[];if(null!=b){for(var g=0;match=this.placeholderPattern.exec(b);){var d=match[0];if(2<d.length&&"%label%"!=d&&"%tooltip%"!=d){var k=null;if(match.index>g&&"%"==b.charAt(match.index-1))k=d.substring(1);else{var n=d.substring(1,d.length-1);if("id"==n)k=a.id;else if(0>n.indexOf("{"))for(var u=a;null==k&&null!=u;)null!=u.value&&"object"==typeof u.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=u.getAttribute(n+"_"+Graph.diagramLanguage)),
null==k&&(k=u.hasAttribute(n)?null!=u.getAttribute(n)?u.getAttribute(n):"":null)),u=this.model.getParent(u);null==k&&(k=this.getGlobalVariable(n));null==k&&null!=f&&(k=f[n])}e.push(b.substring(g,match.index)+(null!=k?k:d));g=match.index+d.length}}e.push(b.substring(g))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var e=this.model.getCell(a[f].id);null!=e&&b.push(e)}this.setSelectionCells(b)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(a,b){mxEvent.isShiftDown(b)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),a)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(a,b){var f=!1;if(this.isTableCell(a)&&this.isTableCell(b)){var e=this.model.getParent(a),g=this.model.getParent(e),d=this.model.getParent(b);if(g==this.model.getParent(d)){a=e.getIndex(a);e=g.getIndex(e);var k=d.getIndex(b),n=g.getIndex(d);d=Math.max(e,n);b=Math.min(a,k);a=Math.max(a,k);k=[];for(e=Math.min(e,n);e<=d;e++){n=this.model.getChildAt(g,e);for(var u=b;u<=a;u++)k.push(this.model.getChildAt(n,u))}0<k.length&&(1<k.length||1<this.getSelectionCount()||
Graph.prototype.snapCellsToGrid=function(a,b){this.getModel().beginUpdate();try{for(var f=0;f<a.length;f++){var e=a[f],g=this.getCellGeometry(e);if(null!=g){g=g.clone();if(this.getModel().isVertex(e))g.x=Math.round(g.x/b)*b,g.y=Math.round(g.y/b)*b,g.width=Math.round(g.width/b)*b,g.height=Math.round(g.height/b)*b;else if(this.getModel().isEdge(e)&&null!=g.points)for(var d=0;d<g.points.length;d++)g.points[d].x=Math.round(g.points[d].x/b)*b,g.points[d].y=Math.round(g.points[d].y/b)*b;this.getModel().setGeometry(e,
g)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};
Graph.prototype.isCloneConnectSource=function(a){var b=null;null!=this.layoutManager&&(b=this.layoutManager.getLayout(this.model.getParent(a)));return this.isTableRow(a)||this.isTableCell(a)||null!=b&&b.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(a,b,f,e,g,d,k,n){d=d?d:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var u=this.isCloneConnectSource(a),m=u?a:this.getCompositeParent(a),r=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(m.geometry.x,m.geometry.y);b==mxConstants.DIRECTION_NORTH?(r.x+=m.geometry.width/2,r.y-=f):b==
mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=b==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var A=this.view.translate;m=A.x*f;A=A.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,A=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);d=d?null:(new mxRectangle(m+r.x*f,A+r.y*f)).grow(40*f);d=null!=d?
!mxEvent.isShiftDown(e)||mxEvent.isControlDown(e)||g;O&&("1"!=urlParams.sketch||g)&&(b==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var R=[],Q=F;F=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==F&&u){this.model.beginUpdate();try{if(null==Q&&O){var aa=this.getAbsoluteParent(null!=P?P:a);aa=u?a:this.getCompositeParent(aa);Q=null!=P?P:this.duplicateCells([aa],
!1)[0];null!=P&&this.addCells([Q],this.model.getParent(a),null,null,null,!0);var T=this.getCellGeometry(Q);null!=T&&(null!=P&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?r.y-=T.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=T.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-T.width/2:r.x+T.width/2),T.x=r.x-T.width/2,T.y=r.y-T.height/2);null!=C?(this.addCells([Q],C,null,null,null,!0),F=null):O&&!u&&this.addCells([Q],this.getDefaultParent(),null,null,null,!0)}var U=mxEvent.isControlDown(e)&&
mxEvent.isShiftDown(e)&&O||null==F&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,Q,this.createCurrentEdgeStyle());if(null!=U&&this.connectionHandler.insertBeforeSource){var fa=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=U.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==U.parent&&(fa=P.parent.getIndex(P),this.model.add(P.parent,U,fa))}null==F&&null!=Q&&null!=a.parent&&u&&b==mxConstants.DIRECTION_WEST&&(fa=a.parent.getIndex(a),this.model.add(a.parent,
Graph.prototype.getIndexableText=function(a){a=null!=a?a:this.model.getDescendants(this.model.root);for(var b=document.createElement("div"),f=[],e,g=0;g<a.length;g++)if(e=a[g],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&f.push(e);return f.join(" ")};
Graph.prototype.convertValueToString=function(a){var b=this.model.getValue(a);if(null!=b&&"object"==typeof b){var f=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){b=a.getAttribute("placeholder");for(var e=a;null==f&&null!=e;)null!=e.value&&"object"==typeof e.value&&(f=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e)}else f=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=b.getAttribute("label_"+Graph.diagramLanguage)),
null==f&&(f=b.getAttribute("label")||"");return f||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getLinkTargetForCell=function(a){return null!=a.value&&"object"==typeof a.value?a.value.getAttribute("linkTarget"):null};Graph.prototype.postProcessCellStyle=function(a,b){return this.updateHorizontalStyle(a,this.replaceDefaultColors(a,mxGraph.prototype.postProcessCellStyle.apply(this,arguments)))};
Graph.prototype.updateHorizontalStyle=function(a,b){if(null!=a&&null!=b&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(a=this.layoutManager.getLayout(f),null!=a&&a.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!a.horizontal))}return b};
Graph.prototype.replaceDefaultColors=function(a,b){if(null!=b){a=mxUtils.hex2rgb(this.shapeBackgroundColor);var f=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(b,mxConstants.STYLE_FONTCOLOR,f);this.replaceDefaultColor(b,mxConstants.STYLE_FILLCOLOR,a);this.replaceDefaultColor(b,mxConstants.STYLE_STROKECOLOR,f);this.replaceDefaultColor(b,mxConstants.STYLE_IMAGE_BORDER,f);this.replaceDefaultColor(b,mxConstants.STYLE_IMAGE_BACKGROUND,a);this.replaceDefaultColor(b,mxConstants.STYLE_LABEL_BORDERCOLOR,
f);this.replaceDefaultColor(b,mxConstants.STYLE_SWIMLANE_FILLCOLOR,a);this.replaceDefaultColor(b,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,a)}return b};Graph.prototype.replaceDefaultColor=function(a,b,f){null!=a&&"default"==a[b]&&null!=f&&(a[b]=f)};
Graph.prototype.updateAlternateBounds=function(a,b,f){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var e=this.layoutManager.getLayout(this.model.getParent(a));null!=e&&e.constructor==mxStackLayout&&(e.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a,b){return mxEvent.isShiftDown(a)||"1"==mxUtils.getValue(b.style,"moveCells","0")};
Graph.prototype.foldCells=function(a,b,f,e,g){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var d=0;d<f.length;d++){var k=this.view.getState(f[d]),n=this.getCellGeometry(f[d]);if(null!=k&&null!=n){var u=Math.round(n.width-k.width/this.view.scale),m=Math.round(n.height-k.height/this.view.scale);if(0!=m||0!=u){var r=this.model.getParent(f[d]),x=this.layoutManager.getLayout(r);
Graph.prototype.moveSiblings=function(a,b,f,e){this.model.beginUpdate();try{var g=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<g.length;b++)if(g[b]!=a.cell){var d=this.view.getState(g[b]),k=this.getCellGeometry(g[b]);null!=d&&null!=k&&(k=k.clone(),k.translate(Math.round(f*Math.max(0,Math.min(1,(d.x-a.x)/a.width))),Math.round(e*Math.max(0,Math.min(1,(d.y-a.y)/a.height)))),this.model.setGeometry(g[b],k))}}finally{this.model.endUpdate()}};
Graph.prototype.resizeParentStacks=function(a,b,f,e){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var g=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==g&&!b.resizeLast;){var d=this.getCellGeometry(a),k=this.view.getState(a);null!=k&&null!=d&&(d=d.clone(),b.horizontal?d.width+=f+Math.min(0,k.width/this.view.scale-d.width):d.height+=e+Math.min(0,k.height/this.view.scale-d.height),this.model.setGeometry(a,
d));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.getCurrentCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.getCurrentCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(a){var b=this.getCurrentCellStyle(a);return null!=b.movableLabel?"0"!=b.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(a,b,f){var e=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(e)&&(e=null);return e};Graph.prototype.isCellFoldable=function(a){var b=this.getCurrentCellStyle(a);return this.foldingEnabled&&"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&("1"==b.treeFolding||!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible))};
Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};
Graph.prototype.fitWindow=function(a,b){b=null!=b?b:10;var f=this.container.clientWidth-b,e=this.container.clientHeight-b,g=Math.floor(20*Math.min(f/a.width,e/a.height))/20;this.zoomTo(g);if(mxUtils.hasScrollbars(this.container)){var d=this.view.translate;this.container.scrollTop=(a.y+d.y)*g-Math.max((e-a.height*g)/2+b/2,0);this.container.scrollLeft=(a.x+d.x)*g-Math.max((f-a.width*g)/2+b/2,0)}};
Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var f=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=a.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==f&&(f=a.value.getAttribute("tooltip"));if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),b=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var e=[];this.isEnabled()&&(f.push("linkTarget"),f.push("link"));for(var g=0;g<a.length;g++)0>
mxUtils.indexOf(f,a[g].nodeName)&&0<a[g].nodeValue.length&&e.push({name:a[g].nodeName,value:a[g].nodeValue});e.sort(function(d,k){return d.name<k.name?-1:d.name>k.name?1:0});for(g=0;g<e.length;g++)"link"==e[g].name&&this.isCustomLink(e[g].value)||(b+=("link"!=e[g].name?"<b>"+e[g].name+":</b> ":"")+mxUtils.htmlEntities(e[g].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+b+"</div>"))}}return b};
Graph.prototype.getFlowAnimationStyle=function(){var a=document.getElementsByTagName("head")[0];if(null!=a&&null==this.flowAnimationStyle){this.flowAnimationStyle=document.createElement("style");this.flowAnimationStyle.setAttribute("id","geEditorFlowAnimation-"+Editor.guid());this.flowAnimationStyle.type="text/css";var b=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(b);a.appendChild(this.flowAnimationStyle)}return this.flowAnimationStyle};
Graph.prototype.getFlowAnimationStyleCss=function(a){return"."+a+" {\nanimation: "+a+" 0.5s linear;\nanimation-iteration-count: infinite;\n}\n@keyframes "+a+" {\nto {\nstroke-dashoffset: "+-16*this.view.scale+";\n}\n}"};Graph.prototype.stringToBytes=function(a){return Graph.stringToBytes(a)};Graph.prototype.bytesToString=function(a){return Graph.bytesToString(a)};Graph.prototype.compressNode=function(a){return Graph.compressNode(a)};Graph.prototype.compress=function(a,b){return Graph.compress(a,b)};
Graph.prototype.decompress=function(a,b){return Graph.decompress(a,b)};Graph.prototype.zapGremlins=function(a){return Graph.zapGremlins(a)};HoverIcons=function(a){mxEventSource.call(this);this.graph=a;this.init()};mxUtils.extend(HoverIcons,mxEventSource);HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
mxEvent.getSource(f)==this.graph.container&&this.setDisplay("none")}));this.graph.addListener(mxEvent.START_EDITING,mxUtils.bind(this,function(f){this.reset()}));var a=this.graph.click;this.graph.click=mxUtils.bind(this,function(f){a.apply(this.graph,arguments);null==this.currentState||this.graph.isCellSelected(this.currentState.cell)||!mxEvent.isTouchEvent(f.getEvent())||this.graph.model.isVertex(f.getCell())||this.reset()});var b=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(f,
e){b=!1;f=e.getEvent();this.isResetEvent(f)?this.reset():this.isActive()||(e=this.getState(e.getState()),null==e&&mxEvent.isTouchEvent(f)||this.update(e));this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(f,e){f=e.getEvent();this.isResetEvent(f)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(f)||this.update(this.getState(e.getState()),e.getGraphX(),e.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(b=!0)}),mouseUp:mxUtils.bind(this,
function(f,e){f=e.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(f),mxEvent.getClientY(f));this.isResetEvent(f)?this.reset():this.isActive()&&!b&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),e):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())?this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(e.getGraphX(),e.getGraphY())))):mxEvent.isTouchEvent(f)||null!=
this.bbox&&mxUtils.contains(this.bbox,e.getGraphX(),e.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(f)||this.reset();b=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,b){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isPopupTrigger(a)&&!this.graph.isCloneEvent(a)};
HoverIcons.prototype.createArrow=function(a,b,f){var e=null;e=mxUtils.createImage(a.src);e.style.width=a.width+"px";e.style.height=a.height+"px";e.style.padding=this.tolerance+"px";null!=b&&e.setAttribute("title",b);e.style.position="absolute";e.style.cursor=this.cssCursor;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(g){null==this.currentState||this.isResetEvent(g)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(g),mxEvent.getClientY(g)),this.drag(g,
HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a};HoverIcons.prototype.visitNodes=function(a){for(var b=0;b<this.elts.length;b++)null!=this.elts[b]&&a(this.elts[b])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};
HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(b){b.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
HoverIcons.prototype.drag=function(a,b,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"===
mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,f){return this.graph.view.getState(this.graph.getCellAt(b,f))};
HoverIcons.prototype.click=function(a,b,f){var e=f.getEvent(),g=f.getGraphX(),d=f.getGraphY();g=this.getStateAt(a,g,d);null==g||!this.graph.model.isEdge(g.cell)||this.graph.isCloneEvent(e)||g.getVisibleTerminalState(!0)!=a&&g.getVisibleTerminalState(!1)!=a?null!=a&&this.execute(a,b,f):(this.graph.setSelectionCell(g.cell),this.reset());f.consume()};
HoverIcons.prototype.execute=function(a,b,f){f=f.getEvent();this.graph.selectCellsForConnectVertex(this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,f,this.graph.isCloneEvent(f),this.graph.isCloneEvent(f)),f,this)};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null;this.fireEvent(new mxEventObject("reset"))};
var b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(b=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var f=null;null!=b&&(a.x-=b.horizontalOffset/2,a.y-=b.verticalOffset/2,a.width+=b.horizontalOffset,a.height+=b.verticalOffset,null!=b.rotationShape&&null!=b.rotationShape.node&&"hidden"!=b.rotationShape.node.style.visibility&&"none"!=b.rotationShape.node.style.display&&null!=b.rotationShape.boundingBox&&
(f=b.rotationShape.boundingBox));b=mxUtils.bind(this,function(n,u,m){if(null!=f){var r=new mxRectangle(u,m,n.clientWidth,n.clientHeight);mxUtils.intersects(r,f)&&(n==this.arrowUp?m-=r.y+r.height-f.y:n==this.arrowRight?u+=f.x+f.width-r.x:n==this.arrowDown?m+=f.y+f.height-r.y:n==this.arrowLeft&&(u-=r.x+r.width-f.x))}n.style.left=u+"px";n.style.top=m+"px";mxUtils.setOpacity(n,this.inactiveOpacity)});b(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(a.y-
this.triangleUp.height-this.tolerance));b(this.arrowRight,Math.round(a.x+a.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));b(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(a.y+a.height-this.tolerance));b(this.arrowLeft,Math.round(a.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY());
var e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),g=this.graph.getCellAt(this.currentState.getCenterX(),a.y-this.triangleUp.height/2);a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==e&&e==g&&g==a&&(a=g=e=b=null);var d=this.graph.getCellGeometry(this.currentState.cell),k=mxUtils.bind(this,function(n,u){var m=this.graph.model.isVertex(n)&&this.graph.getCellGeometry(n);null==n||this.graph.model.isAncestor(n,
this.currentState.cell)||this.graph.isSwimlane(n)||!(null==m||null==d||m.height<3*d.height&&m.width<3*d.width)?u.style.visibility="visible":u.style.visibility="hidden"});k(b,this.arrowRight);k(e,this.arrowLeft);k(g,this.arrowUp);k(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a};
HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a};
HoverIcons.prototype.update=function(a,b,f){if(!this.graph.connectionArrowsEnabled||null!=a&&"0"==mxUtils.getValue(a.style,"allowArrows","1"))this.reset();else{null!=a&&null!=a.cell.geometry&&a.cell.geometry.relative&&this.graph.model.isEdge(a.cell.parent)&&(a=null);var e=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,e=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,f))}),this.updateDelay+10))):null!=this.startTime&&(e=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=a&&e<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,f)?this.reset(!1):(null!=this.currentState||e>this.activationDelay)&&this.currentState!=a&&(e>this.updateDelay&&null!=a||null==this.bbox||null==b||null==f||!mxUtils.contains(this.bbox,
b,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};Graph.prototype.createParent=function(a,b,f,e,g){a=this.cloneCell(a);for(var d=0;d<f;d++){var k=this.cloneCell(b),n=this.getCellGeometry(k);null!=n&&(n.x+=d*e,n.y+=d*g);a.insert(k)}return a};
Graph.prototype.createTable=function(a,b,f,e,g,d,k,n,u){f=null!=f?f:60;e=null!=e?e:40;d=null!=d?d:30;n=null!=n?n:"shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";u=null!=u?u:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,
null,null!=g?g:"",0,0,b*f,a*e+(null!=g?d:0),null!=k?k:"shape=table;startSize="+(null!=g?d:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,b*f,e,n),this.createVertex(null,null,"",0,0,f,e,u),b,f,0),a,0,e)};
Graph.prototype.setTableValues=function(a,b,f){for(var e=this.model.getChildCells(a,!0),g=0;g<e.length;g++)if(null!=f&&(e[g].value=f[g]),null!=b)for(var d=this.model.getChildCells(e[g],!0),k=0;k<d.length;k++)null!=b[g][k]&&(d[k].value=b[g][k]);return a};
Graph.prototype.createCrossFunctionalSwimlane=function(a,b,f,e,g,d,k,n,u){f=null!=f?f:120;e=null!=e?e:120;k=null!=k?k:"shape=tableRow;horizontal=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;fontStyle=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;startSize=40;collapsible=0;recursiveResize=0;expand=0;";n=null!=n?n:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;";
u=null!=u?u:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=0;collapsible=0;recursiveResize=0;expand=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,b*f,a*e,null!=d?d:"shape=table;childLayout=tableLayout;"+(null==g?"startSize=0;fillColor=none;":"startSize=40;")+"collapsible=0;recursiveResize=0;expand=0;");d=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=d;g.geometry.height+=d;k=this.createVertex(null,
null,"",0,d,b*f+d,e,k);g.insert(this.createParent(k,this.createVertex(null,null,"",d,0,f,e,n),b,f,0));return 1<a?(k.geometry.y=e+d,this.createParent(g,this.createParent(k,this.createVertex(null,null,"",d,0,f,e,u),b,f,0),a-1,0,e)):g};
Graph.prototype.visitTableCells=function(a,b){var f=null,e=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<e.length;g++){for(var d=this.getActualStartSize(e[g],!0),k=this.model.getChildCells(e[g],!0),n=this.getCellStyle(e[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),A={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;A.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+d.x),x.height+(null!=f&&null!=
f[0]?f[0].point.y:a.y+d.y));A.actual=A;null!=f&&null!=f[r]&&1<f[r].rowspan?(A.rowspan=f[r].rowspan-1,A.colspan=f[r].colspan,A.actual=f[r].actual):null!=u&&1<u.colspan?(A.rowspan=u.rowspan,A.colspan=u.colspan-1,A.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(A.rowspan=parseInt(u.rowspan||1),A.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;b(A,k.length,
e.length,a.x+(u?d.x:0),a.y+(u?d.y:0));m.push(A);u=A}f=m}};Graph.prototype.getTableLines=function(a,b,f){var e=[],g=[];(b||f)&&this.visitTableCells(a,mxUtils.bind(this,function(d,k,n,u,m){b&&d.row<n-1&&(null==e[d.row]&&(e[d.row]=[new mxPoint(u,d.point.y)]),1<d.rowspan&&e[d.row].push(null),e[d.row].push(d.point));f&&d.col<k-1&&(null==g[d.col]&&(g[d.col]=[new mxPoint(d.point.x,m)]),1<d.colspan&&g[d.col].push(null),g[d.col].push(d.point))}));return e.concat(g)};
Graph.prototype.setTableRowHeight=function(a,b,f){f=null!=f?f:!0;var e=this.getModel();e.beginUpdate();try{var g=this.getCellGeometry(a);if(null!=g){g=g.clone();g.height+=b;e.setGeometry(a,g);var d=e.getParent(a),k=e.getChildCells(d,!0);if(!f){var n=mxUtils.indexOf(k,a);if(n<k.length-1){var u=k[n+1],m=this.getCellGeometry(u);null!=m&&(m=m.clone(),m.y+=b,m.height-=b,e.setGeometry(u,m))}}var r=this.getCellGeometry(d);null!=r&&(f||(f=a==k[k.length-1]),f&&(r=r.clone(),r.height+=b,e.setGeometry(d,r)))}}finally{e.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(a,b,f){f=null!=f?f:!1;var e=this.getModel(),g=e.getParent(a),d=e.getParent(g),k=e.getChildCells(g,!0);a=mxUtils.indexOf(k,a);var n=a==k.length-1;e.beginUpdate();try{for(var u=e.getChildCells(d,!0),m=0;m<u.length;m++){g=u[m];k=e.getChildCells(g,!0);var r=k[a],x=this.getCellGeometry(r);null!=x&&(x=x.clone(),x.width+=b,null!=x.alternateBounds&&(x.alternateBounds.width+=b),e.setGeometry(r,x));a<k.length-1&&(r=k[a+1],x=this.getCellGeometry(r),null!=x&&(x=x.clone(),
x.x+=b,f||(x.width-=b,null!=x.alternateBounds&&(x.alternateBounds.width-=b)),e.setGeometry(r,x)))}if(n||f){var A=this.getCellGeometry(d);null!=A&&(A=A.clone(),A.width+=b,e.setGeometry(d,A))}null!=this.layoutManager&&this.layoutManager.executeLayout(d)}finally{e.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};TableLayout.prototype.getSize=function(a,b){for(var f=0,e=0;e<a.length;e++)if(!this.isVertexIgnored(a[e])){var g=this.graph.getCellGeometry(a[e]);null!=g&&(f+=b?g.width:g.height)}return f};
TableLayout.prototype.getRowLayout=function(a,b){var f=this.graph.model.getChildCells(a,!0),e=this.graph.getActualStartSize(a,!0);a=this.getSize(f,!0);b=b-e.x-e.width;var g=[];e=e.x;for(var d=0;d<f.length;d++){var k=this.graph.getCellGeometry(f[d]);null!=k&&(e+=(null!=k.alternateBounds?k.alternateBounds.width:k.width)*b/a,g.push(Math.round(e)))}return g};
TableLayout.prototype.layoutRow=function(a,b,f,e){var g=this.graph.getModel(),d=g.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,n=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var u=0;u<d.length;u++){var m=this.graph.getCellGeometry(d[u]);null!=m&&(m=m.clone(),m.y=a.y,m.height=f-a.y-a.height,null!=b?(m.x=b[u],m.width=b[u+1]-m.x,u==d.length-1&&u<b.length-2&&(m.width=e-m.x-a.x-a.width)):(m.x=k,k+=m.width,u==d.length-1?m.width=e-a.x-a.width-n:n+=m.width),m.alternateBounds=new mxRectangle(0,
TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),e=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(e,"resizeLastRow","0"),d="1"==mxUtils.getValue(e,"resizeLast","0");e="1"==mxUtils.getValue(e,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-b.y-b.height,m=f.width-b.x-b.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var A=this.getSize(r,!1);if(0<u&&0<m&&0<
r.length&&0<A){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-A+C.height,k.setGeometry(r[r.length-1],C))}var F=d?null:this.getRowLayout(r[0],m),K=[],E=b.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=b.x,C.width=m,C.y=Math.round(E),E=g||e?E+C.height:E+C.height/A*u,C.height=Math.round(E)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],F,C.height,m,K));e&&u<A&&(f=f.clone(),f.height=E+b.height,k.setGeometry(a,
f));d&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+b.width+b.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(O){k.setVisible(O.cell,O.actual.cell==O.cell);if(O.actual.cell!=O.cell){if(O.actual.row==O.row){var R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo;O.actual.geo.width+=R.width}O.actual.col==O.col&&(R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo,O.actual.geo.height+=R.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(r,x){x=null!=x?x:!0;var A=this.getState(r);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&!A.invalid&&this.updateLineJumps(A)&&this.graph.cellRenderer.redraw(A,!1,this.isRendering());A=b.apply(this,
mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var e=0;e<b.length;e++){var g=b[e];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var d=mxUtils.load(g);null!=d&&200<=d.getStatus()&&299>=d.getStatus()&&eval.call(window,d.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,f,b,g,k)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&"string"===typeof a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0])){b=a[1];for(var f=2;f<a.length-1;f++)b+="/"+a[f]}return b};
mxStencilRegistry.loadStencilSet=function(a,b,f,e){var g=mxStencilRegistry.packages[a];if(null!=f&&f||null==g){var d=!1;if(null==g)try{if(e){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(k){null!=k&&null!=k.documentElement&&(mxStencilRegistry.packages[a]=k,d=!0,mxStencilRegistry.parseStencilSet(k.documentElement,b,d))}));return}g=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=g;d=!0}catch(k){null!=window.console&&console.log("error in loadStencilSet:",a,k)}null!=g&&null!=
g.documentElement&&mxStencilRegistry.parseStencilSet(g.documentElement,b,d)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(f){b(200<=f.getStatus()&&299>=f.getStatus()?f.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)};
mxStencilRegistry.parseStencilSet=function(a,b,f){if("stencils"==a.nodeName)for(var e=a.firstChild;null!=e;)"shapes"==e.nodeName&&mxStencilRegistry.parseStencilSet(e,b,f),e=e.nextSibling;else{f=null!=f?f:!0;e=a.firstChild;var g="";a=a.getAttribute("name");for(null!=a&&(g=a+".");null!=e;){if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=e.getAttribute("name"),null!=a)){g=g.toLowerCase();var d=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(g+d.toLowerCase(),new mxStencil(e));if(null!=b){var k=e.getAttribute("w"),
n=e.getAttribute("h");k=null==k?80:parseInt(k,10);n=null==n?80:parseInt(n,10);b(g,d,a,k,n)}}e=e.nextSibling}}};
"undefined"!==typeof mxVertexHandler&&function(){function a(){var t=document.createElement("div");t.className="geHint";t.style.whiteSpace="nowrap";t.style.position="absolute";return t}function b(t,z){switch(z){case mxConstants.POINTS:return t;case mxConstants.MILLIMETERS:return(t/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(t/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(t/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(c){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var Za=this.backgroundImage;if(null!=Za){t=Ea/z;var pb=this.view.translate;Da=new mxRectangle((Za.x+pb.x)*t,(Za.y+pb.y)*t,Za.width*t,Za.height*t);mxUtils.intersects(Ia,Da)&&Na.image(Za.x+pb.x,Za.y+pb.y,Za.width,Za.height,Za.src,!0)}Na.scale(D);Na.textEnabled=X;ia=null!=ia?ia:this.createSvgImageExport();var ub=ia.drawCellState,vb=ia.getLinkForCellState;ia.getLinkForCellState=
function(t){var z=this.graph.getView().scale;return new mxRectangle(0,0,null==t.text?30:t.text.size*z+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(t,z){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(z.getEvent)};mxGraphView.prototype.formatUnitText=function(t){return t?b(t,this.unit):t};mxGraphHandler.prototype.updateHint=function(t){if(null!=this.pBounds&&(null!=this.shape||
this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,B=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/B-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/B-z.y);B=this.graph.view.unit;this.hint.innerHTML=b(t,B)+", "+b(z,B);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+
z):t=V.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/t),z)+" x "+b(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var B=this.graph.view.translate,D=this.graph.view.scale,G=this.roundLength(z.x/D-B.x);B=this.roundLength(z.y/D-B.y);D=this.graph.view.unit;this.hint.innerHTML=b(G,D)+", "+b(B,D);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(G=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*G.x)+
null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,b){this.editorUi=a;this.container=b};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.doubleBlockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 8 8 L 16 2 L 16 14 Z M 16 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.processMenuIcon=function(a,b){var f=a.getElementsByTagName("img");0<f.length&&(Editor.isDarkMode()&&(f[0].style.filter="invert(100%)"),f[0].className="geIcon",f[0].style.padding="0px",f[0].style.margin="0 0 0 2px",null!=b&&mxUtils.setPrefixedStyle(f[0].style,"transform",b));return a};
Format.prototype.init=function(){var a=this.editorUi,b=a.editor,f=b.graph;this.update=mxUtils.bind(this,function(e,g){this.refresh()});f.getSelectionModel().addListener(mxEvent.CHANGE,this.update);f.getModel().addListener(mxEvent.CHANGE,this.update);f.addListener(mxEvent.EDITING_STARTED,this.update);f.addListener(mxEvent.EDITING_STOPPED,this.update);f.getView().addListener("unitChanged",this.update);b.addListener("autosaveChanged",this.update);f.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,b=a.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.color="rgb(112, 112, 112)";f.style.textAlign="left";f.style.cursor="default";var e=document.createElement("div");e.className="geFormatSection";e.style.textAlign="center";e.style.fontWeight="bold";e.style.paddingTop="8px";e.style.fontSize="13px";e.style.borderWidth="0px 0px 1px 1px";e.style.borderStyle=
"solid";e.style.display="inline-block";e.style.height="25px";e.style.overflow="hidden";e.style.width="100%";this.container.appendChild(f);mxEvent.addListener(e,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),d=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,F,K,E){var O=mxUtils.bind(this,function(R){k!=C&&(d?this.labelIndex=K:b.isSelectionEmpty()?this.diagramIndex=K:this.currentIndex=K,null!=k&&(k.style.backgroundColor=
Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=F&&(null!=n&&(n.style.display="none"),n=F,n.style.display=""))});mxEvent.addListener(C,"click",O);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(R){R.preventDefault()}));(E&&null==k||K==(d?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&O()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(e,mxResources.get("diagram"));
Dialog.prototype.closeImage),u.setAttribute("title",mxResources.get("hide")),u.style.position="absolute",u.style.display="block",u.style.right="0px",u.style.top="8px",u.style.cursor="pointer",u.style.marginTop="1px",u.style.marginRight="6px",u.style.border="1px solid transparent",u.style.padding="1px",u.style.opacity=.5,r.appendChild(u),mxEvent.addListener(u,"click",function(){a.actions.get("formatPanel").funct()}),f.appendChild(r))}else if(b.isEditing())mxUtils.write(e,mxResources.get("text")),f.appendChild(e),
"none";u(A,f,m++,!0)}}};BaseFormatPanel=function(a,b,f){this.format=a;this.editorUi=b;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
BaseFormatPanel.prototype.installInputHandler=function(a,b,f,e,g,d,k,n){d=null!=d?d:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;e=null!=e?e:1;g=null!=g?g:999;var r=null,x=!1,A=mxUtils.bind(this,function(C){var F=n?parseFloat(a.value):parseInt(a.value);isNaN(F)||b!=mxConstants.STYLE_ROTATION||(F=mxUtils.mod(Math.round(100*F),36E3)/100);F=Math.min(g,Math.max(e,isNaN(F)?f:F));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(F),a.value=F+d,
x=!1);else if(F!=mxUtils.getValue(u.getSelectionState().style,b,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var K=u.getSelectionState().cells;m.setCellStyles(b,F,K);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(K,function(O){O.style.fontSize=F+"px";O.removeAttribute("size")});for(var E=0;E<K.length;E++)0==m.model.getChildCount(K[E])&&m.autoSizeCell(K[E],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[F],"cells",K))}finally{m.getModel().endUpdate()}}a.value=
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 14px";return a};BaseFormatPanel.prototype.createTitle=function(a){var b=document.createElement("div");b.style.padding="0px 0px 6px 0px";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.width="200px";b.style.fontWeight="bold";mxUtils.write(b,a);return b};
BaseFormatPanel.prototype.addAction=function(a,b){var f=this.editorUi.actions.get(b);b=null;null!=f&&f.isEnabled()&&(b=mxUtils.button(f.label,function(e){f.funct(e,e)}),b.setAttribute("title",f.label+(null!=f.shortcut?" ("+f.shortcut+")":"")),b.style.marginBottom="2px",b.style.width="210px",a.appendChild(b),result=!0);return b};
BaseFormatPanel.prototype.addActions=function(a,b){for(var f=null,e=null,g=0,d=0;d<b.length;d++){var k=this.addAction(a,b[d]);null!=k&&(g++,0==mxUtils.mod(g,2)&&(e.style.marginRight="2px",e.style.width="104px",k.style.width="104px",f.parentNode.removeChild(f)),f=mxUtils.br(a),e=k)}return g};
BaseFormatPanel.prototype.createStepper=function(a,b,f,e,g,d,k){f=null!=f?f:1;e=null!=e?e:9;var n=10*f,u=document.createElement("div");mxUtils.setPrefixedStyle(u.style,"borderRadius","3px");u.style.border="1px solid rgb(192, 192, 192)";u.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=e+"px";m.style.width="10px";m.className="geBtnUp";u.appendChild(m);var r=m.cloneNode(!1);r.style.border="none";
r.style.height=e+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(A)?n:f),null!=b&&b(A));mxEvent.consume(A)});mxEvent.addGestureListeners(m,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(A)?
n:f),null!=b&&b(A));mxEvent.consume(A)});if(g){var x=null;mxEvent.addGestureListeners(u,function(A){mxEvent.consume(A)},null,function(A){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(A)}})}else mxEvent.addListener(u,"click",function(A){mxEvent.consume(A)});return u};
BaseFormatPanel.prototype.createOption=function(a,b,f,e,g){var d=document.createElement("div");d.style.padding="3px 0px 3px 0px";d.style.whiteSpace="nowrap";d.style.textOverflow="ellipsis";d.style.overflow="hidden";d.style.width="200px";d.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";d.appendChild(k);var n=document.createElement("span");n.style.verticalAlign="top";n.style.userSelect="none";mxUtils.write(n,
a);d.appendChild(n);var u=!1,m=b(),r=function(x,A){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,b()!=m&&f(m,A)),u=!1)};mxEvent.addListener(d,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var A=mxEvent.getSource(x);if(A==d||A==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=e&&(e.install(r),this.listeners.push(e));null!=g&&g(d);return d};
BaseFormatPanel.prototype.createCellOption=function(a,b,f,e,g,d,k,n,u){var m=this.editorUi,r=m.editor.graph;e=null!=e?"null"==e?null:e:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,b,f)!=g},function(A){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;A=A?e:g;r.setCellStyles(b,A,C);null!=d&&d(C,A);m.fireEvent(new mxEventObject("styleChanged",
"keys",[b],"values",[A],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(A){this.listener=function(){A(mxUtils.getValue(x,b,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,b,f,e,g,d,k,n){var u=document.createElement("div");u.style.padding="3px 0px 3px 0px";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.width="200px";u.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||u.appendChild(m);var r=document.createElement("span");r.style.verticalAlign="top";mxUtils.write(r,a);u.appendChild(r);var x=b(),
null!=Q?Q+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=E&&E!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=d&&d("null"==E?null:E);x=E;O||(R||k||b()!=x)&&f("null"==x?null:x,x);A=!1}},K=document.createElement("input");K.setAttribute("type","color");K.style.visibility="hidden";K.style.width="0px";K.style.height="0px";K.style.border=
BaseFormatPanel.prototype.createCellColorOption=function(a,b,f,e,g,d){var k=this.editorUi,n=k.editor.graph;return this.createColorOption(a,function(){var u=n.view.getState(k.getSelectionState().cells[0]);return null!=u?mxUtils.getValue(u.style,b,null):null},function(u,m){n.getModel().beginUpdate();try{var r=k.getSelectionState().cells;n.setCellStyles(b,u,r);null!=g&&g(u);k.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[u],"cells",r))}finally{n.getModel().endUpdate()}},f||mxConstants.NONE,
{install:function(u){this.listener=function(){var m=n.view.getState(k.getSelectionState().cells[0]);null!=m&&u(mxUtils.getValue(m.style,b,null),!0)};n.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){n.getModel().removeListener(this.listener)}},e,null,d)};
BaseFormatPanel.prototype.addArrow=function(a,b){b=null!=b?b:10;var f=document.createElement("div");f.style.display="inline-block";f.style.paddingRight="4px";f.style.padding="6px";var e=10-b;2==e?f.style.paddingTop="6px":0<e?f.style.paddingTop=6-e+"px":f.style.marginTop="-2px";f.style.height=b+"px";f.style.borderLeft="1px solid #a0a0a0";b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",Toolbar.prototype.dropDownImage);f.appendChild(b);
b=f.getElementsByTagName("img")[0];b.style.position="relative";b.style.left="1px";b.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(f,70);b=a.getElementsByTagName("div")[0];null!=b&&(b.style.paddingRight="6px",b.style.marginLeft="4px",b.style.marginTop="-1px",b.style.display="inline-block",mxUtils.setOpacity(b,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage="none";a.style.width="auto";a.className+=
" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(f);return b};
BaseFormatPanel.prototype.addUnitInput=function(a,b,f,e,g,d,k,n,u){k=null!=k?k:0;b=document.createElement("input");b.style.position="absolute";b.style.textAlign="right";b.style.marginTop="-2px";b.style.left=228-f-e+"px";b.style.width=e+"px";b.style.height="21px";b.style.border="1px solid rgb(160, 160, 160)";b.style.borderRadius="4px";b.style.boxSizing="border-box";a.appendChild(b);e=this.createStepper(b,g,d,null,n,null,u);e.style.marginTop=k-2+"px";e.style.left=228-f+"px";a.appendChild(e);return b};
BaseFormatPanel.prototype.createRelativeOption=function(a,b,f,e,g){f=null!=f?f:52;var d=this.editorUi,k=d.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=e)e(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var A=k.view.getState(d.getSelectionState().cells[0]);null!=A&&x!=mxUtils.getValue(A.style,b,100)&&(100==x&&(x=null),A=d.getSelectionState().cells,
k.setCellStyles(b,x,A),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[x],"cells",A)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=e);if(null!=b){var m=mxUtils.bind(this,function(r,x,A){if(A||u!=document.activeElement)r=d.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,b,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
BaseFormatPanel.prototype.addLabel=function(a,b,f,e){e=null!=e?e:61;var g=document.createElement("div");mxUtils.write(g,b);g.style.position="absolute";g.style.left=240-f-e+"px";g.style.width=e+"px";g.style.marginTop="6px";g.style.textAlign="center";a.appendChild(g)};
BaseFormatPanel.prototype.addKeyHandler=function(a,b){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(f){13==f.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(f)):27==f.keyCode&&(null!=b&&b(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(f))}))};
BaseFormatPanel.prototype.styleButtons=function(a){for(var b=0;b<a.length;b++)mxUtils.setPrefixedStyle(a[b].style,"borderRadius","3px"),mxUtils.setOpacity(a[b],100),a[b].style.border="1px solid #a0a0a0",a[b].style.padding="4px",a[b].style.paddingTop="3px",a[b].style.paddingRight="1px",a[b].style.margin="1px",a[b].style.marginRight="2px",a[b].style.width="24px",a[b].style.height="20px",a[b].className+=" geColorBtn"};
BaseFormatPanel.prototype.destroy=function(){if(null!=this.listeners){for(var a=0;a<this.listeners.length;a++)this.listeners[a].destroy();this.listeners=null}};ArrangePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(ArrangePanel,BaseFormatPanel);
ArrangePanel.prototype.addTable=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var g=document.createElement("div");g.style.marginTop="0px";g.style.marginBottom="6px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("table"));a.appendChild(g);g=document.createElement("div");g.style.position="relative";g.style.paddingLeft="0px";g.style.borderWidth="0px";g.style.width="220px";g.className="geToolbarContainer";var d=
e.vertices[0];1<f.getSelectionCount()&&(f.isTableCell(d)&&(d=f.model.getParent(d)),f.isTableRow(d)&&(d=f.model.getParent(d)));var k=e.table||e.row||e.cell,n=f.isStack(d)||f.isStackChild(d),u=k;n&&(k="0"==(f.isStack(d)?e.style:f.getCellStyle(f.model.getParent(d))).horizontalStack,u=!k);var m=[];u&&(m=m.concat([b.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!0):f.insertTableColumn(d,!0)}catch(r){b.handleError(r)}}),
g),b.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableColumn(d,!1)}catch(r){b.handleError(r)}}),g),b.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableColumn(d)}catch(r){b.handleError(r)}}),g)]));k&&(m=m.concat([b.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,
function(){try{n?f.insertLane(d,!0):f.insertTableRow(d,!0)}catch(r){b.handleError(r)}}),g),b.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableRow(d,!1)}catch(r){b.handleError(r)}}),g),b.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableRow(d)}catch(r){b.handleError(r)}}),g)]));if(0<m.length){this.styleButtons(m);a.appendChild(g);
ArrangePanel.prototype.addGroupOps=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="8px";a.style.paddingBottom="6px";var g=0;e.cell||e.row||(g+=this.addActions(a,["group","ungroup","copySize","pasteSize"])+this.addActions(a,["removeFromGroup"]));var d=null;1!=e.cells.length||null==e.cells[0].value||isNaN(e.cells[0].value.nodeType)||(d=mxUtils.button(mxResources.get("copyData"),function(n){if(mxEvent.isShiftDown(n)){var u=f.getDataForCells(f.getSelectionCells());
n=new EmbedDialog(b,JSON.stringify(u,null,2),null,null,function(){console.log(u);b.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");b.showDialog(n.container,450,240,!0,!0);n.init()}else b.actions.get("copyData").funct(n)}),d.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+") Shift+Click to Extract Data"),d.style.marginBottom="2px",d.style.width="210px",a.appendChild(d),g++);var k=null;null!=b.copiedValue&&
0<e.cells.length&&(k=mxUtils.button(mxResources.get("pasteData"),function(n){b.actions.get("pasteData").funct(n)}),k.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),k.style.marginBottom="2px",k.style.width="210px",a.appendChild(k),g++,null!=d&&(d.style.width="104px",k.style.width="104px",k.style.marginBottom="2px",d.style.marginBottom="2px",d.style.marginRight="2px"));null==d&&null==k||mxUtils.br(a);e=this.addAction(a,"clearWaypoints");null!=
ArrangePanel.prototype.addAlign=function(a){var b=this.editorUi.getSelectionState(),f=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="8px";a.appendChild(this.createTitle(mxResources.get("align")));var e=document.createElement("div");e.style.position="relative";e.style.whiteSpace="nowrap";e.style.paddingLeft="0px";e.style.paddingBottom="2px";e.style.borderWidth="0px";e.style.width="220px";e.className="geToolbarContainer";if(1<b.vertices.length){b=this.editorUi.toolbar.addButton("geSprite-alignleft",
mxResources.get("middle"),function(){f.alignCells(mxConstants.ALIGN_MIDDLE)},e),u=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){f.alignCells(mxConstants.ALIGN_BOTTOM)},e);this.styleButtons([b,g,d,k,n,u]);d.style.marginRight="10px"}a.appendChild(e);this.addActions(a,["snapToGrid"]);return a};
ArrangePanel.prototype.addFlip=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var f=this.editorUi.getSelectionState(),e=document.createElement("div");e.style.marginTop="2px";e.style.marginBottom="8px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("flip"));a.appendChild(e);e=mxUtils.button(mxResources.get("horizontal"),function(g){b.flipCells(f.cells,!0)});e.setAttribute("title",mxResources.get("horizontal"));e.style.width="104px";e.style.marginRight=
"2px";a.appendChild(e);e=mxUtils.button(mxResources.get("vertical"),function(g){b.flipCells(f.cells,!1)});e.setAttribute("title",mxResources.get("vertical"));e.style.width="104px";a.appendChild(e);return a};
ArrangePanel.prototype.addDistribute=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("distribute")));var f=mxUtils.button(mxResources.get("horizontal"),function(e){b.distributeCells(!0)});f.setAttribute("title",mxResources.get("horizontal"));f.style.width="104px";f.style.marginRight="2px";a.appendChild(f);f=mxUtils.button(mxResources.get("vertical"),function(e){b.distributeCells(!1)});f.setAttribute("title",
ArrangePanel.prototype.addAngle=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingBottom="8px";var g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";var d=null,k=null,n=null;!e.rotatable||e.table||e.row||e.cell?a.style.paddingTop="8px":(mxUtils.write(g,mxResources.get("angle")),a.appendChild(g),d=this.addUnitInput(a,"°",16,52,function(){k.apply(this,arguments)}),mxUtils.br(a),a.style.paddingTop=
"10px");e.containsLabel||(g=mxResources.get("reverse"),0<e.vertices.length&&0<e.edges.length?g=mxResources.get("turn")+" / "+g:0<e.vertices.length&&(g=mxResources.get("turn")),n=mxUtils.button(g,function(m){b.actions.get("turn").funct(m)}),n.setAttribute("title",g+" ("+this.editorUi.actions.get("turn").shortcut+")"),n.style.width="210px",a.appendChild(n),null!=d&&(n.style.marginTop="8px"));if(null!=d){var u=mxUtils.bind(this,function(m,r,x){if(x||document.activeElement!=d)e=b.getSelectionState(),
ArrangePanel.prototype.addGeometry=function(a){var b=this,f=this.editorUi,e=f.editor.graph,g=e.getModel(),d=f.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var n=document.createElement("div");n.style.position="absolute";n.style.width="50px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("size"));k.appendChild(n);var u=this.addUnitInput(k,this.getUnit(),87,52,function(){C.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);d.cell||d.row?r.style.visibility="hidden":k.appendChild(n);var A=x.getElementsByTagName("input")[0];this.addKeyHandler(u,R);this.addKeyHandler(m,R);var C=this.addGeometryHandler(u,function(T,U,fa){if(e.isTableCell(fa))return e.setTableColumnWidth(fa,U-T.width,!0),!0;0<T.width&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.height=Math.round(T.height*U*100/T.width)/100),T.width=U)});var F=this.addGeometryHandler(m,function(T,
U,fa){e.isTableCell(fa)&&(fa=e.model.getParent(fa));if(e.isTableRow(fa))return e.setTableRowHeight(fa,U-T.height),!0;0<T.height&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.width=Math.round(T.width*U*100/T.height)/100),T.height=U)});(d.resizable||d.row||d.cell)&&a.appendChild(k);var K=this.createPanel();K.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
(""==d.y?"":" "+this.getUnit())}else K.style.display="none"});this.addKeyHandler(E,R);this.addKeyHandler(O,R);g.addListener(mxEvent.CHANGE,R);this.listeners.push({destroy:function(){g.removeListener(R)}});R();var Q=this.addGeometryHandler(E,function(T,U){U=b.fromUnit(U);T.relative?T.offset.x=U:T.x=U});var P=this.addGeometryHandler(O,function(T,U){U=b.fromUnit(U);T.relative?T.offset.y=U:T.y=U});if(d.movable){if(0==d.edges.length&&1==d.vertices.length&&g.isEdge(g.getParent(d.vertices[0]))){var aa=e.getCellGeometry(d.vertices[0]);
ArrangePanel.prototype.addGeometryHandler=function(a,b){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=d+" "+k.getUnit();else if(u!=d){g.getModel().beginUpdate();try{for(var m=e.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!b(x,u,m[r]))){var A=g.view.getState(m[r]);null!=A&&g.isRecursiveVertexResize(A)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}d=
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function f(k){if(""!=a.value){var n=parseFloat(a.value);if(isNaN(n))a.value=d+" pt";else if(n!=d){g.getModel().beginUpdate();try{for(var u=e.getSelectionState().cells,m=0;m<u.length;m++)if(g.getModel().isEdge(u[m])){var r=g.getCellGeometry(u[m]);null!=r&&(r=r.clone(),b(r,n),g.getModel().setGeometry(u[m],r))}}finally{g.getModel().endUpdate()}d=n;a.value=n+" pt"}}mxEvent.consume(k)}var e=this.editorUi,g=e.editor.graph,d=null;mxEvent.addListener(a,
ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState(),g=this.createPanel(),d=document.createElement("div");d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("width"));g.appendChild(d);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,F);var n=mxUtils.bind(this,function(Q){var P=parseInt(k.value);P=Math.min(999,
Math.max(1,isNaN(P)?1:P));if(P!=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var aa=b.getSelectionState().cells;f.setCellStyles("width",P,aa);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[P],"cells",aa))}k.value=P+" pt";mxEvent.consume(Q)});mxEvent.addListener(k,"blur",n);mxEvent.addListener(k,"change",n);a.appendChild(g);var u=this.createPanel();u.style.paddingBottom="30px";d=document.createElement("div");d.style.position=
d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";mxUtils.write(d,mxResources.get("lineend"));x.appendChild(d);var A=this.addUnitInput(x,"pt",87,52,function(){O.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){R.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(A,F);this.addKeyHandler(C,F);var F=mxUtils.bind(this,function(Q,P,aa){e=b.getSelectionState();
F()};TextFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
TextFormatPanel.prototype.addFont=function(a){function b(ca,t){ca.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,e=f.editor.graph,g=f.getSelectionState(),d=this.createTitle(mxResources.get("font"));d.style.paddingLeft="14px";d.style.paddingTop="10px";d.style.paddingBottom="6px";a.appendChild(d);d=this.createPanel();d.style.paddingTop="2px";d.style.paddingBottom="2px";d.style.position=
a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);var Ua=mxUtils.bind(this,function(ca,t,z){g=f.getSelectionState();ca=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(ca&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(ca&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);b(m[2],(ca&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=
mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=V)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),V.value=isNaN(ca)?"":ca+" pt";ca=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);b(C,ca==mxConstants.ALIGN_LEFT);b(F,ca==mxConstants.ALIGN_CENTER);b(K,ca==mxConstants.ALIGN_RIGHT);ca=mxUtils.getValue(g.style,
mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);b(O,ca==mxConstants.ALIGN_TOP);b(R,ca==mxConstants.ALIGN_MIDDLE);b(Q,ca==mxConstants.ALIGN_BOTTOM);ca=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=ca==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_TOP?"topLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":ca==mxConstants.ALIGN_RIGHT&&
0;ja<ia.length;ja++)if(da.containsNode(ia[ja],!0)){temp=mxUtils.getCurrentStyle(ia[ja]);M=Math.max(B(temp),M);var ta=D(M,temp,ia[ja]);if(ta!=X||isNaN(ta))X=""}null!=G&&(b(m[0],"bold"==G.fontWeight||400<G.fontWeight||z("B")||z("STRONG")),b(m[1],"italic"==G.fontStyle||z("I")||z("EM")),b(m[2],z("U")),b(aa,z("SUP")),b(P,z("SUB")),e.cellEditor.isTableSelected()?(b(ha,t(G.textAlign,"justify")),b(C,t(G.textAlign,"left")),b(F,t(G.textAlign,"center")),b(K,t(G.textAlign,"right"))):(z=e.cellEditor.align||mxUtils.getValue(g.style,
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(G.textAlign,"justify")?(b(ha,t(G.textAlign,"justify")),b(C,!1),b(F,!1),b(K,!1)):(b(ha,!1),b(C,z==mxConstants.ALIGN_LEFT),b(F,z==mxConstants.ALIGN_CENTER),b(K,z==mxConstants.ALIGN_RIGHT))),T=e.getParentByName(ca,"TABLE",e.cellEditor.textarea),fa=null==T?null:e.getParentByName(ca,"TR",T),U=null==T?null:e.getParentByNames(ca,["TD","TH"],T),db.style.display=null!=T?"":"none",document.activeElement!=V&&("FONT"==ca.nodeName&&"4"==ca.getAttribute("size")&&
!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(e.cellEditor.textarea,"DOMSubtreeModified",d);mxEvent.addListener(e.cellEditor.textarea,"input",d);mxEvent.addListener(e.cellEditor.textarea,"touchend",d);mxEvent.addListener(e.cellEditor.textarea,"mouseup",d);mxEvent.addListener(e.cellEditor.textarea,"keyup",d);this.listeners.push({destroy:function(){}});d()}return a};StyleFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
StyleFormatPanel.prototype.getCssRules=function(a){var b=document.implementation.createHTMLDocument(""),f=document.createElement("style");mxUtils.setTextContent(f,a);b.body.appendChild(f);return f.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var f=b.style.editableCssRules;if(null!=f){var e=new RegExp(f),g=b.style.image.substring(b.style.image.indexOf(",")+1),d=window.atob?atob(g):Base64.decode(g,!0),k=mxUtils.parseXml(d);if(null!=k){var n=k.getElementsByTagName("style");for(b=0;b<n.length;b++){var u=this.getCssRules(mxUtils.getTextContent(n[b]));
for(f=0;f<u.length;f++)this.addSvgRule(a,u[f],k,n[b],u,f,e)}}}}catch(m){}return a};
StyleFormatPanel.prototype.addSvgRule=function(a,b,f,e,g,d,k){var n=this.editorUi,u=n.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var A=mxUtils.trim(m.style[r]);""!=A&&"url("!=A.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=A;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[d].style[r]=C;C="";for(var F=0;F<g.length;F++)C+=g[F].cssText+" ";e.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
StyleFormatPanel.prototype.addEditOps=function(a){var b=this.editorUi.getSelectionState(),f=null;1==b.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(e){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",a.appendChild(f));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(e){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==f?b.style.width="210px":(f.style.width="104px",b.style.width="104px",b.style.marginLeft="2px"),a.appendChild(b));return a};
StyleFormatPanel.prototype.addFill=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var g=document.createElement("select");g.style.position="absolute";g.style.left="104px";g.style.width="70px";g.style.height="22px";g.style.padding="0px";g.style.marginTop="-3px";g.style.borderRadius="4px";g.style.border="1px solid rgb(160, 160, 160)";g.style.boxSizing="border-box";var d=g.cloneNode(!1);mxEvent.addListener(g,"click",function(C){mxEvent.consume(C)});
for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),d.appendChild(r);k.appendChild(d);var A=mxUtils.bind(this,function(){e=b.getSelectionState();var C=mxUtils.getValue(e.style,mxConstants.STYLE_GRADIENT_DIRECTION,
A();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",e.cells));mxEvent.consume(C)});mxEvent.addListener(d,"change",function(C){f.setCellStyles("fillStyle",d.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[d.value],"cells",e.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
StyleFormatPanel.prototype.addStroke=function(a){function b(W){var Z=parseFloat(E.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,Z,d.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[Z],"cells",d.cells)));E.value=Z+" pt";mxEvent.consume(W)}function f(W){var Z=parseFloat(O.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,
A.appendChild(E);var O=E.cloneNode(!0);F.appendChild(O);var R=this.createStepper(E,b,1,9);R.style.display=E.style.display;R.style.marginTop="2px";R.style.left="198px";A.appendChild(R);R=this.createStepper(O,f,1,9);R.style.display=O.style.display;R.style.marginTop="2px";O.style.position="absolute";R.style.left="198px";F.appendChild(R);mxEvent.addListener(E,"blur",b);mxEvent.addListener(E,"change",b);mxEvent.addListener(O,"blur",f);mxEvent.addListener(O,"change",f);var Q=this.editorUi.toolbar.addMenuFunctionInContainer(u,
StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();if(Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps){a.style.padding="2px 0px 24px 14px";var g=document.createElement("div");g.style.position="absolute";g.style.maxWidth="82px";g.style.overflow="hidden";g.style.textOverflow="ellipsis";mxUtils.write(g,mxResources.get("lineJumps"));a.appendChild(g);var d=document.createElement("select");d.style.position="absolute";
d.value,e.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[d.value],"cells",e.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(d,"click",function(x){mxEvent.consume(x)});a.appendChild(d);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,A,C){e=b.getSelectionState();d.value=mxUtils.getValue(e.style,
StyleFormatPanel.prototype.addEffects=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";g.style.tableLayout="fixed";var d=document.createElement("tbody"),k=document.createElement("tr");k.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","top");var u=n.cloneNode(!0);u.style.paddingLeft=
"8px";k.appendChild(n);k.appendChild(u);d.appendChild(k);g.appendChild(d);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,F,K){C=this.createCellOption(C,F,K);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),A=mxUtils.bind(this,function(C,F,K){e=b.getSelectionState();n.innerHTML="";u.innerHTML="";m=n;e.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);e.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);e.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
0);e.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});A();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,f=b.editor.graph,e=f.getModel(),g=f.view.gridColor;a.style.whiteSpace="normal";var d="1"==f.currentVertexStyle.sketch&&"1"==f.currentEdgeStyle.sketch,k="1"==f.currentVertexStyle.rounded,n="1"==f.currentEdgeStyle.curved,u=document.createElement("div");u.style.marginRight="16px";a.style.paddingTop="8px";var m=document.createElement("table");m.style.width="210px";m.style.fontWeight="bold";var r=document.createElement("tbody"),x=document.createElement("tr");
I||null!=qa[S]&&qa[S]!=mxConstants.NONE||S!=mxConstants.STYLE_FILLCOLOR&&S!=mxConstants.STYLE_STROKECOLOR)qa[S]=ba[S]}});"1"!=urlParams.sketch&&(A=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){e.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{e.endUpdate()}}b.clearDefaultStyle()})),A.setAttribute("title",mxResources.get("reset")),A.style.textOverflow=
O(I,f.currentEdgeStyle);"1"==urlParams.sketch&&(d=Editor.sketchMode);d?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";e.beginUpdate();try{var ea=F.slice(),ka;for(ka in ba)ea.push(ka);K(ea,L);var wa=new ChangePageSetup(b,null!=L?L.background:null);wa.ignoreImage=!0;e.execute(wa);e.execute(new ChangeGridColor(b,null!=
aa))})),m(A),m(C))}else U();return a};DiagramStylePanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.darkModeChangedListener&&(this.editorUi.removeListener(this.darkModeChangedListener),this.darkModeChangedListener=null)};DiagramFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.addView=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return f.pageVisible},function(d){b.actions.get("pageView").funct()},{install:function(d){this.listener=function(){d(f.pageVisible)};b.addListener("pageViewChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}));
if(f.isEnabled()){var e=this.createColorOption(mxResources.get("background"),function(){return f.background},function(d){var k=new ChangePageSetup(b,d);k.ignoreImage=null!=d&&d!=mxConstants.NONE;f.model.execute(k)},"#ffffff",{install:function(d){this.listener=function(){d(f.background)};b.addListener("backgroundColorChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});if(this.showBackgroundImageOption){var g=e.getElementsByTagName("span")[0];g.style.display="inline-block";
g.style.textOverflow="ellipsis";g.style.overflow="hidden";g.style.maxWidth="68px";mxClient.IS_FF&&(g.style.marginTop="1px");g=mxUtils.button(mxResources.get("change"),function(d){b.showBackgroundImageDialog(null,b.editor.graph.backgroundImage);mxEvent.consume(d)});g.className="geColorBtn";g.style.position="absolute";g.style.marginTop="-3px";g.style.height="22px";g.style.left="118px";g.style.width="56px";e.appendChild(g)}a.appendChild(e)}return a};
DiagramFormatPanel.prototype.addOptions=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("options")));f.isEnabled()&&(a.appendChild(this.createOption(mxResources.get("connectionArrows"),function(){return f.connectionArrowsEnabled},function(e){b.actions.get("connectionArrows").funct()},{install:function(e){this.listener=function(){e(f.connectionArrowsEnabled)};b.addListener("connectionArrowsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),
a.appendChild(this.createOption(mxResources.get("connectionPoints"),function(){return f.connectionHandler.isEnabled()},function(e){b.actions.get("connectionPoints").funct()},{install:function(e){this.listener=function(){e(f.connectionHandler.isEnabled())};b.addListener("connectionPointsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),a.appendChild(this.createOption(mxResources.get("guides"),function(){return f.graphHandler.guidesEnabled},function(e){b.actions.get("guides").funct()},
{install:function(e){this.listener=function(){e(f.graphHandler.guidesEnabled)};b.addListener("guidesEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})));return a};
DiagramFormatPanel.prototype.addGridOption=function(a){function b(u){var m=f.isFloatUnit()?parseFloat(d.value):parseInt(d.value);m=f.fromUnit(Math.max(f.inUnit(1),isNaN(m)?f.inUnit(10):m));m!=g.getGridSize()&&(mxGraph.prototype.gridSize=m,g.setGridSize(m));d.value=f.inUnit(m)+" "+f.getUnit();mxEvent.consume(u)}var f=this,e=this.editorUi,g=e.editor.graph,d=document.createElement("input");d.style.position="absolute";d.style.textAlign="right";d.style.width="48px";d.style.marginTop="-2px";d.style.height=
"21px";d.style.border="1px solid rgb(160, 160, 160)";d.style.borderRadius="4px";d.style.boxSizing="border-box";d.value=this.inUnit(g.getGridSize())+" "+this.getUnit();var k=this.createStepper(d,b,this.getUnitStep(),null,null,null,this.isFloatUnit());d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;mxEvent.addListener(d,"keydown",function(u){13==u.keyCode?(g.container.focus(),mxEvent.consume(u)):27==u.keyCode&&(d.value=g.getGridSize(),g.container.focus(),mxEvent.consume(u))});
mxEvent.addListener(d,"blur",b);mxEvent.addListener(d,"change",b);d.style.right="78px";k.style.marginTop="-17px";k.style.right="66px";var n=this.createColorOption(mxResources.get("grid"),function(){var u=g.view.gridColor;return g.isGridEnabled()?u:null},function(u){var m=g.isGridEnabled();u==mxConstants.NONE?g.setGridEnabled(!1):(g.setGridEnabled(!0),e.setGridColor(u));d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;m!=g.isGridEnabled()&&(g.defaultGridEnabled=g.isGridEnabled(),
DiagramFormatPanel.prototype.addPaperSize=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var e=PageSetupDialog.addPageFormatPanel(a,"formatpanel",f.pageFormat,function(d){if(null==f.pageFormat||f.pageFormat.width!=d.width||f.pageFormat.height!=d.height)d=new ChangePageSetup(b,null,null,d),d.ignoreColor=!0,d.ignoreImage=!0,f.model.execute(d)});this.addKeyHandler(e.widthInput,function(){e.set(f.pageFormat)});this.addKeyHandler(e.heightInput,
function(){e.set(f.pageFormat)});var g=function(){e.set(f.pageFormat)};b.addListener("pageFormatChanged",g);this.listeners.push({destroy:function(){b.removeListener(g)}});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});return a};DiagramFormatPanel.prototype.addStyleOps=function(a){this.addActions(a,["editData"]);this.addActions(a,["clearDefaultStyle"]);return a};
DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(c,h,q){mxShape.call(this);this.line=c;this.stroke=h;this.strokewidth=null!=q?q:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function f(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function d(){mxActor.call(this)}function k(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function m(){mxCylinder.call(this)}function r(){mxShape.call(this)}function x(){mxShape.call(this)}
function A(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function F(){mxCylinder.call(this)}function K(){mxCylinder.call(this)}function E(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function Q(){mxActor.call(this)}function P(){mxActor.call(this)}function aa(){mxActor.call(this)}function T(){mxActor.call(this)}function U(c,h){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
function ja(){mxRhombus.call(this)}function ta(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Ea(){mxActor.call(this)}function Fa(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
function Pa(c,h,q,l,p,v,w,J,y,Y){w+=y;var N=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){c.ellipse(N.x-p-w,N.y-v-w,2*w,2*w);Y?c.fillAndStroke():c.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==c?c=q:c.add(q))}this.bounds=null!=c?c:new mxRectangle};a.prototype.paintVertexShape=function(c,
h,q,l,p){this.paintTableLine(c,this.line,0,0)};a.prototype.paintTableLine=function(c,h,q,l){if(null!=h){var p=null;c.begin();for(var v=0;v<h.length;v++){var w=h[v];null!=w&&(null==p?c.moveTo(w.x+q,w.y+l):null!=p&&c.lineTo(w.x+q,w.y+l));p=w}c.end();c.stroke()}};a.prototype.intersectsRectangle=function(c){var h=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var q=null,l=0;l<this.line.length&&!h;l++){var p=this.line[l];null!=p&&null!=q&&(h=mxUtils.rectangleIntersectsSegment(c,
q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(c,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),J=this.getTitleSize();0==J||this.outline?Da.prototype.paintVertexShape.apply(this,
arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-h,-q));v||this.outline||!(w&&J<p||!w&&J<l)||this.paintForeground(c,h,q,l,p)};b.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var J=v;v=w;w=J}c.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
s;this.paintTableForeground(c,h,q,l,p)}};b.prototype.paintTableForeground=function(c,h,q,l,p){l=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(p=0;p<l.length;p++)a.prototype.paintTableLine(c,l[p],h,q)};b.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
b);mxUtils.extend(f,b);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),J=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"darkOpacity2",this.darkOpacity2))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(v,p);c.lineTo(0,p-v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(l-v,0),c.lineTo(l,v),c.lineTo(v,v),c.close(),c.fill()),0!=J&&(c.setFillAlpha(Math.abs(J)),c.setFillColor(0>J?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(v,
v),c.lineTo(v,p),c.lineTo(0,p-v),c.close(),c.fill()),c.begin(),c.moveTo(v,p),c.lineTo(v,v),c.lineTo(0,0),c.moveTo(v,v),c.lineTo(l,v),c.end(),c.stroke())};e.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",e);var Na=Math.tan(mxUtils.toRadians(30)),Sa=(.5-Na)/2;mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(g,
mxCylinder);g.prototype.size=6;g.prototype.paintVertexShape=function(c,h,q,l,p){c.setFillColor(this.stroke);var v=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(h+.5*(l-v),q+.5*(p-v),v,v);c.fill();c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};mxCellRenderer.registerShape("waypoint",g);mxUtils.extend(d,mxActor);d.prototype.size=20;d.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/Na);c.translate((l-h)/2,(p-h)/2+h/4);c.moveTo(0,
.25*h);c.lineTo(.5*h,h*Sa);c.lineTo(h,.25*h);c.lineTo(.5*h,(.5-Sa)*h);c.lineTo(0,.25*h);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(k,mxCylinder);k.prototype.size=20;k.prototype.redrawPath=function(c,h,q,l,p,v){h=Math.min(l,p/(.5+Na));v?(c.moveTo(0,.25*h),c.lineTo(.5*h,(.5-Sa)*h),c.lineTo(h,.25*h),c.moveTo(.5*h,(.5-Sa)*h),c.lineTo(.5*h,(1-Sa)*h)):(c.translate((l-h)/2,(p-h)/2),c.moveTo(0,.25*h),c.lineTo(.5*h,h*Sa),c.lineTo(h,.25*h),c.lineTo(h,.75*h),c.lineTo(.5*
h,(1-Sa)*h),c.lineTo(0,.75*h),c.close());c.end()};mxCellRenderer.registerShape("isoCube",k);mxUtils.extend(n,mxCylinder);n.prototype.redrawPath=function(c,h,q,l,p,v){h=Math.min(p/2,Math.round(p/8)+this.strokewidth-1);if(v&&null!=this.fill||!v&&null==this.fill)c.moveTo(0,h),c.curveTo(0,2*h,l,2*h,l,h),v||(c.stroke(),c.begin()),c.translate(0,h/2),c.moveTo(0,h),c.curveTo(0,2*h,l,2*h,l,h),v||(c.stroke(),c.begin()),c.translate(0,h/2),c.moveTo(0,h),c.curveTo(0,2*h,l,2*h,l,h),v||(c.stroke(),c.begin()),c.translate(0,
-h);v||(c.moveTo(0,h),c.curveTo(0,-h/3,l,-h/3,l,h),c.lineTo(l,p-h),c.curveTo(l,p+h/3,0,p+h/3,0,p-h),c.close())};n.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",n);mxUtils.extend(u,mxCylinder);u.prototype.size=30;u.prototype.darkOpacity=0;u.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",
this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(0,p);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),c.close(),c.fill()),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),
c.end(),c.stroke())};mxCellRenderer.registerShape("note",u);mxUtils.extend(m,u);mxCellRenderer.registerShape("note2",m);m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,0)}return null};mxUtils.extend(r,mxShape);r.prototype.isoAngle=15;r.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
"isoAngle",this.isoAngle))))*Math.PI/200;v=Math.min(l*Math.tan(v),.5*p);c.translate(h,q);c.begin();c.moveTo(.5*l,0);c.lineTo(l,v);c.lineTo(l,p-v);c.lineTo(.5*l,p);c.lineTo(0,p-v);c.lineTo(0,v);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,v);c.lineTo(.5*l,2*v);c.lineTo(l,v);c.moveTo(.5*l,2*v);c.lineTo(.5*l,p);c.stroke()};mxCellRenderer.registerShape("isoCube2",r);mxUtils.extend(x,mxShape);x.prototype.size=15;x.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*
p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(A,mxCylinder);A.prototype.size=
15;A.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),w?(c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v)):(c.moveTo(0,0),c.arcTo(.5*l,v,0,0,0,.5*l,v),c.arcTo(.5*l,v,0,0,0,l,0)),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),
w&&(c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke()))};mxCellRenderer.registerShape("cylinder3",A);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l/2,.5*p,l,0);c.quadTo(.5*l,p/2,l,p);c.quadTo(l/2,.5*p,0,p);c.quadTo(.5*l,p/2,0,0);c.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(F,mxCylinder);F.prototype.tabWidth=60;F.prototype.tabHeight=20;F.prototype.tabPosition="right";F.prototype.arcSize=.1;
F.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),J=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));J||(y*=Math.min(l,p));
y=Math.min(y,.5*l,.5*(p-q));h=Math.max(h,y);h=Math.min(l-y,h);w||(y=0);c.begin();"left"==v?(c.moveTo(Math.max(y,0),q),c.lineTo(Math.max(y,0),0),c.lineTo(h,0),c.lineTo(h,q)):(c.moveTo(l-h,q),c.lineTo(l-h,0),c.lineTo(l-Math.max(y,0),0),c.lineTo(l-Math.max(y,0),q));w?(c.moveTo(0,y+q),c.arcTo(y,y,0,0,1,y,q),c.lineTo(l-y,q),c.arcTo(y,y,0,0,1,l,y+q),c.lineTo(l,p-y),c.arcTo(y,y,0,0,1,l-y,p),c.lineTo(y,p),c.arcTo(y,y,0,0,1,0,p-y)):(c.moveTo(0,q),c.lineTo(l,q),c.lineTo(l,p),c.lineTo(0,p));c.close();c.fillAndStroke();
c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(l-30,q+20),c.lineTo(l-20,q+10),c.lineTo(l-10,q+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",F);F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-
h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};mxUtils.extend(K,mxCylinder);K.prototype.arcSize=.1;K.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);c.begin();c.moveTo(v,
h);c.arcTo(h,h,0,0,1,v+h,0);c.lineTo(l-h,0);c.arcTo(h,h,0,0,1,l,h);c.lineTo(l,p-h);c.arcTo(h,h,0,0,1,l-h,p);c.lineTo(v+h,p);c.arcTo(h,h,0,0,1,v,p-h);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(l-40,p-20,10,10,3,3),c.stroke(),c.roundrect(l-20,p-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(l-30,p-15),c.lineTo(l-20,p-15),c.stroke());"connPointRefEntry"==q?(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke()):"connPointRefExit"==
q&&(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*p-5),c.lineTo(15,.5*p+5),c.moveTo(15,.5*p-5),c.lineTo(5,.5*p+5),c.stroke())};K.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",K);mxUtils.extend(E,mxActor);E.prototype.size=30;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=
function(c,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("card",E);mxUtils.extend(O,mxActor);O.prototype.size=.4;O.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c.moveTo(0,h/2);c.quadTo(l/4,1.4*h,l/2,h/2);c.quadTo(3*l/4,h*(1-1.4),l,h/2);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};O.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=c.width,l=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
l,new mxRectangle(c.x,c.y+h,q,l-2*h);h*=q;return new mxRectangle(c.x+h,c.y,q-2*h,l)}return c};mxCellRenderer.registerShape("tape",O);mxUtils.extend(R,mxActor);R.prototype.size=.3;R.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};R.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
0);c.lineTo(l,0);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};mxCellRenderer.registerShape("document",R);var eb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,h,q,l){var p=mxUtils.getValue(this.style,"size");return null!=p?l*Math.max(0,Math.min(1,p)):eb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=2*mxUtils.getValue(this.style,
"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*h),0,0)}return null};A.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};K.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,Math.max(0,h*this.scale))}return null};mxUtils.extend(Q,mxActor);Q.prototype.size=.2;Q.prototype.fixedSize=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l-h,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("parallelogram",Q);mxUtils.extend(P,mxActor);P.prototype.size=.2;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("trapezoid",P);mxUtils.extend(aa,mxActor);aa.prototype.size=.5;aa.prototype.redrawPath=function(c,h,q,l,p){c.setFillColor(null);
h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",aa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,h,q,l,p){c.setStrokeWidth(1);c.setFillColor(this.stroke);
h=l/5;c.rect(0,0,h,p);c.fillAndStroke();c.rect(2*h,0,h,p);c.fillAndStroke();c.rect(4*h,0,h,p);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",T);U.prototype.moveTo=function(c,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;this.firstX=c;this.firstY=h};U.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
U.prototype.quadTo=function(c,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};U.prototype.curveTo=function(c,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};U.prototype.arcTo=function(c,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};U.prototype.lineTo=function(c,h){if(null!=this.lastX&&null!=this.lastY){var q=function(N){return"number"===typeof N?N?0>N?-1:1:N===N?0:NaN:NaN},l=Math.abs(c-
this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;return}var w=Math.round(v/10),J=this.defaultVariation;5>w&&(w=5,J/=3);var y=q(c-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*J;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,c,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=
h};U.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Za=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){Za.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var pb=mxShape.prototype.afterPaint;
mxShape.prototype.afterPaint=function(c){pb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new U(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=mxRectangleShape.prototype.isHtmlAllowed;
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,h,q,l,p){if(null==c.handJiggle||c.handJiggle.constructor!=U)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(v||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)v||null!=this.fill&&this.fill!=mxConstants.NONE||(c.pointerEvents=!1),c.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?v=Math.min(l/2,Math.min(p/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,v=Math.min(l*
v,p*v)),c.moveTo(h+v,q),c.lineTo(h+l-v,q),c.quadTo(h+l,q,h+l,q+v),c.lineTo(h+l,q+p-v),c.quadTo(h+l,q+p,h+l-v,q+p),c.lineTo(h+v,q+p),c.quadTo(h,q+p,h,q+p-v),c.lineTo(h,q+v),c.quadTo(h,q,h+v,q)):(c.moveTo(h,q),c.lineTo(h+l,q),c.lineTo(h+l,q+p),c.lineTo(h,q+p),c.lineTo(h,q)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var h=c.width,q=c.height;c=new mxRectangle(c.x,c.y,h,q);var l=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var p=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;l=Math.max(l,Math.min(h*p,q*p))}c.x+=Math.round(l);c.width-=Math.round(2*l);return c}return c};
fa.prototype.paintForeground=function(c,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.moveTo(h+l-w,q);c.lineTo(h+l-w,q+p);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(c,h,q,l,p){c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};ha.prototype.paintForeground=function(c,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,h,q,l,p){h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),w=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),J=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+J),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(c,h,
q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(0,p),new mxPoint(h,p/2)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("step",
qa);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,
0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(c,h,q,l,p){var v=Math.min(l/5,p/5)+1;c.begin();c.moveTo(h+l/2,q+v);c.lineTo(h+l/2,q+p-v);c.moveTo(h+v,q+p/2);c.lineTo(h+l-v,q+p/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
L);var ab=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};mxRhombus.prototype.paintVertexShape=function(c,h,q,l,p){ab.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(c.setShadow(!1),ab.apply(this,[c,h,q,l,p]))}};mxUtils.extend(H,mxRectangleShape);H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};H.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var J=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],N=this.style["symbol"+v+"Height"],Ca=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ca,
Ka=this.style["symbol"+v+"ArcSpacing"];null!=Ka&&(Ka*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ca+=Ka,Qa+=Ka);Ka=h;var la=q;Ka=J==mxConstants.ALIGN_CENTER?Ka+(l-Y)/2:J==mxConstants.ALIGN_RIGHT?Ka+(l-Y-Ca):Ka+Ca;la=y==mxConstants.ALIGN_MIDDLE?la+(p-N)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-N-Qa):la+Qa;c.save();J=new w;J.style=this.style;w.prototype.paintVertexShape.call(J,c,Ka,la,Y,N);c.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
H);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(c,h,q,l,p,v){v?(c.moveTo(0,0),c.lineTo(l/2,p/2),c.lineTo(l,0),c.end()):(c.moveTo(0,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(0,p),c.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(V,mxShape);V.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.ellipse(l/4,0,l/2,p/4);c.fillAndStroke();c.begin();c.moveTo(l/2,p/4);c.lineTo(l/2,2*p/3);c.moveTo(l/2,p/3);c.lineTo(0,p/3);c.moveTo(l/2,p/3);c.lineTo(l,p/3);c.moveTo(l/
2,2*p/3);c.lineTo(0,p);c.moveTo(l/2,2*p/3);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",V);mxUtils.extend(ea,mxShape);ea.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};ea.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,p/4);c.lineTo(0,3*p/4);c.end();c.stroke();c.begin();c.moveTo(0,p/2);c.lineTo(l/6,p/2);c.end();c.stroke();c.ellipse(l/6,0,5*l/6,p);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
ea);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/8,q+p);c.lineTo(h+7*l/8,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ka);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(l,0);c.lineTo(0,p);c.moveTo(0,0);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
mxShape);W.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};W.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,0);c.end();c.stroke();c.ellipse(0,p/8,l,7*p/8);c.fillAndStroke()};W.prototype.paintForeground=function(c,h,q,l,p){c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,p/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",W);mxUtils.extend(Z,mxRectangleShape);Z.prototype.size=
40;Z.prototype.isHtmlAllowed=function(){return!1};Z.prototype.getLabelBounds=function(c){var h=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,h)};Z.prototype.paintBackground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"participant");null==w||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,h,
q,l,v):(w=this.state.view.graph.cellRenderer.getShape(w),null!=w&&w!=Z&&(w=new w,w.apply(this.state),c.save(),w.paintVertexShape(c,h,q,l,v),c.restore()));v<p&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(h+l/2,q+v),c.lineTo(h+l/2,q+p),c.end(),c.stroke())};Z.prototype.paintForeground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,h,q,l,Math.min(p,
v))};mxCellRenderer.registerShape("umlLifeline",Z);mxUtils.extend(oa,mxShape);oa.prototype.width=60;oa.prototype.height=30;oa.prototype.corner=10;oa.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};oa.prototype.paintBackground=function(c,h,q,l,p){var v=this.corner,w=Math.min(l,Math.max(v,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),J=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(c.setFillColor(y),c.rect(h,q,l,p),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,h,q,l,p),c.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
c.moveTo(h,q);c.lineTo(h+w,q);c.lineTo(h+w,q+Math.max(0,J-1.5*v));c.lineTo(h+Math.max(0,w-v),q+J);c.lineTo(h,q+J);c.close();c.fillAndStroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+l,q);c.lineTo(h+l,q+p);c.lineTo(h,q+p);c.lineTo(h,q+J);c.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(c,h,q,l){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,h,
q,l){l=Z.prototype.size;null!=h&&(l=mxUtils.getValue(h.style,"size",l)*h.view.scale);h=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;q.x<c.getCenterX()&&(h=-1*(h+1));return new mxPoint(c.getCenterX()+h,Math.min(c.y+c.height,Math.max(c.y+l,q.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,h,q,l){l=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,h,q,l){l=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;null!=h.style.backboneSize&&(l+=parseFloat(h.style.backboneSize)*h.view.scale/2-1);if("south"==h.style[mxConstants.STYLE_DIRECTION]||"north"==h.style[mxConstants.STYLE_DIRECTION])return q.x<c.getCenterX()&&(l=-1*(l+1)),new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y,q.y)));q.y<c.getCenterY()&&(l=-1*(l+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,q.x)),c.getCenterY()+l)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,h,q,l){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(h.style,"size",ba.prototype.size))*h.view.scale))),h.style),h,q,l)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?Q.prototype.fixedSize:Q.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+
y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,
"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_WEST?
J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=
h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,c),new mxPoint(w,J)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,c),new mxPoint(w+
y,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y),new mxPoint(N,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(N,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]);N=new mxPoint(N,
c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?I.prototype.fixedSize:I.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p),new mxPoint(N,J)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]);N=new mxPoint(N,
c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(va,mxShape);va.prototype.size=10;va.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));c.translate(h,q);c.ellipse((l-v)/2,0,v,v);c.fillAndStroke();c.begin();c.moveTo(l/2,v);c.lineTo(l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",va);mxUtils.extend(Ja,
mxShape);Ja.prototype.size=10;Ja.prototype.inset=2;Ja.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.begin();c.moveTo(l/2,v+w);c.lineTo(l/2,p);c.end();c.stroke();c.begin();c.moveTo((l-v)/2-w,v/2);c.quadTo((l-v)/2-w,v+w,l/2,v+w);c.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",Ja);mxUtils.extend(Ga,
mxShape);Ga.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Ga);mxUtils.extend(sa,mxShape);sa.prototype.inset=2;sa.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.ellipse(0,v,l-2*v,p-2*v);c.fillAndStroke();c.begin();c.moveTo(l/2,0);c.quadTo(l,0,l,p/2);c.quadTo(l,
p,l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",sa);mxUtils.extend(za,mxCylinder);za.prototype.jettyWidth=20;za.prototype.jettyHeight=10;za.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=Math.min(h,p-h),y=Math.min(J+2*h,p-h);v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,
y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("module",za);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=.3*p-h/2,y=.7*p-h/2;v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Ha,mxRectangleShape);Ha.prototype.paintForeground=
function(c,h,q,l,p){var v=l/2,w=p/2,J=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,J,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Ha);mxUtils.extend(Ta,mxDoubleEllipse);Ta.prototype.outerStroke=!0;Ta.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.min(4,
Math.min(l/5,p/5));0<l&&0<p&&(c.ellipse(h+v,q+v,l-2*v,p-2*v),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(h,q,l,p),c.stroke())};mxCellRenderer.registerShape("endState",Ta);mxUtils.extend(db,Ta);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ua,mxArrowConnector);Ua.prototype.defaultWidth=4;Ua.prototype.isOpenEnded=function(){return!0};Ua.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.size=30;Ya.prototype.isRoundable=function(){return!0};Ya.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
0),new mxPoint(l,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ya);mxUtils.extend(bb,mxRectangleShape);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.isHtmlAllowed=function(){return!1};bb.prototype.paintForeground=function(c,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(h,q+v);c.lineTo(h+l,q+v);c.end();c.stroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",bb);mxUtils.extend(cb,mxActor);cb.prototype.dx=20;cb.prototype.dy=20;cb.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("corner",cb);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(c,h,q,
l,p){c.moveTo(0,0);c.lineTo(0,p);c.end();c.moveTo(l,0);c.lineTo(l,p);c.end();c.moveTo(0,p/2);c.lineTo(l,p/2);c.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("tee",$a);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(c,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(c,
h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
v),new mxPoint(h,p)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",t);mxUtils.extend(z,mxActor);z.prototype.size=.1;z.prototype.fixedSize=20;z.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(h,0);c.lineTo(l,0);c.quadTo(l-2*h,p/2,l,p);c.lineTo(h,p);c.quadTo(h-
2*h,p/2,h,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.close();c.end()};mxCellRenderer.registerShape("or",B);mxUtils.extend(D,mxActor);D.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.quadTo(l/2,p/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",D);mxUtils.extend(G,mxActor);G.prototype.size=20;
G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("loopLimit",G);mxUtils.extend(M,mxActor);M.prototype.size=
.375;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",M);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/2,q+p);c.lineTo(h+l,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke();c.begin();c.moveTo(h+l/2,q);c.lineTo(h+l/2,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",
ia);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h+.145*l,q+.145*p);c.lineTo(h+.855*l,q+.855*p);c.end();c.stroke();c.begin();c.moveTo(h+.855*l,q+.145*p);c.lineTo(h+.145*l,q+.855*p);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",da);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(c,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(c,h,q,l,p){c.begin();c.moveTo(h,q);c.lineTo(h+l,q);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke();c.begin();c.moveTo(h,q+p);c.lineTo(h+l,q+p);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",ta);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
function(c,h,q,l,p){var v=c.state.strokeWidth/2,w=10+2*v,J=q+p-w/2;c.begin();c.moveTo(h,q);c.lineTo(h,q+p);c.moveTo(h+v,J);c.lineTo(h+v+w,J-w/2);c.moveTo(h+v,J);c.lineTo(h+v+w,J+w/2);c.moveTo(h+v,J);c.lineTo(h+l-v,J);c.moveTo(h+l,q);c.lineTo(h+l,q+p);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J-w/2);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J+w/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Da,mxEllipse);Da.prototype.drawHidden=!0;Da.prototype.paintVertexShape=function(c,h,q,
l,p){this.outline||c.setStrokeColor(null);if(null!=this.style){var v=c.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(c.pointerEvents=!1);var J="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),N="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||J||Y||N||y?(c.rect(h,q,l,p),c.fill(),c.pointerEvents=
v,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(h,q),this.outline||J?c.lineTo(h+l,q):c.moveTo(h+l,q),this.outline||Y?c.lineTo(h+l,q+p):c.moveTo(h+l,q+p),this.outline||N?c.lineTo(h,q+p):c.moveTo(h,q+p),(this.outline||y)&&c.lineTo(h,q),c.end(),c.stroke(),c.setLineCap("flat")):c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(h+l/2,q),c.lineTo(h+l/2,q+p)):(c.moveTo(h,q+p/2),c.lineTo(h+l,q+p/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ma);mxUtils.extend(La,mxActor);La.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/2);c.moveTo(0,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(0,p);c.close();c.end()};mxCellRenderer.registerShape("delay",La);mxUtils.extend(Ia,mxActor);Ia.prototype.size=
.2;Ia.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;c.moveTo(0,h);c.lineTo(w,h);c.lineTo(w,0);c.lineTo(v,0);c.lineTo(v,h);c.lineTo(l,h);c.lineTo(l,q);c.lineTo(v,q);c.lineTo(v,p);c.lineTo(w,p);c.lineTo(w,q);c.lineTo(0,q);c.close();c.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Ea,mxActor);Ea.prototype.size=.25;Ea.prototype.redrawPath=function(c,
h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.moveTo(0,p/2);c.lineTo(q,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(q,p);c.close();c.end()};mxCellRenderer.registerShape("display",Ea);mxUtils.extend(Fa,mxActor);Fa.prototype.cst={RECT2:"mxgraph.basic.rect"};Fa.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",
enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Fa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);this.strictDrawShape(c,0,0,l,p)};Fa.prototype.strictDrawShape=function(c,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),J=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Fa.prototype;c.setDashed(Ca);Qa&&""!=Qa&&c.setDashPattern(Qa);c.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);J||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));J||(N=Math.min(Ka*Math.min(l,p)/100));N=Math.min(N,.5*Math.min(l,
p)-y);(la||pa||na||ma)&&"frame"!=Y&&(c.begin(),la?v.moveNW(c,h,q,l,p,w,ua,y,ma):c.moveTo(0,0),la&&v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),na&&v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),ma&&v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(wb),Ca=J=Cb,"none"==wb&&(J=0),"none"==yb&&(Ca=0),c.setGradient(wb,yb,0,0,l,p,Bb,J,Ca),
c.begin(),la?v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma):c.moveTo(N,0),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),ma&&na&&v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),na&&pa&&v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),pa&&la&&v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),la&&ma&&v.paintNWInner(c,h,q,l,p,w,ua,y,N),c.fill(),"none"==zb&&(c.begin(),v.paintFolds(c,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma),c.stroke()));
la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,
h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,
p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&
!ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,
h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),
v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),
v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,
ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,
h,q,l,p,w,ua,y,N,ma,la)),c.stroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,
Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,
h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,
l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),
v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),
v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,
h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,
h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,
w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),c.close(),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,
y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close()),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,
l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),c.close(),v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,
na,ma),c.close(),c.fillAndStroke())):"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==
Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,
h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,
w,Aa,y,N,na,ma),c.close(),c.fillAndStroke());c.begin();v.paintFolds(c,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma);c.stroke()};Fa.prototype.moveNW=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,0):c.moveTo(0,J)};Fa.prototype.moveNE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,0):c.moveTo(l-J,0)};Fa.prototype.moveSE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,p):c.moveTo(l,p-J)};Fa.prototype.moveSW=
function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,p):c.moveTo(J,p)};Fa.prototype.paintNW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,J,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(J,0);else c.lineTo(0,0)};Fa.prototype.paintTop=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==
w&&"square"==v||!y?c.lineTo(l,0):c.lineTo(l-J,0)};Fa.prototype.paintNE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l,J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l,J);else c.lineTo(l,0)};Fa.prototype.paintRight=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(l,p):c.lineTo(l,p-
J)};Fa.prototype.paintLeft=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,0):c.lineTo(0,J)};Fa.prototype.paintSE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l-J,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-J,p);else c.lineTo(l,p)};Fa.prototype.paintBottom=function(c,h,q,
l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,p):c.lineTo(J,p)};Fa.prototype.paintSW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,0,p-J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(0,p-J);else c.lineTo(0,p)};Fa.prototype.paintNWInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==
w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,y,.5*y+J);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,y,y+J);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(y,.5*y+J);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,y+J),c.lineTo(y,y+J)};Fa.prototype.paintTopInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(0,y):Y&&!N?c.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
v?c.lineTo(J+.5*y,y):c.lineTo(J+y,y):c.lineTo(0,y):c.lineTo(0,0)};Fa.prototype.paintNEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-J-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-J-y,y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-J-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,J+y),c.lineTo(l-J-y,y)};Fa.prototype.paintRightInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&
N?c.lineTo(l-y,0):Y&&!N?c.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):c.lineTo(l-y,J+y):c.lineTo(l-y,0):c.lineTo(l,0)};Fa.prototype.paintLeftInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,p):Y&&!N?c.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*
y):c.lineTo(y,p-J-y):c.lineTo(y,p):c.lineTo(0,p)};Fa.prototype.paintSEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-y,p-J-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-y,p-J-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-y,p-J-.5*y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,p-J-y),c.lineTo(l-y,p-J-y)};Fa.prototype.paintBottomInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(l,
p-y):Y&&!N?c.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-J-.5*y,p-y):c.lineTo(l-J-y,p-y):c.lineTo(l,p)};Fa.prototype.paintSWInner=function(c,h,q,l,p,v,w,J,y,Y){if(!Y)c.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)c.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,J+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+
y,J+y,0,0,1,J+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(J+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,p-J-y),c.lineTo(y+J,p-y)};Fa.prototype.moveSWInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,p-J-y):c.moveTo(0,p-y)};Fa.prototype.lineSWInner=
function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,p-J-y):c.lineTo(0,p-y)};Fa.prototype.moveSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-
y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,p-J-y):c.moveTo(l-y,p)};Fa.prototype.lineSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,p-J-y):c.lineTo(l-y,p)};Fa.prototype.moveNEInner=function(c,h,
q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,J+y):c.moveTo(l,y)};Fa.prototype.lineNEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):
("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,J+y):c.lineTo(l,y)};Fa.prototype.moveNWInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.moveTo(y,0):Y&&!N?c.moveTo(0,y):"square"==w||"default"==w&&"square"==v?c.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,J+y):c.moveTo(0,0)};Fa.prototype.lineNWInner=
function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,0):Y&&!N?c.lineTo(0,y):"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,J+y):c.lineTo(0,0)};Fa.prototype.paintFolds=function(c,h,q,l,p,v,w,J,y,Y,N,Ca,Qa,Ka,la){if("fold"==v||"fold"==w||"fold"==J||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
Ca&&la&&(c.moveTo(0,N),c.lineTo(N,N),c.lineTo(N,0)),("fold"==J||"default"==J&&"fold"==v)&&Ca&&Qa&&(c.moveTo(l-N,0),c.lineTo(l-N,N),c.lineTo(l,N)),("fold"==y||"default"==y&&"fold"==v)&&Ka&&Qa&&(c.moveTo(l-N,p),c.lineTo(l-N,p-N),c.lineTo(l,p-N)),("fold"==Y||"default"==Y&&"fold"==v)&&Ka&&la&&(c.moveTo(0,p-N),c.lineTo(N,p-N),c.lineTo(N,p))};mxCellRenderer.registerShape(Fa.prototype.cst.RECT2,Fa);Fa.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
Oa.prototype.paintEdgeShape=function(c,h,q){for(var l=[],p=0;p<h.length;p++)l.push(mxUtils.clone(h[p]));p=c.state.dashed;var v=c.state.fixDash;Oa.prototype.origPaintEdgeShape.apply(this,[c,l,q]);3<=c.state.strokeWidth&&(l=mxUtils.getValue(this.style,"fillColor",null),null!=l&&(c.setStrokeColor(l),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(p,v),Oa.prototype.origPaintEdgeShape.apply(this,[c,h,q])))};mxCellRenderer.registerShape("filledEdge",Oa);"undefined"!==typeof StyleFormatPanel&&function(){var c=
StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=c.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);c.stroke()}});mxMarker.addMarker("box",
function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.x+N/2,Ka=l.y+Ca/2;l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa-N/2-Ca/2,Ka-Ca/2+N/2);c.lineTo(Qa-N/2+Ca/2,Ka-Ca/2-N/2);c.lineTo(Qa+Ca/2-3*N/2,Ka-3*Ca/2-N/2);c.lineTo(Qa-Ca/2-3*N/2,Ka-3*Ca/2+N/2);c.close();Y?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);
c.moveTo(l.x-N/2+Ca/2,l.y-Ca/2-N/2);c.lineTo(l.x-Ca/2-3*N/2,l.y-3*Ca/2+N/2);c.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(c,h,q,l,p,v,w,J,y,Y){var N=l.clone(),Ca=Pa.apply(this,arguments),Qa=p*(w+2*y),Ka=v*(w+2*y);return function(){Ca.apply(this,arguments);c.begin();c.moveTo(N.x-p*y,N.y-v*y);c.lineTo(N.x-2*Qa+p*y,N.y-2*Ka+v*y);c.moveTo(N.x-Qa-Ka+v*y,N.y-Ka+Qa-p*y);c.lineTo(N.x+Ka-Qa-v*y,N.y-Ka-Qa+p*y);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,
h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.clone();l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa.x-Ca,Qa.y+N);c.quadTo(l.x-Ca,l.y+N,l.x,l.y);c.quadTo(l.x+Ca,l.y-N,Qa.x+Ca,Qa.y-N);c.stroke()}});mxMarker.addMarker("async",function(c,h,q,l,p,v,w,J,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var N=l.clone();N.x-=h;N.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){c.begin();c.moveTo(N.x,N.y);J?c.lineTo(N.x-p-v/2,N.y-v+p/2):c.lineTo(N.x+v/2-p,N.y-v-p/2);c.lineTo(N.x-p,N.y-v);c.close();Y?c.fillAndStroke():
c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(h,q,l,p,v,w,J,y,Y,N){v*=J+Y;w*=J+Y;var Ca=p.clone();return function(){h.begin();h.moveTo(Ca.x,Ca.y);y?h.lineTo(Ca.x-v-w/c,Ca.y-w+v/c):h.lineTo(Ca.x+w/c-v,Ca.y-w-v/c);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(c,h,q){return Xa(c,["width"],h,function(l,p,v,w,J){J=c.shape.getEdgeWidth()*c.view.scale+q;return new mxPoint(w.x+p*l/4+v*J/2,w.y+v*l/4-p*J/2)},function(l,p,v,w,J,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
w.y,J.x,J.y,y.x,y.y));c.style.width=Math.round(2*l)/c.view.scale-q})},Xa=function(c,h,q,l,p){return Ra(c,h,function(v){var w=c.absolutePoints,J=w.length-1;v=c.view.translate;var y=c.view.scale,Y=q?w[0]:w[J];w=q?w[1]:w[J-1];J=w.x-Y.x;var N=w.y-Y.y,Ca=Math.sqrt(J*J+N*N);Y=l.call(this,Ca,J/Ca,N/Ca,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,J){var y=c.absolutePoints,Y=y.length-1;v=c.view.translate;var N=c.view.scale,Ca=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ca.x;var Qa=y.y-Ca.y,Ka=Math.sqrt(Y*
Y+Qa*Qa);w.x=(w.x+v.x)*N;w.y=(w.y+v.y)*N;p.call(this,Ka,Y/Ka,Qa/Ka,Ca,y,w,J)})},ib=function(c){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),p=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
2-l.y)/q.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(q.x+q.width-l.x)/q.width))})]}},gb=function(c){return function(h){return[Ra(h,["size"],function(q){var l=Math.max(0,Math.min(.5*q.height,parseFloat(mxUtils.getValue(this.state.style,"size",c))));return new mxPoint(q.x,q.y+l)},function(q,l){this.state.style.size=Math.max(0,l.y-q.y)},!0)]}},Wa=function(c,h,q){return function(l){var p=[Ra(l,["size"],function(v){var w=Math.max(0,Math.min(v.width,Math.min(v.height,parseFloat(mxUtils.getValue(this.state.style,
"size",h)))))*c;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/c)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(c,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(J){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:c));return new mxPoint(J.x+
Math.max(0,Math.min(.5*J.width,Y*(y?1:J.width))),J.getCenterY())},function(J,y,Y){J=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-J.x:Math.max(0,Math.min(q,(y.x-J.x)/J.width));this.state.style.size=J},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(c,h,q){c=null!=c?c:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,J=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*c,J*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(c,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(c){var h=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));return h}},fb=function(c,h){return Ra(c,
[mxConstants.STYLE_ARCSIZE],function(q){var l=null!=h?h:q.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var p=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(q.x+q.width-Math.min(q.width/2,p),q.y+l)}p=Math.max(0,parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(q.x+q.width-Math.min(Math.max(q.width/2,q.height/2),Math.min(q.width,q.height)*
p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(c,h,q,l,p,v,w){var J=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);J.execute=function(Y){for(var N=0;N<h.length;N++)this.copyStyle(h[N]);
w&&w(Y)};J.getPosition=q;J.setPosition=l;J.ignoreGrid=null!=p?p:!0;if(v){var y=J.positionChanged;J.positionChanged=function(){y.apply(this,arguments);c.view.invalidate(this.state.cell);c.view.validate()}}return J},rb={link:function(c){return[mb(c,!0,10),mb(c,!1,10)]},flexArrow:function(c){var h=c.view.graph.gridSize/c.view.scale,q=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),
Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<h&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],
c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<h&&(c.style.endWidth=c.style.startWidth))})));return q},swimlane:function(c){var h=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var q=parseFloat(mxUtils.getValue(c.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));h.push(fb(c,q/2))}h.push(Ra(c,[mxConstants.STYLE_STARTSIZE],function(l){var p=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(c.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(l.getCenterX(),l.y+Math.max(0,Math.min(l.height,p))):new mxPoint(l.x+Math.max(0,Math.min(l.width,p)),l.getCenterY())},function(l,p){c.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=c.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(c.cell)||p.isTableCell(c.cell))){l=p.getSwimlaneDirection(c.style);var v=p.model.getParent(c.cell);v=p.model.getChildCells(v,!0);for(var w=[],J=0;J<v.length;J++)v[J]!=c.cell&&p.isSwimlane(v[J])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[J]))==
l&&w.push(v[J]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(c){return[Ra(c,
!1)]},process:function(c){var h=[Ra(c,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
!1)&&h.push(fb(c));return h},cross:function(c){return[Ra(c,["size"],function(h){var q=Math.min(h.width,h.height);q=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ia.prototype.size)))*q/2;return new mxPoint(h.getCenterX()-q,h.getCenterY()-q)},function(h,q){var l=Math.min(h.width,h.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,h.getCenterY()-q.y)/l*2,Math.max(0,h.getCenterX()-q.x)/l*2)))})]},note:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,
Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",u.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},note2:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",m.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},
function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(c){var h=[Ra(c,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Ya.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
return h},dataStorage:function(c){return[Ra(c,["size"],function(h){var q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),l=parseFloat(mxUtils.getValue(this.state.style,"size",q?z.prototype.fixedSize:z.prototype.size));return new mxPoint(h.x+h.width-l*(q?1:h.width),h.getCenterY())},function(h,q){h="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(h.width,h.x+h.width-q.x)):Math.max(0,Math.min(1,(h.x+h.width-q.x)/h.width));this.state.style.size=h},!1)]},callout:function(c){var h=
[Ra(c,["size","position"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));mxUtils.getValue(this.state.style,"base",ba.prototype.base);return new mxPoint(q.x+p*q.width,q.y+q.height-l)},function(q,l){mxUtils.getValue(this.state.style,"base",ba.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(q.height,q.y+q.height-l.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["position2"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ba.prototype.position2)));return new mxPoint(q.x+l*q.width,q.y+q.height)},function(q,l){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["base"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,
mxUtils.getValue(this.state.style,"position",ba.prototype.position))),v=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"base",ba.prototype.base)));return new mxPoint(q.x+Math.min(q.width,p*q.width+v),q.y+q.height-l)},function(q,l){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(q.width,l.x-q.x-p*q.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
return h},internalStorage:function(c){var h=[Ra(c,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&
h.push(fb(c));return h},module:function(c){return[Ra(c,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",za.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",za.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
q.y-h.y))/2)})]},corner:function(c){return[Ra(c,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",cb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",cb.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(c){return[Ra(c,["dx","dy"],function(h){var q=
Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",$a.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(c){return[Ra(c,["tabWidth","tabHeight"],function(h){var q=
(l=h.width-l);this.state.style.tabWidth=Math.round(l);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},document:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",R.prototype.size))));return new mxPoint(h.x+3*h.width/4,h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},tape:function(c){return[Ra(c,["size"],function(h){var q=
Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",O.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(c){return[Ra(c,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(A.prototype.size),offPageConnector:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(c){var h=[Graph.createHandle(c,["size"],function(q){var l=
Math.max(0,Math.min(q.width/2,q.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(q.x+l,q.y+l)},function(q,l){this.state.style.size=Math.round(100*Math.max(0,Math.min(q.height/2,q.width/2,l.x-q.x)))/100})];c=Graph.createHandle(c,["indent"],function(q){var l=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(q.x+.75*q.width,q.y+l*q.height/200)},function(q,l){this.state.style.indent=Math.round(100*
Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(c);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:qb(aa.prototype.size,!1),display:qb(Ea.prototype.size,!1),cube:Wa(1,e.prototype.size,!1),card:Wa(.5,E.prototype.size,!0),loopLimit:Wa(.5,G.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,Q.prototype.size,Q.prototype.fixedSize)};Graph.createHandle=
Ra;Graph.handleFactory=rb;var xb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=xb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var h=this.state.style.shape;null==mxCellRenderer.defaultShapes[h]&&null==mxStencilRegistry.getStencil(h)?h=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(h=mxConstants.SHAPE_SWIMLANE);h=rb[h];null==h&&null!=this.state.shape&&this.state.shape.isRoundable()&&
(h=rb[mxConstants.SHAPE_RECTANGLE]);null!=h&&(h=h(this.state),null!=h&&(c=null==c?h:c.concat(h)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var kb=new mxPoint(1,0),hb=new mxPoint(1,0),ob=mxUtils.toRadians(-30);kb=mxUtils.getRotatedPoint(kb,
Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,h,q,l,p){var v=c.view;l=null!=l&&0<l.length?l[0]:null;var w=c.absolutePoints,J=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(c,l));null==J&&null!=h&&(J=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,N=hb.x,Ca=hb.y,Qa="horizontal"==mxUtils.getValue(c.style,
"elbow","horizontal");if(null!=w&&null!=J){c=function(la,pa,na){la-=Ka.x;var ma=pa-Ka.y;pa=(Ca*la-N*ma)/(y*Ca-Y*N);la=(Y*la-y*ma)/(Y*N-y*Ca);Qa?(na&&(Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa),p.push(Ka)),Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la)):(na&&(Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la),p.push(Ka)),Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa));p.push(Ka)};var Ka=J;null==l&&(l=new mxPoint(J.x+(w.x-J.x)/2,J.y+(w.y-J.y)/2));c(l.x,l.y,!0);c(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
var sb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,h){if(h==mxEdgeStyle.IsometricConnector){var q=new mxElbowEdgeHandler(c);q.snapToTerminals=!1;return q}return sb.apply(this,arguments)};d.prototype.constraints=[];k.prototype.getConstraints=function(c,h,q){c=[];var l=Math.tan(mxUtils.toRadians(30)),p=(.5-l)/2;l=Math.min(h,q/(.5+l));h=(h-l)/2;q=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h+.5*l,q+l*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.75*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+.5*l,q+(1-p)*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.75*l));return c};r.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;l=Math.min(h*
Math.tan(l),.5*q);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
0,l));return c};ba.prototype.getConstraints=function(c,h,q){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var l=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q-l)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,
mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return c};E.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};e.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return c};A.prototype.getConstraints=function(c,h,q){c=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return c};F.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
"tabWidth",this.tabWidth)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(h+l),p))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,q));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};bb.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
mxEllipse.prototype.constraints;Ya.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.getConstraints=function(c,h,q){c=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(p+h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};za.prototype.getConstraints=function(c,h,q){h=parseFloat(mxUtils.getValue(c,"jettyWidth",za.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,
h),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*c,3.5*c))];q>5*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,h));q>8*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h));q>
15*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};G.prototype.constraints=mxRectangleShape.prototype.constraints;M.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;$a.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*h+.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(h+l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*h-.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return c};cb.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return c};jb.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ca.prototype.getConstraints=
function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return c};t.prototype.getConstraints=function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};Ia.prototype.getConstraints=
function(c,h,q){c=[];var l=Math.min(q,h),p=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(q-p)/2;var v=l+p,w=(h-p)/2;p=w+p;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return c};Z.prototype.constraints=null;B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
Actions.prototype.init=function(){function a(m){d.escape();m=d.deleteCells(d.getDeletableCells(d.getSelectionCells()),m);null!=m&&d.setSelectionCells(m)}function b(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{for(var m=d.getSelectionCells(),r=0;r<m.length;r++)d.cellLabelChanged(m[r],"")}finally{d.getModel().endUpdate()}}}function f(m,r,x,A,C){C.getModel().beginUpdate();try{var F=C.getCellGeometry(m);null!=F&&x&&A&&(x/=A,F=F.clone(),1<x?F.height=F.width/x:F.width=F.height*x,C.getModel().setGeometry(m,
try{var C=d.getEditableCells(d.getSelectionCells());if(0==C.length)x(A.getRoot(),e.copiedValue);else for(r=0;r<C.length;r++)x(C[r],e.copiedValue)}finally{A.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?b():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+
m);e.showDialog(r.container,350,450,!0,!1,function(){r.destroy()});r.init()}}).isEnabled=k};Actions.prototype.addAction=function(a,b,f,e,g){if("..."==a.substring(a.length-3)){a=a.substring(0,a.length-3);var d=mxResources.get(a)+"..."}else d=mxResources.get(a);return this.put(a,new Action(d,b,f,e,g))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};
function Action(a,b,f,e,g){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=f?f:!0;this.iconCls=e;this.shortcut=g;this.visible=!0}mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};
Menus.prototype.init=function(){var a=this.editorUi,b=a.editor.graph,f=mxUtils.bind(b,b.isEnabled);this.customFonts=[];this.customFontSizes=[];this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,g){for(var d=mxUtils.bind(this,function(n){this.styleChange(e,n,[mxConstants.STYLE_FONTFAMILY],[n],null,g,function(){document.execCommand("fontname",!1,n);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTFAMILY],"values",[n],"cells",[b.cellEditor.getEditingCell()]))},function(){b.updateLabelElements(b.getSelectionCells(),
function(u){u.removeAttribute("face");u.style.fontFamily=null;"PRE"==u.nodeName&&b.replaceElement(u,"div")})}).firstChild.nextSibling.style.fontFamily=n}),k=0;k<this.defaultFonts.length;k++)d(this.defaultFonts[k]);e.addSeparator(g);if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)d(this.customFonts[k]);e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[];this.editorUi.fireEvent(new mxEventObject("customFontsChanged"))}),g);e.addSeparator(g)}this.promptChange(e,
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,g,!0,mxUtils.bind(this,function(n){0>mxUtils.indexOf(this.customFonts,n)&&(this.customFonts.push(n),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(e,g){function d(k,n){return e.addItem(k,null,mxUtils.bind(this,function(){null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(d,this.defaultFontSize)&&(d.push(this.defaultFontSize),d.sort(function(x,A){return x-A}));for(var k=mxUtils.bind(this,function(x){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var A=b.cellEditor.textarea.getElementsByTagName("font"),C=0;C<A.length;C++)if("3"==A[C].getAttribute("size")){A[C].removeAttribute("size");A[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[x],"cells",[b.cellEditor.getEditingCell()]))}}),n=mxUtils.bind(this,function(x){this.styleChange(e,x,[mxConstants.STYLE_FONTSIZE],[x],null,g,function(){k(x)})}),u=0;u<d.length;u++)n(d[u]);e.addSeparator(g);if(0<this.customFontSizes.length){var m=0;for(u=0;u<this.customFontSizes.length;u++)0>mxUtils.indexOf(d,this.customFontSizes[u])&&(n(this.customFontSizes[u]),m++);0<m&&e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),g);e.addSeparator(g)}var r=
null;this.promptChange(e,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,g,!0,mxUtils.bind(this,function(x){null!=r&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(r));null!=x&&0<x.length&&(this.customFontSizes.push(x),k(x))}),null,function(){r=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},g);e.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},g);this.addMenuItems(e,["-","rotation"],g)})));this.put("align",new Menu(mxUtils.bind(this,function(e,g){var d=1<this.editorUi.getSelectionState().vertices.length;e.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},g,null,d);e.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},g,null,d);e.addItem(mxResources.get("rightAlign"),
null,function(){b.alignCells(mxConstants.ALIGN_RIGHT)},g,null,d);e.addSeparator(g);e.addItem(mxResources.get("topAlign"),null,function(){b.alignCells(mxConstants.ALIGN_TOP)},g,null,d);e.addItem(mxResources.get("middle"),null,function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},g,null,d);e.addItem(mxResources.get("bottomAlign"),null,function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},g,null,d);this.addMenuItems(e,["-","snapToGrid"],g)})));this.put("distribute",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("horizontal"),
null,function(){b.distributeCells(!0)},g);e.addItem(mxResources.get("vertical"),null,function(){b.distributeCells(!1)},g)})));this.put("line",new Menu(mxUtils.bind(this,function(e,g){var d=b.view.getState(b.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(e,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",g,!0).setAttribute("title",mxResources.get("straight")),
mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",g,!0,null,!0).setAttribute("title",mxResources.get("simpleArrow")))})));this.put("layout",new Menu(mxUtils.bind(this,function(e,g){var d=mxUtils.bind(this,function(n,u){this.editorUi.prompt(mxResources.get("spacing"),n,u)}),k=mxUtils.bind(this,function(n){var u=b.getSelectionCell(),m=null;null==u||0==b.getModel().getChildCount(u)?0==b.getModel().getEdgeCount(u)&&(m=b.findTreeRoots(b.getDefaultParent())):
m=b.findTreeRoots(u);null!=m&&0<m.length&&(u=m[0]);null!=u&&this.editorUi.executeLayout(function(){n.execute(b.getDefaultParent(),u);b.isSelectionEmpty()||(u=b.getModel().getParent(u),b.getModel().isVertex(u)&&b.updateGroupBounds([u],2*b.gridSize,!0))},!0)});e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(b,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var u=b.getSelectionCells();n.execute(b.getDefaultParent(),0==u.length?
null:u)},!0)}),g);e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(b,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var u=b.getSelectionCells();n.execute(b.getDefaultParent(),0==u.length?null:u)},!0)}),g);e.addSeparator(g);e.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(b,!0);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||
(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(b,!1);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var n=new mxRadialTreeLayout(b);n.levelDistance=80;n.autoRadius=!0;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),
g);e.addSeparator(g);e.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var n=new mxFastOrganicLayout(b);d(n.forceConstant,mxUtils.bind(this,function(u){n.forceConstant=u;this.editorUi.executeLayout(function(){var m=b.getSelectionCell();if(null==m||0==b.getModel().getChildCount(m))m=b.getDefaultParent();n.execute(m);b.getModel().isVertex(m)&&b.updateGroupBounds([m],2*b.gridSize,!0)},!0)}))}),g);e.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var n=new mxCircleLayout(b);
this.editorUi.executeLayout(function(){var u=b.getSelectionCell();if(null==u||0==b.getModel().getChildCount(u))u=b.getDefaultParent();n.execute(u);b.getModel().isVertex(u)&&b.updateGroupBounds([u],2*b.gridSize,!0)},!0)}),g)})));this.put("navigation",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "),g)})));this.put("arrange",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["toFront","toBack","bringForward",
"sendBackward","-"],g);this.addSubmenu("direction",e,g);this.addMenuItems(e,["turn","-"],g);this.addSubmenu("align",e,g);this.addSubmenu("distribute",e,g);e.addSeparator(g);this.addSubmenu("navigation",e,g);this.addSubmenu("insert",e,g);this.addSubmenu("layout",e,g);this.addMenuItems(e,"- group ungroup removeFromGroup - clearWaypoints autosize".split(" "),g)}))).isEnabled=f;this.put("insert",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["insertLink","insertImage"],g)})));this.put("view",
new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,(null!=this.editorUi.format?["formatPanel"]:[]).concat("outline layers - pageView pageScale - scrollbars tooltips - grid guides - connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),g))})));this.put("viewPanels",new Menu(mxUtils.bind(this,function(e,g){null!=this.editorUi.format&&this.addMenuItems(e,["formatPanel"],g);this.addMenuItems(e,["outline","layers"],g)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(e,
g){this.addMenuItems(e,["resetView","-"],g);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],k=0;k<d.length;k++)(function(n){e.addItem(100*n+"%",null,function(){b.zoomTo(n)},g)})(d[k]);this.addMenuItems(e,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),g)})));this.put("file",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"new open - save saveAs - import export - pageSetup print".split(" "),g)})));this.put("edit",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,
"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["help","-","about"])})))};Menus.prototype.put=function(a,b){return this.menus[a]=b};
Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,b,f,e){var g=this.get(a);null!=g&&(g=g.isEnabled(),b.showDisabled||g)&&(f=b.addItem(e||mxResources.get(a),null,null,f,null,g),this.addMenu(a,b,f))};Menus.prototype.addMenu=function(a,b,f){var e=this.get(a);null!=e&&(b.showDisabled||e.isEnabled())&&this.get(a).execute(b,f)};
Menus.prototype.addInsertTableCellItem=function(a,b){var f=this.editorUi.editor.graph,e=f.getSelectionCell(),g=f.getCurrentCellStyle(e);1<f.getSelectionCount()&&(f.isTableCell(e)&&(e=f.model.getParent(e)),f.isTableRow(e)&&(e=f.model.getParent(e)));var d=f.isTable(e)||f.isTableRow(e)||f.isTableCell(e),k=f.isStack(e)||f.isStackChild(e),n=d,u=d;k&&(g=f.isStack(e)?g:f.getCellStyle(f.model.getParent(e)),u="0"==g.horizontalStack,n=!u);null!=b||!d&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(m,
x&&0<x.length&&(f.scrollCellToVisible(x[0]),f.setSelectionCells(x))}),b):(n&&(b=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableColumn(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),b.setAttribute("title",mxResources.get("insertColumnBefore")),b=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableColumn(e,!1)}catch(m){this.editorUi.handleError(m)}}),
null,"geIcon geSprite geSprite-insertcolumnafter"),b.setAttribute("title",mxResources.get("insertColumnAfter")),b=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=e)try{k?f.deleteLane(e):f.deleteTableColumn(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),b.setAttribute("title",mxResources.get("deleteColumn"))),u&&(b=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableRow(e,
!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),b.setAttribute("title",mxResources.get("insertRowBefore")),b=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableRow(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),b.setAttribute("title",mxResources.get("insertRowAfter")),b=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?
f.deleteLane(e):f.deleteTableRow(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),b.setAttribute("title",mxResources.get("deleteRow")),u=this.editorUi.getSelectionState(),null!=u.mergeCell?this.addMenuItem(a,"mergeCells"):(1<u.style.colspan||1<u.style.rowspan)&&this.addMenuItem(a,"unmergeCells")))};
Menus.prototype.addInsertTableItem=function(a,b,f,e){function g(C){n=d.getParentByName(mxEvent.getSource(C),"TD");var F=!1;if(null!=n){k=d.getParentByName(n,"TR");var K=mxEvent.isMouseEvent(C)?2:4,E=x,O=Math.min(20,k.sectionRowIndex+K);K=Math.min(20,n.cellIndex+K);for(var R=E.rows.length;R<O;R++)for(var Q=E.insertRow(R),P=0;P<E.rows[0].cells.length;P++)Q.insertCell(-1);for(R=0;R<E.rows.length;R++)for(Q=E.rows[R],P=Q.cells.length;P<K;P++)Q.insertCell(-1);A.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
1);for(E=0;E<x.rows.length;E++)for(O=x.rows[E],K=0;K<O.cells.length;K++)R=O.cells[K],E==k.sectionRowIndex&&K==n.cellIndex&&(F="blue"==R.style.backgroundColor),R.style.backgroundColor=E<=k.sectionRowIndex&&K<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return F}e=null!=e?e:!0;b=null!=b?b:mxUtils.bind(this,function(C,F,K){var E=this.editorUi.editor.graph;C=E.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=E.cellEditor.textarea){E.getParentByName(C,"TR");var O=E.cellEditor.textarea.getElementsByTagName("table");
"4px";A.innerHTML="1x1";a.firstChild.appendChild(A);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var F=g(C);null!=n&&null!=k&&F&&(b(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
Menus.prototype.edgeStyleChange=function(a,b,f,e,g,d,k,n){return this.showIconOnly(a.addItem(b,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var A=m[x];if(u.getModel().isEdge(A)){if(k){var C=u.getCellGeometry(A);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(A,C))}for(var F=0;F<f.length;F++)u.setCellStyles(f[F],e[F],[A]);r.push(A)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",f,"values",e,"cells",r))}finally{u.getModel().endUpdate()}}),d,g))};Menus.prototype.showIconOnly=function(a){var b=a.getElementsByTagName("td");for(i=0;i<b.length;i++)"mxPopupMenuItem"==b[i].getAttribute("class")&&(b[i].style.display="none");return a};
Menus.prototype.styleChange=function(a,b,f,e,g,d,k,n,u){var m=this.createStyleChangeFunction(f,e);a=a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph;null!=k&&r.cellEditor.isContentEditing()?k():m(n)}),d,g);u&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(f){var e=this.editorUi.editor.graph;e.stopEditing(!1);e.getModel().beginUpdate();try{for(var g=e.getEditableCells(e.getSelectionCells()),d=!1,k=0;k<a.length;k++)if(e.setCellStyles(a[k],b[k],g),a[k]==mxConstants.STYLE_ALIGN&&e.updateLabelElements(g,function(n){n.removeAttribute("align");n.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])d=!0;if(d)for(d=0;d<g.length;d++)0==e.model.getChildCount(g[d])&&
e.autoSizeCell(g[d],!1);null!=f&&f();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",b,"cells",g))}finally{e.getModel().endUpdate()}})};
Menus.prototype.promptChange=function(a,b,f,e,g,d,k,n,u,m){return a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=e,A=r.getView().getState(r.getSelectionCell());null!=A&&(x=A.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(F){if(null!=F&&0<F.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,F)}finally{r.getModel().endUpdate()}}null!=n&&n(F)}}),mxResources.get("enterValue")+
Menus.prototype.pickColor=function(a,b,f){var e=this.editorUi,g=e.editor.graph,d=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=b&&g.cellEditor.isContentEditing()){var k=g.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,f||g.shapeForegroundColor,mxUtils.bind(this,function(u){g.cellEditor.restoreSelection(k);document.execCommand(b,!1,u!=mxConstants.NONE?u:"transparent");var m={forecolor:mxConstants.STYLE_FONTCOLOR,
backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[b];null!=m&&e.fireEvent(new mxEventObject("styleChanged","keys",[m],"values",[u],"cells",[g.cellEditor.getEditingCell()]))}),function(){g.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,d,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;f=g.getView().getState(g.getSelectionCell());var n=mxConstants.NONE;null!=f&&(n=f.style[a]||n);n==mxConstants.NONE?
(n=g.shapeBackgroundColor.substring(1),this.colorDialog.picker.fromString(n),this.colorDialog.colorInput.value=mxConstants.NONE):this.colorDialog.picker.fromString(mxUtils.rgba2hex(n));this.editorUi.showDialog(this.colorDialog.container,230,d,!0,!0);this.colorDialog.init()}};Menus.prototype.toggleStyle=function(a,b){var f=this.editorUi.editor.graph;b=f.toggleCellStyles(a,b);this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[a],"values",[b],"cells",f.getSelectionCells()))};
Menus.prototype.addMenuItem=function(a,b,f,e,g,d){var k=this.editorUi.actions.get(b);return null!=k&&(a.showDisabled||k.isEnabled())&&k.visible?(b=a.addItem(d||k.label,null,function(n){k.funct(e,n)},f,g,k.isEnabled()),k.toggleAction&&k.isSelected()&&a.addCheckmark(b,Editor.checkmarkImage),this.addShortcut(b,k),b):null};
Menus.prototype.addShortcut=function(a,b){if(null!=b.shortcut){a=a.firstChild.nextSibling.nextSibling;var f=document.createElement("span");f.style.color="gray";mxUtils.write(f,b.shortcut);a.appendChild(f)}};Menus.prototype.addMenuItems=function(a,b,f,e,g){for(var d=0;d<b.length;d++)"-"==b[d]?a.addSeparator(f):this.addMenuItem(a,b[d],f,e,null!=g?g[d]:null)};
Menus.prototype.createPopupMenu=function(a,b,f){a.smartSeparators=!0;this.addPopupMenuHistoryItems(a,b,f);this.addPopupMenuEditItems(a,b,f);this.addPopupMenuStyleItems(a,b,f);this.addPopupMenuArrangeItems(a,b,f);this.addPopupMenuCellItems(a,b,f);this.addPopupMenuSelectionItems(a,b,f)};Menus.prototype.addPopupMenuHistoryItems=function(a,b,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["undo","redo"],null,f)};
Menus.prototype.addPopupMenuEditItems=function(a,b,f){this.editorUi.editor.graph.isSelectionEmpty()?this.addMenuItems(a,["pasteHere"],null,f):this.addMenuItems(a,"delete - cut copy - duplicate".split(" "),null,f)};Menus.prototype.addPopupMenuStyleItems=function(a,b,f){1==this.editorUi.editor.graph.getSelectionCount()?this.addMenuItems(a,["-","setAsDefaultStyle"],null,f):this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","clearDefaultStyle"],null,f)};
Menus.prototype.addPopupMenuArrangeItems=function(a,b,f){var e=this.editorUi.editor.graph;0<e.getEditableCells(e.getSelectionCells()).length&&(this.addMenuItems(a,["-","toFront","toBack"],null,f),1==e.getSelectionCount()&&this.addMenuItems(a,["bringForward","sendBackward"],null,f));1<e.getSelectionCount()?this.addMenuItems(a,["-","group"],null,f):1==e.getSelectionCount()&&!e.getModel().isEdge(b)&&!e.isSwimlane(b)&&0<e.getModel().getChildCount(b)&&e.isCellEditable(b)&&this.addMenuItems(a,["-","ungroup"],
Menus.prototype.addPopupMenuCellItems=function(a,b,f){var e=this.editorUi.editor.graph,g=e.view.getState(b);a.addSeparator();if(null!=g){var d=!1;1==e.getSelectionCount()&&e.getModel().isEdge(b)&&(a.addSeparator(),this.addSubmenu("line",a));if(e.getModel().isEdge(b)&&"entityRelationEdgeStyle"!=mxUtils.getValue(g.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(g.style,mxConstants.STYLE_SHAPE,null)){g=e.selectionCellsHandler.getHandler(b);var k=!1;g instanceof mxEdgeHandler&&null!=g.bends&&
2<g.bends.length&&(d=g.getHandleForEvent(e.updateMouseEvent(new mxMouseEvent(f))),0<d&&d<g.bends.length-1&&(null==g.bends[d]||null==g.bends[d].node||""==g.bends[d].node.style.opacity)&&(k=this.editorUi.actions.get("removeWaypoint"),k.handler=g,k.index=d,k=!0));a.addSeparator();this.addMenuItem(a,"turn",null,f,null,mxResources.get("reverse"));this.addMenuItems(a,[k?"removeWaypoint":"addWaypoint"],null,f);g=e.getModel().getGeometry(b);d=null!=g&&null!=g.points&&0<g.points.length}1==e.getSelectionCount()&&
(d||e.getModel().isVertex(b)&&0<e.getModel().getEdgeCount(b))&&this.addMenuItems(a,["-","clearWaypoints"],null,f);1==e.getSelectionCount()&&e.isCellEditable(b)&&this.addPopupMenuCellEditItems(a,b,f)}};
Menus.prototype.addPopupMenuCellEditItems=function(a,b,f,e){var g=this.editorUi.editor.graph,d=g.view.getState(b);this.addMenuItems(a,["-","editStyle","editData","editLink"],e,f);g.getModel().isVertex(b)&&null!=mxUtils.getValue(d.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",e,f).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...",this.addMenuItem(a,"crop",e,f));(g.getModel().isVertex(b)&&0==g.getModel().getChildCount(b)||g.isContainer(b))&&this.addMenuItem(a,
"editConnectionPoints",e,f)};Menus.prototype.addPopupMenuSelectionItems=function(a,b,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","selectVertices","selectEdges","selectAll"],null,f)};
Menus.prototype.createMenubar=function(a){for(var b=new Menubar(this.editorUi,a),f=this.defaultMenuItems,e=0;e<f.length;e++)mxUtils.bind(this,function(g){var d=b.addMenu(mxResources.get(f[e]),mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));this.menuCreated(g,d)})(this.get(f[e]));return b};
Menus.prototype.menuCreated=function(a,b,f){null!=b&&(f=null!=f?f:"geItem",a.addListener("stateChanged",function(){(b.enabled=a.enabled)?(b.className=f,8==document.documentMode&&(b.style.color="")):(b.className=f+" mxDisabled",8==document.documentMode&&(b.style.color="#c3c3c3"))}))};function Menubar(a,b){this.editorUi=a;this.container=b}Menubar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};
Menubar.prototype.addMenu=function(a,b,f){var e=document.createElement("a");e.className="geItem";mxUtils.write(e,a);this.addMenuHandler(e,b);null!=f?this.container.insertBefore(e,f):this.container.appendChild(e);return e};
Menubar.prototype.addMenuHandler=function(a,b){if(null!=b){var f=!0,e=mxUtils.bind(this,function(g){if(f&&(null==a.enabled||a.enabled)){this.editorUi.editor.graph.popupMenuHandler.hideMenu();var d=new mxPopupMenu(b);d.div.className+=" geMenubarMenu";d.smartSeparators=!0;d.showDisabled=!0;d.autoExpand=!0;d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();d.destroy()});var k=mxUtils.getOffset(a);d.popup(k.x,k.y+a.offsetHeight,null,
function Menu(a,b){mxEventSource.call(this);this.funct=a;this.enabled=null!=b?b:!0}mxUtils.extend(Menu,mxEventSource);Menu.prototype.isEnabled=function(){return this.enabled};Menu.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Menu.prototype.execute=function(a,b){this.funct(a,b)};EditorUi.prototype.createMenus=function(){return new Menus(this)};function Toolbar(a,b){this.editorUi=a;this.container=b;this.staticElements=[];this.init();this.gestureHandler=mxUtils.bind(this,function(f){null!=this.editorUi.currentMenu&&mxEvent.getSource(f)!=this.editorUi.currentMenu.div&&this.hideMenu()});mxEvent.addGestureListeners(document,this.gestureHandler)}
Toolbar.prototype.init=function(){var a=screen.width;a-=740<screen.height?56:0;if(700<=a){var b=this.addMenu("",mxResources.get("view")+" ("+mxResources.get("panTooltip")+")",!0,"viewPanels",null,!0);this.addDropDownArrow(b,"geSprite-formatpanel",38,50,-4,-3,36,-8);this.addSeparator()}var f=this.addMenu("",mxResources.get("zoom")+" (Alt+Mousewheel)",!0,"viewZoom",null,!0);f.showDisabled=!0;f.style.whiteSpace="nowrap";f.style.position="relative";f.style.overflow="hidden";f.style.width=EditorUi.compactUi?
"50px":"36px";420<=a&&(this.addSeparator(),b=this.addItems(["zoomIn","zoomOut"]),b[0].setAttribute("title",mxResources.get("zoomIn")+" ("+this.editorUi.actions.get("zoomIn").shortcut+")"),b[1].setAttribute("title",mxResources.get("zoomOut")+" ("+this.editorUi.actions.get("zoomOut").shortcut+")"));this.updateZoom=mxUtils.bind(this,function(){f.innerHTML=Math.round(100*this.editorUi.editor.graph.view.scale)+"%";this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.getElementsByTagName("img")[0].style.right=
"1px",f.getElementsByTagName("img")[0].style.top="5px")});this.editorUi.editor.graph.view.addListener(mxEvent.EVENT_SCALE,this.updateZoom);this.editorUi.editor.addListener("resetGraphView",this.updateZoom);b=this.addItems(["-","undo","redo"]);b[1].setAttribute("title",mxResources.get("undo")+" ("+this.editorUi.actions.get("undo").shortcut+")");b[2].setAttribute("title",mxResources.get("redo")+" ("+this.editorUi.actions.get("redo").shortcut+")");320<=a&&(b=this.addItems(["-","delete"]),b[1].setAttribute("title",
Toolbar.prototype.appendDropDownImageHtml=function(a){var b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",Toolbar.prototype.dropDownImage);a.appendChild(b);b.style.position="absolute";b.style.right="4px";b.style.top=(EditorUi.compactUi?6:8)+"px"};
"22px",a.getElementsByTagName("img")[0].style.top="5px");var b=this.editorUi.menus.get("insert");null!=b&&"function"===typeof a.setEnabled&&b.addListener("stateChanged",function(){a.setEnabled(b.enabled)});return a};
Toolbar.prototype.addDropDownArrow=function(a,b,f,e,g,d,k,n){g=EditorUi.compactUi?g:n;a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.position="relative";a.style.width=e-(null!=k?k:32)+"px";a.innerHTML='<div class="geSprite '+b+'"></div>';this.appendDropDownImageHtml(a);b=a.getElementsByTagName("div")[0];b.style.marginLeft=g+"px";b.style.marginTop=d+"px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left="24px",a.getElementsByTagName("img")[0].style.top="5px",a.style.width=
f-10+"px")};Toolbar.prototype.setFontName=function(a){if(null!=this.fontMenu){this.fontMenu.innerHTML="";var b=document.createElement("div");b.style.display="inline-block";b.style.overflow="hidden";b.style.textOverflow="ellipsis";b.style.maxWidth="66px";mxUtils.write(b,a);this.fontMenu.appendChild(b);this.appendDropDownImageHtml(this.fontMenu)}};
Toolbar.prototype.setFontSize=function(a){if(null!=this.sizeMenu){this.sizeMenu.innerHTML="";var b=document.createElement("div");b.style.display="inline-block";b.style.overflow="hidden";b.style.textOverflow="ellipsis";b.style.maxWidth="24px";mxUtils.write(b,a);this.sizeMenu.appendChild(b);this.appendDropDownImageHtml(this.sizeMenu)}};
Toolbar.prototype.createTextToolbar=function(){var a=this.editorUi,b=a.editor.graph,f=this.addMenu("",mxResources.get("style"),!0,"formatBlock");f.style.position="relative";f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.innerHTML=mxResources.get("style");this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.style.paddingRight="18px",f.getElementsByTagName("img")[0].style.right="1px",f.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.fontMenu=this.addMenu("",mxResources.get("fontFamily"),
d.addItem("",null,mxUtils.bind(this,function(k){b.cellEditor.alignText(mxConstants.ALIGN_LEFT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",[b.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-left");g.setAttribute("title",mxResources.get("left"));g=d.addItem("",null,mxUtils.bind(this,function(k){b.cellEditor.alignText(mxConstants.ALIGN_CENTER,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],
"values",[mxConstants.ALIGN_CENTER],"cells",[b.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-center");g.setAttribute("title",mxResources.get("center"));g=d.addItem("",null,mxUtils.bind(this,function(k){b.cellEditor.alignText(mxConstants.ALIGN_RIGHT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",[b.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-right");g.setAttribute("title",mxResources.get("right"));
"-2px";e.appendChild(f);this.appendDropDownImageHtml(e);EditorUi.compactUi&&(e.getElementsByTagName("img")[0].style.left="22px",e.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.addButton("geIcon geSprite geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode();0<b.cellEditor.textarea.innerHTML.length&&("&nbsp;"!=b.cellEditor.textarea.innerHTML||!b.cellEditor.clearOnChange)&&window.setTimeout(function(){document.execCommand("selectAll",!1,null)})});
!1,mxUtils.bind(this,function(d){var k=b.getSelectedElement(),n=b.getParentByNames(k,["TD","TH"],b.cellEditor.text2),u=b.getParentByName(k,"TR",b.cellEditor.text2);if(null==u)this.editorUi.menus.addInsertTableItem(d);else{var m=b.getParentByName(u,"TABLE",b.cellEditor.text2);k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex:0))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnbefore");k.setAttribute("title",mxResources.get("insertColumnBefore"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex+1:-1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnafter");k.setAttribute("title",mxResources.get("insertColumnAfter"));k=d.addItem("Delete column",null,mxUtils.bind(this,function(){if(null!=n)try{b.deleteColumn(m,n.cellIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deletecolumn");k.setAttribute("title",mxResources.get("deleteColumn"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowbefore");k.setAttribute("title",mxResources.get("insertRowBefore"));k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex+1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowafter");k.setAttribute("title",mxResources.get("insertRowAfter"));k=d.addItem("",
null,mxUtils.bind(this,function(){try{b.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=d.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,
(g.getElementsByTagName("img")[0].style.left="22px",g.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,b,f,e,g,d,k){var n=this.editorUi.menus.get(e),u=this.addMenuFunction(a,b,f,function(){n.funct.apply(n,arguments)},g,d);k||"function"!==typeof u.setEnabled||n.addListener("stateChanged",function(){u.setEnabled(n.enabled)});return u};
Toolbar.prototype.addMenuFunction=function(a,b,f,e,g,d){return this.addMenuFunctionInContainer(null!=g?g:this.container,a,b,f,e,d)};Toolbar.prototype.addMenuFunctionInContainer=function(a,b,f,e,g,d){b=e?this.createLabel(b):this.createButton(b);this.initElement(b,f);this.addMenuHandler(b,e,g,d);a.appendChild(b);return b};Toolbar.prototype.addSeparator=function(a){a=null!=a?a:this.container;var b=document.createElement("div");b.className="geSeparator";a.appendChild(b);return b};
Toolbar.prototype.addItems=function(a,b,f){for(var e=[],g=0;g<a.length;g++){var d=a[g];"-"==d?e.push(this.addSeparator(b)):e.push(this.addItem("geSprite-"+d.toLowerCase(),d,b,f))}return e};Toolbar.prototype.addItem=function(a,b,f,e){var g=this.editorUi.actions.get(b),d=null;null!=g&&(b=g.label,null!=g.shortcut&&(b+=" ("+g.shortcut+")"),d=this.addButton(a,b,g.funct,f),e||"function"!==typeof d.setEnabled||(d.setEnabled(g.enabled),g.addListener("stateChanged",function(){d.setEnabled(g.enabled)})));return d};
Toolbar.prototype.addButton=function(a,b,f,e){a=this.createButton(a);e=null!=e?e:this.container;this.initElement(a,b);this.addClickHandler(a,f);e.appendChild(a);return a};Toolbar.prototype.initElement=function(a,b){null!=b&&a.setAttribute("title",b);this.addEnabledState(a)};Toolbar.prototype.addEnabledState=function(a){var b=a.className;a.setEnabled=function(f){a.enabled=f;a.className=f?b:b+" mxDisabled"};a.setEnabled(!0)};
Toolbar.prototype.addClickHandler=function(a,b){null!=b&&(mxEvent.addListener(a,"click",function(f){a.enabled&&b(f);mxEvent.consume(f)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(f){f.preventDefault()})))};Toolbar.prototype.createButton=function(a){var b=document.createElement("a");b.className="geButton";var f=document.createElement("div");null!=a&&(f.className="geSprite "+a);b.appendChild(f);return b};
Toolbar.prototype.createLabel=function(a,b){b=document.createElement("a");b.className="geLabel";mxUtils.write(b,a);return b};
Toolbar.prototype.addMenuHandler=function(a,b,f,e){if(null!=f){var g=this.editorUi.editor.graph,d=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(n){if(k&&(null==a.enabled||a.enabled)){g.popupMenuHandler.hideMenu();d=new mxPopupMenu(f);d.div.className+=" geToolbarMenu";d.showDisabled=e;d.labels=b;d.autoExpand=!0;!b&&d.div.scrollHeight>d.div.clientHeight&&(d.div.style.width="40px");d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();
d.destroy()});var u=mxUtils.getOffset(a);d.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(d,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==d||null==d.div||null==d.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,f,e){function g(){var K=k.value;/(^#?[a-zA-Z0-9]*$)/.test(K)?("none"!=K&&"#"!=
A=r(this.defaultColors);A.style.marginBottom="16px";f.appendChild(m);A=document.createElement("div");A.style.textAlign="right";A.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});C.className="geBtn";a.editor.cancelFirst&&A.appendChild(C);var F=mxUtils.button(mxResources.get("apply"),g);F.className="geBtn gePrimaryBtn";A.appendChild(F);a.editor.cancelFirst||A.appendChild(C);null!=b&&("none"==b?(u.fromString("ffffff"),k.value="none"):u.fromString(b));
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var b=this.editorUi.editor.graph;b.getModel().beginUpdate();try{b.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,b){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=b&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var b=document.createElement("div");b.setAttribute("align","center");var f=document.createElement("h3");mxUtils.write(f,mxResources.get("about")+" GraphEditor");b.appendChild(f);f=document.createElement("img");f.style.border="0px";f.setAttribute("width","176");f.setAttribute("width","151");f.setAttribute("src",IMAGE_PATH+"/logo.png");b.appendChild(f);mxUtils.br(b);mxUtils.write(b,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(b);f=document.createElement("a");f.setAttribute("href",
"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");b.appendChild(f);mxUtils.br(b);mxUtils.br(b);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";b.appendChild(f);this.container=b},TextareaDialog=function(a,b,f,e,g,d,k,n,u,m,r,x,A,C,F){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
n.style.position="absolute";n.style.left="0px";n.style.right="0px";var K=n.cloneNode(!1),E=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";K.style.top="20px";K.style.bottom="64px";E.style.bottom="0px";E.style.height="60px";E.style.textAlign="center";mxUtils.write(n,b);k.appendChild(n);k.appendChild(K);k.appendChild(E);null!=F&&n.appendChild(F);var O=document.createElement("textarea");r&&O.setAttribute("wrap","off");O.setAttribute("spellcheck","false");O.setAttribute("autocorrect","off");O.setAttribute("autocomplete",
"off");O.setAttribute("autocapitalize","off");mxUtils.write(O,f||"");O.style.resize="none";O.style.outline="none";O.style.position="absolute";O.style.boxSizing="border-box";O.style.top="0px";O.style.left="0px";O.style.height="100%";O.style.width="100%";this.textarea=O;this.init=function(){O.focus();O.scrollTop=0};K.appendChild(O);null!=A&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(A)}),b.className="geBtn",E.appendChild(b));if(null!=C)for(b=0;b<C.length;b++)(function(Q,
P,aa){Q=mxUtils.button(Q,function(T){P(T,O)});null!=aa&&Q.setAttribute("title",aa);Q.className="geBtn";E.appendChild(Q)})(C[b][0],C[b][1],C[b][2]);d=mxUtils.button(d||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});d.setAttribute("title","Escape");d.className="geBtn";a.editor.cancelFirst&&E.appendChild(d);null!=u&&u(E,O);if(null!=e){var R=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();e(O.value)});R.setAttribute("title","Ctrl+Enter");R.className="geBtn gePrimaryBtn";
E.appendChild(R);mxEvent.addListener(O,"keypress",function(Q){13==Q.keyCode&&mxEvent.isControlDown(Q)&&R.click()})}a.editor.cancelFirst||E.appendChild(d);this.container=k},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
f.style.resize="none";f.style.width="600px";f.style.height="360px";f.style.marginBottom="16px";f.value=mxUtils.getPrettyXml(a.editor.getGraphXml());b.appendChild(f);this.init=function(){f.focus()};Graph.fileSupport&&(f.addEventListener("dragover",function(k){k.stopPropagation();k.preventDefault()},!1),f.addEventListener("drop",function(k){k.stopPropagation();k.preventDefault();if(0<k.dataTransfer.files.length){k=k.dataTransfer.files[0];var n=new FileReader;n.onload=function(u){f.value=u.target.result};
n.readAsText(k)}else f.value=a.extractGraphModelFromEvent(k)},!1));var e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";a.editor.cancelFirst&&b.appendChild(e);var g=document.createElement("select");g.style.width="180px";g.className="geBtn";if(a.editor.graph.isEnabled()){var d=document.createElement("option");d.setAttribute("value","replace");mxUtils.write(d,mxResources.get("replaceExistingDrawing"));g.appendChild(d)}d=document.createElement("option");d.setAttribute("value",
"new");mxUtils.write(d,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&g.appendChild(d);a.editor.graph.isEnabled()&&(d=document.createElement("option"),d.setAttribute("value","import"),mxUtils.write(d,mxResources.get("addToExistingDrawing")),g.appendChild(d));b.appendChild(g);d=mxUtils.button(mxResources.get("ok"),function(){var k=Graph.zapGremlins(mxUtils.trim(f.value)),n=null;if("new"==g.value)a.hideDialog(),a.editor.editAsNew(k);else if("replace"==g.value){a.editor.graph.model.beginUpdate();
d.className="geBtn gePrimaryBtn";b.appendChild(d);a.editor.cancelFirst||b.appendChild(e);this.container=b};EditDiagramDialog.showNewWindowOption=!0;
var ExportDialog=function(a){function b(){var U=r.value,fa=U.lastIndexOf(".");r.value=0<fa?U.substring(0,fa+1)+x.value:U+"."+x.value;"xml"===x.value?(A.setAttribute("disabled","true"),C.setAttribute("disabled","true"),F.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(A.removeAttribute("disabled"),C.removeAttribute("disabled"),F.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled",
d.appendChild(u);mxEvent.addListener(x,"change",b);b();mxEvent.addListener(A,"change",function(){O=!0;var U=Math.max(0,parseFloat(A.value)||100)/100;A.value=parseFloat((100*U).toFixed(2));0<k?(C.value=Math.floor(k*U),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(C,"change",function(){var U=parseInt(C.value)/k;0<U?(A.value=parseFloat((100*U).toFixed(2)),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(F,"change",function(){var U=
ExportDialog.exportFile=function(a,b,f,e,g,d,k,n){n=a.editor.graph;if("xml"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,f);else if("svg"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(n.getSvg(e,g,d)),b,f);else{var u=n.getGraphBounds(),m=mxUtils.createXmlDocument(),r=m.createElement("output");m.appendChild(r);m=new mxXmlCanvas2D(r);m.translate(Math.floor((d/g-u.x)/n.view.scale),Math.floor((d/g-u.y)/n.view.scale));m.scale(g/n.view.scale);(new mxImageExport).drawState(n.getView().getState(n.model.root),
m);r="xml="+encodeURIComponent(mxUtils.getXml(r));m=Math.ceil(u.width*g/n.view.scale+2*d);g=Math.ceil(u.height*g/n.view.scale+2*d);r.length<=MAX_REQUEST_SIZE&&m*g<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+f+"&filename="+encodeURIComponent(b)+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+g+"&"+r+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,b,f,e){b.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(f)+"&format="+e)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
var EditDataDialog=function(a,b){function f(){0<Q.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var e=document.createElement("div"),g=a.editor.graph,d=g.getModel().getValue(b);if(!mxUtils.isNode(d)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",d||"");d=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(T){}var m=new mxForm("properties");m.table.style.width=
"100%";var r=d.attributes,x=[],A=[],C=0,F=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,K=function(T,U){var fa=document.createElement("div");fa.style.position="relative";fa.style.paddingRight="20px";fa.style.boxSizing="border-box";fa.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
fa){x[T]=U;A[T]=m.addTextarea(x[C]+":",fa,2);A[T].style.width="100%";0<fa.indexOf("\n")&&A[T].setAttribute("rows","2");K(A[T],U);null!=n[U]&&0==n[U].editable&&A[T].setAttribute("disabled","disabled")};u=[];for(var E=g.getModel().getParent(b)==g.getModel().getRoot(),O=0;O<r.length;O++)!E&&"label"==r[O].nodeName||"placeholders"==r[O].nodeName||u.push({name:r[O].nodeName,value:r[O].nodeValue});u.sort(function(T,U){return T.name<U.name?-1:T.name>U.name?1:0});if(null!=F){r=document.createElement("div");
r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,F);var R=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(T){mxEvent.isShiftDown(T)&&(T=new FilenameDialog(a,F,mxResources.get("apply"),mxUtils.bind(this,function(U){null!=U&&0<U.length&&U!=F&&(null==g.getModel().getCell(U)?(g.getModel().cellRemoved(b),b.setId(U),F=U,R.innerHTML=mxUtils.htmlEntities(U),g.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",
U=0;U<x.length;U++)null==A[U]?d.removeAttribute(x[U]):(d.setAttribute(x[U],A[U].value),T=T||"placeholder"==x[U]&&"1"==d.getAttribute("placeholders"));T&&d.removeAttribute("label");g.getModel().setValue(b,d)}catch(fa){mxUtils.alert(fa)}});aa.setAttribute("title","Ctrl+Enter");aa.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(T){13==T.keyCode&&mxEvent.isControlDown(T)&&aa.click()});mxEvent.addListener(Q,"keyup",f);mxEvent.addListener(Q,"change",f);k=document.createElement("div");
k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(b)||a.editor.graph.getModel().isEdge(b))r=document.createElement("span"),r.style.marginRight="10px",E=document.createElement("input"),E.setAttribute("type","checkbox"),E.style.marginRight="6px","1"==d.getAttribute("placeholders")&&(E.setAttribute("checked","checked"),E.defaultChecked=!0),mxEvent.addListener(E,"click",function(){"1"==d.getAttribute("placeholders")?
"0"),O.setAttribute("valign","middle"),O.style.marginTop=mxClient.IS_IE11?"0px":"-4px",O.setAttribute("src",Editor.helpImage),E.appendChild(O),r.appendChild(E)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(aa)):(k.appendChild(aa),k.appendChild(u));e.appendChild(k);this.container=e};EditDataDialog.getDisplayIdForCell=function(a,b){var f=null;null!=a.editor.graph.getModel().getParent(b)&&(f=b.getId());return f};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,b,f,e){var g=document.createElement("div");mxUtils.write(g,mxResources.get("editLink")+":");var d=document.createElement("div");d.className="geTitle";d.style.backgroundColor="transparent";d.style.borderColor="transparent";d.style.whiteSpace="nowrap";d.style.textOverflow="clip";d.style.cursor="default";d.style.paddingRight="20px";var k=document.createElement("input");k.setAttribute("value",b);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title",mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display="inline-block";b.style.top="3px";b.style.background="url("+IMAGE_PATH+"/transparent.gif)";
mxEvent.addListener(b,"click",function(){k.value="";k.focus()});d.appendChild(k);d.appendChild(b);g.appendChild(d);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="right";mxEvent.addListener(k,"keypress",function(n){13==n.keyCode&&(a.hideDialog(),e(k.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
b.className="geBtn";a.editor.cancelFirst&&d.appendChild(b);f=mxUtils.button(f,function(){a.hideDialog();e(k.value)});f.className="geBtn gePrimaryBtn";d.appendChild(f);a.editor.cancelFirst||d.appendChild(b);g.appendChild(d);this.container=g},OutlineWindow=function(a,b,f,e,g){var d=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,b,f,e,g,!0,!0);this.window.minimumSize=
20*(x-1)),d.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,b,f,e,g){function d(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=T.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(U):null!=
new mxWindow(mxResources.get("layers"),m,b,f,e,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){x.scrollTop=x.scrollHeight-x.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=n;this.window.setLocation=function(ha,ba){var qa=window.innerHeight||document.body.clientHeight||
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null!=A.buttonKey?mxResources.get(A.buttonKey):A.button);null!=A.modified&&(this.editor.modified=A.modified);return}if("layout"==A.action){this.executeLayouts(this.editor.graph.createLayouts(A.layouts));return}if("prompt"==A.action){this.spinner.stop();var u=new FilenameDialog(this,A.defaultValue||"",null!=A.okKey?mxResources.get(A.okKey):A.ok,function(Q){null!=Q?x.postMessage(JSON.stringify({event:"prompt",value:Q,message:A}),"*"):x.postMessage(JSON.stringify({event:"prompt-cancel",message:A}),"*")},
null!=A.titleKey?mxResources.get(A.titleKey):A.title);this.showDialog(u.container,300,80,!0,!1);u.init();return}if("draft"==A.action){var D=P(A.xml);this.spinner.stop();u=new DraftDialog(this,mxResources.get("draftFound",[A.name||this.defaultFilename]),D,mxUtils.bind(this,function(){this.hideDialog();x.postMessage(JSON.stringify({event:"draft",result:"edit",message:A}),"*")}),mxUtils.bind(this,function(){this.hideDialog();x.postMessage(JSON.stringify({event:"draft",result:"discard",message:A}),"*")}),
A.editKey?mxResources.get(A.editKey):null,A.discardKey?mxResources.get(A.discardKey):null,A.ignore?mxUtils.bind(this,function(){this.hideDialog();x.postMessage(JSON.stringify({event:"draft",result:"ignore",message:A}),"*")}):null);this.showDialog(u.container,640,480,!0,!1,mxUtils.bind(this,function(Q){Q&&this.actions.get("exit").funct()}));try{u.init()}catch(Q){x.postMessage(JSON.stringify({event:"draft",error:Q.toString(),message:A}),"*")}return}if("template"==A.action){this.spinner.stop();var B=
1==A.enableRecent,C=1==A.enableSearch,G=1==A.enableCustomTemp;if("1"==urlParams.newTempDlg&&!A.templatesOnly&&null!=A.callback){var N=this.getCurrentUser(),I=new TemplatesDialog(this,function(Q,S,Y){Q=Q||this.emptyDiagramXml;x.postMessage(JSON.stringify({event:"template",xml:Q,blank:Q==this.emptyDiagramXml,name:S,tempUrl:Y.url,libs:Y.libs,builtIn:null!=Y.info&&null!=Y.info.custContentId,message:A}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=N?N.id:null,B?
mxUtils.bind(this,function(Q,S,Y){this.remoteInvoke("getRecentDiagrams",[Y],null,Q,S)}):null,C?mxUtils.bind(this,function(Q,S,Y,ba){this.remoteInvoke("searchDiagrams",[Q,ba],null,S,Y)}):null,mxUtils.bind(this,function(Q,S,Y){this.remoteInvoke("getFileContent",[Q.url],null,S,Y)}),null,G?mxUtils.bind(this,function(Q){this.remoteInvoke("getCustomTemplates",null,null,Q,function(){Q({},0)})}):null,!1,!1,!0,!0);this.showDialog(I.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}u=
new NewDialog(this,!1,A.templatesOnly?!1:null!=A.callback,mxUtils.bind(this,function(Q,S,Y,ba){Q=Q||this.emptyDiagramXml;null!=A.callback?x.postMessage(JSON.stringify({event:"template",xml:Q,blank:Q==this.emptyDiagramXml,name:S,tempUrl:Y,libs:ba,builtIn:!0,message:A}),"*"):(d(Q,z,Q!=this.emptyDiagramXml,A.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,B?mxUtils.bind(this,function(Q){this.remoteInvoke("getRecentDiagrams",[null],null,Q,function(){Q(null,
"Network Error!")})}):null,C?mxUtils.bind(this,function(Q,S){this.remoteInvoke("searchDiagrams",[Q,null],null,S,function(){S(null,"Network Error!")})}):null,mxUtils.bind(this,function(Q,S,Y){x.postMessage(JSON.stringify({event:"template",docUrl:Q,info:S,name:Y}),"*")}),null,null,G?mxUtils.bind(this,function(Q){this.remoteInvoke("getCustomTemplates",null,null,Q,function(){Q({},0)})}):null,1==A.withoutType);this.showDialog(u.container,620,460,!0,!1,mxUtils.bind(this,function(Q){this.sidebar.hideTooltip();
Q&&this.actions.get("exit").funct()}));u.init();return}if("textContent"==A.action){var F=this.getDiagramTextContent();x.postMessage(JSON.stringify({event:"textContent",data:F,message:A}),"*");return}if("status"==A.action){null!=A.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(A.messageKey))):null!=A.message&&this.editor.setStatus(mxUtils.htmlEntities(A.message));null!=A.modified&&(this.editor.modified=A.modified);return}if("spinner"==A.action){var H=null!=A.messageKey?mxResources.get(A.messageKey):
A.message;null==A.show||A.show?this.spinner.spin(document.body,H):this.spinner.stop();return}if("exit"==A.action){this.actions.get("exit").funct();return}if("viewport"==A.action){null!=A.viewport&&(this.embedViewport=A.viewport);return}if("snapshot"==A.action){this.sendEmbeddedSvgExport(!0);return}if("export"==A.action){if("png"==A.format||"xmlpng"==A.format){if(null==A.spin&&null==A.spinKey||this.spinner.spin(document.body,null!=A.spinKey?mxResources.get(A.spinKey):A.spin)){var R=null!=A.xml?A.xml:
this.getFileData(!0);this.editor.graph.setEnabled(!1);var W=this.editor.graph,J=mxUtils.bind(this,function(Q){this.editor.graph.setEnabled(!0);this.spinner.stop();var S=this.createLoadMessage("export");S.format=A.format;S.message=A;S.data=Q;S.xml=R;x.postMessage(JSON.stringify(S),"*")}),V=mxUtils.bind(this,function(Q){null==Q&&(Q=Editor.blankImage);"xmlpng"==A.format&&(Q=Editor.writeGraphModelToPng(Q,"tEXt","mxfile",encodeURIComponent(R)));W!=this.editor.graph&&W.container.parentNode.removeChild(W.container);
J(Q)}),U=A.pageId||(null!=this.pages?A.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var X=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=U){var Q=W.getGlobalVariable;W=this.createTemporaryGraph(W.getStylesheet());for(var S,Y=0;Y<this.pages.length;Y++)if(this.pages[Y].getId()==U){S=this.updatePageRoot(this.pages[Y]);break}null==S&&(S=this.currentPage);W.getGlobalVariable=function(fa){return"page"==fa?S.getName():"pagenumber"==
fa?1:Q.apply(this,arguments)};document.body.appendChild(W.container);W.model.setRoot(S.root)}if(null!=A.layerIds){var ba=W.model,ea=ba.getChildCells(ba.getRoot()),Z={};for(Y=0;Y<A.layerIds.length;Y++)Z[A.layerIds[Y]]=!0;for(Y=0;Y<ea.length;Y++)ba.setVisible(ea[Y],Z[ea[Y].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(fa){V(fa.toDataURL("image/png"))}),A.width,null,A.background,mxUtils.bind(this,function(){V(null)}),null,null,A.scale,A.transparent,A.shadow,null,W,A.border,null,A.grid,
A.keepTheme)});null!=A.xml&&0<A.xml.length?(k=!0,this.setFileData(R),k=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==A.format?"1":"0")+(null!=U?"&pageId="+U:"")+(null!=A.layerIds&&0<A.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:A.layerIds})):"")+(null!=A.scale?"&scale="+A.scale:"")+"&base64=1&xml="+encodeURIComponent(R))).send(mxUtils.bind(this,function(Q){200<=
Q.getStatus()&&299>=Q.getStatus()?J("data:image/png;base64,"+Q.getText()):V(null)}),mxUtils.bind(this,function(){V(null)}))}}else X=mxUtils.bind(this,function(){var Q=this.createLoadMessage("export");Q.message=A;if("html2"==A.format||"html"==A.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var S=this.getXmlFileData();Q.xml=mxUtils.getXml(S);Q.data=this.getFileData(null,null,!0,null,null,null,S);Q.format=A.format}else if("html"==A.format)S=this.editor.getGraphXml(),Q.data=this.getHtml(S,
this.editor.graph),Q.xml=mxUtils.getXml(S),Q.format=A.format;else{mxSvgCanvas2D.prototype.foAltText=null;S=null!=A.background?A.background:this.editor.graph.background;S==mxConstants.NONE&&(S=null);Q.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);Q.format="svg";var Y=mxUtils.bind(this,function(ba){this.editor.graph.setEnabled(!0);this.spinner.stop();Q.data=Editor.createSvgDataUri(ba);x.postMessage(JSON.stringify(Q),"*")});if("xmlsvg"==A.format)(null==A.spin&&null==A.spinKey||
this.spinner.spin(document.body,null!=A.spinKey?mxResources.get(A.spinKey):A.spin))&&this.getEmbeddedSvg(Q.xml,this.editor.graph,null,!0,Y,null,null,A.embedImages,S,A.scale,A.border,A.shadow,A.keepTheme);else if(null==A.spin&&null==A.spinKey||this.spinner.spin(document.body,null!=A.spinKey?mxResources.get(A.spinKey):A.spin))this.editor.graph.setEnabled(!1),S=this.editor.graph.getSvg(S,A.scale,A.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||A.shadow,null,A.keepTheme),(this.editor.graph.shadowVisible||
A.shadow)&&this.editor.graph.addSvgShadow(S),this.embedFonts(S,mxUtils.bind(this,function(ba){A.embedImages||null==A.embedImages?this.editor.convertImages(ba,mxUtils.bind(this,function(ea){Y(mxUtils.getXml(ea))})):Y(mxUtils.getXml(ba))}));return}x.postMessage(JSON.stringify(Q),"*")}),null!=A.xml&&0<A.xml.length?(k=!0,this.setFileData(A.xml),k=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X();return}if("load"==A.action){L=A.toSketch;l=1==A.autosave;
this.hideDialog();null!=A.modified&&null==urlParams.modified&&(urlParams.modified=A.modified);null!=A.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=A.saveAndExit);null!=A.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=A.noSaveBtn);if(null!=A.rough){var t=Editor.sketchMode;this.doSetSketchMode(A.rough);t!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=A.dark&&(t=Editor.darkMode,this.doSetDarkMode(A.dark),t!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));
null!=A.border&&(this.embedExportBorder=A.border);null!=A.background&&(this.embedExportBackground=A.background);null!=A.viewport&&(this.embedViewport=A.viewport);this.embedExitPoint=null;if(null!=A.rect){var E=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=A.rect.top+"px";this.diagramContainer.style.left=A.rect.left+"px";this.diagramContainer.style.height=A.rect.height+"px";this.diagramContainer.style.width=A.rect.width+"px";this.diagramContainer.style.bottom=
"";this.diagramContainer.style.right="";K=mxUtils.bind(this,function(){var Q=this.editor.graph,S=Q.maxFitScale;Q.maxFitScale=A.maxFitScale;Q.fit(2*E);Q.maxFitScale=S;Q.container.scrollTop-=2*E;Q.container.scrollLeft-=2*E;this.fireEvent(new mxEventObject("editInlineStart","data",[A]))})}null!=A.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=A.noExitBtn);null!=A.title&&null!=this.buttonContainer&&(D=document.createElement("span"),mxUtils.write(D,A.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
this.buttonContainer.appendChild(D),this.embedFilenameSpan=D);try{A.libs&&this.sidebar.showEntries(A.libs)}catch(Q){}A=null!=A.xmlpng?this.extractGraphModelFromPng(A.xmlpng):null!=A.descriptor?A.descriptor:A.xml}else{if("merge"==A.action){var M=this.getCurrentFile();null!=M&&(D=P(A.xml),null!=D&&""!=D&&M.mergeFile(new LocalFile(this,D),function(){x.postMessage(JSON.stringify({event:"merge",message:A}),"*")},function(Q){x.postMessage(JSON.stringify({event:"merge",message:A,error:Q}),"*")}))}else"remoteInvokeReady"==
A.action?this.handleRemoteInvokeReady(x):"remoteInvoke"==A.action?this.handleRemoteInvoke(A,z.origin):"remoteInvokeResponse"==A.action?this.handleRemoteInvokeResponse(A):x.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(A)}),"*");return}}catch(Q){this.handleError(Q)}}var T=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),O=mxUtils.bind(this,function(Q,S){k=!0;try{d(Q,
S,null,L)}catch(Y){this.handleError(Y)}k=!1;null!=urlParams.modified&&this.editor.setStatus("");p=T();l&&null==g&&(g=mxUtils.bind(this,function(Y,ba){Y=T();Y==p||k||(ba=this.createLoadMessage("autosave"),ba.xml=Y,(window.opener||window.parent).postMessage(JSON.stringify(ba),"*"));p=Y}),this.editor.graph.model.addListener(mxEvent.CHANGE,g),this.editor.graph.addListener("gridSizeChanged",g),this.editor.graph.addListener("shadowVisibleChanged",g),this.addListener("pageFormatChanged",g),this.addListener("pageScaleChanged",
g),this.addListener("backgroundColorChanged",g),this.addListener("backgroundImageChanged",g),this.addListener("foldingEnabledChanged",g),this.addListener("mathEnabledChanged",g),this.addListener("gridEnabledChanged",g),this.addListener("guidesEnabledChanged",g),this.addListener("pageViewChanged",g));if("1"==urlParams.returnbounds||"json"==urlParams.proto)S=this.createLoadMessage("load"),S.xml=Q,x.postMessage(JSON.stringify(S),"*");null!=K&&K()});null!=A&&"function"===typeof A.substring&&"data:application/vnd.visio;base64,"==
A.substring(0,34)?(P="0M8R4KGxGuE"==A.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(A.substring(A.indexOf(",")+1)),function(Q){O(Q,z)},mxUtils.bind(this,function(Q){this.handleError(Q)}),P)):null!=A&&"function"===typeof A.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(A,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(A,mxUtils.bind(this,function(Q){4==Q.readyState&&200<=Q.status&&299>=Q.status&&
"<mxGraphModel"==Q.responseText.substring(0,13)&&O(Q.responseText,z)}),""):null!=A&&"function"===typeof A.substring&&this.isLucidChartData(A)?this.convertLucidChart(A,mxUtils.bind(this,function(Q){O(Q)}),mxUtils.bind(this,function(Q){this.handleError(Q)})):null==A||"object"!==typeof A||null==A.format||null==A.data&&null==A.url?(A=P(A),O(A,z)):this.loadDescriptor(A,mxUtils.bind(this,function(Q){O(T(),z)}),mxUtils.bind(this,function(Q){this.handleError(Q,mxResources.get("errorLoadingFile"))}))}}));
var x=window.opener||window.parent;q="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";x.postMessage(q,"*");if("json"==urlParams.proto){var y=this.editor.graph.openLink;this.editor.graph.openLink=function(z,A,K){y.apply(this,arguments);x.postMessage(JSON.stringify({event:"openLink",href:z,target:A,allowOpener:K}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display=
"inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var g=document.createElement("button");g.className="geBigButton";var k=g;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var l="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(g,l);g.setAttribute("title",l);mxEvent.addListener(g,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));
640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(d,g){try{var k=d.split("\n"),l=[],p=[],q=[],x={};if(0<k.length){var y={},z=this.editor.graph,A=null,K=null,P=null,L=null,u=null,D=null,B=null,C="whiteSpace=wrap;html=1;",G=null,N=null,I="",F="auto",H="auto",R=null,W=null,J=40,V=40,U=100,X=0,t=function(){null!=g?g(ta):(z.setSelectionCells(ta),z.scrollCellToVisible(z.getSelectionCell()))},E=z.getFreeInsertPoint(),M=E.x,T=E.y;E=T;var O=null,Q="auto";
N=null;for(var S=[],Y=null,ba=null,ea=0;ea<k.length&&"#"==k[ea].charAt(0);){d=k[ea].replace(/\r$/,"");for(ea++;ea<k.length&&"\\"==d.charAt(d.length-1)&&"#"==k[ea].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(k[ea].substring(1)),ea++;if("#"!=d.charAt(1)){var Z=d.indexOf(":");if(0<Z){var fa=mxUtils.trim(d.substring(1,Z)),aa=mxUtils.trim(d.substring(Z+1));"label"==fa?O=z.sanitizeHtml(aa):"labelname"==fa&&0<aa.length&&"-"!=aa?u=aa:"labels"==fa&&0<aa.length&&"-"!=aa?B=JSON.parse(aa):"style"==fa?
K=aa:"parentstyle"==fa?C=aa:"unknownStyle"==fa&&"-"!=aa?D=aa:"stylename"==fa&&0<aa.length&&"-"!=aa?L=aa:"styles"==fa&&0<aa.length&&"-"!=aa?P=JSON.parse(aa):"vars"==fa&&0<aa.length&&"-"!=aa?A=JSON.parse(aa):"identity"==fa&&0<aa.length&&"-"!=aa?G=aa:"parent"==fa&&0<aa.length&&"-"!=aa?N=aa:"namespace"==fa&&0<aa.length&&"-"!=aa?I=aa:"width"==fa?F=aa:"height"==fa?H=aa:"left"==fa&&0<aa.length?R=aa:"top"==fa&&0<aa.length?W=aa:"ignore"==fa?ba=aa.split(","):"connect"==fa?S.push(JSON.parse(aa)):"link"==fa?
Y=aa:"padding"==fa?X=parseFloat(aa):"edgespacing"==fa?J=parseFloat(aa):"nodespacing"==fa?V=parseFloat(aa):"levelspacing"==fa?U=parseFloat(aa):"layout"==fa&&(Q=aa)}}}if(null==k[ea])throw Error(mxResources.get("invalidOrMissingFile"));var va=this.editor.csvToArray(k[ea].replace(/\r$/,""));Z=d=null;fa=[];for(aa=0;aa<va.length;aa++)G==va[aa]&&(d=aa),N==va[aa]&&(Z=aa),fa.push(mxUtils.trim(va[aa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==O&&(O="%"+fa[0]+"%");if(null!=S)for(var ja=
0;ja<S.length;ja++)null==y[S[ja].to]&&(y[S[ja].to]={});G=[];for(aa=ea+1;aa<k.length;aa++){var Ba=this.editor.csvToArray(k[aa].replace(/\r$/,""));if(null==Ba){var Da=40<k[aa].length?k[aa].substring(0,40)+"...":k[aa];throw Error(Da+" ("+aa+"):\n"+mxResources.get("containsValidationErrors"));}0<Ba.length&&G.push(Ba)}z.model.beginUpdate();try{for(aa=0;aa<G.length;aa++){Ba=G[aa];var qa=null,Ca=null!=d?I+Ba[d]:null;null!=Ca&&(qa=z.model.getCell(Ca));k=null!=qa;var Aa=new mxCell(O,new mxGeometry(M,E,0,0),
K||"whiteSpace=wrap;html=1;");Aa.vertex=!0;Aa.id=Ca;Da=null!=qa?qa:Aa;for(var Ha=0;Ha<Ba.length;Ha++)z.setAttributeForCell(Da,fa[Ha],Ba[Ha]);if(null!=u&&null!=B){var Na=B[Da.getAttribute(u)];null!=Na&&z.labelChanged(Da,Na)}if(null!=L&&null!=P){var Ga=P[Da.getAttribute(L)];null!=Ga&&(Da.style=Ga)}z.setAttributeForCell(Da,"placeholders","1");Da.style=z.replacePlaceholders(Da,Da.style,A);k?(0>mxUtils.indexOf(q,qa)&&q.push(qa),z.fireEvent(new mxEventObject("cellsInserted","cells",[qa]))):z.fireEvent(new mxEventObject("cellsInserted",
"cells",[Aa]));qa=Aa;if(!k)for(ja=0;ja<S.length;ja++)y[S[ja].to][qa.getAttribute(S[ja].to)]=qa;null!=Y&&"link"!=Y&&(z.setLinkForCell(qa,qa.getAttribute(Y)),z.setAttributeForCell(qa,Y,null));var Fa=this.editor.graph.getPreferredSizeForCell(qa);N=null!=Z?z.model.getCell(I+Ba[Z]):null;if(qa.vertex){Da=null!=N?0:M;ea=null!=N?0:T;null!=R&&null!=qa.getAttribute(R)&&(qa.geometry.x=Da+parseFloat(qa.getAttribute(R)));null!=W&&null!=qa.getAttribute(W)&&(qa.geometry.y=ea+parseFloat(qa.getAttribute(W)));var Ea=
"@"==F.charAt(0)?qa.getAttribute(F.substring(1)):null;qa.geometry.width=null!=Ea&&"auto"!=Ea?parseFloat(qa.getAttribute(F.substring(1))):"auto"==F||"auto"==Ea?Fa.width+X:parseFloat(F);var La="@"==H.charAt(0)?qa.getAttribute(H.substring(1)):null;qa.geometry.height=null!=La&&"auto"!=La?parseFloat(La):"auto"==H||"auto"==La?Fa.height+X:parseFloat(H);E+=qa.geometry.height+V}k?(null==x[Ca]&&(x[Ca]=[]),x[Ca].push(qa)):(l.push(qa),null!=N?(N.style=z.replacePlaceholders(N,C,A),z.addCell(qa,N),p.push(N)):q.push(z.addCell(qa)))}for(aa=
0;aa<p.length;aa++)Ea="@"==F.charAt(0)?p[aa].getAttribute(F.substring(1)):null,La="@"==H.charAt(0)?p[aa].getAttribute(H.substring(1)):null,"auto"!=F&&"auto"!=Ea||"auto"!=H&&"auto"!=La||z.updateGroupBounds([p[aa]],X,!0);var za=q.slice(),ta=q.slice();for(ja=0;ja<S.length;ja++){var ka=S[ja];for(aa=0;aa<l.length;aa++){qa=l[aa];var oa=mxUtils.bind(this,function(ia,ma,ra){var pa=ma.getAttribute(ra.from);if(null!=pa&&""!=pa){pa=pa.split(",");for(var na=0;na<pa.length;na++){var Ka=y[ra.to][pa[na]];if(null==
Ka&&null!=D){Ka=new mxCell(pa[na],new mxGeometry(M,T,0,0),D);Ka.style=z.replacePlaceholders(ma,Ka.style,A);var Ia=this.editor.graph.getPreferredSizeForCell(Ka);Ka.geometry.width=Ia.width+X;Ka.geometry.height=Ia.height+X;y[ra.to][pa[na]]=Ka;Ka.vertex=!0;Ka.id=pa[na];q.push(z.addCell(Ka))}if(null!=Ka){Ia=ra.label;null!=ra.fromlabel&&(Ia=(ma.getAttribute(ra.fromlabel)||"")+(Ia||""));null!=ra.sourcelabel&&(Ia=z.replacePlaceholders(ma,ra.sourcelabel,A)+(Ia||""));null!=ra.tolabel&&(Ia=(Ia||"")+(Ka.getAttribute(ra.tolabel)||
""));null!=ra.targetlabel&&(Ia=(Ia||"")+z.replacePlaceholders(Ka,ra.targetlabel,A));var Ra="target"==ra.placeholders==!ra.invert?Ka:ia;Ra=null!=ra.style?z.replacePlaceholders(Ra,ra.style,A):z.createCurrentEdgeStyle();Ia=z.insertEdge(null,null,Ia||"",ra.invert?Ka:ia,ra.invert?ia:Ka,Ra);if(null!=ra.labels)for(Ra=0;Ra<ra.labels.length;Ra++){var Sa=ra.labels[Ra],Ja=new mxCell(Sa.label||Ra,new mxGeometry(null!=Sa.x?Sa.x:0,null!=Sa.y?Sa.y:0,0,0),"resizable=0;html=1;");Ja.vertex=!0;Ja.connectable=!1;Ja.geometry.relative=
!0;null!=Sa.placeholders&&(Ja.value=z.replacePlaceholders("target"==Sa.placeholders==!ra.invert?Ka:ia,Ja.value,A));if(null!=Sa.dx||null!=Sa.dy)Ja.geometry.offset=new mxPoint(null!=Sa.dx?Sa.dx:0,null!=Sa.dy?Sa.dy:0);Ia.insert(Ja)}ta.push(Ia);mxUtils.remove(ra.invert?ia:Ka,za)}}}});oa(qa,qa,ka);if(null!=x[qa.id])for(Ha=0;Ha<x[qa.id].length;Ha++)oa(qa,x[qa.id][Ha],ka)}}if(null!=ba)for(aa=0;aa<l.length;aa++)for(qa=l[aa],Ha=0;Ha<ba.length;Ha++)z.setAttributeForCell(qa,mxUtils.trim(ba[Ha]),null);if(0<q.length){var sa=
new mxParallelEdgeLayout(z);sa.spacing=J;sa.checkOverlap=!0;var ya=function(){0<sa.spacing&&sa.execute(z.getDefaultParent());for(var ia=0;ia<q.length;ia++){var ma=z.getCellGeometry(q[ia]);ma.x=Math.round(z.snap(ma.x));ma.y=Math.round(z.snap(ma.y));"auto"==F&&(ma.width=Math.round(z.snap(ma.width)));"auto"==H&&(ma.height=Math.round(z.snap(ma.height)))}};if("["==Q.charAt(0)){var wa=t;z.view.validate();this.executeLayouts(z.createLayouts(JSON.parse(Q)),function(){ya();wa()});t=null}else if("circle"==
Q){var ua=new mxCircleLayout(z);ua.disableEdgeStyle=!1;ua.resetEdges=!1;var xa=ua.isVertexIgnored;ua.isVertexIgnored=function(ia){return xa.apply(this,arguments)||0>mxUtils.indexOf(q,ia)};this.executeLayout(function(){ua.execute(z.getDefaultParent());ya()},!0,t);t=null}else if("horizontaltree"==Q||"verticaltree"==Q||"auto"==Q&&ta.length==2*q.length-1&&1==za.length){z.view.validate();var ha=new mxCompactTreeLayout(z,"horizontaltree"==Q);ha.levelDistance=V;ha.edgeRouting=!1;ha.resetEdges=!1;this.executeLayout(function(){ha.execute(z.getDefaultParent(),
0<za.length?za[0]:null)},!0,t);t=null}else if("horizontalflow"==Q||"verticalflow"==Q||"auto"==Q&&1==za.length){z.view.validate();var da=new mxHierarchicalLayout(z,"horizontalflow"==Q?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);da.intraCellSpacing=V;da.parallelEdgeSpacing=J;da.interRankCellSpacing=U;da.disableEdgeStyle=!1;this.executeLayout(function(){da.execute(z.getDefaultParent(),ta);z.moveCells(ta,M,T)},!0,t);t=null}else if("organic"==Q||"auto"==Q&&ta.length>q.length){z.view.validate();
var ca=new mxFastOrganicLayout(z);ca.forceConstant=3*V;ca.disableEdgeStyle=!1;ca.resetEdges=!1;var la=ca.isVertexIgnored;ca.isVertexIgnored=function(ia){return la.apply(this,arguments)||0>mxUtils.indexOf(q,ia)};this.executeLayout(function(){ca.execute(z.getDefaultParent());ya()},!0,t);t=null}}this.hideDialog()}finally{z.model.endUpdate()}null!=t&&t()}}catch(ia){this.handleError(ia)}};EditorUi.prototype.getSearch=function(d){var g="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var k=
"?",l;for(l in urlParams)0>mxUtils.indexOf(d,l)&&null!=urlParams[l]&&(g+=k+l+"="+urlParams[l],k="&")}else g=window.location.search;return g};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var g=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var k="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),l;for(l in urlParams)0>mxUtils.indexOf(k,l)&&(d=0==g?d+"?":d+"&",null!=urlParams[l]&&(d+=l+"="+
urlParams[l],g++))}return d};EditorUi.prototype.showLinkDialog=function(d,g,k,l,p){d=new LinkDialog(this,d,g,k,!0,l,p);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var g=1;null==this.drive&&"function"!==typeof window.DriveClient||g++;null==this.dropbox&&"function"!==typeof window.DropboxClient||g++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||g++;null!=this.gitHub&&g++;null!=this.gitLab&&g++;d&&isLocalStorage&&"1"==urlParams.browser&&
g++;return g};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),g=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(g);this.menus.get("viewZoom").setEnabled(g);var k=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!k);this.actions.get("print").setEnabled(!k);this.menus.get("exportAs").setEnabled(!k);this.menus.get("embed").setEnabled(!k);
k="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(k);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(k),this.menus.get("newLibrary").setEnabled(k));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(g);this.actions.get("zoomIn").setEnabled(g);this.actions.get("zoomOut").setEnabled(g);this.actions.get("resetView").setEnabled(g);this.actions.get("undo").setEnabled(this.canUndo()&&
d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(g);this.menus.get("view").setEnabled(g);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=
function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var n=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){n.apply(this,arguments);var d=this.editor.graph,g=this.getCurrentFile(),k=this.getSelectionState(),l=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(l);
this.actions.get("autosave").setEnabled(null!=g&&g.isEditable()&&g.isAutosaveOptional());this.actions.get("guides").setEnabled(l);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(l);this.actions.get("connectionArrows").setEnabled(l);this.actions.get("connectionPoints").setEnabled(l);this.actions.get("copyStyle").setEnabled(l&&!d.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(l&&0<k.cells.length);this.actions.get("editGeometry").setEnabled(0<
k.vertices.length);this.actions.get("createShape").setEnabled(l);this.actions.get("createRevision").setEnabled(l);this.actions.get("moveToFolder").setEnabled(null!=g);this.actions.get("makeCopy").setEnabled(null!=g&&!g.isRestricted());this.actions.get("editDiagram").setEnabled(l&&(null==g||!g.isRestricted()));this.actions.get("publishLink").setEnabled(null!=g&&!g.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=
this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=g&&g.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=g);this.menus.get("publish").setEnabled(null!=g&&!g.isRestricted());g=this.actions.get("findReplace");g.setEnabled("hidden"!=this.diagramContainer.style.visibility);g.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):
"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(l&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var v=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);v.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(d,g,k,l,p,q,x,y){var z=d.editor.graph;
if("xml"==k)d.hideDialog(),d.saveData(g,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==k)d.hideDialog(),d.saveData(g,"svg",mxUtils.getXml(z.getSvg(l,p,q)),"image/svg+xml");else{var A=d.getFileData(!0,null,null,null,null,!0),K=z.getGraphBounds(),P=Math.floor(K.width*p/z.view.scale),L=Math.floor(K.height*p/z.view.scale);if(A.length<=MAX_REQUEST_SIZE&&P*L<MAX_AREA)if(d.hideDialog(),"png"!=k&&"jpg"!=k&&"jpeg"!=k||!d.isExportToCanvas()){var u={globalVars:z.getExportVariables()};
y&&(u.grid={size:z.gridSize,steps:z.view.gridSteps,color:z.view.gridColor});d.saveRequest(g,k,function(D,B){return new mxXmlRequest(EXPORT_URL,"format="+k+"&base64="+(B||"0")+(null!=D?"&filename="+encodeURIComponent(D):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<x?"&dpi="+x:"")+"&bg="+(null!=l?l:"none")+"&w="+P+"&h="+L+"&border="+q+"&xml="+encodeURIComponent(A))})}else"png"==k?d.exportImage(p,null==l||"none"==l,!0,!1,!1,q,!0,!1,null,y,x):d.exportImage(p,!1,!0,!1,!1,q,!0,!1,"jpeg",y);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});
EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,g="";if(null!=this.pages)for(var k=0;k<this.pages.length;k++){var l=d;this.currentPage!=this.pages[k]&&(l=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[k]),l.model.setRoot(this.pages[k].root));g+=this.pages[k].getName()+" "+l.getIndexableText()+" "}else g=d.getIndexableText();this.editor.graph.setEnabled(!0);return g};EditorUi.prototype.showRemotelyStoredLibrary=
function(d){var g={},k=document.createElement("div");k.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxUtils.htmlEntities(d));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(l);var p=document.createElement("div");p.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";p.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var q={};try{var x=mxSettings.getCustomLibraries();
for(d=0;d<x.length;d++){var y=x[d];if("R"==y.substring(0,1)){var z=JSON.parse(decodeURIComponent(y.substring(1)));q[z[0]]={id:z[0],title:z[1],downloadUrl:z[2]}}}}catch(A){}this.remoteInvoke("getCustomLibraries",null,null,function(A){p.innerHTML="";if(0==A.length)p.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var K=0;K<A.length;K++){var P=A[K];q[P.id]&&(g[P.id]=P);var L=this.addCheckbox(p,P.title,q[P.id]);
(function(u,D){mxEvent.addListener(D,"change",function(){this.checked?g[u.id]=u:delete g[u.id]})})(P,L)}},mxUtils.bind(this,function(A){p.innerHTML="";var K=document.createElement("div");K.style.padding="8px";K.style.textAlign="center";mxUtils.write(K,mxResources.get("error")+": ");mxUtils.write(K,null!=A&&null!=A.message?A.message:mxResources.get("unknownError"));p.appendChild(K)}));k.appendChild(p);k=new CustomDialog(this,k,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));
var A=0,K;for(K in g)null==q[K]&&(A++,mxUtils.bind(this,function(P){this.remoteInvoke("getFileContent",[P.downloadUrl],null,mxUtils.bind(this,function(L){A--;0==A&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,L,P))}catch(u){this.handleError(u,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){A--;0==A&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(g[K]));for(K in q)g[K]||this.closeLibrary(new RemoteLibrary(this,null,q[K]));
0==A&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(k.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];
EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var g=0;g<this.remoteInvokeQueue.length;g++)d.postMessage(this.remoteInvokeQueue[g],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var g=d.msgMarkers,k=this.remoteInvokeCallbacks[g.callbackId];if(null==k)throw Error("No callback for "+(null!=g?g.callbackId:"null"));d.error?k.error&&k.error(d.error.errResp):k.callback&&k.callback.apply(this,
d.resp);this.remoteInvokeCallbacks[g.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,g,k,l,p){var q=!0,x=window.setTimeout(mxUtils.bind(this,function(){q=!1;p({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),y=mxUtils.bind(this,function(){window.clearTimeout(x);q&&l.apply(this,arguments)}),z=mxUtils.bind(this,function(){window.clearTimeout(x);q&&p.apply(this,arguments)});k=k||{};k.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:y,
error:z});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:g,msgMarkers:k});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,g){var k=mxUtils.bind(this,function(A,K){var P={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=K?P.error={errResp:K}:null!=A&&(P.resp=A);this.remoteWin.postMessage(JSON.stringify(P),"*")});try{var l=d.funtionName,p=this.remoteInvokableFns[l];if(null!=p&&"function"===
typeof this[l]){if(p.allowedDomains){for(var q=!1,x=0;x<p.allowedDomains.length;x++)if(g=="https://"+p.allowedDomains[x]){q=!0;break}if(!q){k(null,"Invalid Call: "+l+" is not allowed.");return}}var y=d.functionArgs;Array.isArray(y)||(y=[]);if(p.isAsync)y.push(function(){k(Array.prototype.slice.apply(arguments))}),y.push(function(A){k(null,A||"Unkown Error")}),this[l].apply(this,y);else{var z=this[l].apply(this,y);k([z])}}else k(null,"Invalid Call: "+l+" is not found.")}catch(A){k(null,"Invalid Call: An error occurred, "+
A.message)}};EditorUi.prototype.openDatabase=function(d,g){if(null==this.database){var k=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=k)try{var l=k.open("database",2);l.onupgradeneeded=function(p){try{var q=l.result;1>p.oldVersion&&q.createObjectStore("objects",{keyPath:"key"});2>p.oldVersion&&(q.createObjectStore("files",{keyPath:"title"}),q.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(x){null!=g&&g(x)}};l.onsuccess=
mxUtils.bind(this,function(p){var q=l.result;this.database=q;EditorUi.migrateStorageFiles&&(StorageFile.migrate(q),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(x){if(!x||"1"==urlParams.forceMigration){var y=document.createElement("iframe");y.style.display="none";y.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);
document.body.appendChild(y);var z=!0,A=!1,K,P=0,L=mxUtils.bind(this,function(){A=!0;this.setDatabaseItem(".drawioMigrated3",!0);y.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),u=mxUtils.bind(this,function(){P++;D()}),D=mxUtils.bind(this,function(){try{if(P>=K.length)L();else{var C=K[P];StorageFile.getFileContent(this,C,mxUtils.bind(this,function(G){null==G||".scratchpad"==C&&G==this.emptyLibraryXml?y.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
funtionName:"getLocalStorageFile",functionArgs:[C]}),"*"):u()}),u)}}catch(G){console.log(G)}}),B=mxUtils.bind(this,function(C){try{this.setDatabaseItem(null,[{title:C.title,size:C.data.length,lastModified:Date.now(),type:C.isLib?"L":"F"},{title:C.title,data:C.data}],u,u,["filesInfo","files"])}catch(G){console.log(G)}});x=mxUtils.bind(this,function(C){try{if(C.source==y.contentWindow){var G={};try{G=JSON.parse(C.data)}catch(N){}"init"==G.event?(y.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
"*"),y.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=G.event||A||(z?null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?(K=G.resp[0],z=!1,D()):L():null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?B(G.resp[0]):u())}}catch(N){console.log(N)}});window.addEventListener("message",x)}})));d(q);q.onversionchange=function(){q.close()}});l.onerror=g;l.onblocked=function(){}}catch(p){null!=g&&g(p)}else null!=g&&g()}else d(this.database)};
EditorUi.prototype.setDatabaseItem=function(d,g,k,l,p){this.openDatabase(mxUtils.bind(this,function(q){try{p=p||"objects";Array.isArray(p)||(p=[p],d=[d],g=[g]);var x=q.transaction(p,"readwrite");x.oncomplete=k;x.onerror=l;for(q=0;q<p.length;q++)x.objectStore(p[q]).put(null!=d&&null!=d[q]?{key:d[q],data:g[q]}:g[q])}catch(y){null!=l&&l(y)}}),l)};EditorUi.prototype.removeDatabaseItem=function(d,g,k,l){this.openDatabase(mxUtils.bind(this,function(p){l=l||"objects";Array.isArray(l)||(l=[l],d=[d]);p=p.transaction(l,
"readwrite");p.oncomplete=g;p.onerror=k;for(var q=0;q<l.length;q++)p.objectStore(l[q]).delete(d[q])}),k)};EditorUi.prototype.getDatabaseItem=function(d,g,k,l){this.openDatabase(mxUtils.bind(this,function(p){try{l=l||"objects";var q=p.transaction([l],"readonly").objectStore(l).get(d);q.onsuccess=function(){g(q.result)};q.onerror=k}catch(x){null!=k&&k(x)}}),k)};EditorUi.prototype.getDatabaseItems=function(d,g,k){this.openDatabase(mxUtils.bind(this,function(l){try{k=k||"objects";var p=l.transaction([k],
"readonly").objectStore(k).openCursor(IDBKeyRange.lowerBound(0)),q=[];p.onsuccess=function(x){null==x.target.result?d(q):(q.push(x.target.result.value),x.target.result.continue())};p.onerror=g}catch(x){null!=g&&g(x)}}),g)};EditorUi.prototype.getDatabaseItemKeys=function(d,g,k){this.openDatabase(mxUtils.bind(this,function(l){try{k=k||"objects";var p=l.transaction([k],"readonly").objectStore(k).getAllKeys();p.onsuccess=function(){d(p.result)};p.onerror=g}catch(q){null!=g&&g(q)}}),g)};EditorUi.prototype.commentsSupported=
function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,g){var k=this.getCurrentFile();null!=k?k.getComments(d,g):d([])};EditorUi.prototype.addComment=function(d,g,k){var l=this.getCurrentFile();
null!=l?l.addComment(d,g,k):g(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,g){var k=this.getCurrentFile();return null!=k?k.newComment(d,g):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,g)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();
return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,g){var k=this.getCurrentFile();null!=k&&k.getRevisions?k.getRevisions(d,g):g({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language",
"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,g,k,l,p,q,x,y){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,g,k,l,p,q,x,y)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,g){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
return this.editor.embedCssFonts(d,g)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,g,k,l,p,q,x,y,z,A,K,P,L,u,D,B){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,g,k,l,p,q,x,y,z,A,K,P,L,u,D,B)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,g,k,l){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,g,k,l)};EditorUi.prototype.convertImageToDataUri=function(d,g){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,g)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=
function(d,g,k,l){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,g,k,l)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=function(d,g,k,l,p){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,g,k,l,p)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var d=[],g=0;g<localStorage.length;g++){var k=localStorage.key(g),l=localStorage.getItem(k);if(0<k.length&&(".scratchpad"==k||"."!=k.charAt(0))&&0<l.length){var p="<mxfile "===l.substring(0,8)||"<?xml"===l.substring(0,5)||"\x3c!--[if IE]>"===l.substring(0,12);l="<mxlibrary>"===l.substring(0,11);(p||l)&&d.push(k)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
var g=localStorage.getItem(d);return{title:d,data:g,isLib:"<mxlibrary>"===g.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
c.executeLayouts(m.createLayouts(B));c.customLayoutConfig=B;c.hideDialog()}catch(C){c.handleError(C)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");c.showDialog(u.container,620,460,!0,!0);u.init()});l=this.get("layout");var y=l.funct;l.funct=function(u,D){y.apply(this,arguments);u.addItem(mxResources.get("orgChart"),null,function(){function B(){"undefined"!==typeof mxOrgChartLayout||c.loadingOrgChart||c.isOffline(!0)?F():c.spinner.spin(document.body,mxResources.get("loading"))&&
(c.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",F)})})}):mxscript("js/extensions.min.js",F))}var C=null,G=20,N=20,I=!0,F=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=C&&I){var t=c.editor.graph,E=new mxOrgChartLayout(t,C,G,N),M=t.getDefaultParent();
1<t.model.getChildCount(t.getSelectionCell())&&(M=t.getSelectionCell());E.execute(M);I=!1}},H=document.createElement("div"),R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("orgChartType")+": ");H.appendChild(R);var W=document.createElement("select");W.style.width="200px";W.style.boxSizing="border-box";R=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),
mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")];for(var J=0;J<R.length;J++){var V=document.createElement("option");mxUtils.write(V,R[J]);V.value=J;2==J&&V.setAttribute("selected","selected");W.appendChild(V)}mxEvent.addListener(W,"change",function(){C=W.value});H.appendChild(W);R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("parentChildSpacing")+
": ");H.appendChild(R);var U=document.createElement("input");U.type="number";U.value=G;U.style.width="200px";U.style.boxSizing="border-box";H.appendChild(U);mxEvent.addListener(U,"change",function(){G=U.value});R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("siblingSpacing")+": ");H.appendChild(R);var X=document.createElement("input");X.type="number";X.value=N;X.style.width="200px";X.style.boxSizing="border-box";
H.appendChild(X);mxEvent.addListener(X,"change",function(){N=X.value});H=new CustomDialog(c,H,function(){null==C&&(C=2);B()});c.showDialog(H.container,355,140,!0,!0)},D,null,n());u.addSeparator(D);u.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var B=new mxParallelEdgeLayout(m);B.checkOverlap=!0;c.prompt(mxResources.get("spacing"),B.spacing,mxUtils.bind(this,function(C){B.spacing=C;c.executeLayout(function(){B.execute(m.getDefaultParent(),m.isSelectionEmpty()?null:m.getSelectionCells())},
!1)}))}),D);u.addSeparator(D);c.menus.addMenuItem(u,"runLayout",D,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(u,D){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(u,["about"],D);else{var B=u.addItem("Search:",null,null,D,null,null,!1);B.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";B.style.cursor="default";var C=document.createElement("input");C.setAttribute("type","text");C.setAttribute("size","25");C.style.marginLeft=
"8px";mxEvent.addListener(C,"keydown",mxUtils.bind(this,function(G){var N=mxUtils.trim(C.value);13==G.keyCode&&0<N.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(N)),C.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:N}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==G.keyCode&&(C.value="")}));B.firstChild.nextSibling.appendChild(C);
mxEvent.addGestureListeners(C,function(G){document.activeElement!=C&&C.focus();mxEvent.consume(G)},function(G){mxEvent.consume(G)},function(G){mxEvent.consume(G)});window.setTimeout(function(){C.focus()},0);EditorUi.isElectronApp?(c.actions.addAction("website...",function(){c.openLink("https://www.diagrams.net")}),c.actions.addAction("check4Updates",function(){c.checkForUpdates()}),this.addMenuItems(u,"- keyboardShortcuts quickStart website support -".split(" "),D),"1"!=urlParams.disableUpdate&&this.addMenuItems(u,
["check4Updates","-"],D),this.addMenuItems(u,["forkme","-","about"],D)):this.addMenuItems(u,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),D)}"1"==urlParams.test&&(u.addSeparator(D),this.addSubmenu("testDevelop",u,D))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var u=prompt("Language Code",Graph.diagramLanguage||"");null!=u&&(Graph.diagramLanguage=0<u.length?u:null,m.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");
X){"1"==urlParams.sketch?(B.insertTemplateEnabled&&!B.isOffline()&&B.menus.addMenuItems(U,["insertTemplate"],X),B.menus.addMenuItems(U,["insertImage","insertLink","-"],X),B.menus.addSubmenu("insertAdvanced",U,X,mxResources.get("advanced")),B.menus.addSubmenu("layout",U,X)):(V.apply(this,arguments),B.menus.addSubmenu("table",U,X))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(J,V,U,X){J.addItem(U,null,mxUtils.bind(this,function(){var t=
new CreateGraphDialog(B,U,X);B.showDialog(t.container,620,420,!0,!1);t.init()}),V)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(J,V){for(var U=0;U<R.length;U++)"-"==R[U]?J.addSeparator(V):W(J,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(B){var C=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
						this.executeLayouts(this.editor.graph.createLayouts(data.layouts));

							this.executeLayouts(graph.createLayouts(JSON.parse(layout)), function()

					var warningMsgs = mxResources.get('pluginWarning').split('\\n');
					var warningMsg = warningMsgs.pop(); //Last line in the message

					if (!warningMsg) 
					{
						warningMsg = warningMsgs.pop();
					}

					if (!confirm(warningMsg)) 
					{
						return;
					}
					
						var list = JSON.parse(newValue);
						editorUi.executeLayouts(graph.createLayouts(list));
						editorUi.customLayoutConfig = list;
						editorUi.hideDialog();
			
			

				editorUi.prompt(mxResources.get('spacing'), layout.spacing, mxUtils.bind(this, function(newValue)
				{
					layout.spacing = newValue;
					editorUi.executeLayout(function()
					{
						layout.execute(graph.getDefaultParent(), (!graph.isSelectionEmpty()) ?
							graph.getSelectionCells() : null);
					}, false);
				}));
					ui.menus.addSubmenu('layout', menu, parent);
/**
 * Translates this point by the given vector.
 * 
 * @param {number} dx X-coordinate of the translation.
 * @param {number} dy Y-coordinate of the translation.
 */
EditorUi.prototype.prompt = function(title, defaultValue, fn)
{
	var dlg = new FilenameDialog(this, defaultValue, mxResources.get('apply'), function(newValue)
	{
		fn(parseFloat(newValue));
	}, title);

	this.showDialog(dlg.container, 300, 80, true, true);
	dlg.init();
};

/**
 * Executes the given array of graph layouts using executeLayout and
 * calls done after the last layout has finished.
 */
EditorUi.prototype.executeLayouts = function(layouts, post)
{
	this.executeLayout(mxUtils.bind(this, function()
	{
		var layout = new mxCompositeLayout(this.editor.graph, layouts);
		var cells = this.editor.graph.getSelectionCells();

		layout.execute(this.editor.graph.getDefaultParent(),
			cells.length == 0 ? null : cells);
	}), true, post);
};

/**
 * Whitelist for known layout names.
 */
Graph.layoutNames = ['mxHierarchicalLayout', 'mxCircleLayout',
	'mxCompactTreeLayout', 'mxEdgeLabelLayout', 'mxFastOrganicLayout',
	'mxParallelEdgeLayout', 'mxPartitionLayout', 'mxRadialTreeLayout',
	'mxStackLayout'];

	if (node.nodeName == 'use' && node.hasAttribute('xlink:href') &&
		!node.getAttribute('xlink:href').match(/^#/))
				div.innerHTML = Graph.sanitizeHtml(data.substring(idx));
			else if (style['childLayout'] != null && style['childLayout'].charAt(0) == '[')
			{
				try
				{
					return new mxCompositeLayout(this.graph,
						this.graph.createLayouts(JSON.parse(
							style['childLayout'])));
				}
				catch (e)
				{
					if (window.console != null)
					{
						console.error(e);
					}
				}
			}
/**
 * Creates an array of graph layouts from the given array of the form [{layout: name, config: obj}, ...]
 * where name is the layout constructor name and config contains the properties of the layout instance.
 */
Graph.prototype.createLayouts = function(list)
{
	var layouts = [];

	for (var i = 0; i < list.length; i++)
	{
		if (mxUtils.indexOf(Graph.layoutNames, list[i].layout) >= 0)
		{
			var layout = new window[list[i].layout](this);
			
			if (list[i].config != null)
			{
				for (var key in list[i].config)
				{
					layout[key] = list[i].config[key];
				}
			}

			layouts.push(layout);
		}
		else
		{
			throw Error(mxResources.get('invalidCallFnNotFound', [list[i].layout]));
		}
	}

	return layouts;
};

    ALLOWED_URI_REGEXP: /^((?!javascript:).)*$/i};
			this.editorUi.prompt(mxResources.get('spacing'), defaultValue, fn);
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
Editor=function(a,b,f,e,g){mxEventSource.call(this);this.chromeless=null!=a?a:this.chromeless;this.initStencilRegistry();this.graph=e||this.createGraph(b,f);this.editable=null!=g?g:!a;this.undoManager=this.createUndoManager();this.status="";this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[Editor.pageCounter])+".xml"};this.getFilename=function(){return this.filename};this.setStatus=function(d){this.status=d;this.fireEvent(new mxEventObject("statusChanged"))};this.getStatus=
(function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(b){}})();Editor.defaultHtmlFont='-apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"';Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.extractGraphModelFromPng=function(a){var b=null;try{var f=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(f):Base64.decode(f,!0);EditorUi.parsePng(e,mxUtils.bind(this,function(g,d,k){g=e.substring(g+8,g+8+k);"zTXt"==d?(k=g.indexOf(String.fromCharCode(0)),"mxGraphModel"==g.substring(0,k)&&(g=pako.inflateRaw(Graph.stringToArrayBuffer(g.substring(k+2)),{to:"string"}).replace(/\+/g," "),null!=g&&0<g.length&&(b=g))):"tEXt"==d&&(g=g.split(String.fromCharCode(0)),1<g.length&&("mxGraphModel"==
g[0]||"mxfile"==g[0])&&(b=g[1]));if(null!=b||"IDAT"==d)return!0}))}catch(g){}null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b));return b};Editor.isDarkMode=function(a){return Editor.darkMode||"dark"==uiTheme};Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;mxUtils.extend(Editor,mxEventSource);
Editor.prototype.editAsNew=function(a,b){b=null!=b?"?title="+encodeURIComponent(b):"";null!=urlParams.ui&&(b+=(0<b.length?"&":"?")+"ui="+urlParams.ui);if("undefined"!==typeof window.postMessage&&(null==document.documentMode||10<=document.documentMode)){var f=null,e=mxUtils.bind(this,function(g){"ready"==g.data&&g.source==f&&(mxEvent.removeListener(window,"message",e),f.postMessage(a,"*"))});mxEvent.addListener(window,"message",e);f=this.graph.openLink(this.getEditBlankUrl(b+(0<b.length?"&":"?")+"client=1"),
null,!0)}else this.graph.openLink(this.getEditBlankUrl(b)+"#R"+encodeURIComponent(a))};Editor.prototype.createGraph=function(a,b){a=new Graph(null,b,null,null,a);a.transparentBackground=!1;var f=a.isCssTransformsSupported,e=this;a.isCssTransformsSupported=function(){return f.apply(this,arguments)&&(!e.chromeless||!mxClient.IS_SF)};this.chromeless||(a.isBlankLink=function(g){return!this.isExternalProtocol(g)});return a};
Editor.prototype.readGraphState=function(a){var b=a.getAttribute("grid");if(null==b||""==b)b=this.graph.defaultGridEnabled?"1":"0";this.graph.gridEnabled="0"!=b&&(!this.isChromelessView()||"1"==urlParams.grid);this.graph.gridSize=parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize;this.graph.graphHandler.guidesEnabled="0"!=a.getAttribute("guides");this.graph.setTooltips("0"!=a.getAttribute("tooltips"));this.graph.setConnectable("0"!=a.getAttribute("connect"));this.graph.connectionArrowsEnabled=
"0"!=a.getAttribute("arrows");this.graph.foldingEnabled="0"!=a.getAttribute("fold");this.isChromelessView()&&this.graph.foldingEnabled&&(this.graph.foldingEnabled="1"==urlParams.nav,this.graph.cellRenderer.forceControlClickHandler=this.graph.foldingEnabled);b=parseFloat(a.getAttribute("pageScale"));!isNaN(b)&&0<b?this.graph.pageScale=b:this.graph.pageScale=mxGraph.prototype.pageScale;this.graph.isLightboxView()||this.graph.isViewer()?this.graph.pageVisible=!1:(b=a.getAttribute("page"),this.graph.pageVisible=
null!=b?"0"!=b:this.graph.defaultPageVisible);this.graph.pageBreaksVisible=this.graph.pageVisible;this.graph.preferPageSize=this.graph.pageBreaksVisible;b=parseFloat(a.getAttribute("pageWidth"));var f=parseFloat(a.getAttribute("pageHeight"));isNaN(b)||isNaN(f)||(this.graph.pageFormat=new mxRectangle(0,0,b,f));a=a.getAttribute("background");this.graph.background=null!=a&&0<a.length?a:null};
Editor.prototype.setGraphXml=function(a){if(null!=a){var b=new mxCodec(a.ownerDocument);if("mxGraphModel"==a.nodeName){this.graph.model.beginUpdate();try{this.graph.model.clear(),this.graph.view.scale=1,this.readGraphState(a),this.updateGraphComponents(),b.decode(a,this.graph.getModel())}finally{this.graph.model.endUpdate()}this.fireEvent(new mxEventObject("resetGraphView"))}else if("root"==a.nodeName){this.resetGraph();var f=b.document.createElement("mxGraphModel");f.appendChild(a);b.decode(f,this.graph.getModel());
Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(e,g){b.undoableEditHappened(g.getProperty("edit"))};var f=mxUtils.bind(this,function(e,g){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(e,g){e=a.getSelectionCellsForChanges(g.getProperty("edit").changes,function(k){return!(k instanceof mxChildChange)});if(0<e.length){a.getModel();g=[];for(var d=0;d<e.length;d++)null!=
a.view.getState(e[d])&&g.push(e[d]);a.setSelectionCells(g)}};b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};
function Dialog(a,b,f,e,g,d,k,n,u,m,r){var x=u?57:0,A=f,C=e,F=u?0:64,K=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(K.height=window.innerHeight);var E=K.height,O=Math.max(1,Math.round((K.width-f-F)/2)),R=Math.max(1,Math.round((E-e-a.footerHeight)/3));b.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-F):f;e=Math.min(e,E-F);0<a.dialogs.length&&(this.zIndex+=
R+=a.embedViewport.y,O+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var Q=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(O,R,f,e);O=g.x;R=g.y;Q.style.width=f+"px";Q.style.height=e+"px";Q.style.left=O+"px";Q.style.top=R+"px";Q.style.zIndex=this.zIndex;Q.appendChild(b);document.body.appendChild(Q);!n&&b.clientHeight>Q.clientHeight-F&&(b.style.overflowY="auto");b.style.overflowX="hidden";if(d&&(d=document.createElement("img"),d.setAttribute("src",Dialog.prototype.closeImage),
"px";!n&&b.clientHeight>Q.clientHeight-F&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=R+14+"px",this.dialogImg.style.left=O+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=Q;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
var ErrorDialog=function(a,b,f,e,g,d,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=b){var A=document.createElement("div");A.style.padding="0px";A.style.margin="0px";A.style.fontSize="18px";A.style.paddingBottom="16px";A.style.marginBottom="10px";A.style.borderBottom="1px solid #c0c0c0";A.style.color="gray";A.style.whiteSpace="nowrap";A.style.textOverflow="ellipsis";A.style.overflow="hidden";mxUtils.write(A,b);A.setAttribute("title",b);x.appendChild(A)}b=
document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;x.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=d&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();d()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=r&&r()}),m.className="geBtn",f.appendChild(m));var C=mxUtils.button(e,function(){u&&a.hideDialog();null!=g&&g()});
C.className="geBtn";f.appendChild(C);null!=k&&(e=mxUtils.button(k,function(){u&&a.hideDialog();null!=n&&n()}),e.className="geBtn gePrimaryBtn",f.appendChild(e));this.init=function(){C.focus()};x.appendChild(f);this.container=x},PrintDialog=function(a,b){this.create(a,b)};
PrintDialog.prototype.create=function(a){function b(C){var F=k.checked||m.checked,K=parseInt(x.value)/100;isNaN(K)&&(K=1,x.value="100%");K*=.75;var E=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,O=1/f.pageScale;if(F){var R=k.checked?1:parseInt(r.value);isNaN(R)||(O=mxUtils.getScaleForPageCount(R,f,E))}f.getGraphBounds();var Q=R=0;E=mxRectangle.fromRectangle(E);E.width=Math.ceil(E.width*K);E.height=Math.ceil(E.height*K);O*=K;!F&&f.pageVisible?(K=f.getPageLayout(),R-=K.x*E.width,Q-=K.y*E.height):
n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});A.className="geBtn";n.appendChild(A)}A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});A.className="geBtn gePrimaryBtn";n.appendChild(A);a.editor.cancelFirst||
n.appendChild(u);d.appendChild(n);g.appendChild(d);e.appendChild(g);this.container=e};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(f){}};
PrintDialog.createPrintPreview=function(a,b,f,e,g,d,k){b=new mxPrintPreview(a,b,f,e,g,d);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var n=b.writeHead;b.writeHead=function(u){n.apply(this,arguments);u.writeln('<style type="text/css">');u.writeln("@media screen {");u.writeln("  body > div { padding:30px;box-sizing:content-box; }");u.writeln("}");u.writeln("</style>")};return b};
var PageSetupDialog=function(a){function b(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var E=F;null!=E&&Graph.isPageLink(E.src)&&(E=a.createImageForPageLink(E.src,null));null!=E&&null!=E.src?(C.setAttribute("src",E.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var e=a.editor.graph,g=document.createElement("table");g.style.width=
mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var r=e.background;b();mxEvent.addListener(m,
"click",function(E){a.pickColor(r||"none",function(O){r=O;b()});mxEvent.consume(E)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=e.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var E=parseInt(x.value);x.value=Math.max(1,isNaN(E)?e.getGridSize():E)});k.appendChild(n);d.appendChild(k);k=document.createElement("tr");
PageSetupDialog.addPageFormatPanel=function(a,b,f,e){function g(aa,T,U){if(U||x!=document.activeElement&&A!=document.activeElement){aa=!1;for(T=0;T<F.length;T++)U=F[T],R?"custom"==U.key&&(n.value=U.key,R=!1):null!=U.format&&("a4"==U.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==U.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==U.format.width&&
n.value="custom",u.style.display="none",r.style.display="")}}b="format-"+b;var d=document.createElement("input");d.setAttribute("name",b);d.setAttribute("type","radio");d.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",b);k.setAttribute("type","radio");k.setAttribute("value","landscape");var n=document.createElement("select");n.style.marginBottom="8px";n.style.borderRadius="4px";n.style.border="1px solid rgb(160, 160, 160)";n.style.width="206px";var u=
document.createElement("div");u.style.marginLeft="4px";u.style.width="210px";u.style.height="24px";d.style.marginRight="6px";u.appendChild(d);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));u.appendChild(b);k.style.marginLeft="10px";k.style.marginRight="6px";u.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));u.appendChild(m);var r=document.createElement("div");r.style.marginLeft=
Math.floor(100*parseFloat(A.value)));"custom"!=n.value&&k.checked&&(aa=new mxRectangle(0,0,aa.height,aa.width));T&&R||aa.width==Q.width&&aa.height==Q.height||(Q=aa,null!=e&&e(Q))};mxEvent.addListener(b,"click",function(aa){d.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(m,"click",function(aa){k.checked=!0;P(aa);mxEvent.consume(aa)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(A,"blur",P);mxEvent.addListener(A,"click",P);mxEvent.addListener(k,"change",
var FilenameDialog=function(a,b,f,e,g,d,k,n,u,m,r,x){u=null!=u?u:!0;var A=document.createElement("table"),C=document.createElement("tbody");A.style.position="absolute";A.style.top="30px";A.style.left="20px";var F=document.createElement("tr");var K=document.createElement("td");K.style.textOverflow="ellipsis";K.style.textAlign="right";K.style.maxWidth="100px";K.style.fontSize="10pt";K.style.width="84px";mxUtils.write(K,(g||mxResources.get("filename"))+":");F.appendChild(K);var E=document.createElement("input");
E.setAttribute("value",b||"");E.style.marginLeft="4px";E.style.width=null!=x?x+"px":"180px";var O=mxUtils.button(f,function(){if(null==d||d(E.value))u&&a.hideDialog(),e(E.value)});O.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(E.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?E.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=A.parentNode;if(null!=R){var Q=null;mxEvent.addListener(R,"dragleave",function(P){null!=Q&&(Q.style.backgroundColor=
K=document.createElement("td"),K.style.whiteSpace="nowrap",F.appendChild(K),b=FilenameDialog.createFileTypes(a,E,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",K.appendChild(b),E.style.width=null!=x?x-40+"px":"190px",F.appendChild(K),C.appendChild(F)));null!=k&&(F=document.createElement("tr"),K=document.createElement("td"),K.colSpan=2,K.appendChild(k),F.appendChild(K),C.appendChild(F));F=document.createElement("tr");K=document.createElement("td");K.colSpan=2;K.style.paddingTop=
FilenameDialog.createTypeHint=function(a,b,f){var e=document.createElement("img");e.style.backgroundPosition="center bottom";e.style.backgroundRepeat="no-repeat";e.style.margin="2px 0 0 4px";e.style.verticalAlign="top";e.style.cursor="pointer";e.style.height="16px";e.style.width="16px";mxUtils.setOpacity(e,70);var g=function(){e.setAttribute("src",Editor.helpImage);e.setAttribute("title",mxResources.get("help"));for(var d=0;d<f.length;d++)if(0<f[d].ext.length&&b.value.toLowerCase().substring(b.value.length-
f[d].ext.length-1)=="."+f[d].ext){e.setAttribute("title",mxResources.get(f[d].title));break}};mxEvent.addListener(b,"keyup",g);mxEvent.addListener(b,"change",g);mxEvent.addListener(e,"click",function(d){var k=e.getAttribute("title");e.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=k&&a.showError(null,k,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(d)});
FilenameDialog.createFileTypes=function(a,b,f){var e=document.createElement("select");for(a=0;a<f.length;a++){var g=document.createElement("option");g.setAttribute("value",a);mxUtils.write(g,mxResources.get(f[a].description)+" (."+f[a].extension+")");e.appendChild(g)}mxEvent.addListener(e,"change",function(d){d=f[e.value].extension;var k=b.value.lastIndexOf(".drawio.");k=0<k?k:b.value.lastIndexOf(".");"drawio"!=d&&(d="drawio."+d);b.value=0<k?b.value.substring(0,k+1)+d:b.value+"."+d;"createEvent"in
document?(d=document.createEvent("HTMLEvents"),d.initEvent("change",!1,!0),b.dispatchEvent(d)):b.fireEvent("onchange")});a=function(d){d=b.value.toLowerCase();for(var k=0,n=0;n<f.length;n++){var u=f[n].extension,m=null;"drawio"!=u&&(m=u,u=".drawio."+u);if(d.substring(d.length-u.length-1)=="."+u||null!=m&&d.substring(d.length-m.length-1)=="."+m){k=n;break}}e.value=k};mxEvent.addListener(b,"change",a);mxEvent.addListener(b,"keyup",a);a();return e};
k(this.verticalPageBreaks)};var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(k,n,u){for(var m=0;m<n.length;m++){if(this.graph.isTableCell(n[m])||this.graph.isTableRow(n[m]))return!1;if(this.graph.getModel().isVertex(n[m])){var r=this.graph.getCellGeometry(n[m]);if(null!=r&&r.relative)return!1}}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var k=
this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var e=this.editor.graph;e.lightbox=f;var g=e.getGraphBounds;e.getGraphBounds=function(){var I=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var H=this.view.translate,S=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((H.x+L.x)*S,(H.y+L.y)*S,L.width*S,L.height*S))}return I};e.useCssTransforms&&(this.lazyZoomDelay=
e.currentVertexStyle=mxUtils.clone(e.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<u.length;b++)0>mxUtils.indexOf(d,u[b])&&d.push(u[b]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),r=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<r.length;b++)for(f=0;f<r[b].length;f++)d.push(r[b][f]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(d,k[b])&&d.push(k[b]);var x=function(I,L,H,S,V,ea,ka){S=null!=S?S:e.currentVertexStyle;V=null!=V?V:e.currentEdgeStyle;ea=null!=ea?ea:!0;H=null!=H?H:e.getModel();if(ka){ka=[];for(var wa=0;wa<I.length;wa++)ka=ka.concat(H.getDescendants(I[wa]));I=ka}H.beginUpdate();try{for(wa=0;wa<I.length;wa++){var W=I[wa];if(L)var Z=["fontSize",
A,this.footerContainer.onselectstart=A,this.footerContainer.onmousedown=A,null!=this.tabContainer&&(this.tabContainer.onselectstart=A));!this.editor.chromeless||this.editor.editable?(b=function(I){if(null!=I){var L=mxEvent.getSource(I);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return A(I)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=
b):e.panningHandler.usePopupTrigger=!1;e.init(this.diagramContainer);mxClient.IS_SVG&&null!=e.view.getDrawPane()&&(b=e.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=e.graphHandler){var C=e.graphHandler.start;e.graphHandler.start=function(){null!=fa.hoverIcons&&fa.hoverIcons.reset();C.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(I){var L=mxUtils.getOffset(this.diagramContainer);
EditorUi.parsePng=function(a,b,f){function e(n,u){var m=d;d+=u;return n.substring(m,d)}function g(n){n=e(n,4);return n.charCodeAt(3)+(n.charCodeAt(2)<<8)+(n.charCodeAt(1)<<16)+(n.charCodeAt(0)<<24)}var d=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(e(a,4),"IHDR"!=e(a,4))null!=f&&f();else{e(a,17);do{f=g(a);var k=e(a,4);if(null!=b&&b(d-8,k,f))break;value=e(a,f);e(a,4);if("IEND"==k)break}while(f)}};mxUtils.extend(EditorUi,mxEventSource);
"keydown",mxUtils.bind(this,function(e){this.onKeyDown(e)}));mxEvent.addListener(a.container,"keypress",mxUtils.bind(this,function(e){this.onKeyPress(e)}));this.addUndoListener();this.addBeforeUnloadListener();a.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));a.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.updateActionStates()}));var b=a.setDefaultParent,f=this;this.editor.graph.setDefaultParent=function(){b.apply(this,
EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,b=a.getSelectionCells(),f=this.initSelectionState(),e=!0,g=0;g<b.length;g++){var d=a.getCurrentCellStyle(b[g]);"0"!=mxUtils.getValue(d,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(f,b[g],b,e),e=!1)}this.updateSelectionStateForTableCells(f);return f};
EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var b=mxUtils.sortCells(a.cells),f=this.editor.graph.model,e=f.getParent(b[0]),g=f.getParent(e),d=e.getIndex(b[0]),k=g.getIndex(e),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),d):null;r<b.length-1;){var A=b[++r];null==x||x!=A||null!=n&&u!=n||(n=u,u=0,m++,e=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),d):null);var C=this.editor.graph.view.getState(A);
if(A==f.getChildAt(e,d+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=b[0],a.colspan=u,a.rowspan=m)}};
EditorUi.prototype.updateSelectionStateForCell=function(a,b,f,e){f=this.editor.graph;a.cells.push(b);if(f.getModel().isVertex(b)){a.connections=0<f.model.getEdgeCount(b);a.unlocked=a.unlocked&&!f.isCellLocked(b);a.resizable=a.resizable&&f.isCellResizable(b);a.rotatable=a.rotatable&&f.isCellRotatable(b);a.movable=a.movable&&f.isCellMovable(b)&&!f.isTableRow(b)&&!f.isTableCell(b);a.swimlane=a.swimlane||f.isSwimlane(b);a.table=a.table||f.isTable(b);a.cell=a.cell||f.isTableCell(b);a.row=a.row||f.isTableRow(b);
a.vertices.push(b);var g=f.getCellGeometry(b);if(null!=g&&(0<g.width?null==a.width?a.width=g.width:a.width!=g.width&&(a.width=""):a.containsLabel=!0,0<g.height?null==a.height?a.height=g.height:a.height!=g.height&&(a.height=""):a.containsLabel=!0,!g.relative||null!=g.offset)){var d=g.relative?g.offset.x:g.x;g=g.relative?g.offset.y:g.y;null==a.x?a.x=d:a.x!=d&&(a.x="");null==a.y?a.y=g:a.y!=g&&(a.y="")}}else f.getModel().isEdge(b)&&(a.edges.push(b),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=
!1);b=f.view.getState(b);null!=b&&(a.autoSize=a.autoSize||f.isAutoSizeState(b),a.glass=a.glass&&f.isGlassState(b),a.rounded=a.rounded&&f.isRoundedState(b),a.lineJumps=a.lineJumps&&f.isLineJumpState(b),a.image=a.image&&f.isImageState(b),a.shadow=a.shadow&&f.isShadowState(b),a.fill=a.fill&&f.isFillState(b),a.stroke=a.stroke&&f.isStrokeState(b),d=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==d,f.mergeStyle(b.style,a.style,e))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,b=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(u,m){"mouseDown"==m.getProperty("eventName")&&b.hideShapePicker()}));var f=mxUtils.bind(this,function(){b.hideShapePicker(!0)});a.addListener("wheel",f);a.addListener(mxEvent.ESCAPE,f);a.view.addListener(mxEvent.SCALE,f);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,f);a.getSelectionModel().addListener(mxEvent.CHANGE,f);var e=a.popupMenuHandler.isMenuShowing;
a.popupMenuHandler.isMenuShowing=function(){return e.apply(this,arguments)||null!=b.shapePicker};var g=a.dblClick;a.dblClick=function(u,m){if(this.isEnabled())if(null!=m||null==b.sidebar||mxEvent.isShiftDown(u)||a.isCellLocked(a.getDefaultParent()))g.apply(this,arguments);else{var r=mxUtils.convertPoint(this.container,mxEvent.getClientX(u),mxEvent.getClientY(u));mxEvent.consume(u);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.x,r.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
f);var d=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();d.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(A,C,F){var K=a.getCompositeParent(u.cell);A=a.getCellGeometry(K);for(r.consume();null!=K&&a.model.isVertex(K)&&null!=A&&A.relative;)cell=
K,K=a.model.getParent(cell),A=a.getCellGeometry(K);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.getGraphX(),r.getGraphY(),K,mxUtils.bind(this,function(E){F(E);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(E))}),m)}),30)}),mxUtils.bind(this,function(A){this.graph.selectCellsForConnectVertex(A,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
m.getProperty("arrow"),x=m.getProperty("direction"),A=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),F=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var K=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),E=b.showShapePicker(F,C,K,mxUtils.bind(this,function(O){null!=O&&a.connectVertex(K,x,a.defaultEdgeLength,A,!0,!0,function(R,Q,P){P(O);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(O))},
function(R){a.selectCellsForConnectVertex(R)},A,this.hoverIcons)}),x,!0);this.centerShapePicker(E,r,F,C,x);mxUtils.setOpacity(E,30);mxEvent.addListener(E,"mouseenter",function(){mxUtils.setOpacity(E,100)});mxEvent.addListener(E,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
EditorUi.prototype.centerShapePicker=function(a,b,f,e,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)a.style.width="40px";var d=a.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(f-=d.width/2-10,e-=d.height+6):g==mxConstants.DIRECTION_SOUTH?(f-=d.width/2-10,e+=b.height+6):g==mxConstants.DIRECTION_WEST?(f-=d.width+6,e-=d.height/2-10):g==mxConstants.DIRECTION_EAST&&(f+=b.width+6,e-=d.height/2-10);a.style.left=f+"px";a.style.top=e+"px"};
EditorUi.prototype.showShapePicker=function(a,b,f,e,g,d){a=this.createShapePicker(a,b,f,e,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(f,d),d);null!=a&&(null==this.hoverIcons||d||this.hoverIcons.reset(),d=this.editor.graph,d.popupMenuHandler.hideMenu(),d.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=e,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,b,f,e,g,d,k,n){var u=null;if(null!=k&&0<k.length){var m=this,r=this.editor.graph;u=document.createElement("div");g=r.view.getState(f);var x=null==f||null!=g&&r.isTransparentState(g)?null:r.copyStyle(f);f=6>k.length?35*k.length:140;u.className="geToolbarContainer geSidebarContainer";u.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+f+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
this.sidebar.graph.pasteStyle(x,[A]):m.insertHandler([A],""!=A.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([A],25,25,C,null,!0,!1,A.geometry.width,A.geometry.height);mxEvent.addListener(C,"click",function(){var F=r.cloneCell(A);if(null!=e)e(F);else{F.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-A.geometry.width/2);F.geometry.y=r.snap(Math.round(b/r.view.scale)-r.view.translate.y-A.geometry.height/2);r.model.beginUpdate();try{r.addCell(F)}finally{r.model.endUpdate()}r.setSelectionCell(F);
r.scrollCellToVisible(F);r.startEditingAtCell(F);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(F))}null!=d&&d()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,b-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
EditorUi.prototype.getCellsForShapePicker=function(a,b){b=mxUtils.bind(this,function(f,e,g,d){return this.editor.graph.createVertex(null,null,d||"",0,0,e||120,g||60,f,!1)});return[null!=a?this.editor.graph.cloneCell(a):b("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),b("whiteSpace=wrap;html=1;"),b("ellipse;whiteSpace=wrap;html=1;"),b("rhombus;whiteSpace=wrap;html=1;",80,80),b("rounded=1;whiteSpace=wrap;html=1;"),b("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),
b("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),b("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),b("triangle;whiteSpace=wrap;html=1;",60,80),b("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),b("shape=tape;whiteSpace=wrap;html=1;",120,100),b("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80),b("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),b("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
EditorUi.prototype.onKeyDown=function(a){var b=this.editor.graph;if(9==a.which&&b.isEnabled()&&!mxEvent.isControlDown(a)){if(b.isEditing())if(mxEvent.isAltDown(a))b.stopEditing(!1);else try{var f=b.cellEditor.isContentEditing()&&b.cellEditor.isTextSelected();if(window.getSelection&&b.cellEditor.isContentEditing()&&!f&&!mxClient.IS_IE&&!mxClient.IS_IE11){var e=window.getSelection(),g=0<e.rangeCount?e.getRangeAt(0).commonAncestorContainer:null;f=null!=g&&("LI"==g.nodeName||null!=g.parentNode&&"LI"==
g.parentNode.nodeName)}f?document.execCommand(mxEvent.isShiftDown(a)?"outdent":"indent",!1,null):mxEvent.isShiftDown(a)?b.stopEditing(!1):b.cellEditor.insertTab(b.cellEditor.isContentEditing()?null:4)}catch(d){}else mxEvent.isAltDown(a)?b.selectParentCell():b.selectCell(!mxEvent.isShiftDown(a));mxEvent.consume(a)}};
EditorUi.prototype.onKeyPress=function(a){var b=this.editor.graph;!this.isImmediateEditingEvent(a)||b.isEditing()||b.isSelectionEmpty()||0===a.which||27===a.which||mxEvent.isAltDown(a)||mxEvent.isControlDown(a)||mxEvent.isMetaDown(a)||(b.escape(),b.startEditing(),mxClient.IS_FF&&(b=b.cellEditor,null!=b.textarea&&(b.textarea.innerHTML=String.fromCharCode(a.which),a=document.createRange(),a.selectNodeContents(b.textarea),a.collapse(!1),b=window.getSelection(),b.removeAllRanges(),b.addRange(a))))};
EditorUi.prototype.getCssClassForMarker=function(a,b,f,e){return"flexArrow"==b?null!=f&&f!=mxConstants.NONE?"geSprite geSprite-"+a+"blocktrans":"geSprite geSprite-noarrow":"box"==f||"halfCircle"==f?"geSprite geSvgSprite geSprite-"+f+("end"==a?" geFlipSprite":""):f==mxConstants.ARROW_CLASSIC?"1"==e?"geSprite geSprite-"+a+"classic":"geSprite geSprite-"+a+"classictrans":f==mxConstants.ARROW_CLASSIC_THIN?"1"==e?"geSprite geSprite-"+a+"classicthin":"geSprite geSprite-"+a+"classicthintrans":f==mxConstants.ARROW_OPEN?
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=this.actions.get("pasteHere");b.setEnabled(this.editor.graph.cellEditor.isContentEditing()||(!mxClient.IS_FF&&null!=navigator.clipboard||!mxClipboard.isEmpty())&&a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()));f.setEnabled(b.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(d){d.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(d){var k=null;if(d.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{k=k||d.getSelectionCells();k=d.getExportableCells(d.model.getTopmostCells(k));for(var n={},u=d.createCellLookup(k),m=d.cloneCells(k,null,n),r=new mxGraphModel,x=r.getChildAt(r.getRoot(),
this.scale*H.height*S.height)};a.getPreferredPageSize=function(H,S,V){H=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,H.width*S.width,H.height*S.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(H,S,V,ea){if(null!=a.container&&!a.isViewer()){V=null!=V?V:0;ea=null!=ea?ea:0;var ka=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,Z=a.view.scale,
20:null);a.view.scale!=ea&&(null!=ba&&(ka+=S.x-ba.x,wa+=S.y-ba.y),null!=b&&f.chromelessResize(!1,null,ka*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==ka&&0==wa||(a.container.scrollLeft-=ka*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=I&&U.setAttribute("filter",I);a.cumulativeZoomFactor=1;I=qa=ha=ba=fa=null}),null!=H?H:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(H,S,
20*(V-1):null!=H.movementY&&"pointermove"==H.type&&(V=1+Math.max(1,Math.abs(H.movementY))/20*(V-1),ea=-1),a.lazyZoom(S,null,ea,V),mxEvent.consume(H),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(H){a.cumulativeZoomFactor=H.scale;a.lazyZoom(0<H.scale,!0);mxEvent.consume(H)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.lightboxFit=function(a){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var b=urlParams.border,f=60;null!=b&&(f=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,null,null,null,null,null,a);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var a=this.editor.graph.getModel();return 1==a.getChildCount(a.root)&&0==a.getChildCount(a.getChildAt(a.root,0))};
EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(a,b){try{var f=mxUtils.parseXml(a);this.editor.setGraphXml(f.documentElement);this.editor.setModified(!1);this.editor.undoManager.clear();null!=b&&(this.editor.setFilename(b),this.updateDocumentTitle())}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(a){}this.editor.graph.view.validate();this.editor.graph.sizeDidChange();
this.editor.fireEvent(new mxEventObject("resetGraphView"))};EditorUi.prototype.showPopupMenu=function(a,b,f,e){this.editor.graph.popupMenuHandler.hideMenu();var g=new mxPopupMenu(a);g.div.className+=" geMenubarMenu";g.smartSeparators=!0;g.showDisabled=!0;g.autoExpand=!0;g.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(g,arguments);g.destroy()});g.popup(b,f,null,e);this.setCurrentMenu(g)};
EditorUi.prototype.setCurrentMenu=function(a,b){this.currentMenuElt=b;this.currentMenu=a};EditorUi.prototype.resetCurrentMenu=function(){this.currentMenu=this.currentMenuElt=null};EditorUi.prototype.hideCurrentMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.resetCurrentMenu())};EditorUi.prototype.updateDocumentTitle=function(){var a=this.editor.getOrCreateFilename();null!=this.editor.appName&&(a+=" - "+this.editor.appName);document.title=a};
EditorUi.prototype.createHoverIcons=function(){return new HoverIcons(this.editor.graph)};EditorUi.prototype.redo=function(){try{this.editor.graph.isEditing()?document.execCommand("redo",!1,null):this.editor.undoManager.redo()}catch(a){}};EditorUi.prototype.undo=function(){try{var a=this.editor.graph;if(a.isEditing()){var b=a.cellEditor.textarea.innerHTML;document.execCommand("undo",!1,null);b==a.cellEditor.textarea.innerHTML&&(a.stopEditing(!0),this.editor.undoManager.undo())}else this.editor.undoManager.undo()}catch(f){}};
EditorUi.prototype.canRedo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canRedo()};EditorUi.prototype.canUndo=function(){return this.editor.graph.isEditing()||this.editor.undoManager.canUndo()};EditorUi.prototype.getEditBlankXml=function(){return mxUtils.getXml(this.editor.getGraphXml())};EditorUi.prototype.getUrl=function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0,f;for(f in urlParams)a=0==b?a+"?":a+"&",a+=f+"="+urlParams[f],b++;return a};
EditorUi.prototype.setScrollbars=function(a){var b=this.editor.graph,f=b.container.style.overflow;b.scrollbars=a;this.editor.updateGraphComponents();f!=b.container.style.overflow&&(b.container.scrollTop=0,b.container.scrollLeft=0,b.view.scaleAndTranslate(1,0,0),this.resetScrollbars());this.fireEvent(new mxEventObject("scrollbarsChanged"))};EditorUi.prototype.hasScrollbars=function(){return this.editor.graph.scrollbars};
EditorUi.prototype.resetScrollbars=function(){var a=this.editor.graph;if(!this.editor.extendCanvas)a.container.scrollTop=0,a.container.scrollLeft=0,mxUtils.hasScrollbars(a.container)||a.view.setTranslate(0,0);else if(!this.editor.isChromelessView())if(mxUtils.hasScrollbars(a.container))if(a.pageVisible){var b=a.getPagePadding();a.container.scrollTop=Math.floor(b.y-this.editor.initialTopSpacing)-1;a.container.scrollLeft=Math.floor(Math.min(b.x,(a.container.scrollWidth-a.container.clientWidth)/2))-
1;b=a.getGraphBounds();0<b.width&&0<b.height&&(b.x>a.container.scrollLeft+.9*a.container.clientWidth&&(a.container.scrollLeft=Math.min(b.x+b.width-a.container.clientWidth,b.x-10)),b.y>a.container.scrollTop+.9*a.container.clientHeight&&(a.container.scrollTop=Math.min(b.y+b.height-a.container.clientHeight,b.y-10)))}else{b=a.getGraphBounds();var f=Math.max(b.width,a.scrollTileSize.width*a.view.scale);a.container.scrollTop=Math.floor(Math.max(0,b.y-Math.max(20,(a.container.clientHeight-Math.max(b.height,
a.scrollTileSize.height*a.view.scale))/4)));a.container.scrollLeft=Math.floor(Math.max(0,b.x-Math.max(0,(a.container.clientWidth-f)/2)))}else{b=mxRectangle.fromRectangle(a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds());f=a.view.translate;var e=a.view.scale;b.x=b.x/e-f.x;b.y=b.y/e-f.y;b.width/=e;b.height/=e;a.view.setTranslate(Math.floor(Math.max(0,(a.container.clientWidth-b.width)/2)-b.x+2),Math.floor((a.pageVisible?0:Math.max(0,(a.container.clientHeight-b.height)/4))-b.y+1))}};
EditorUi.prototype.setPageVisible=function(a){var b=this.editor.graph,f=mxUtils.hasScrollbars(b.container),e=0,g=0;f&&(e=b.view.translate.x*b.view.scale-b.container.scrollLeft,g=b.view.translate.y*b.view.scale-b.container.scrollTop);b.pageVisible=a;b.pageBreaksVisible=a;b.preferPageSize=a;b.view.validateBackground();if(f){var d=b.getSelectionCells();b.clearSelection();b.setSelectionCells(d)}b.sizeDidChange();f&&(b.container.scrollLeft=b.view.translate.x*b.view.scale-e,b.container.scrollTop=b.view.translate.y*
b.view.scale-g);b.defaultPageVisible=a;this.fireEvent(new mxEventObject("pageViewChanged"))};function ChangeGridColor(a,b){this.ui=a;this.color=b}ChangeGridColor.prototype.execute=function(){var a=this.ui.editor.graph.view.gridColor;this.ui.setGridColor(this.color);this.color=a};(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);mxCodecRegistry.register(a)})();
function ChangePageSetup(a,b,f,e,g){this.ui=a;this.previousColor=this.color=b;this.previousImage=this.image=f;this.previousFormat=this.format=e;this.previousPageScale=this.pageScale=g;this.ignoreImage=this.ignoreColor=!1}
ChangePageSetup.prototype.execute=function(){var a=this.ui.editor.graph;if(!this.ignoreColor){this.color=this.previousColor;var b=a.background;this.ui.setBackgroundColor(this.previousColor);this.previousColor=b}if(!this.ignoreImage){this.image=this.previousImage;b=a.backgroundImage;var f=this.previousImage;null!=f&&null!=f.src&&"data:page/id,"==f.src.substring(0,13)&&(f=this.ui.createImageForPageLink(f.src,this.ui.currentPage));this.ui.setBackgroundImage(f);this.previousImage=b}null!=this.previousFormat&&
(this.format=this.previousFormat,b=a.pageFormat,this.previousFormat.width!=b.width||this.previousFormat.height!=b.height)&&(this.ui.setPageFormat(this.previousFormat),this.previousFormat=b);null!=this.foldingEnabled&&this.foldingEnabled!=this.ui.editor.graph.foldingEnabled&&(this.ui.setFoldingEnabled(this.foldingEnabled),this.foldingEnabled=!this.foldingEnabled);null!=this.previousPageScale&&(a=this.ui.editor.graph.pageScale,this.previousPageScale!=a&&(this.ui.setPageScale(this.previousPageScale),
this.previousPageScale=a))};(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat","previousPageScale"]);a.afterDecode=function(b,f,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;e.previousPageScale=e.pageScale;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);return e};mxCodecRegistry.register(a)})();
EditorUi.prototype.setPageFormat=function(a,b){b=null!=b?b:"1"==urlParams.sketch;this.editor.graph.pageFormat=a;b||(this.editor.graph.pageVisible?(this.editor.graph.view.validateBackground(),this.editor.graph.sizeDidChange()):this.actions.get("pageView").funct());this.fireEvent(new mxEventObject("pageFormatChanged"))};
EditorUi.prototype.addUndoListener=function(){var a=this.actions.get("undo"),b=this.actions.get("redo"),f=this.editor.undoManager,e=mxUtils.bind(this,function(){a.setEnabled(this.canUndo());b.setEnabled(this.canRedo())});f.addListener(mxEvent.ADD,e);f.addListener(mxEvent.UNDO,e);f.addListener(mxEvent.REDO,e);f.addListener(mxEvent.CLEAR,e);var g=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){g.apply(this,arguments);e()};var d=this.editor.graph.cellEditor.stopEditing;
EditorUi.prototype.updateActionStates=function(){for(var a=this.editor.graph,b=this.getSelectionState(),f=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent()),e="cut copy bold italic underline delete duplicate editStyle editTooltip editLink backgroundColor borderColor edit toFront toBack solid dashed pasteSize dotted fillColor gradientColor shadow fontColor formattedText rounded toggleRounded strokeColor sharp snapToGrid".split(" "),g=0;g<e.length;g++)this.actions.get(e[g]).setEnabled(0<b.cells.length);
this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);this.actions.get("pasteSize").setEnabled(null!=this.copiedSize&&0<b.vertices.length);this.actions.get("pasteData").setEnabled(null!=this.copiedValue&&0<b.cells.length);this.actions.get("setAsDefaultStyle").setEnabled(1==a.getSelectionCount());this.actions.get("lockUnlock").setEnabled(!a.isSelectionEmpty());this.actions.get("bringForward").setEnabled(1==b.cells.length);this.actions.get("sendBackward").setEnabled(1==
b.cells.length);this.actions.get("rotation").setEnabled(1==b.vertices.length);this.actions.get("wordWrap").setEnabled(1==b.vertices.length);this.actions.get("autosize").setEnabled(1==b.vertices.length);this.actions.get("copySize").setEnabled(1==b.vertices.length);this.actions.get("clearWaypoints").setEnabled(b.connections);this.actions.get("curved").setEnabled(0<b.edges.length);this.actions.get("turn").setEnabled(0<b.cells.length);this.actions.get("group").setEnabled(!b.row&&!b.cell&&(1<b.cells.length||
1==b.vertices.length&&0==a.model.getChildCount(b.cells[0])&&!a.isContainer(b.vertices[0])));this.actions.get("ungroup").setEnabled(!b.row&&!b.cell&&!b.table&&0<b.vertices.length&&(a.isContainer(b.vertices[0])||0<a.getModel().getChildCount(b.vertices[0])));this.actions.get("removeFromGroup").setEnabled(1==b.cells.length&&a.getModel().isVertex(a.getModel().getParent(b.cells[0])));this.actions.get("collapsible").setEnabled(1==b.vertices.length&&(0<a.model.getChildCount(b.vertices[0])||a.isContainer(b.vertices[0])));
this.actions.get("exitGroup").setEnabled(null!=a.view.currentRoot);this.actions.get("home").setEnabled(null!=a.view.currentRoot);this.actions.get("enterGroup").setEnabled(1==b.cells.length&&a.isValidRoot(b.cells[0]));this.actions.get("editLink").setEnabled(1==b.cells.length);this.actions.get("openLink").setEnabled(1==b.cells.length&&null!=a.getLinkForCell(b.cells[0]));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("selectVertices").setEnabled(f);this.actions.get("selectEdges").setEnabled(f);
this.actions.get("selectAll").setEnabled(f);this.actions.get("selectNone").setEnabled(f);e=1==b.vertices.length&&a.isCellFoldable(b.vertices[0]);this.actions.get("expand").setEnabled(e);this.actions.get("collapse").setEnabled(e);this.menus.get("navigation").setEnabled(0<b.cells.length||null!=a.view.currentRoot);this.menus.get("layout").setEnabled(f);this.menus.get("insert").setEnabled(f);this.menus.get("direction").setEnabled(b.unlocked&&1==b.vertices.length);this.menus.get("distribute").setEnabled(b.unlocked&&
1<b.vertices.length);this.menus.get("align").setEnabled(b.unlocked&&0<b.cells.length);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset};
EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=this.container.clientWidth,f=this.container.clientHeight;this.container==document.body&&(b=document.body.clientWidth||document.documentElement.clientWidth,f=document.documentElement.clientHeight);var e=0;mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&window.innerHeight!=document.documentElement.clientHeight&&(e=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var g=Math.max(0,Math.min(this.hsplitPosition,
b-this.splitSize-20));b=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",b+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",b+=this.toolbarHeight);0<b&&(b+=1);var d=0;if(null!=this.sidebarFooterContainer){var k=this.footerHeight+e;d=Math.max(0,Math.min(f-b-k,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=g+"px";this.sidebarFooterContainer.style.height=
d+"px";this.sidebarFooterContainer.style.bottom=k+"px"}f=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=b+"px";this.sidebarContainer.style.width=g+"px";this.formatContainer.style.top=b+"px";this.formatContainer.style.width=f+"px";this.formatContainer.style.display=null!=this.format?"":"none";k=this.getDiagramContainerOffset();var n=null!=this.hsplit.parentNode?g+this.splitSize:0;this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;
d+e+"px";this.formatContainer.style.bottom=this.footerHeight+e+"px";"1"!=urlParams.embedInline&&(this.diagramContainer.style.left=n+k.x+"px",this.diagramContainer.style.top=b+k.y+"px",this.diagramContainer.style.right=f+"px",this.diagramContainer.style.bottom=this.footerHeight+e+g+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null};
!0,0,mxUtils.bind(this,function(b){this.hsplitPosition=b;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a;0==this.statusContainer.getElementsByTagName("div").length&&(this.statusContainer.innerHTML="",a=this.createStatusDiv(a),this.statusContainer.appendChild(a))};
EditorUi.prototype.createStatusDiv=function(a){var b=document.createElement("div");b.setAttribute("title",a);b.innerHTML=a;return b};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};
EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b};
EditorUi.prototype.addSplitHandler=function(a,b,f,e){function g(x){if(null!=k){var A=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));e(Math.max(0,n+(b?A.x-k.x:k.y-A.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function d(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(b?a.style.left:a.style.bottom);b||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
EditorUi.prototype.prompt=function(a,b,f){a=new FilenameDialog(this,b,mxResources.get("apply"),function(e){f(parseFloat(e))},a);this.showDialog(a.container,300,80,!0,!0);a.init()};
EditorUi.prototype.handleError=function(a,b,f,e,g){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var d=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(g=mxUtils.htmlEntities(a.message));this.showError(b,g,d,f,null,null,null,null,null,null,null,null,e?f:null)}else null!=f&&f()};
EditorUi.prototype.showError=function(a,b,f,e,g,d,k,n,u,m,r,x,A){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),e,g,d,k,x,n,u);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,r||100+20*b,!0,!1,A);a.init()};EditorUi.prototype.showDialog=function(a,b,f,e,g,d,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,e,g,d,k,n,u,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,b,f){null!=this.dialogs&&0<this.dialogs.length&&(null==f||f==this.dialog.container.firstChild)&&(f=this.dialogs.pop(),0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var b=a.getSelectionCells(),f=new mxDictionary,e=[],g=0;g<b.length;g++){var d=a.isTableCell(b[g])?a.model.getParent(b[g]):b[g];null==d||f.get(d)||(f.put(d,!0),e.push(d))}a.setSelectionCells(a.duplicateCells(e,!1))}catch(k){this.handleError(k)}};
EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,e=f.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));a=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(d){f.cellEditor.restoreSelection(e);b(d)},function(){f.cellEditor.restoreSelection(e)});this.showDialog(a.container,230,g,!0,!1);a.init()};
EditorUi.prototype.extractGraphModelFromHtml=function(a){var b=null;try{var f=a.indexOf("&lt;mxGraphModel ");if(0<=f){var e=a.lastIndexOf("&lt;/mxGraphModel&gt;");e>f&&(b=a.substring(f,e+21).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}}catch(g){}return b};
EditorUi.prototype.readGraphModelFromClipboard=function(a){this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(b){null!=b?a(b):this.readGraphModelFromClipboardWithType(mxUtils.bind(this,function(f){if(null!=f){var e=decodeURIComponent(f);this.isCompatibleString(e)&&(f=e)}a(f)}),"text")}),"html")};
EditorUi.prototype.readGraphModelFromClipboardWithType=function(a,b){navigator.clipboard.read().then(mxUtils.bind(this,function(f){if(null!=f&&0<f.length&&"html"==b&&0<=mxUtils.indexOf(f[0].types,"text/html"))f[0].getType("text/html").then(mxUtils.bind(this,function(e){e.text().then(mxUtils.bind(this,function(g){try{var d=this.parseHtmlData(g),k="text/plain"!=d.getAttribute("data-type")?d.innerHTML:mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText);try{var n=k.lastIndexOf("%3E");
0<=n&&n<k.length-3&&(k=k.substring(0,n+3))}catch(r){}try{var u=d.getElementsByTagName("span"),m=null!=u&&0<u.length?mxUtils.trim(decodeURIComponent(u[0].textContent)):decodeURIComponent(k);this.isCompatibleString(m)&&(k=m)}catch(r){}}catch(r){}a(this.isCompatibleString(k)?k:null)}))["catch"](function(g){a(null)})}))["catch"](function(e){a(null)});else if(null!=f&&0<f.length&&"text"==b&&0<=mxUtils.indexOf(f[0].types,"text/plain"))f[0].getType("text/plain").then(function(e){e.text().then(function(g){a(g)})["catch"](function(){a(null)})})["catch"](function(){a(null)});
EditorUi.prototype.parseHtmlData=function(a){var b=null;if(null!=a&&0<a.length){var f="<meta "==a.substring(0,6);b=document.createElement("div");b.innerHTML=(f?'<meta charset="utf-8">':"")+this.editor.graph.sanitizeHtml(a);asHtml=!0;a=b.getElementsByTagName("style");if(null!=a)for(;0<a.length;)a[0].parentNode.removeChild(a[0]);null!=b.firstChild&&b.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=b.firstChild.nextSibling&&b.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==
b.firstChild.nodeName&&"A"==b.firstChild.nextSibling.nodeName&&null==b.firstChild.nextSibling.nextSibling&&(a=null==b.firstChild.nextSibling.innerText?mxUtils.getTextContent(b.firstChild.nextSibling):b.firstChild.nextSibling.innerText,a==b.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(b,a),asHtml=!1));f=f&&null!=b.firstChild?b.firstChild.nextSibling:b.firstChild;null!=f&&null==f.nextSibling&&f.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==f.nodeName?(a=f.getAttribute("src"),
null!=a&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(b,a),asHtml=!1)):(f=b.getElementsByTagName("img"),1==f.length&&(f=f[0],a=f.getAttribute("src"),null!=a&&f.parentNode==b&&1==b.children.length&&(Editor.isPngDataUrl(a)&&(f=Editor.extractGraphModelFromPng(a),null!=f&&0<f.length&&(a=f)),mxUtils.setTextContent(b,a),asHtml=!1)));asHtml&&Graph.removePasteFormatting(b)}asHtml||b.setAttribute("data-type","text/plain");return b};
EditorUi.prototype.extractGraphModelFromEvent=function(a){var b=null,f=null;null!=a&&(a=null!=a.dataTransfer?a.dataTransfer:a.clipboardData,null!=a&&(10==document.documentMode||11==document.documentMode?f=a.getData("Text"):(f=0<=mxUtils.indexOf(a.types,"text/html")?a.getData("text/html"):null,0<=mxUtils.indexOf(a.types,"text/plain")&&(null==f||0==f.length)&&(f=a.getData("text/plain"))),null!=f&&(f=Graph.zapGremlins(mxUtils.trim(f)),a=this.extractGraphModelFromHtml(f),null!=a&&(f=a))));null!=f&&this.isCompatibleString(f)&&
(b=f);return b};EditorUi.prototype.isCompatibleString=function(a){return!1};EditorUi.prototype.saveFile=function(a){a||null==this.editor.filename?(a=new FilenameDialog(this,this.editor.getOrCreateFilename(),mxResources.get("save"),mxUtils.bind(this,function(b){this.save(b)}),null,mxUtils.bind(this,function(b){if(null!=b&&0<b.length)return!0;mxUtils.confirm(mxResources.get("invalidName"));return!1})),this.showDialog(a.container,300,100,!0,!0),a.init()):this.save(this.editor.getOrCreateFilename())};
EditorUi.prototype.save=function(a){if(null!=a){this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var b=mxUtils.getXml(this.editor.getGraphXml());try{if(Editor.useLocalStorage){if(null!=localStorage.getItem(a)&&!mxUtils.confirm(mxResources.get("replaceIt",[a])))return;localStorage.setItem(a,b);this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("saved"))+" "+new Date)}else if(b.length<MAX_REQUEST_SIZE)(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(a)+"&xml="+encodeURIComponent(b))).simulate(document,
"_blank");else{mxUtils.alert(mxResources.get("drawingTooLarge"));mxUtils.popup(b);return}this.editor.setModified(!1);this.editor.setFilename(a);this.updateDocumentTitle()}catch(f){this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("errorSavingFile")))}}};
EditorUi.prototype.executeLayouts=function(a,b){this.executeLayout(mxUtils.bind(this,function(){var f=new mxCompositeLayout(this.editor.graph,a),e=this.editor.graph.getSelectionCells();f.execute(this.editor.graph.getDefaultParent(),0==e.length?null:e)}),!0,b)};
EditorUi.prototype.executeLayout=function(a,b,f){var e=this.editor.graph;if(e.isEnabled()){e.getModel().beginUpdate();try{a()}catch(g){throw g;}finally{this.allowAnimation&&b&&(null==navigator.userAgent||0>navigator.userAgent.indexOf("Camino"))?(a=new mxMorphing(e),a.addListener(mxEvent.DONE,mxUtils.bind(this,function(){e.getModel().endUpdate();null!=f&&f()})),a.startAnimation()):(e.getModel().endUpdate(),null!=f&&f())}}};
EditorUi.prototype.showImageDialog=function(a,b,f,e){e=this.editor.graph.cellEditor;var g=e.saveSelection(),d=mxUtils.prompt(a,b);e.restoreSelection(g);if(null!=d&&0<d.length){var k=new Image;k.onload=function(){f(d,k.width,k.height)};k.onerror=function(){f(null);mxUtils.alert(mxResources.get("fileNotFound"))};k.src=d}else f(null)};EditorUi.prototype.showLinkDialog=function(a,b,f){a=new LinkDialog(this,a,b,f);this.showDialog(a.container,420,90,!0,!0);a.init()};
EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(e){e=new ChangePageSetup(this,null,e);e.ignoreColor=!0;this.editor.graph.model.execute(e)});var f=mxUtils.prompt(mxResources.get("backgroundImage"),null!=b?b.src:"");null!=f&&0<f.length?(b=new Image,b.onload=function(){a(new mxImage(f,b.width,b.height),!1)},b.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},b.src=f):a(null)};
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()};EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){b.update(!1)});return b};
EditorUi.prototype.createKeyHandler=function(a){function b(x,A,C){if(!e.isSelectionEmpty()&&e.isEnabled()){A=null!=A?A:1;var F=e.getCompositeParents(e.getSelectionCells()),K=0<F.length?F[0]:null;if(null!=K)if(C){e.getModel().beginUpdate();try{for(K=0;K<F.length;K++)if(e.getModel().isVertex(F[K])&&e.isCellResizable(F[K])){var E=e.getCellGeometry(F[K]);null!=E&&(E=E.clone(),37==x?E.width=Math.max(0,E.width-A):38==x?E.height=Math.max(0,E.height-A):39==x?E.width+=A:40==x&&(E.height+=A),e.getModel().setGeometry(F[K],
e.defaultEdgeLength,x,!0);null!=C&&0<C.length&&(1==C.length&&e.model.isEdge(C[0])?e.setSelectionCell(e.model.getTerminal(C[0],!1)):e.setSelectionCell(C[C.length-1]),e.scrollCellToVisible(e.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(e.view.getState(e.getSelectionCell())))}}else return this.isControlDown(x)?function(){b(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null,!0)}:function(){b(x.keyCode,mxEvent.isShiftDown(x)?e.gridSize:null)}}return u.apply(this,arguments)};g.bindAction=mxUtils.bind(this,
this.scrollHandler=null);if(null!=this.destroyFunctions){for(a=0;a<this.destroyFunctions.length;a++)this.destroyFunctions[a]();this.destroyFunctions=null}var b=[this.menubarContainer,this.toolbarContainer,this.sidebarContainer,this.formatContainer,this.diagramContainer,this.footerContainer,this.chromelessToolbar,this.hsplit,this.sidebarFooterContainer,this.layersDialog];for(a=0;a<b.length;a++)null!=b[a]&&null!=b[a].parentNode&&b[a].parentNode.removeChild(b[a])};function Sidebar(a,b){this.editorUi=a;this.container=b;this.palettes={};this.taglist={};this.lastCreated=0;this.showTooltips=!0;this.graph=a.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());this.graph.cellRenderer.minSvgStrokeWidth=this.minThumbStrokeWidth;this.graph.cellRenderer.antiAlias=this.thumbAntiAlias;this.graph.container.style.visibility="hidden";this.graph.foldingEnabled=!1;document.body.appendChild(this.graph.container);this.pointerUpHandler=mxUtils.bind(this,function(){if(null==
"pointerout":"mouseout",this.pointerOutHandler);mxEvent.addListener(b,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0;this.hideTooltip()}));this.init()}
Sidebar.prototype.getTooltipOffset=function(a,b){b=b.height+2*this.tooltipBorder;return new mxPoint(this.container.offsetWidth+this.editorUi.splitSize+10+this.editorUi.container.offsetLeft,Math.min(Math.max(document.body.clientHeight||0,document.documentElement.clientHeight)-b-20,Math.max(0,this.editorUi.container.offsetTop+this.container.offsetTop+a.offsetTop-this.container.scrollTop-b/2+16)))};
Sidebar.prototype.createTooltip=function(a,b,f,e,g,d,k,n,u,m,r){r=null!=r?r:!0;this.tooltipMouseDown=u;null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.userSelect="none",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),mxEvent.addMouseWheelListener(mxUtils.bind(this,function(x){this.hideTooltip()}),this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),
b=this.graph2.cloneCells(b);this.editorUi.insertHandler(b,null,this.graph2.model,r?null:this.editorUi.editor.graph.defaultVertexStyle,r?null:this.editorUi.editor.graph.defaultEdgeStyle,r,!0);this.graph2.addCells(b);mxClient.NO_FO=d;r=this.graph2.getGraphBounds();n&&0<f&&0<e&&(r.width>f||r.height>e)?(f=Math.round(100*Math.min(f/r.width,e/r.height))/100,mxClient.NO_FO?(this.graph2.view.setScale(Math.round(100*Math.min(this.maxTooltipWidth/r.width,this.maxTooltipHeight/r.height))/100),r=this.graph2.getGraphBounds()):
Sidebar.prototype.showTooltip=function(a,b,f,e,g,d){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=a){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var k=mxUtils.bind(this,function(){this.createTooltip(a,b,f,e,g,d)});null!=this.tooltip&&"none"!=this.tooltip.style.display?k():this.thread=window.setTimeout(k,this.tooltipDelay);this.currentElt=a}};
Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);null!=this.tooltip&&(this.tooltip.style.display="none",this.currentElt=null);this.tooltipMouseDown=null};Sidebar.prototype.addDataEntry=function(a,b,f,e,g){return this.addEntry(a,mxUtils.bind(this,function(){return this.createVertexTemplateFromData(g,b,f,e)}))};
Sidebar.prototype.addEntries=function(a){for(var b=0;b<a.length;b++)mxUtils.bind(this,function(f){var e=f.data,g=null!=f.title?f.title:"";null!=f.tags&&(g+=" "+f.tags);null!=e&&0<g.length?this.addEntry(g,mxUtils.bind(this,function(){e=this.editorUi.convertDataUri(e);var d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==f.aspect&&(d+="aspect=fixed;");return this.createVertexTemplate(d+"image="+e,f.w,f.h,"",f.title||"",!1,!1,!0)})):null!=f.xml&&0<g.length&&this.addEntry(g,
mxUtils.bind(this,function(){var d=this.editorUi.stringToCells(Graph.decompress(f.xml));return this.createVertexTemplateFromCells(d,f.w,f.h,f.title||"",!0,!1,!0)}))})(a[b])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,b){this.currentSearchEntryLibrary=null!=a?{id:a,lib:b}:null};
Sidebar.prototype.addEntry=function(a,b){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(b.parentLibraries=[this.currentSearchEntryLibrary]);a=a.toLowerCase().replace(/[\/,\(\)]/g," ").split(" ");for(var f=[],e={},g=0;g<a.length;g++){null==e[a[g]]&&(e[a[g]]=!0,f.push(a[g]));var d=a[g].replace(/\.*\d*$/,"");d!=a[g]&&null==e[d]&&(e[d]=!0,f.push(d))}for(g=0;g<f.length;g++)this.addEntryForTag(f[g],b)}return b};
Sidebar.prototype.addEntryForTag=function(a,b){if(null!=a&&1<a.length){var f=this.taglist[a];"object"!==typeof f&&(f={entries:[]},this.taglist[a]=f);f.entries.push(b)}};
Sidebar.prototype.searchEntries=function(a,b,f,e,g){if(null!=this.taglist&&null!=a){var d=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*b;a=[];for(var n=0,u=0;u<d.length;u++)if(0<d[u].length){var m=this.taglist[d[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var A=0;A<x.length;A++)if(m=x[A],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==d.length-1&&a.length==k)){e(a.slice(f*b,k),k,!0,d);return}}else a=[];g=r;n++}g=a.length;e(a.slice(f*b,(f+1)*b),g,!1,d)}else e([],null,
null,d)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var b=[],f={},e=0;e<a.length;e++)null==f[a[e]]&&(f[a[e]]="1",b.push(a[e]));return b.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,b){a=a.clone();null!=b&&(a.value=b);return a};Sidebar.prototype.showPopupMenuForEntry=function(a,b,f){};
Sidebar.prototype.addSearchPalette=function(a){var b=document.createElement("div");b.style.visibility="hidden";this.container.appendChild(b);var f=document.createElement("div");f.className="geSidebar";f.style.boxSizing="border-box";f.style.overflow="hidden";f.style.width="100%";f.style.padding="8px";f.style.paddingTop="14px";f.style.paddingBottom="0px";a||(f.style.display="none");var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.paddingBottom="8px";
E.stopPropagation();E.cancelBubble=!0});a=document.createElement("div");a.appendChild(f);this.container.appendChild(a);this.palettes.search=[b,a]};
Sidebar.prototype.insertSearchHint=function(a,b,f,e,g,d,k,n){0==g.length&&1==e&&(f=document.createElement("div"),f.className="geTitle",f.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(f,mxResources.get("noResultsFor",[b])),a.appendChild(f))};
Sidebar.prototype.addGeneralPalette=function(a){this.setCurrentSearchEntryLibrary("general","general");var b=this,f=parseInt(this.editorUi.editor.graph.defaultVertexStyle.fontSize);f=isNaN(f)?"":"fontSize="+Math.min(16,f)+";";var e=new mxCell("List Item",new mxGeometry(0,0,80,30),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;"+f);e.vertex=!0;f=[this.createVertexTemplateEntry("rounded=0;whiteSpace=wrap;html=1;",
g.vertex=!0;g.insert(b.cloneCell(e,"Item 1"));g.insert(b.cloneCell(e,"Item 2"));g.insert(b.cloneCell(e,"Item 3"));return b.createVertexTemplateFromCells([g],g.geometry.width,g.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return b.createVertexTemplateFromCells([b.cloneCell(e,"List Item")],e.geometry.width,e.geometry.height,"List Item")}),this.addEntry("curve",mxUtils.bind(this,function(){var g=new mxCell("",new mxGeometry(0,0,50,50),"curved=1;endArrow=classic;html=1;");
Sidebar.prototype.addMiscPalette=function(a){var b=this;this.setCurrentSearchEntryLibrary("general","misc");var f=[this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;",100,40,"Title","Title",null,null,"text heading title"),this.createVertexTemplateEntry("text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;",100,80,"<ul><li>Value 1</li><li>Value 2</li><li>Value 3</li></ul>",
this.addEntry("shape group container",function(){var e=new mxCell("Label",new mxGeometry(0,0,160,70),"html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;");e.vertex=!0;var g=new mxCell("",new mxGeometry(20,20,20,30),"triangle;html=1;whiteSpace=wrap;");g.vertex=!0;e.insert(g);return b.createVertexTemplateFromCells([e],e.geometry.width,e.geometry.height,"Shape Group")}),this.createVertexTemplateEntry("shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;",120,
Sidebar.prototype.createAdvancedShapes=function(){var a=this,b=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");b.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(b,"Item 1"));f.insert(a.cloneCell(b,"Item 2"));
f.insert(a.cloneCell(b,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(b,"List Item")],b.geometry.width,b.geometry.height,"List Item")})]};
Sidebar.prototype.createAdvancedShapes=function(){var a=this,b=new mxCell("List Item",new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");b.vertex=!0;return[this.createVertexTemplateEntry("shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;",80,80,"","Tape Data"),this.createVertexTemplateEntry("shape=manualInput;whiteSpace=wrap;html=1;",
296,100,"Process Bar")}),this.createVertexTemplateEntry("swimlane;",200,200,"Container","Container",null,null,"container swimlane lane pool group"),this.addEntry("list group erd table",function(){var f=new mxCell("List",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");f.vertex=!0;f.insert(a.cloneCell(b,"Item 1"));f.insert(a.cloneCell(b,"Item 2"));
f.insert(a.cloneCell(b,"Item 3"));return a.createVertexTemplateFromCells([f],f.geometry.width,f.geometry.height,"List")}),this.addEntry("list item entry value group erd table",function(){return a.createVertexTemplateFromCells([a.cloneCell(b,"List Item")],b.geometry.width,b.geometry.height,"List Item")})]};
Sidebar.prototype.addUmlPalette=function(a){var b=this,f=new mxCell("+ field: type",new mxGeometry(0,0,100,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;");f.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");
d.vertex=!0;d.insert(f.clone());d.insert(e.clone());d.insert(b.cloneCell(f,"+ method(type): type"));return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class")}),this.addEntry("uml static class section subsection",function(){var d=new mxCell("Classname",new mxGeometry(0,0,140,110),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;");d.vertex=
!0;d.insert(f.clone());d.insert(f.clone());d.insert(f.clone());return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Class 2")}),this.addEntry("uml static class item member method function variable field attribute label",function(){return b.createVertexTemplateFromCells([b.cloneCell(f,"+ item: attribute")],f.geometry.width,f.geometry.height,"Item 1")}),this.addEntry("uml static class item member method function variable field attribute label",function(){var d=new mxCell("item: attribute",
new mxGeometry(0,0,120,f.geometry.height),"label;fontStyle=0;strokeColor=none;fillColor=none;align=left;verticalAlign=top;overflow=hidden;spacingLeft=28;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;imageWidth=16;imageHeight=16;image="+b.gearImage);d.vertex=!0;return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Item 2")}),this.addEntry("uml static class divider hline line separator",function(){return b.createVertexTemplateFromCells([e.clone()],
e.geometry.width,e.geometry.height,"Divider")}),this.addEntry("uml static class spacer space gap separator",function(){var d=new mxCell("",new mxGeometry(0,0,20,14),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=4;spacingRight=4;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Spacer")}),this.createVertexTemplateEntry("text;align=center;fontStyle=1;verticalAlign=middle;spacingLeft=3;spacingRight=3;strokeColor=none;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;",
80,26,"Title","Title",null,null,"uml static class title label"),this.addEntry("uml static class component",function(){var d=new mxCell("&laquo;Annotation&raquo;<br/><b>Component</b>",new mxGeometry(0,0,180,90),"html=1;dropTarget=0;");d.vertex=!0;var k=new mxCell("",new mxGeometry(1,0,20,20),"shape=module;jettyWidth=8;jettyHeight=4;");k.vertex=!0;k.geometry.relative=!0;k.geometry.offset=new mxPoint(-27,7);d.insert(k);return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component")}),
return b.createVertexTemplateFromCells([d],d.geometry.width,d.geometry.height,"Component with Attributes")}),this.createVertexTemplateEntry("verticalAlign=top;align=left;spacingTop=8;spacingLeft=2;spacingRight=12;shape=cube;size=10;direction=south;fontStyle=4;html=1;",180,120,"Block","Block",null,null,"uml static class block"),this.createVertexTemplateEntry("shape=module;align=left;spacingLeft=20;align=center;verticalAlign=top;",100,50,"Module","Module",null,null,"uml static class module component"),
function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div>',new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 3")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><div style="height:2px;"></div><hr size="1"/><div style="height:2px;"></div>',
new mxGeometry(0,0,140,60),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 4")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><b>Class</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method(): Type</p>',
new mxGeometry(0,0,160,90),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Class 5")}),this.addEntry("uml static class object instance",function(){var d=new mxCell('<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;Interface&gt;&gt;</i><br/><b>Interface</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ field1: Type<br/>+ field2: Type</p><hr size="1"/><p style="margin:0px;margin-left:4px;">+ method1(Type): Type<br/>+ method2(Type, Type): Type</p>',
new mxGeometry(0,0,190,140),"verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;");d.vertex=!0;return b.createVertexTemplateFromCells([d.clone()],d.geometry.width,d.geometry.height,"Interface 2")}),this.createVertexTemplateEntry("shape=providedRequiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",20,20,"","Provided/Required Interface",null,null,"uml provided required interface lollipop notation"),this.createVertexTemplateEntry("shape=requiredInterface;html=1;verticalLabelPosition=bottom;sketch=0;",
10,20,"","Required Interface",null,null,"uml required interface lollipop notation"),this.addEntry("uml lollipop notation provided required interface",function(){return b.createVertexTemplateFromData("zVRNT8MwDP01uaLSMu6sfFxAmrQDcAytaQJZXLnu2u7XkzQZXTUmuIA4VIqf/ZzkvdQiyzf9HclaPWAJRmQ3IssJkcNq0+dgjEgTXYrsWqRp4j6R3p7Ino/ZpJYEln9CSANhK00LAQlAw4OJAGFrS/D1iciWSKywQivNPWLtwHMHvgHzsNY7z5Ato4MUb0zMgi2viLBzoUULAbnVxsSWzTtwofYBtlTACkhvgIHWtSy0rWKSJVXAJ5Lh4FBWMNMicAJ0cSzPWBW1uQN0fWlwJQRGst7OW8kmhNVn3Sd1hdp1TJMhVCzmhHipUDO54RYHm07Q6NHXfmV/65eS5jXXVJhj15yCNDz54GyxD58PwjL2v/SmMuE7POqSVdxj5vm/cK6PG4X/5deNvPjeSEfQdeOV75Rm8K/dZzo3LOaGSaMr69aF0wbIA00NhZfpVff+JSwJGr2TL2Nnr3jtbzDeabEUi2v/Tlo22kKO1gbq0Z8ZDwzE0J+cNidM2ROinF18CR6KeivQleI59pVrM8knfV04Dc1gx+FM/QA=",
k.geometry.setTerminalPoint(new mxPoint(15,90),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return b.createVertexTemplateFromCells([d,k],30,90,"Start")}),this.addEntry("uml activity state",function(){var d=new mxCell("Activity",new mxGeometry(0,0,120,40),"rounded=1;whiteSpace=wrap;html=1;arcSize=40;fontColor=#000000;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");
k.geometry.setTerminalPoint(new mxPoint(60,100),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return b.createVertexTemplateFromCells([d,k],120,100,"Activity")}),this.addEntry("uml activity composite state",function(){var d=new mxCell("Composite State",new mxGeometry(0,0,160,60),"swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=0;resizeLast=1;container=0;fontColor=#000000;collapsible=0;rounded=1;arcSize=30;strokeColor=#ff0000;fillColor=#ffffc0;swimlaneFillColor=#ffffc0;dropTarget=0;");
!0);return b.createVertexTemplateFromCells([d,k],160,120,"Composite State")}),this.addEntry("uml activity condition",function(){var d=new mxCell("Condition",new mxGeometry(0,0,80,40),"rhombus;whiteSpace=wrap;html=1;fillColor=#ffffc0;strokeColor=#ff0000;");d.vertex=!0;var k=new mxCell("no",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(180,20),!1);k.geometry.relative=
!0;k.geometry.x=-1;k.edge=!0;d.insertEdge(k,!0);var n=new mxCell("yes",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;align=left;verticalAlign=top;endArrow=open;endSize=8;strokeColor=#ff0000;");n.geometry.setTerminalPoint(new mxPoint(40,100),!1);n.geometry.relative=!0;n.geometry.x=-1;n.edge=!0;d.insertEdge(n,!0);return b.createVertexTemplateFromCells([d,k,n],180,100,"Condition")}),this.addEntry("uml activity fork join",function(){var d=new mxCell("",new mxGeometry(0,0,200,10),"shape=line;html=1;strokeWidth=6;strokeColor=#ff0000;");
d.vertex=!0;var k=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;");k.geometry.setTerminalPoint(new mxPoint(100,80),!1);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!0);return b.createVertexTemplateFromCells([d,k],200,80,"Fork/Join")}),this.createVertexTemplateEntry("ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;",30,30,"","End",null,null,"uml activity state end"),this.createVertexTemplateEntry("shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;",
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;startArrow=oval;endArrow=block;startSize=8;");k.geometry.setTerminalPoint(new mxPoint(-60,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);return b.createVertexTemplateFromCells([d,k],10,80,"Found Message")}),this.addEntry("uml sequence invoke call delegation synchronous invocation activation",function(){var d=new mxCell("",new mxGeometry(0,0,10,80),"html=1;points=[];perimeter=orthogonalPerimeter;");
d.vertex=!0;var k=new mxCell("dispatch",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=block;entryX=0;entryY=0;");k.geometry.setTerminalPoint(new mxPoint(-70,0),!0);k.geometry.relative=!0;k.edge=!0;d.insertEdge(k,!1);var n=new mxCell("return",new mxGeometry(0,0,0,0),"html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;exitX=0;exitY=0.95;");n.geometry.setTerminalPoint(new mxPoint(-70,76),!1);n.geometry.relative=!0;n.edge=!0;d.insertEdge(n,!0);return b.createVertexTemplateFromCells([d,
!0;k.edge=!0;d.insertEdge(k,!1);return b.createVertexTemplateFromCells([d,k],10,60,"Self Call")}),this.addEntry("uml sequence invoke call delegation callback activation",function(){return b.createVertexTemplateFromData("xZRNT8MwDIZ/Ta6oaymD47rBTkiTuMAxW6wmIm0q19s6fj1OE3V0Y2iCA4dK8euP2I+riGxedUuUjX52CqzIHkU2R+conKpuDtaKNDFKZAuRpgl/In264J303qSRCDVdk5CGhJ20WwhKEFo62ChoqritxURkReNMTa2X80LkC68AmgoIkEWHpF3pamlXR7WIFwASdBeb7KXY4RIc5+KBQ/ZGkY4RYY5Egyl1zLqLmmyDXQ6Zx4n5EIf+HkB2BmAjrV3LzftPIPw4hgNn1pQ1a2tH5Cp2QK1miG7vNeu4iJe4pdeY2BtvbCQDGlAljMCQxBJotJ8rWCFYSWY3LvUdmZi68rvkkLiU6QnL1m1xAzHoBOdw61WEb88II9AW67/ydQ2wq1Cy1aAGvOrFfPh6997qDA3g+dxzv3nIL6MPU/8T+kMw8+m4QPgdfrEJNo8PSQj/+s58Ag==",
!0;d.edge=!0;return b.createEdgeTemplateFromCells([d],80,0,"Return")}),this.addEntry("uml relation",function(){var d=new mxCell("name",new mxGeometry(0,0,0,0),"endArrow=block;endFill=1;html=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.edge=!0;var k=new mxCell("1",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return b.createEdgeTemplateFromCells([d],160,0,"Relation 1")}),this.addEntry("uml association",function(){var d=new mxCell("",new mxGeometry(0,0,0,0),"endArrow=none;html=1;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.edge=!0;var k=new mxCell("parent",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;");
k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("child",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=bottom;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return b.createEdgeTemplateFromCells([d],160,0,"Association 1")}),this.addEntry("uml aggregation",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");
d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return b.createEdgeTemplateFromCells([d],160,0,"Aggregation 1")}),this.addEntry("uml composition",function(){var d=new mxCell("1",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;");d.geometry.setTerminalPoint(new mxPoint(0,
0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=!0;d.geometry.x=-1;d.geometry.y=3;d.edge=!0;return b.createEdgeTemplateFromCells([d],160,0,"Composition 1")}),this.addEntry("uml relation",function(){var d=new mxCell("Relation",new mxGeometry(0,0,0,0),"endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;");d.geometry.setTerminalPoint(new mxPoint(0,0),!0);d.geometry.setTerminalPoint(new mxPoint(160,0),!1);d.geometry.relative=
!0;d.edge=!0;var k=new mxCell("0..n",new mxGeometry(-1,0,0,0),"edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);k=new mxCell("1",new mxGeometry(1,0,0,0),"edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;");k.geometry.relative=!0;k.setConnectable(!1);k.vertex=!0;d.insert(k);return b.createEdgeTemplateFromCells([d],160,0,"Relation 2")}),this.createEdgeTemplateEntry("endArrow=open;endSize=12;dashed=1;html=1;",160,
160,0,"","Association 3",null,"uml association")];this.addPaletteFunctions("uml",mxResources.get("uml"),a||!1,g);this.setCurrentSearchEntryLibrary()};Sidebar.prototype.createTitle=function(a){var b=document.createElement("a");b.setAttribute("title",mxResources.get("sidebarTooltip"));b.className="geTitle";mxUtils.write(b,a);return b};
Sidebar.prototype.createThumb=function(a,b,f,e,g,d,k){this.graph.labelsVisible=null==d||d;d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;this.graph.view.scaleAndTranslate(1,0,0);this.graph.addCells(a);a=this.graph.getGraphBounds();var n=Math.floor(100*Math.min((b-2*this.thumbBorder)/a.width,(f-2*this.thumbBorder)/a.height))/100;this.graph.view.scaleAndTranslate(n,Math.floor((b-a.width*n)/2/n-a.x),Math.floor((f-a.height*n)/2/n-a.y));this.graph.dialect!=mxConstants.DIALECT_SVG||
mxClient.NO_FO||null==this.graph.view.getCanvas().ownerSVGElement?(n=this.graph.container.cloneNode(!1),n.innerHTML=this.graph.container.innerHTML):n=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0);this.graph.getModel().clear();mxClient.NO_FO=d;n.style.position="relative";n.style.overflow="hidden";n.style.left=this.thumbBorder+"px";n.style.top=this.thumbBorder+"px";n.style.width=b+"px";n.style.height=f+"px";n.style.visibility="";n.style.minWidth="";n.style.minHeight="";e.appendChild(n);
this.sidebarTitles&&null!=g&&0!=k&&(e.style.height=this.thumbHeight+0+this.sidebarTitleSize+8+"px",b=document.createElement("div"),b.style.color=Editor.isDarkMode()?"#A0A0A0":"#303030",b.style.fontSize=this.sidebarTitleSize+"px",b.style.textAlign="center",b.style.whiteSpace="nowrap",b.style.overflow="hidden",b.style.textOverflow="ellipsis",mxClient.IS_IE&&(b.style.height=this.sidebarTitleSize+12+"px"),b.style.paddingTop="4px",mxUtils.write(b,g),e.appendChild(b));return a};
Sidebar.prototype.createSection=function(a){return mxUtils.bind(this,function(){var b=document.createElement("div");b.setAttribute("title",a);b.style.textOverflow="ellipsis";b.style.whiteSpace="nowrap";b.style.textAlign="center";b.style.overflow="hidden";b.style.width="100%";b.style.padding="14px 0";mxUtils.write(b,a);return b})};
Sidebar.prototype.createItem=function(a,b,f,e,g,d,k,n){n=null!=n?n:!0;var u=document.createElement("a");u.className="geItem";u.style.overflow="hidden";var m=2*this.thumbBorder;u.style.width=this.thumbWidth+m+"px";u.style.height=this.thumbHeight+m+"px";u.style.padding=this.thumbPadding+"px";mxEvent.addListener(u,"click",function(x){mxEvent.consume(x)});m=a;a=this.graph.cloneCells(a);this.editorUi.insertHandler(m,null,this.graph.model,this.editorUi.editor.graph.defaultVertexStyle,this.editorUi.editor.graph.defaultEdgeStyle,
!0,!0);this.createThumb(m,this.thumbWidth,this.thumbHeight,u,b,f,e,g,d);var r=new mxRectangle(0,0,g,d);1<a.length||a[0].vertex?(e=this.createDragSource(u,this.createDropHandler(a,!0,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a),e.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})):null!=a[0]&&a[0].edge&&(e=this.createDragSource(u,this.createDropHandler(a,!1,k,r),this.createDragPreview(g,d),a,r),this.addClickHandler(u,e,a));
!mxClient.IS_IOS&&n&&mxEvent.addGestureListeners(u,null,mxUtils.bind(this,function(x){mxEvent.isMouseEvent(x)&&this.showTooltip(u,a,r.width,r.height,b,f)}));return u};
Sidebar.prototype.updateShapes=function(a,b){var f=this.editorUi.editor.graph,e=f.getCellStyle(a),g=[];f.model.beginUpdate();try{for(var d=f.getModel().getStyle(a),k="shadow dashed dashPattern fontFamily fontSize fontColor align startFill startSize endFill endSize strokeColor strokeWidth fillColor gradientColor html part noEdgeStyle edgeStyle elbow childLayout recursiveResize container collapsible connectable comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),n=
0;n<b.length;n++){var u=b[n];if(f.getModel().isVertex(u)==f.getModel().isVertex(a)||f.getModel().isEdge(u)==f.getModel().isEdge(a)){var m=f.getCellStyle(b[n],!1);f.getModel().setStyle(u,d);if("1"==mxUtils.getValue(m,"composite","0"))for(var r=f.model.getChildCount(u);0<=r;r--)f.model.remove(f.model.getChildAt(u,r));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=e[mxConstants.STYLE_SHAPE]&&(f.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[u]),f.setCellStyles("participant",e[mxConstants.STYLE_SHAPE],
Sidebar.prototype.createDropHandler=function(a,b,f,e){f=null!=f?f:!0;return mxUtils.bind(this,function(g,d,k,n,u,m){for(m=m?null:mxEvent.isTouchEvent(d)||mxEvent.isPenEvent(d)?document.elementFromPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)):mxEvent.getSource(d);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&g.isEnabled()){a=g.getImportableCells(a);if(0<a.length){g.stopEditing();m=null==k||mxEvent.isAltDown(d)?!1:g.isValidDropTarget(k,a,d);var r=null;null==k||m||(k=null);if(!g.isCellLocked(k||
g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(b&&g.isSplitTarget(k,a,d)){var x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,K=g.cloneCells(a);g.splitEdge(k,K,null,n-e.width/2,u-e.height/2,C,F);r=K}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var E=g.layoutManager.getLayout(k);if(null!=E)for(x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,k=0;k<r.length;k++)E.moveCell(r[k],C,F)}!f||null!=d&&mxEvent.isShiftDown(d)||
Sidebar.prototype.createDragPreview=function(a,b){var f=document.createElement("div");f.className="geDragPreview";f.style.width=a+"px";f.style.height=b+"px";return f};
Sidebar.prototype.dropAndConnect=function(a,b,f,e,g){var d=this.getDropAndConnectGeometry(a,b[e],f,b),k=[];if(null!=d){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(b[e]),x=n.model.getParent(a),A=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(A=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var F=C=0;if(null!=k){var K=k.origin;C=K.x;F=K.y;var E=d.getTerminalPoint(!1);null!=
E&&(E.x+=K.x,E.y+=K.y)}var O=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&A),R=n.getCellAt((d.x+C+n.view.translate.x)*n.view.scale,(d.y+F+n.view.translate.y)*n.view.scale,null,null,null,function(aa,T,U){return!n.isContainer(aa.cell)});if(null!=R&&R!=x)k=n.view.getState(R),null!=k&&(K=k.origin,x=R,O=!0,n.model.isEdge(a)||(d.x-=K.x-C,d.y-=K.y-F));else if(!A||n.isTableRow(a)||n.isTableCell(a))d.x+=C,d.y+=F;C=r.x;F=r.y;n.model.isEdge(b[e])&&(F=C=0);k=b=n.importCells(b,
d.x-(O?C:0),d.y-(O?F:0),O?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,b[e],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(b[e])){n.model.setTerminal(b[e],a,!0);var Q=n.getCellGeometry(b[e]);Q.points=null;if(null!=Q.getTerminalPoint(!1))Q.setTerminalPoint(d.getTerminalPoint(!1),!1);else if(O&&n.model.isVertex(x)){var P=n.view.getState(x);K=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(b,K.x,K.y,null,null,!0)}}else r=n.getCellGeometry(b[e]),C=d.x-Math.round(r.x),F=
d.y-Math.round(r.y),d.x=Math.round(r.x),d.y=Math.round(r.y),n.model.setGeometry(b[e],d),n.cellsMoved(b,C,F,null,null,!0),k=b.slice(),u=1==k.length?k[0]:null,b.push(n.insertEdge(null,null,"",a,b[e],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(aa){this.editorUi.handleError(aa)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
Sidebar.prototype.getDropAndConnectGeometry=function(a,b,f,e){var g=this.editorUi.editor.graph,d=g.view,k=1<e.length,n=g.getCellGeometry(a);e=g.getCellGeometry(b);null!=n&&null!=e&&(e=e.clone(),g.model.isEdge(a)?(a=g.view.getState(a),n=a.absolutePoints,b=n[0],g=n[n.length-1],f==mxConstants.DIRECTION_NORTH?(e.x=b.x/d.scale-d.translate.x-e.width/2,e.y=b.y/d.scale-d.translate.y-e.height/2):(e.x=g.x/d.scale-d.translate.x-e.width/2,e.y=g.y/d.scale-d.translate.y-e.height/2)):(n.relative&&(a=g.view.getState(a),
n=n.clone(),n.x=(a.x-d.translate.x)/d.scale,n.y=(a.y-d.translate.y)/d.scale),d=g.defaultEdgeLength,g.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=e.getTerminalPoint(!1)?(b=e.getTerminalPoint(!0),g=e.getTerminalPoint(!1),d=g.x-b.x,b=g.y-b.y,d=Math.sqrt(d*d+b*b),e.x=n.getCenterX(),e.y=n.getCenterY(),e.width=1,e.height=1,f==mxConstants.DIRECTION_NORTH?(e.height=d,e.y=n.y-d,e.setTerminalPoint(new mxPoint(e.x,e.y),!1)):f==mxConstants.DIRECTION_EAST?(e.width=d,e.x=n.x+n.width,e.setTerminalPoint(new mxPoint(e.x+
e.width/2+d:f==mxConstants.DIRECTION_SOUTH?e.y=e.y+n.height/2+e.height/2+d:f==mxConstants.DIRECTION_WEST&&(e.x=e.x-n.width/2-e.width/2-d),g.model.isEdge(b)&&null!=e.getTerminalPoint(!0)&&null!=b.getTerminal(!1)&&(n=g.getCellGeometry(b.getTerminal(!1)),null!=n&&(f==mxConstants.DIRECTION_NORTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()+n.height/2):f==mxConstants.DIRECTION_EAST?(e.x-=n.getCenterX()-n.width/2,e.y-=n.getCenterY()):f==mxConstants.DIRECTION_SOUTH?(e.x-=n.getCenterX(),e.y-=n.getCenterY()-n.height/
2):f==mxConstants.DIRECTION_WEST&&(e.x-=n.getCenterX()+n.width/2,e.y-=n.getCenterY()))))));return e};Sidebar.prototype.isDropStyleEnabled=function(a,b){var f=!0;null!=b&&1==a.length&&(a=this.graph.getCellStyle(a[b]),null!=a&&(f=mxUtils.getValue(a,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(a,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE));return f};
Sidebar.prototype.createDragSource=function(a,b,f,e,g){function d(Z,oa){var va=mxUtils.createImage(Z.src);va.style.width=Z.width+"px";va.style.height=Z.height+"px";null!=oa&&va.setAttribute("title",oa);mxUtils.setOpacity(va,Z==this.refreshTarget?30:20);va.style.position="absolute";va.style.cursor="crosshair";return va}function k(Z,oa,va,Ja){null!=Ja.parentNode&&(mxUtils.contains(va,Z,oa)?(mxUtils.setOpacity(Ja,100),L=Ja):mxUtils.setOpacity(Ja,Ja==fa?30:20));return va}for(var n=this.editorUi,u=n.editor.graph,
e&&null!=L&&null!=E&&L!=fa?(sa=Z.model.isEdge(E.cell)||null==m?r:m,Z.setSelectionCells(this.dropAndConnect(E.cell,e,I,sa,oa))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(Z.view.getState(Z.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(Z,oa){F.isActive()&&F.reset()});var K=F.mouseDown;F.mouseDown=function(Z){mxEvent.isPopupTrigger(Z)||mxEvent.isMultiTouchEvent(Z)||u.isCellLocked(u.getDefaultParent())||(u.stopEditing(),
Sidebar.prototype.itemClicked=function(a,b,f,e){e=this.editorUi.editor.graph;e.container.focus();if(mxEvent.isAltDown(f)&&1==e.getSelectionCount()&&e.model.isVertex(e.getSelectionCell())){b=null;for(var g=0;g<a.length&&null==b;g++)e.model.isVertex(a[g])&&(b=g);null!=b&&(e.setSelectionCells(this.dropAndConnect(e.getSelectionCell(),a,mxEvent.isMetaDown(f)||mxEvent.isControlDown(f)?mxEvent.isShiftDown(f)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(f)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,b,f)),e.scrollCellToVisible(e.getSelectionCell()))}else mxEvent.isShiftDown(f)&&!e.isSelectionEmpty()?(f=e.getEditableCells(e.getSelectionCells()),this.updateShapes(a[0],f),e.scrollCellToVisible(f)):(a=mxEvent.isAltDown(f)?e.getFreeInsertPoint():e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(a,!0)),b.drop(e,f,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,b,f){var e=b.mouseDown,g=b.mouseMove,d=b.mouseUp,k=this.editorUi.editor.graph.tolerance,n=null,u=this;b.mouseDown=function(m){e.apply(this,arguments);n=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(m){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=n&&(Math.abs(n.x-mxEvent.getClientX(m))>k||Math.abs(n.y-mxEvent.getClientY(m))>
k)&&(this.dragElement.style.display="",mxUtils.setOpacity(a,100));g.apply(this,arguments)};b.mouseUp=function(m){try{mxEvent.isPopupTrigger(m)||null!=this.currentGraph||null==this.dragElement||"none"!=this.dragElement.style.display||u.itemClicked(f,b,m,a),d.apply(b,arguments),mxUtils.setOpacity(a,100),n=null,u.currentElt=a}catch(r){b.reset(),u.editorUi.handleError(r)}}};
Sidebar.prototype.createVertexTemplateEntry=function(a,b,f,e,g,d,k,n){null!=n&&null!=g&&(n+=" "+g);n=null!=n&&0<n.length?n:null!=g?g.toLowerCase():"";return this.addEntry(n,mxUtils.bind(this,function(){return this.createVertexTemplate(a,b,f,e,g,d,k)}))};Sidebar.prototype.createVertexTemplate=function(a,b,f,e,g,d,k,n,u){a=[new mxCell(null!=e?e:"",new mxGeometry(0,0,b,f),a)];a[0].vertex=!0;return this.createVertexTemplateFromCells(a,b,f,g,d,k,n,u)};
Sidebar.prototype.createVertexTemplateFromData=function(a,b,f,e,g,d,k,n){a=mxUtils.parseXml(Graph.decompress(a));var u=new mxCodec(a),m=new mxGraphModel;u.decode(a.documentElement,m);a=this.graph.cloneCells(m.root.getChildAt(0).children);return this.createVertexTemplateFromCells(a,b,f,e,g,d,k,n)};Sidebar.prototype.createVertexTemplateFromCells=function(a,b,f,e,g,d,k,n){return this.createItem(a,e,g,d,b,f,k,n)};
Sidebar.prototype.createEdgeTemplateEntry=function(a,b,f,e,g,d,k,n,u){k=null!=k&&0<k.length?k:g.toLowerCase();return this.addEntry(k,mxUtils.bind(this,function(){return this.createEdgeTemplate(a,b,f,e,g,d,n,u)}))};
Sidebar.prototype.createEdgeTemplate=function(a,b,f,e,g,d,k,n){a=new mxCell(null!=e?e:"",new mxGeometry(0,0,b,f),a);a.geometry.setTerminalPoint(new mxPoint(0,f),!0);a.geometry.setTerminalPoint(new mxPoint(b,0),!1);a.geometry.relative=!0;a.edge=!0;return this.createEdgeTemplateFromCells([a],b,f,g,d,k,n)};Sidebar.prototype.createEdgeTemplateFromCells=function(a,b,f,e,g,d,k,n){return this.createItem(a,e,g,null!=n?n:!0,b,f,d,k)};
Sidebar.prototype.addPaletteFunctions=function(a,b,f,e){this.addPalette(a,b,f,mxUtils.bind(this,function(g){for(var d=0;d<e.length;d++)g.appendChild(e[d](g))}))};
Sidebar.prototype.addPalette=function(a,b,f,e){b=this.createTitle(b);this.container.appendChild(b);var g=document.createElement("div");g.className="geSidebar";mxClient.IS_POINTER&&(g.style.touchAction="none");f?(e(g),e=null):g.style.display="none";this.addFoldingHandler(b,g,e);f=document.createElement("div");f.appendChild(g);this.container.appendChild(f);null!=a&&(this.palettes[a]=[b,f]);return g};
Sidebar.prototype.addFoldingHandler=function(a,b,f){var e=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==b.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if("none"==b.style.display){if(e)b.style.display="block";else if(e=!0,null!=f){a.style.cursor="wait";var d=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){b.style.display="block";a.style.cursor="";a.innerHTML=d;var k=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;f(b,a);mxClient.NO_FO=k},mxClient.IS_FF?20:0)}else b.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",b.style.display="none";mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(g){g.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){this.palettes[a]=null;for(a=0;a<b.length;a++)this.container.removeChild(b[a]);return!0}return!1};
Sidebar.prototype.addImagePalette=function(a,b,f,e,g,d,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var A=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=A?A:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+e,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=d?d[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,b,!1,n)};
Sidebar.prototype.getTagsForStencil=function(a,b,f){a=a.split(".");for(var e=1;e<a.length;e++)a[e]=a[e].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=f&&a.push(f);return a.slice(1,a.length)};
Sidebar.prototype.addStencilPalette=function(a,b,f,e,g,d,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,A,C,F,K){if(null==g||0>mxUtils.indexOf(g,A)){C=this.getTagsForStencil(x,A);var E=null!=n?n[A]:null;null!=E&&C.push(E);r.push(this.createVertexTemplateEntry("shape="+x+A.toLowerCase()+e,Math.round(F*k),Math.round(K*k),"",A.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
!0,!0);this.addPaletteFunctions(a,b,!1,r)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(x){null==e&&(e="");null!=d&&d.call(this,x);if(null!=u)for(var A=0;A<u.length;A++)u[A](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,F,K,E,O){(null==g||0>mxUtils.indexOf(g,F))&&x.appendChild(this.createVertexTemplate("shape="+C+F.toLowerCase()+e,Math.round(E*k),Math.round(O*k),"",F.replace(/_/g," "),!0))}),!0)}))};
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(f){for(var e=0;e<a.length;e++)f=f.replace(new RegExp("&"+a[e][0]+";","g"),"&#"+a[e][1]+";");return b(f)}})();
Date.prototype.toISOString||function(){function a(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
Uint8Array.from||(Uint8Array.from=function(){var a=Object.prototype.toString,b=function(e){return"function"===typeof e||"[object Function]"===a.call(e)},f=Math.pow(2,53)-1;return function(e){var g=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var d=1<arguments.length?arguments[1]:void 0,k;if("undefined"!==typeof d){if(!b(d))throw new TypeError("Array.from: when provided, the second argument must be a function");2<arguments.length&&(k=
arguments[2])}var n=Number(g.length);n=isNaN(n)?0:0!==n&&isFinite(n)?(0<n?1:-1)*Math.floor(Math.abs(n)):n;n=Math.min(Math.max(n,0),f);for(var u=b(this)?Object(new this(n)):Array(n),m=0,r;m<n;)r=g[m],u[m]=d?"undefined"===typeof k?d(r,m):d.call(k,r,m):r,m+=1;u.length=n;return u}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxGraph.prototype.pageBreakColor="#c0c0c0";mxGraph.prototype.pageScale=1;(function(){try{if(null!=navigator&&null!=navigator.language){var a=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===a||"en-ca"===a||"es-mx"===a?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(b){}})();mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
Graph=function(a,b,f,e,g,d){mxGraph.call(this,a,b,f,e);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=d?d:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
Graph.createOffscreenGraph=function(a){var b=new Graph(document.createElement("div"));b.stylesheet.styles=mxUtils.clone(a.styles);b.resetViewOnRootChange=!1;b.setConnectable(!1);b.gridEnabled=!1;b.autoScroll=!1;b.setTooltips(!1);b.setEnabled(!1);b.container.style.visibility="hidden";b.container.style.position="absolute";b.container.style.overflow="hidden";b.container.style.height="1px";b.container.style.width="1px";return b};
Graph.createSvgImage=function(a,b,f,e,g){f=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" '+(null!=e&&null!=g?'viewBox="0 0 '+e+" "+g+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,b)};
Graph.createSvgNode=function(a,b,f,e,g){var d=mxUtils.createXmlDocument(),k=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"svg"):d.createElement("svg");null!=g&&(null!=k.style?k.style.backgroundColor=g:k.setAttribute("style","background-color:"+g));null==d.createElementNS?(k.setAttribute("xmlns",mxConstants.NS_SVG),k.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):k.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);k.setAttribute("version","1.1");
k.setAttribute("width",f+"px");k.setAttribute("height",e+"px");k.setAttribute("viewBox",a+" "+b+" "+f+" "+e);d.appendChild(k);return k};Graph.htmlToPng=function(a,b,f,e){var g=document.createElement("canvas");g.width=b;g.height=f;var d=document.createElement("img");d.onload=mxUtils.bind(this,function(){g.getContext("2d").drawImage(d,0,0);e(g.toDataURL())});d.src="data:image/svg+xml,"+encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml"><style>em{color:red;}</style><em>I</em> lick <span>cheese</span></div></foreignObject></svg>')};
Graph.zapGremlins=function(a){for(var b=0,f=[],e=0;e<a.length;e++){var g=a.charCodeAt(e);(32<=g||9==g||10==g||13==g)&&65535!=g&&65534!=g||(f.push(a.substring(b,e)),b=e+1)}0<b&&b<a.length&&f.push(a.substring(b));return 0==f.length?a:f.join("")};Graph.stringToBytes=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=a.charCodeAt(f);return b};Graph.bytesToString=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=String.fromCharCode(a[f]);return b.join("")};
Graph.base64EncodeUnicode=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,f){return String.fromCharCode(parseInt(f,16))}))};Graph.base64DecodeUnicode=function(a){return decodeURIComponent(Array.prototype.map.call(atob(a),function(b){return"%"+("00"+b.charCodeAt(0).toString(16)).slice(-2)}).join(""))};Graph.compressNode=function(a,b){a=mxUtils.getXml(a);return Graph.compress(b?a:Graph.zapGremlins(a))};
Graph.arrayBufferToString=function(a){var b="";a=new Uint8Array(a);for(var f=a.byteLength,e=0;e<f;e++)b+=String.fromCharCode(a[e]);return b};Graph.stringToArrayBuffer=function(a){return Uint8Array.from(a,function(b){return b.charCodeAt(0)})};
Graph.arrayBufferIndexOfString=function(a,b,f){var e=b.charCodeAt(0),g=1,d=-1;for(f=f||0;f<a.byteLength;f++)if(a[f]==e){d=f;break}for(f=d+1;-1<d&&f<a.byteLength&&f<d+b.length-1;f++){if(a[f]!=b.charCodeAt(g))return Graph.arrayBufferIndexOfString(a,b,d+1);g++}return g==b.length-1?d:-1};Graph.compress=function(a,b){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=b?pako.deflate(encodeURIComponent(a)):pako.deflateRaw(encodeURIComponent(a));return btoa(Graph.arrayBufferToString(new Uint8Array(a)))};
Graph.decompress=function(a,b,f){if(null==a||0==a.length||"undefined"===typeof pako)return a;a=Graph.stringToArrayBuffer(atob(a));b=decodeURIComponent(b?pako.inflate(a,{to:"string"}):pako.inflateRaw(a,{to:"string"}));return f?b:Graph.zapGremlins(b)};
Graph.fadeNodes=function(a,b,f,e,g){g=null!=g?g:1E3;Graph.setTransitionForNodes(a,null);Graph.setOpacityForNodes(a,b);window.setTimeout(function(){Graph.setTransitionForNodes(a,"all "+g+"ms ease-in-out");Graph.setOpacityForNodes(a,f);window.setTimeout(function(){Graph.setTransitionForNodes(a,null);null!=e&&e()},g)},0)};Graph.removeKeys=function(a,b){for(var f in a)b(f)&&delete a[f]};
Graph.setTransitionForNodes=function(a,b){for(var f=0;f<a.length;f++)mxUtils.setPrefixedStyle(a[f].style,"transition",b)};Graph.setOpacityForNodes=function(a,b){for(var f=0;f<a.length;f++)a[f].style.opacity=b};Graph.removePasteFormatting=function(a){for(;null!=a;)null!=a.firstChild&&Graph.removePasteFormatting(a.firstChild),a.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=a.style&&(a.style.whiteSpace="","#000000"==a.style.color&&(a.style.color="")),a=a.nextSibling};
Graph.sanitizeHtml=function(a,b){return Graph.domPurify(a,!1)};Graph.sanitizeLink=function(a){var b=document.createElement("a");b.setAttribute("href",a);Graph.sanitizeNode(b);return b.getAttribute("href")};Graph.sanitizeNode=function(a){return Graph.domPurify(a,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(a){"use"==a.nodeName&&a.hasAttribute("xlink:href")&&!a.getAttribute("xlink:href").match(/^#/)&&a.remove()});
Graph.domPurify=function(a,b){window.DOM_PURIFY_CONFIG.IN_PLACE=b;return DOMPurify.sanitize(a,window.DOM_PURIFY_CONFIG)};
Graph.clipSvgDataUri=function(a,b){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=a&&"data:image/svg+xml;base64,"==a.substring(0,26))try{var f=document.createElement("div");f.style.position="absolute";f.style.visibility="hidden";var e=decodeURIComponent(escape(atob(a.substring(26)))),g=e.indexOf("<svg");if(0<=g){f.innerHTML=Graph.sanitizeHtml(e.substring(g));var d=f.getElementsByTagName("svg");if(0<d.length){if(b||null!=d[0].getAttribute("preserveAspectRatio")){document.body.appendChild(f);try{e=b=
1;var k=d[0].getAttribute("width"),n=d[0].getAttribute("height");k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN;n=null!=n&&"%"!=n.charAt(n.length-1)?parseFloat(n):NaN;var u=d[0].getAttribute("viewBox");if(null!=u&&!isNaN(k)&&!isNaN(n)){var m=u.split(" ");4<=u.length&&(b=parseFloat(m[2])/k,e=parseFloat(m[3])/n)}var r=d[0].getBBox();0<r.width&&0<r.height&&(f.getElementsByTagName("svg")[0].setAttribute("viewBox",r.x+" "+r.y+" "+r.width+" "+r.height),f.getElementsByTagName("svg")[0].setAttribute("width",
r.width/b),f.getElementsByTagName("svg")[0].setAttribute("height",r.height/e))}catch(x){}finally{document.body.removeChild(f)}}a=Editor.createSvgDataUri(mxUtils.getXml(d[0]))}}}catch(x){}return a};Graph.stripQuotes=function(a){null!=a&&("'"==a.charAt(0)&&(a=a.substring(1)),"'"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)),'"'==a.charAt(0)&&(a=a.substring(1)),'"'==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1)));return a};
Graph.createRemoveIcon=function(a,b){var f=document.createElement("img");f.setAttribute("src",Dialog.prototype.clearImage);f.setAttribute("title",a);f.setAttribute("width","13");f.setAttribute("height","10");f.style.marginLeft="4px";f.style.marginBottom="-1px";f.style.cursor="pointer";mxEvent.addListener(f,"click",b);return f};Graph.isPageLink=function(a){return null!=a&&"data:page/id,"==a.substring(0,13)};Graph.isLink=function(a){return null!=a&&Graph.linkPattern.test(a)};
x&&x!=e.node;){if("a"==x.nodeName.toLowerCase()){f.view.graph.labelLinkClicked(f,x,r);break}x=x.parentNode}});mxEvent.addGestureListeners(e.node,n,u,m);mxEvent.addListener(e.node,"click",function(r){mxEvent.consume(r)})};if(null!=this.tooltipHandler){var b=this.tooltipHandler.init;this.tooltipHandler.init=function(){b.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(f){var e=mxEvent.getSource(f);"A"==e.nodeName&&(e=e.getAttribute("href"),null!=
u)}return k};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var b=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(k){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);b.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(),
Graph.prototype.labelLinkClicked=function(a,b,f){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&(mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(f)}};
Graph.prototype.openLink=function(a,b,f){var e=window;try{if(a=Graph.sanitizeLink(a),null!=a)if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top){var g=a.split("#")[1];window.location.hash=="#"+g&&(window.location.hash="");window.location.hash=g}else e=window.open(a,null!=b?b:"_blank"),null==e||f||(e.opener=null)}catch(d){}return e};
Graph.prototype.initLayoutManager=function(){this.layoutManager=new mxLayoutManager(this);this.layoutManager.hasLayout=function(a){return null!=this.graph.getCellStyle(a).childLayout};this.layoutManager.getLayout=function(a,b){var f=this.graph.model.getParent(a);if(!this.graph.isCellCollapsed(a)&&(b!=mxEvent.BEGIN_UPDATE||this.hasLayout(f,b))){a=this.graph.getCellStyle(a);if("stackLayout"==a.childLayout)return b=new mxStackLayout(this.graph,!0),b.resizeParentMax="1"==mxUtils.getValue(a,"resizeParentMax",
"1"),b.horizontal="1"==mxUtils.getValue(a,"horizontalStack","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.resizeLast="1"==mxUtils.getValue(a,"resizeLast","0"),b.spacing=a.stackSpacing||b.spacing,b.border=a.stackBorder||b.border,b.marginLeft=a.marginLeft||0,b.marginRight=a.marginRight||0,b.marginTop=a.marginTop||0,b.marginBottom=a.marginBottom||0,b.allowGaps=a.allowGaps||0,b.fill=!0,b.allowGaps&&(b.gridSize=parseFloat(mxUtils.getValue(a,"stackUnitSize",20))),b;if("treeLayout"==
a.childLayout)return b=new mxCompactTreeLayout(this.graph),b.horizontal="1"==mxUtils.getValue(a,"horizontalTree","1"),b.resizeParent="1"==mxUtils.getValue(a,"resizeParent","1"),b.groupPadding=mxUtils.getValue(a,"parentPadding",20),b.levelDistance=mxUtils.getValue(a,"treeLevelDistance",30),b.maintainParentLocation=!0,b.edgeRouting=!1,b.resetEdges=!1,b;if("flowLayout"==a.childLayout)return b=new mxHierarchicalLayout(this.graph,mxUtils.getValue(a,"flowOrientation",mxConstants.DIRECTION_EAST)),b.resizeParent=
"1"==mxUtils.getValue(a,"resizeParent","1"),b.parentBorder=mxUtils.getValue(a,"parentPadding",20),b.maintainParentLocation=!0,b.intraCellSpacing=mxUtils.getValue(a,"intraCellSpacing",mxHierarchicalLayout.prototype.intraCellSpacing),b.interRankCellSpacing=mxUtils.getValue(a,"interRankCellSpacing",mxHierarchicalLayout.prototype.interRankCellSpacing),b.interHierarchySpacing=mxUtils.getValue(a,"interHierarchySpacing",mxHierarchicalLayout.prototype.interHierarchySpacing),b.parallelEdgeSpacing=mxUtils.getValue(a,
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),b;if("circleLayout"==a.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==a.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==a.childLayout)return new TableLayout(this.graph);if(null!=a.childLayout&&"["==a.childLayout.charAt(0))try{return new mxCompositeLayout(this.graph,this.graph.createLayouts(JSON.parse(a.childLayout)))}catch(e){null!=window.console&&console.error(e)}}return null}};
Graph.prototype.createLayouts=function(a){for(var b=[],f=0;f<a.length;f++)if(0<=mxUtils.indexOf(Graph.layoutNames,a[f].layout)){var e=new window[a[f].layout](this);if(null!=a[f].config)for(var g in a[f].config)e[g]=a[f].config[g];b.push(e)}else throw Error(mxResources.get("invalidCallFnNotFound",[a[f].layout]));return b};
Graph.prototype.getDataForCells=function(a){for(var b=[],f=0;f<a.length;f++){var e=null!=a[f].value?a[f].value.attributes:null,g={};g.id=a[f].id;if(null!=e)for(var d=0;d<e.length;d++)g[e[d].nodeName]=e[d].nodeValue;else g.label=this.convertValueToString(a[f]);b.push(g)}return b};
Graph.prototype.getNodesForCells=function(a){for(var b=[],f=0;f<a.length;f++){var e=this.view.getState(a[f]);if(null!=e){for(var g=this.cellRenderer.getShapesForState(e),d=0;d<g.length;d++)null!=g[d]&&null!=g[d].node&&b.push(g[d].node);null!=e.control&&null!=e.control.node&&b.push(e.control.node)}}return b};
Graph.prototype.createWipeAnimations=function(a,b){for(var f=[],e=0;e<a.length;e++){var g=this.view.getState(a[e]);null!=g&&null!=g.shape&&(this.model.isEdge(g.cell)&&null!=g.absolutePoints&&1<g.absolutePoints.length?f.push(this.createEdgeWipeAnimation(g,b)):this.model.isVertex(g.cell)&&null!=g.shape.bounds&&f.push(this.createVertexWipeAnimation(g,b)))}return f};
Graph.prototype.createEdgeWipeAnimation=function(a,b){var f=a.absolutePoints.slice(),e=a.segments,g=a.length,d=f.length;return{execute:mxUtils.bind(this,function(k,n){if(null!=a.shape){var u=[f[0]];n=k/n;b||(n=1-n);for(var m=g*n,r=1;r<d;r++)if(m<=e[r-1]){u.push(new mxPoint(f[r-1].x+(f[r].x-f[r-1].x)*m/e[r-1],f[r-1].y+(f[r].y-f[r-1].y)*m/e[r-1]));break}else m-=e[r-1],u.push(f[r]);a.shape.points=u;a.shape.redraw();0==k&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1);null!=a.text&&null!=
a.text.node&&(a.text.node.style.opacity=n)}}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.points=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};
Graph.prototype.createVertexWipeAnimation=function(a,b){var f=new mxRectangle.fromRectangle(a.shape.bounds);return{execute:mxUtils.bind(this,function(e,g){null!=a.shape&&(g=e/g,b||(g=1-g),a.shape.bounds=new mxRectangle(f.x,f.y,f.width*g,f.height),a.shape.redraw(),0==e&&Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),1),null!=a.text&&null!=a.text.node&&(a.text.node.style.opacity=g))}),stop:mxUtils.bind(this,function(){null!=a.shape&&(a.shape.bounds=f,a.shape.redraw(),null!=a.text&&null!=a.text.node&&
(a.text.node.style.opacity=""),Graph.setOpacityForNodes(this.getNodesForCells([a.cell]),b?1:0))})}};Graph.prototype.executeAnimations=function(a,b,f,e){f=null!=f?f:30;e=null!=e?e:30;var g=null,d=0,k=mxUtils.bind(this,function(){if(d==f||this.stoppingCustomActions){window.clearInterval(g);for(var n=0;n<a.length;n++)a[n].stop();null!=b&&b()}else for(n=0;n<a.length;n++)a[n].execute(d,f);d++});g=window.setInterval(k,e);k()};
Graph.prototype.getPageLayout=function(){var a=this.getPageSize(),b=this.getGraphBounds();if(0==b.width||0==b.height)return new mxRectangle(0,0,1,1);var f=Math.floor(Math.ceil(b.x/this.view.scale-this.view.translate.x)/a.width),e=Math.floor(Math.ceil(b.y/this.view.scale-this.view.translate.y)/a.height);return new mxRectangle(f,e,Math.ceil((Math.floor((b.x+b.width)/this.view.scale)-this.view.translate.x)/a.width)-f,Math.ceil((Math.floor((b.y+b.height)/this.view.scale)-this.view.translate.y)/a.height)-
e)};Graph.prototype.sanitizeHtml=function(a,b){return Graph.sanitizeHtml(a,b)};Graph.prototype.updatePlaceholders=function(){var a=!1,b;for(b in this.model.cells){var f=this.model.cells[b];this.isReplacePlaceholders(f)&&(this.view.invalidate(f,!1,!1),a=!0)}a&&this.view.validate()};Graph.prototype.isReplacePlaceholders=function(a){return null!=a.value&&"object"==typeof a.value&&"1"==a.value.getAttribute("placeholders")};
Graph.prototype.isIgnoreTerminalEvent=function(a){return mxEvent.isAltDown(a)&&!mxEvent.isShiftDown(a)&&!mxEvent.isControlDown(a)&&!mxEvent.isMetaDown(a)};Graph.prototype.isEdgeIgnored=function(a){var b=!1;null!=a&&(a=this.getCurrentCellStyle(a),b="1"==mxUtils.getValue(a,"ignoreEdge","0"));return b};Graph.prototype.isSplitTarget=function(a,b,f){return!this.model.isEdge(b[0])&&!mxEvent.isAltDown(f)&&!mxEvent.isShiftDown(f)&&mxGraph.prototype.isSplitTarget.apply(this,arguments)};
Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this,arguments);null!=b&&this.isReplacePlaceholders(a)&&null==a.getAttribute("placeholder")&&(b=this.replacePlaceholders(a,b));return b};Graph.prototype.isLabelMovable=function(a){var b=this.getCurrentCellStyle(a);return!this.isCellLocked(a)&&(this.model.isEdge(a)&&this.edgeLabelsMovable||this.model.isVertex(a)&&(this.vertexLabelsMovable||"1"==mxUtils.getValue(b,"labelMovable","0")))};
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var b=this.getLinkForCell(a);if(null!=b)return b;a=this.model.getParent(a)}while(null!=a);return null};
Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b};
Graph.prototype.formatDate=function(a,b,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",
/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(e.masks[b]||b||e.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),A=a[n+"Hours"](),C=a[n+"Minutes"](),F=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var K=f?0:a.getTimezoneOffset(),E={d:u,dd:k(u),ddd:e.i18n.dayNames[m],dddd:e.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:e.i18n.monthNames[r],mmmm:e.i18n.monthNames[r+
12],yy:String(x).slice(2),yyyy:x,h:A%12||12,hh:k(A%12||12),H:A,HH:k(A),M:C,MM:k(C),s:F,ss:k(F),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>A?"a":"p",tt:12>A?"am":"pm",T:12>A?"A":"P",TT:12>A?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(d,""),o:(0<K?"-":"+")+k(100*Math.floor(Math.abs(K)/60)+Math.abs(K)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(O){return O in E?E[O]:O.slice(1,
O.length-1)})};Graph.prototype.getLayerForCells=function(a){var b=null;if(0<a.length){for(b=a[0];!this.model.isLayer(b);)b=this.model.getParent(b);for(var f=1;f<a.length;f++)if(!this.model.isAncestor(b,a[f])){b=null;break}}return b};
Graph.prototype.createLayersDialog=function(a,b){var f=document.createElement("div");f.style.position="absolute";for(var e=this.getModel(),g=e.getChildCount(e.root),d=0;d<g;d++)mxUtils.bind(this,function(k){function n(){e.isVisible(k)?(r.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(m,75)):(r.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(m,25))}var u=this.convertValueToString(k)||mxResources.get("background")||"Background",m=document.createElement("div");m.style.overflow=
"hidden";m.style.textOverflow="ellipsis";m.style.padding="2px";m.style.whiteSpace="nowrap";m.style.cursor="pointer";m.setAttribute("title",mxResources.get(e.isVisible(k)?"hideIt":"show",[u]));var r=document.createElement("img");r.setAttribute("draggable","false");r.setAttribute("align","absmiddle");r.setAttribute("border","0");r.style.position="relative";r.style.width="16px";r.style.padding="0px 6px 0 4px";b&&(r.style.filter="invert(100%)",r.style.top="-2px");m.appendChild(r);mxUtils.write(m,u);f.appendChild(m);
Graph.prototype.replacePlaceholders=function(a,b,f,e){e=[];if(null!=b){for(var g=0;match=this.placeholderPattern.exec(b);){var d=match[0];if(2<d.length&&"%label%"!=d&&"%tooltip%"!=d){var k=null;if(match.index>g&&"%"==b.charAt(match.index-1))k=d.substring(1);else{var n=d.substring(1,d.length-1);if("id"==n)k=a.id;else if(0>n.indexOf("{"))for(var u=a;null==k&&null!=u;)null!=u.value&&"object"==typeof u.value&&(Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=u.getAttribute(n+"_"+Graph.diagramLanguage)),
null==k&&(k=u.hasAttribute(n)?null!=u.getAttribute(n)?u.getAttribute(n):"":null)),u=this.model.getParent(u);null==k&&(k=this.getGlobalVariable(n));null==k&&null!=f&&(k=f[n])}e.push(b.substring(g,match.index)+(null!=k?k:d));g=match.index+d.length}}e.push(b.substring(g))}return e.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var e=this.model.getCell(a[f].id);null!=e&&b.push(e)}this.setSelectionCells(b)}else this.clearSelection()};
Graph.prototype.selectCellForEvent=function(a,b){mxEvent.isShiftDown(b)&&!this.isSelectionEmpty()&&this.selectTableRange(this.getSelectionCell(),a)||mxGraph.prototype.selectCellForEvent.apply(this,arguments)};
Graph.prototype.selectTableRange=function(a,b){var f=!1;if(this.isTableCell(a)&&this.isTableCell(b)){var e=this.model.getParent(a),g=this.model.getParent(e),d=this.model.getParent(b);if(g==this.model.getParent(d)){a=e.getIndex(a);e=g.getIndex(e);var k=d.getIndex(b),n=g.getIndex(d);d=Math.max(e,n);b=Math.min(a,k);a=Math.max(a,k);k=[];for(e=Math.min(e,n);e<=d;e++){n=this.model.getChildAt(g,e);for(var u=b;u<=a;u++)k.push(this.model.getChildAt(n,u))}0<k.length&&(1<k.length||1<this.getSelectionCount()||
Graph.prototype.snapCellsToGrid=function(a,b){this.getModel().beginUpdate();try{for(var f=0;f<a.length;f++){var e=a[f],g=this.getCellGeometry(e);if(null!=g){g=g.clone();if(this.getModel().isVertex(e))g.x=Math.round(g.x/b)*b,g.y=Math.round(g.y/b)*b,g.width=Math.round(g.width/b)*b,g.height=Math.round(g.height/b)*b;else if(this.getModel().isEdge(e)&&null!=g.points)for(var d=0;d<g.points.length;d++)g.points[d].x=Math.round(g.points[d].x/b)*b,g.points[d].y=Math.round(g.points[d].y/b)*b;this.getModel().setGeometry(e,
g)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)};
Graph.prototype.isCloneConnectSource=function(a){var b=null;null!=this.layoutManager&&(b=this.layoutManager.getLayout(this.model.getParent(a)));return this.isTableRow(a)||this.isTableCell(a)||null!=b&&b.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(a,b,f,e,g,d,k,n){d=d?d:!1;if(a.geometry.relative&&this.model.isEdge(a.parent))return[];for(;a.geometry.relative&&this.model.isVertex(a.parent);)a=a.parent;var u=this.isCloneConnectSource(a),m=u?a:this.getCompositeParent(a),r=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(m.geometry.x,m.geometry.y);b==mxConstants.DIRECTION_NORTH?(r.x+=m.geometry.width/2,r.y-=f):b==
mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=b==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var A=this.view.translate;m=A.x*f;A=A.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,A=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);d=d?null:(new mxRectangle(m+r.x*f,A+r.y*f)).grow(40*f);d=null!=d?
!mxEvent.isShiftDown(e)||mxEvent.isControlDown(e)||g;O&&("1"!=urlParams.sketch||g)&&(b==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var R=[],Q=F;F=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==F&&u){this.model.beginUpdate();try{if(null==Q&&O){var aa=this.getAbsoluteParent(null!=P?P:a);aa=u?a:this.getCompositeParent(aa);Q=null!=P?P:this.duplicateCells([aa],
!1)[0];null!=P&&this.addCells([Q],this.model.getParent(a),null,null,null,!0);var T=this.getCellGeometry(Q);null!=T&&(null!=P&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?r.y-=T.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=T.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-T.width/2:r.x+T.width/2),T.x=r.x-T.width/2,T.y=r.y-T.height/2);null!=C?(this.addCells([Q],C,null,null,null,!0),F=null):O&&!u&&this.addCells([Q],this.getDefaultParent(),null,null,null,!0)}var U=mxEvent.isControlDown(e)&&
mxEvent.isShiftDown(e)&&O||null==F&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,Q,this.createCurrentEdgeStyle());if(null!=U&&this.connectionHandler.insertBeforeSource){var fa=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=U.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==U.parent&&(fa=P.parent.getIndex(P),this.model.add(P.parent,U,fa))}null==F&&null!=Q&&null!=a.parent&&u&&b==mxConstants.DIRECTION_WEST&&(fa=a.parent.getIndex(a),this.model.add(a.parent,
Graph.prototype.getIndexableText=function(a){a=null!=a?a:this.model.getDescendants(this.model.root);for(var b=document.createElement("div"),f=[],e,g=0;g<a.length;g++)if(e=a[g],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&f.push(e);return f.join(" ")};
Graph.prototype.convertValueToString=function(a){var b=this.model.getValue(a);if(null!=b&&"object"==typeof b){var f=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){b=a.getAttribute("placeholder");for(var e=a;null==f&&null!=e;)null!=e.value&&"object"==typeof e.value&&(f=e.hasAttribute(b)?null!=e.getAttribute(b)?e.getAttribute(b):"":null),e=this.model.getParent(e)}else f=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=b.getAttribute("label_"+Graph.diagramLanguage)),
null==f&&(f=b.getAttribute("label")||"");return f||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null};
Graph.prototype.getLinkTargetForCell=function(a){return null!=a.value&&"object"==typeof a.value?a.value.getAttribute("linkTarget"):null};Graph.prototype.postProcessCellStyle=function(a,b){return this.updateHorizontalStyle(a,this.replaceDefaultColors(a,mxGraph.prototype.postProcessCellStyle.apply(this,arguments)))};
Graph.prototype.updateHorizontalStyle=function(a,b){if(null!=a&&null!=b&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(a=this.layoutManager.getLayout(f),null!=a&&a.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!a.horizontal))}return b};
Graph.prototype.replaceDefaultColors=function(a,b){if(null!=b){a=mxUtils.hex2rgb(this.shapeBackgroundColor);var f=mxUtils.hex2rgb(this.shapeForegroundColor);this.replaceDefaultColor(b,mxConstants.STYLE_FONTCOLOR,f);this.replaceDefaultColor(b,mxConstants.STYLE_FILLCOLOR,a);this.replaceDefaultColor(b,mxConstants.STYLE_STROKECOLOR,f);this.replaceDefaultColor(b,mxConstants.STYLE_IMAGE_BORDER,f);this.replaceDefaultColor(b,mxConstants.STYLE_IMAGE_BACKGROUND,a);this.replaceDefaultColor(b,mxConstants.STYLE_LABEL_BORDERCOLOR,
f);this.replaceDefaultColor(b,mxConstants.STYLE_SWIMLANE_FILLCOLOR,a);this.replaceDefaultColor(b,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,a)}return b};Graph.prototype.replaceDefaultColor=function(a,b,f){null!=a&&"default"==a[b]&&null!=f&&(a[b]=f)};
Graph.prototype.updateAlternateBounds=function(a,b,f){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var e=this.layoutManager.getLayout(this.model.getParent(a));null!=e&&e.constructor==mxStackLayout&&(e.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a,b){return mxEvent.isShiftDown(a)||"1"==mxUtils.getValue(b.style,"moveCells","0")};
Graph.prototype.foldCells=function(a,b,f,e,g){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var d=0;d<f.length;d++){var k=this.view.getState(f[d]),n=this.getCellGeometry(f[d]);if(null!=k&&null!=n){var u=Math.round(n.width-k.width/this.view.scale),m=Math.round(n.height-k.height/this.view.scale);if(0!=m||0!=u){var r=this.model.getParent(f[d]),x=this.layoutManager.getLayout(r);
Graph.prototype.moveSiblings=function(a,b,f,e){this.model.beginUpdate();try{var g=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<g.length;b++)if(g[b]!=a.cell){var d=this.view.getState(g[b]),k=this.getCellGeometry(g[b]);null!=d&&null!=k&&(k=k.clone(),k.translate(Math.round(f*Math.max(0,Math.min(1,(d.x-a.x)/a.width))),Math.round(e*Math.max(0,Math.min(1,(d.y-a.y)/a.height)))),this.model.setGeometry(g[b],k))}}finally{this.model.endUpdate()}};
Graph.prototype.resizeParentStacks=function(a,b,f,e){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var g=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==g&&!b.resizeLast;){var d=this.getCellGeometry(a),k=this.view.getState(a);null!=k&&null!=d&&(d=d.clone(),b.horizontal?d.width+=f+Math.min(0,k.width/this.view.scale-d.width):d.height+=e+Math.min(0,k.height/this.view.scale-d.height),this.model.setGeometry(a,
d));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.getCurrentCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container};Graph.prototype.isCellConnectable=function(a){var b=this.getCurrentCellStyle(a);return null!=b.connectable?"0"!=b.connectable:mxGraph.prototype.isCellConnectable.apply(this,arguments)};
Graph.prototype.isLabelMovable=function(a){var b=this.getCurrentCellStyle(a);return null!=b.movableLabel?"0"!=b.movableLabel:mxGraph.prototype.isLabelMovable.apply(this,arguments)};Graph.prototype.selectAll=function(a){a=a||this.getDefaultParent();this.isCellLocked(a)||mxGraph.prototype.selectAll.apply(this,arguments)};Graph.prototype.selectCells=function(a,b,f){f=f||this.getDefaultParent();this.isCellLocked(f)||mxGraph.prototype.selectCells.apply(this,arguments)};
Graph.prototype.getSwimlaneAt=function(a,b,f){var e=mxGraph.prototype.getSwimlaneAt.apply(this,arguments);this.isCellLocked(e)&&(e=null);return e};Graph.prototype.isCellFoldable=function(a){var b=this.getCurrentCellStyle(a);return this.foldingEnabled&&"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&("1"==b.treeFolding||!this.isCellLocked(a)&&(this.isContainer(a)&&"0"!=b.collapsible||!this.isContainer(a)&&"1"==b.collapsible))};
Graph.prototype.reset=function(){this.isEditing()&&this.stopEditing(!0);this.escape();this.isSelectionEmpty()||this.clearSelection()};Graph.prototype.zoom=function(a,b){a=Math.max(.01,Math.min(this.view.scale*a,160))/this.view.scale;mxGraph.prototype.zoom.apply(this,arguments)};Graph.prototype.zoomIn=function(){.15>this.view.scale?this.zoom((this.view.scale+.01)/this.view.scale):this.zoom(Math.round(this.view.scale*this.zoomFactor*20)/20/this.view.scale)};
Graph.prototype.fitWindow=function(a,b){b=null!=b?b:10;var f=this.container.clientWidth-b,e=this.container.clientHeight-b,g=Math.floor(20*Math.min(f/a.width,e/a.height))/20;this.zoomTo(g);if(mxUtils.hasScrollbars(this.container)){var d=this.view.translate;this.container.scrollTop=(a.y+d.y)*g-Math.max((e-a.height*g)/2+b/2,0);this.container.scrollLeft=(a.x+d.x)*g-Math.max((f-a.width*g)/2+b/2,0)}};
Graph.prototype.getTooltipForCell=function(a){var b="";if(mxUtils.isNode(a.value)){var f=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=a.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==f&&(f=a.value.getAttribute("tooltip"));if(null!=f)null!=f&&this.isReplacePlaceholders(a)&&(f=this.replacePlaceholders(a,f)),b=this.sanitizeHtml(f);else{f=this.builtInProperties;a=a.value.attributes;var e=[];this.isEnabled()&&(f.push("linkTarget"),f.push("link"));for(var g=0;g<a.length;g++)0>
mxUtils.indexOf(f,a[g].nodeName)&&0<a[g].nodeValue.length&&e.push({name:a[g].nodeName,value:a[g].nodeValue});e.sort(function(d,k){return d.name<k.name?-1:d.name>k.name?1:0});for(g=0;g<e.length;g++)"link"==e[g].name&&this.isCustomLink(e[g].value)||(b+=("link"!=e[g].name?"<b>"+e[g].name+":</b> ":"")+mxUtils.htmlEntities(e[g].value)+"\n");0<b.length&&(b=b.substring(0,b.length-1),mxClient.IS_SVG&&(b='<div style="max-width:360px;text-overflow:ellipsis;overflow:hidden;">'+b+"</div>"))}}return b};
Graph.prototype.getFlowAnimationStyle=function(){var a=document.getElementsByTagName("head")[0];if(null!=a&&null==this.flowAnimationStyle){this.flowAnimationStyle=document.createElement("style");this.flowAnimationStyle.setAttribute("id","geEditorFlowAnimation-"+Editor.guid());this.flowAnimationStyle.type="text/css";var b=this.flowAnimationStyle.getAttribute("id");this.flowAnimationStyle.innerHTML=this.getFlowAnimationStyleCss(b);a.appendChild(this.flowAnimationStyle)}return this.flowAnimationStyle};
Graph.prototype.getFlowAnimationStyleCss=function(a){return"."+a+" {\nanimation: "+a+" 0.5s linear;\nanimation-iteration-count: infinite;\n}\n@keyframes "+a+" {\nto {\nstroke-dashoffset: "+-16*this.view.scale+";\n}\n}"};Graph.prototype.stringToBytes=function(a){return Graph.stringToBytes(a)};Graph.prototype.bytesToString=function(a){return Graph.bytesToString(a)};Graph.prototype.compressNode=function(a){return Graph.compressNode(a)};Graph.prototype.compress=function(a,b){return Graph.compress(a,b)};
Graph.prototype.decompress=function(a,b){return Graph.decompress(a,b)};Graph.prototype.zapGremlins=function(a){return Graph.zapGremlins(a)};HoverIcons=function(a){mxEventSource.call(this);this.graph=a;this.init()};mxUtils.extend(HoverIcons,mxEventSource);HoverIcons.prototype.arrowSpacing=2;HoverIcons.prototype.updateDelay=500;HoverIcons.prototype.activationDelay=140;HoverIcons.prototype.currentState=null;HoverIcons.prototype.activeArrow=null;HoverIcons.prototype.inactiveOpacity=15;
mxEvent.getSource(f)==this.graph.container&&this.setDisplay("none")}));this.graph.addListener(mxEvent.START_EDITING,mxUtils.bind(this,function(f){this.reset()}));var a=this.graph.click;this.graph.click=mxUtils.bind(this,function(f){a.apply(this.graph,arguments);null==this.currentState||this.graph.isCellSelected(this.currentState.cell)||!mxEvent.isTouchEvent(f.getEvent())||this.graph.model.isVertex(f.getCell())||this.reset()});var b=!1;this.graph.addMouseListener({mouseDown:mxUtils.bind(this,function(f,
e){b=!1;f=e.getEvent();this.isResetEvent(f)?this.reset():this.isActive()||(e=this.getState(e.getState()),null==e&&mxEvent.isTouchEvent(f)||this.update(e));this.setDisplay("none")}),mouseMove:mxUtils.bind(this,function(f,e){f=e.getEvent();this.isResetEvent(f)?this.reset():this.graph.isMouseDown||mxEvent.isTouchEvent(f)||this.update(this.getState(e.getState()),e.getGraphX(),e.getGraphY());null!=this.graph.connectionHandler&&null!=this.graph.connectionHandler.shape&&(b=!0)}),mouseUp:mxUtils.bind(this,
function(f,e){f=e.getEvent();mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(f),mxEvent.getClientY(f));this.isResetEvent(f)?this.reset():this.isActive()&&!b&&null!=this.mouseDownPoint?this.click(this.currentState,this.getDirection(),e):this.isActive()?1==this.graph.getSelectionCount()&&this.graph.model.isEdge(this.graph.getSelectionCell())?this.reset():this.update(this.getState(this.graph.view.getState(this.graph.getCellAt(e.getGraphX(),e.getGraphY())))):mxEvent.isTouchEvent(f)||null!=
this.bbox&&mxUtils.contains(this.bbox,e.getGraphX(),e.getGraphY())?(this.setDisplay(""),this.repaint()):mxEvent.isTouchEvent(f)||this.reset();b=!1;this.resetActiveArrow()})})};HoverIcons.prototype.isResetEvent=function(a,b){return mxEvent.isAltDown(a)||null==this.activeArrow&&mxEvent.isShiftDown(a)||mxEvent.isPopupTrigger(a)&&!this.graph.isCloneEvent(a)};
HoverIcons.prototype.createArrow=function(a,b,f){var e=null;e=mxUtils.createImage(a.src);e.style.width=a.width+"px";e.style.height=a.height+"px";e.style.padding=this.tolerance+"px";null!=b&&e.setAttribute("title",b);e.style.position="absolute";e.style.cursor=this.cssCursor;mxEvent.addGestureListeners(e,mxUtils.bind(this,function(g){null==this.currentState||this.isResetEvent(g)||(this.mouseDownPoint=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(g),mxEvent.getClientY(g)),this.drag(g,
HoverIcons.prototype.getDirection=function(){var a=mxConstants.DIRECTION_EAST;this.activeArrow==this.arrowUp?a=mxConstants.DIRECTION_NORTH:this.activeArrow==this.arrowDown?a=mxConstants.DIRECTION_SOUTH:this.activeArrow==this.arrowLeft&&(a=mxConstants.DIRECTION_WEST);return a};HoverIcons.prototype.visitNodes=function(a){for(var b=0;b<this.elts.length;b++)null!=this.elts[b]&&a(this.elts[b])};HoverIcons.prototype.removeNodes=function(){this.visitNodes(function(a){null!=a.parentNode&&a.parentNode.removeChild(a)})};
HoverIcons.prototype.setDisplay=function(a){this.visitNodes(function(b){b.style.display=a})};HoverIcons.prototype.isActive=function(){return null!=this.activeArrow&&null!=this.currentState};
HoverIcons.prototype.drag=function(a,b,f){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);null!=this.currentState&&(this.graph.connectionHandler.start(this.currentState,b,f),this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0,b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell),null!=b&&b.setHandlesVisible(!1),b=this.graph.connectionHandler.edgeState,null!=a&&mxEvent.isShiftDown(a)&&mxEvent.isControlDown(a)&&null!=b&&"orthogonalEdgeStyle"===
mxUtils.getValue(b.style,mxConstants.STYLE_EDGE,null)&&(a=this.getDirection(),b.cell.style=mxUtils.setStyle(b.cell.style,"sourcePortConstraint",a),b.style.sourcePortConstraint=a))};HoverIcons.prototype.getStateAt=function(a,b,f){return this.graph.view.getState(this.graph.getCellAt(b,f))};
HoverIcons.prototype.click=function(a,b,f){var e=f.getEvent(),g=f.getGraphX(),d=f.getGraphY();g=this.getStateAt(a,g,d);null==g||!this.graph.model.isEdge(g.cell)||this.graph.isCloneEvent(e)||g.getVisibleTerminalState(!0)!=a&&g.getVisibleTerminalState(!1)!=a?null!=a&&this.execute(a,b,f):(this.graph.setSelectionCell(g.cell),this.reset());f.consume()};
HoverIcons.prototype.execute=function(a,b,f){f=f.getEvent();this.graph.selectCellsForConnectVertex(this.graph.connectVertex(a.cell,b,this.graph.defaultEdgeLength,f,this.graph.isCloneEvent(f),this.graph.isCloneEvent(f)),f,this)};HoverIcons.prototype.reset=function(a){null!=a&&!a||null==this.updateThread||window.clearTimeout(this.updateThread);this.activeArrow=this.currentState=this.mouseDownPoint=null;this.removeNodes();this.bbox=null;this.fireEvent(new mxEventObject("reset"))};
var b=this.graph.selectionCellsHandler.getHandler(this.currentState.cell);this.graph.isTableRow(this.currentState.cell)&&(b=this.graph.selectionCellsHandler.getHandler(this.graph.model.getParent(this.currentState.cell)));var f=null;null!=b&&(a.x-=b.horizontalOffset/2,a.y-=b.verticalOffset/2,a.width+=b.horizontalOffset,a.height+=b.verticalOffset,null!=b.rotationShape&&null!=b.rotationShape.node&&"hidden"!=b.rotationShape.node.style.visibility&&"none"!=b.rotationShape.node.style.display&&null!=b.rotationShape.boundingBox&&
(f=b.rotationShape.boundingBox));b=mxUtils.bind(this,function(n,u,m){if(null!=f){var r=new mxRectangle(u,m,n.clientWidth,n.clientHeight);mxUtils.intersects(r,f)&&(n==this.arrowUp?m-=r.y+r.height-f.y:n==this.arrowRight?u+=f.x+f.width-r.x:n==this.arrowDown?m+=f.y+f.height-r.y:n==this.arrowLeft&&(u-=r.x+r.width-f.x))}n.style.left=u+"px";n.style.top=m+"px";mxUtils.setOpacity(n,this.inactiveOpacity)});b(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(a.y-
this.triangleUp.height-this.tolerance));b(this.arrowRight,Math.round(a.x+a.width-this.tolerance),Math.round(this.currentState.getCenterY()-this.triangleRight.height/2-this.tolerance));b(this.arrowDown,parseInt(this.arrowUp.style.left),Math.round(a.y+a.height-this.tolerance));b(this.arrowLeft,Math.round(a.x-this.triangleLeft.width-this.tolerance),parseInt(this.arrowRight.style.top));if(this.checkCollisions){b=this.graph.getCellAt(a.x+a.width+this.triangleRight.width/2,this.currentState.getCenterY());
var e=this.graph.getCellAt(a.x-this.triangleLeft.width/2,this.currentState.getCenterY()),g=this.graph.getCellAt(this.currentState.getCenterX(),a.y-this.triangleUp.height/2);a=this.graph.getCellAt(this.currentState.getCenterX(),a.y+a.height+this.triangleDown.height/2);null!=b&&b==e&&e==g&&g==a&&(a=g=e=b=null);var d=this.graph.getCellGeometry(this.currentState.cell),k=mxUtils.bind(this,function(n,u){var m=this.graph.model.isVertex(n)&&this.graph.getCellGeometry(n);null==n||this.graph.model.isAncestor(n,
this.currentState.cell)||this.graph.isSwimlane(n)||!(null==m||null==d||m.height<3*d.height&&m.width<3*d.width)?u.style.visibility="visible":u.style.visibility="hidden"});k(b,this.arrowRight);k(e,this.arrowLeft);k(g,this.arrowUp);k(a,this.arrowDown)}else this.arrowLeft.style.visibility="visible",this.arrowRight.style.visibility="visible",this.arrowUp.style.visibility="visible",this.arrowDown.style.visibility="visible";this.graph.tooltipHandler.isEnabled()?(this.arrowLeft.setAttribute("title",mxResources.get("plusTooltip")),
HoverIcons.prototype.computeBoundingBox=function(){var a=this.graph.model.isEdge(this.currentState.cell)?null:mxRectangle.fromRectangle(this.currentState);this.visitNodes(function(b){null!=b.parentNode&&(b=new mxRectangle(b.offsetLeft,b.offsetTop,b.offsetWidth,b.offsetHeight),null==a?a=b:a.add(b))});return a};
HoverIcons.prototype.getState=function(a){if(null!=a)if(a=a.cell,this.graph.getModel().contains(a)){if(this.graph.getModel().isVertex(a)&&!this.graph.isCellConnectable(a)){var b=this.graph.getModel().getParent(a);this.graph.getModel().isVertex(b)&&this.graph.isCellConnectable(b)&&(a=b)}if(this.graph.isCellLocked(a)||this.graph.model.isEdge(a))a=null;a=this.graph.view.getState(a);null!=a&&null==a.style&&(a=null)}else a=null;return a};
HoverIcons.prototype.update=function(a,b,f){if(!this.graph.connectionArrowsEnabled||null!=a&&"0"==mxUtils.getValue(a.style,"allowArrows","1"))this.reset();else{null!=a&&null!=a.cell.geometry&&a.cell.geometry.relative&&this.graph.model.isEdge(a.cell.parent)&&(a=null);var e=null;this.prev!=a||this.isActive()?(this.startTime=(new Date).getTime(),this.prev=a,e=0,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=a&&(this.updateThread=window.setTimeout(mxUtils.bind(this,function(){this.isActive()||
this.graph.isMouseDown||this.graph.panningHandler.isActive()||(this.prev=a,this.update(a,b,f))}),this.updateDelay+10))):null!=this.startTime&&(e=(new Date).getTime()-this.startTime);this.setDisplay("");null!=this.currentState&&this.currentState!=a&&e<this.activationDelay&&null!=this.bbox&&!mxUtils.contains(this.bbox,b,f)?this.reset(!1):(null!=this.currentState||e>this.activationDelay)&&this.currentState!=a&&(e>this.updateDelay&&null!=a||null==this.bbox||null==b||null==f||!mxUtils.contains(this.bbox,
b,f))&&(null!=a&&this.graph.isEnabled()?(this.removeNodes(),this.setCurrentState(a),this.repaint(),this.graph.connectionHandler.constraintHandler.currentFocus!=a&&this.graph.connectionHandler.constraintHandler.reset()):this.reset())}};
HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstraint&&(this.graph.container.appendChild(this.arrowUp),this.graph.container.appendChild(this.arrowDown));this.graph.container.appendChild(this.arrowRight);this.graph.container.appendChild(this.arrowLeft);this.currentState=a};Graph.prototype.createParent=function(a,b,f,e,g){a=this.cloneCell(a);for(var d=0;d<f;d++){var k=this.cloneCell(b),n=this.getCellGeometry(k);null!=n&&(n.x+=d*e,n.y+=d*g);a.insert(k)}return a};
Graph.prototype.createTable=function(a,b,f,e,g,d,k,n,u){f=null!=f?f:60;e=null!=e?e:40;d=null!=d?d:30;n=null!=n?n:"shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;";u=null!=u?u:"shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;";return this.createParent(this.createVertex(null,
null,null!=g?g:"",0,0,b*f,a*e+(null!=g?d:0),null!=k?k:"shape=table;startSize="+(null!=g?d:"0")+";container=1;collapsible=0;childLayout=tableLayout;"),this.createParent(this.createVertex(null,null,"",0,0,b*f,e,n),this.createVertex(null,null,"",0,0,f,e,u),b,f,0),a,0,e)};
Graph.prototype.setTableValues=function(a,b,f){for(var e=this.model.getChildCells(a,!0),g=0;g<e.length;g++)if(null!=f&&(e[g].value=f[g]),null!=b)for(var d=this.model.getChildCells(e[g],!0),k=0;k<d.length;k++)null!=b[g][k]&&(d[k].value=b[g][k]);return a};
Graph.prototype.createCrossFunctionalSwimlane=function(a,b,f,e,g,d,k,n,u){f=null!=f?f:120;e=null!=e?e:120;k=null!=k?k:"shape=tableRow;horizontal=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;fontStyle=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;startSize=40;collapsible=0;recursiveResize=0;expand=0;";n=null!=n?n:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;";
u=null!=u?u:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=0;collapsible=0;recursiveResize=0;expand=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,b*f,a*e,null!=d?d:"shape=table;childLayout=tableLayout;"+(null==g?"startSize=0;fillColor=none;":"startSize=40;")+"collapsible=0;recursiveResize=0;expand=0;");d=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=d;g.geometry.height+=d;k=this.createVertex(null,
null,"",0,d,b*f+d,e,k);g.insert(this.createParent(k,this.createVertex(null,null,"",d,0,f,e,n),b,f,0));return 1<a?(k.geometry.y=e+d,this.createParent(g,this.createParent(k,this.createVertex(null,null,"",d,0,f,e,u),b,f,0),a-1,0,e)):g};
Graph.prototype.visitTableCells=function(a,b){var f=null,e=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<e.length;g++){for(var d=this.getActualStartSize(e[g],!0),k=this.model.getChildCells(e[g],!0),n=this.getCellStyle(e[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),A={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;A.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+d.x),x.height+(null!=f&&null!=
f[0]?f[0].point.y:a.y+d.y));A.actual=A;null!=f&&null!=f[r]&&1<f[r].rowspan?(A.rowspan=f[r].rowspan-1,A.colspan=f[r].colspan,A.actual=f[r].actual):null!=u&&1<u.colspan?(A.rowspan=u.rowspan,A.colspan=u.colspan-1,A.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(A.rowspan=parseInt(u.rowspan||1),A.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;b(A,k.length,
e.length,a.x+(u?d.x:0),a.y+(u?d.y:0));m.push(A);u=A}f=m}};Graph.prototype.getTableLines=function(a,b,f){var e=[],g=[];(b||f)&&this.visitTableCells(a,mxUtils.bind(this,function(d,k,n,u,m){b&&d.row<n-1&&(null==e[d.row]&&(e[d.row]=[new mxPoint(u,d.point.y)]),1<d.rowspan&&e[d.row].push(null),e[d.row].push(d.point));f&&d.col<k-1&&(null==g[d.col]&&(g[d.col]=[new mxPoint(d.point.x,m)]),1<d.colspan&&g[d.col].push(null),g[d.col].push(d.point))}));return e.concat(g)};
Graph.prototype.setTableRowHeight=function(a,b,f){f=null!=f?f:!0;var e=this.getModel();e.beginUpdate();try{var g=this.getCellGeometry(a);if(null!=g){g=g.clone();g.height+=b;e.setGeometry(a,g);var d=e.getParent(a),k=e.getChildCells(d,!0);if(!f){var n=mxUtils.indexOf(k,a);if(n<k.length-1){var u=k[n+1],m=this.getCellGeometry(u);null!=m&&(m=m.clone(),m.y+=b,m.height-=b,e.setGeometry(u,m))}}var r=this.getCellGeometry(d);null!=r&&(f||(f=a==k[k.length-1]),f&&(r=r.clone(),r.height+=b,e.setGeometry(d,r)))}}finally{e.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(a,b,f){f=null!=f?f:!1;var e=this.getModel(),g=e.getParent(a),d=e.getParent(g),k=e.getChildCells(g,!0);a=mxUtils.indexOf(k,a);var n=a==k.length-1;e.beginUpdate();try{for(var u=e.getChildCells(d,!0),m=0;m<u.length;m++){g=u[m];k=e.getChildCells(g,!0);var r=k[a],x=this.getCellGeometry(r);null!=x&&(x=x.clone(),x.width+=b,null!=x.alternateBounds&&(x.alternateBounds.width+=b),e.setGeometry(r,x));a<k.length-1&&(r=k[a+1],x=this.getCellGeometry(r),null!=x&&(x=x.clone(),
x.x+=b,f||(x.width-=b,null!=x.alternateBounds&&(x.alternateBounds.width-=b)),e.setGeometry(r,x)))}if(n||f){var A=this.getCellGeometry(d);null!=A&&(A=A.clone(),A.width+=b,e.setGeometry(d,A))}null!=this.layoutManager&&this.layoutManager.executeLayout(d)}finally{e.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};TableLayout.prototype.getSize=function(a,b){for(var f=0,e=0;e<a.length;e++)if(!this.isVertexIgnored(a[e])){var g=this.graph.getCellGeometry(a[e]);null!=g&&(f+=b?g.width:g.height)}return f};
TableLayout.prototype.getRowLayout=function(a,b){var f=this.graph.model.getChildCells(a,!0),e=this.graph.getActualStartSize(a,!0);a=this.getSize(f,!0);b=b-e.x-e.width;var g=[];e=e.x;for(var d=0;d<f.length;d++){var k=this.graph.getCellGeometry(f[d]);null!=k&&(e+=(null!=k.alternateBounds?k.alternateBounds.width:k.width)*b/a,g.push(Math.round(e)))}return g};
TableLayout.prototype.layoutRow=function(a,b,f,e){var g=this.graph.getModel(),d=g.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,n=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var u=0;u<d.length;u++){var m=this.graph.getCellGeometry(d[u]);null!=m&&(m=m.clone(),m.y=a.y,m.height=f-a.y-a.height,null!=b?(m.x=b[u],m.width=b[u+1]-m.x,u==d.length-1&&u<b.length-2&&(m.width=e-m.x-a.x-a.width)):(m.x=k,k+=m.width,u==d.length-1?m.width=e-a.x-a.width-n:n+=m.width),m.alternateBounds=new mxRectangle(0,
TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),e=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(e,"resizeLastRow","0"),d="1"==mxUtils.getValue(e,"resizeLast","0");e="1"==mxUtils.getValue(e,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-b.y-b.height,m=f.width-b.x-b.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var A=this.getSize(r,!1);if(0<u&&0<m&&0<
r.length&&0<A){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-A+C.height,k.setGeometry(r[r.length-1],C))}var F=d?null:this.getRowLayout(r[0],m),K=[],E=b.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=b.x,C.width=m,C.y=Math.round(E),E=g||e?E+C.height:E+C.height/A*u,C.height=Math.round(E)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],F,C.height,m,K));e&&u<A&&(f=f.clone(),f.height=E+b.height,k.setGeometry(a,
f));d&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+b.width+b.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(O){k.setVisible(O.cell,O.actual.cell==O.cell);if(O.actual.cell!=O.cell){if(O.actual.row==O.row){var R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo;O.actual.geo.width+=R.width}O.actual.col==O.col&&(R=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo,O.actual.geo.height+=R.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
(function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(r,x){x=null!=x?x:!0;var A=this.getState(r);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&!A.invalid&&this.updateLineJumps(A)&&this.graph.cellRenderer.redraw(A,!1,this.isRendering());A=b.apply(this,
mxStencilRegistry.getStencil=function(a){var b=mxStencilRegistry.stencils[a];if(null==b&&null==mxCellRenderer.defaultShapes[a]&&mxStencilRegistry.dynamicLoading){var f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var e=0;e<b.length;e++){var g=b[e];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var d=mxUtils.load(g);null!=d&&200<=d.getStatus()&&299>=d.getStatus()&&eval.call(window,d.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,f,b,g,k)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
mxStencilRegistry.getBasenameForStencil=function(a){var b=null;if(null!=a&&"string"===typeof a&&(a=a.split("."),0<a.length&&"mxgraph"==a[0])){b=a[1];for(var f=2;f<a.length-1;f++)b+="/"+a[f]}return b};
mxStencilRegistry.loadStencilSet=function(a,b,f,e){var g=mxStencilRegistry.packages[a];if(null!=f&&f||null==g){var d=!1;if(null==g)try{if(e){mxStencilRegistry.loadStencil(a,mxUtils.bind(this,function(k){null!=k&&null!=k.documentElement&&(mxStencilRegistry.packages[a]=k,d=!0,mxStencilRegistry.parseStencilSet(k.documentElement,b,d))}));return}g=mxStencilRegistry.loadStencil(a);mxStencilRegistry.packages[a]=g;d=!0}catch(k){null!=window.console&&console.log("error in loadStencilSet:",a,k)}null!=g&&null!=
g.documentElement&&mxStencilRegistry.parseStencilSet(g.documentElement,b,d)}};mxStencilRegistry.loadStencil=function(a,b){if(null!=b)mxUtils.get(a,mxUtils.bind(this,function(f){b(200<=f.getStatus()&&299>=f.getStatus()?f.getXml():null)}));else return mxUtils.load(a).getXml()};mxStencilRegistry.parseStencilSets=function(a){for(var b=0;b<a.length;b++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(a[b]).documentElement)};
mxStencilRegistry.parseStencilSet=function(a,b,f){if("stencils"==a.nodeName)for(var e=a.firstChild;null!=e;)"shapes"==e.nodeName&&mxStencilRegistry.parseStencilSet(e,b,f),e=e.nextSibling;else{f=null!=f?f:!0;e=a.firstChild;var g="";a=a.getAttribute("name");for(null!=a&&(g=a+".");null!=e;){if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=e.getAttribute("name"),null!=a)){g=g.toLowerCase();var d=a.replace(/ /g,"_");f&&mxStencilRegistry.addStencil(g+d.toLowerCase(),new mxStencil(e));if(null!=b){var k=e.getAttribute("w"),
n=e.getAttribute("h");k=null==k?80:parseInt(k,10);n=null==n?80:parseInt(n,10);b(g,d,a,k,n)}}e=e.nextSibling}}};
"undefined"!==typeof mxVertexHandler&&function(){function a(){var t=document.createElement("div");t.className="geHint";t.style.whiteSpace="nowrap";t.style.position="absolute";return t}function b(t,z){switch(z){case mxConstants.POINTS:return t;case mxConstants.MILLIMETERS:return(t/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(t/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(t/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(c){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var Za=this.backgroundImage;if(null!=Za){t=Ea/z;var pb=this.view.translate;Da=new mxRectangle((Za.x+pb.x)*t,(Za.y+pb.y)*t,Za.width*t,Za.height*t);mxUtils.intersects(Ia,Da)&&Na.image(Za.x+pb.x,Za.y+pb.y,Za.width,Za.height,Za.src,!0)}Na.scale(D);Na.textEnabled=X;ia=null!=ia?ia:this.createSvgImageExport();var ub=ia.drawCellState,vb=ia.getLinkForCellState;ia.getLinkForCellState=
function(t){var z=this.graph.getView().scale;return new mxRectangle(0,0,null==t.text?30:t.text.size*z+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(t,z){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(z.getEvent)};mxGraphView.prototype.formatUnitText=function(t){return t?b(t,this.unit):t};mxGraphHandler.prototype.updateHint=function(t){if(null!=this.pBounds&&(null!=this.shape||
this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,B=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/B-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/B-z.y);B=this.graph.view.unit;this.hint.innerHTML=b(t,B)+", "+b(z,B);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+
z):t=V.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/t),z)+" x "+b(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var B=this.graph.view.translate,D=this.graph.view.scale,G=this.roundLength(z.x/D-B.x);B=this.roundLength(z.y/D-B.y);D=this.graph.view.unit;this.hint.innerHTML=b(G,D)+", "+b(B,D);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(G=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*G.x)+
null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();Format=function(a,b){this.editorUi=a;this.container=b};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.doubleBlockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 8 8 L 16 2 L 16 14 Z M 16 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.processMenuIcon=function(a,b){var f=a.getElementsByTagName("img");0<f.length&&(Editor.isDarkMode()&&(f[0].style.filter="invert(100%)"),f[0].className="geIcon",f[0].style.padding="0px",f[0].style.margin="0 0 0 2px",null!=b&&mxUtils.setPrefixedStyle(f[0].style,"transform",b));return a};
Format.prototype.init=function(){var a=this.editorUi,b=a.editor,f=b.graph;this.update=mxUtils.bind(this,function(e,g){this.refresh()});f.getSelectionModel().addListener(mxEvent.CHANGE,this.update);f.getModel().addListener(mxEvent.CHANGE,this.update);f.addListener(mxEvent.EDITING_STARTED,this.update);f.addListener(mxEvent.EDITING_STOPPED,this.update);f.getView().addListener("unitChanged",this.update);b.addListener("autosaveChanged",this.update);f.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,b=a.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.color="rgb(112, 112, 112)";f.style.textAlign="left";f.style.cursor="default";var e=document.createElement("div");e.className="geFormatSection";e.style.textAlign="center";e.style.fontWeight="bold";e.style.paddingTop="8px";e.style.fontSize="13px";e.style.borderWidth="0px 0px 1px 1px";e.style.borderStyle=
"solid";e.style.display="inline-block";e.style.height="25px";e.style.overflow="hidden";e.style.width="100%";this.container.appendChild(f);mxEvent.addListener(e,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),d=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,F,K,E){var O=mxUtils.bind(this,function(R){k!=C&&(d?this.labelIndex=K:b.isSelectionEmpty()?this.diagramIndex=K:this.currentIndex=K,null!=k&&(k.style.backgroundColor=
Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=F&&(null!=n&&(n.style.display="none"),n=F,n.style.display=""))});mxEvent.addListener(C,"click",O);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(R){R.preventDefault()}));(E&&null==k||K==(d?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&O()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(e,mxResources.get("diagram"));
Dialog.prototype.closeImage),u.setAttribute("title",mxResources.get("hide")),u.style.position="absolute",u.style.display="block",u.style.right="0px",u.style.top="8px",u.style.cursor="pointer",u.style.marginTop="1px",u.style.marginRight="6px",u.style.border="1px solid transparent",u.style.padding="1px",u.style.opacity=.5,r.appendChild(u),mxEvent.addListener(u,"click",function(){a.actions.get("formatPanel").funct()}),f.appendChild(r))}else if(b.isEditing())mxUtils.write(e,mxResources.get("text")),f.appendChild(e),
"none";u(A,f,m++,!0)}}};BaseFormatPanel=function(a,b,f){this.format=a;this.editorUi=b;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
BaseFormatPanel.prototype.installInputHandler=function(a,b,f,e,g,d,k,n){d=null!=d?d:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;e=null!=e?e:1;g=null!=g?g:999;var r=null,x=!1,A=mxUtils.bind(this,function(C){var F=n?parseFloat(a.value):parseInt(a.value);isNaN(F)||b!=mxConstants.STYLE_ROTATION||(F=mxUtils.mod(Math.round(100*F),36E3)/100);F=Math.min(g,Math.max(e,isNaN(F)?f:F));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(F),a.value=F+d,
x=!1);else if(F!=mxUtils.getValue(u.getSelectionState().style,b,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var K=u.getSelectionState().cells;m.setCellStyles(b,F,K);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(K,function(O){O.style.fontSize=F+"px";O.removeAttribute("size")});for(var E=0;E<K.length;E++)0==m.model.getChildCount(K[E])&&m.autoSizeCell(K[E],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[F],"cells",K))}finally{m.getModel().endUpdate()}}a.value=
BaseFormatPanel.prototype.createPanel=function(){var a=document.createElement("div");a.className="geFormatSection";a.style.padding="12px 0px 12px 14px";return a};BaseFormatPanel.prototype.createTitle=function(a){var b=document.createElement("div");b.style.padding="0px 0px 6px 0px";b.style.whiteSpace="nowrap";b.style.overflow="hidden";b.style.width="200px";b.style.fontWeight="bold";mxUtils.write(b,a);return b};
BaseFormatPanel.prototype.addAction=function(a,b){var f=this.editorUi.actions.get(b);b=null;null!=f&&f.isEnabled()&&(b=mxUtils.button(f.label,function(e){f.funct(e,e)}),b.setAttribute("title",f.label+(null!=f.shortcut?" ("+f.shortcut+")":"")),b.style.marginBottom="2px",b.style.width="210px",a.appendChild(b),result=!0);return b};
BaseFormatPanel.prototype.addActions=function(a,b){for(var f=null,e=null,g=0,d=0;d<b.length;d++){var k=this.addAction(a,b[d]);null!=k&&(g++,0==mxUtils.mod(g,2)&&(e.style.marginRight="2px",e.style.width="104px",k.style.width="104px",f.parentNode.removeChild(f)),f=mxUtils.br(a),e=k)}return g};
BaseFormatPanel.prototype.createStepper=function(a,b,f,e,g,d,k){f=null!=f?f:1;e=null!=e?e:9;var n=10*f,u=document.createElement("div");mxUtils.setPrefixedStyle(u.style,"borderRadius","3px");u.style.border="1px solid rgb(192, 192, 192)";u.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=e+"px";m.style.width="10px";m.className="geBtnUp";u.appendChild(m);var r=m.cloneNode(!1);r.style.border="none";
r.style.height=e+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(A)?n:f),null!=b&&b(A));mxEvent.consume(A)});mxEvent.addGestureListeners(m,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=d||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(A)?
n:f),null!=b&&b(A));mxEvent.consume(A)});if(g){var x=null;mxEvent.addGestureListeners(u,function(A){mxEvent.consume(A)},null,function(A){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(A)}})}else mxEvent.addListener(u,"click",function(A){mxEvent.consume(A)});return u};
BaseFormatPanel.prototype.createOption=function(a,b,f,e,g){var d=document.createElement("div");d.style.padding="3px 0px 3px 0px";d.style.whiteSpace="nowrap";d.style.textOverflow="ellipsis";d.style.overflow="hidden";d.style.width="200px";d.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";d.appendChild(k);var n=document.createElement("span");n.style.verticalAlign="top";n.style.userSelect="none";mxUtils.write(n,
a);d.appendChild(n);var u=!1,m=b(),r=function(x,A){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,b()!=m&&f(m,A)),u=!1)};mxEvent.addListener(d,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var A=mxEvent.getSource(x);if(A==d||A==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=e&&(e.install(r),this.listeners.push(e));null!=g&&g(d);return d};
BaseFormatPanel.prototype.createCellOption=function(a,b,f,e,g,d,k,n,u){var m=this.editorUi,r=m.editor.graph;e=null!=e?"null"==e?null:e:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,b,f)!=g},function(A){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;A=A?e:g;r.setCellStyles(b,A,C);null!=d&&d(C,A);m.fireEvent(new mxEventObject("styleChanged",
"keys",[b],"values",[A],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(A){this.listener=function(){A(mxUtils.getValue(x,b,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,b,f,e,g,d,k,n){var u=document.createElement("div");u.style.padding="3px 0px 3px 0px";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.width="200px";u.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||u.appendChild(m);var r=document.createElement("span");r.style.verticalAlign="top";mxUtils.write(r,a);u.appendChild(r);var x=b(),
null!=Q?Q+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=E&&E!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=d&&d("null"==E?null:E);x=E;O||(R||k||b()!=x)&&f("null"==x?null:x,x);A=!1}},K=document.createElement("input");K.setAttribute("type","color");K.style.visibility="hidden";K.style.width="0px";K.style.height="0px";K.style.border=
BaseFormatPanel.prototype.createCellColorOption=function(a,b,f,e,g,d){var k=this.editorUi,n=k.editor.graph;return this.createColorOption(a,function(){var u=n.view.getState(k.getSelectionState().cells[0]);return null!=u?mxUtils.getValue(u.style,b,null):null},function(u,m){n.getModel().beginUpdate();try{var r=k.getSelectionState().cells;n.setCellStyles(b,u,r);null!=g&&g(u);k.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[u],"cells",r))}finally{n.getModel().endUpdate()}},f||mxConstants.NONE,
{install:function(u){this.listener=function(){var m=n.view.getState(k.getSelectionState().cells[0]);null!=m&&u(mxUtils.getValue(m.style,b,null),!0)};n.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){n.getModel().removeListener(this.listener)}},e,null,d)};
BaseFormatPanel.prototype.addArrow=function(a,b){b=null!=b?b:10;var f=document.createElement("div");f.style.display="inline-block";f.style.paddingRight="4px";f.style.padding="6px";var e=10-b;2==e?f.style.paddingTop="6px":0<e?f.style.paddingTop=6-e+"px":f.style.marginTop="-2px";f.style.height=b+"px";f.style.borderLeft="1px solid #a0a0a0";b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",Toolbar.prototype.dropDownImage);f.appendChild(b);
b=f.getElementsByTagName("img")[0];b.style.position="relative";b.style.left="1px";b.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(f,70);b=a.getElementsByTagName("div")[0];null!=b&&(b.style.paddingRight="6px",b.style.marginLeft="4px",b.style.marginTop="-1px",b.style.display="inline-block",mxUtils.setOpacity(b,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage="none";a.style.width="auto";a.className+=
" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(f);return b};
BaseFormatPanel.prototype.addUnitInput=function(a,b,f,e,g,d,k,n,u){k=null!=k?k:0;b=document.createElement("input");b.style.position="absolute";b.style.textAlign="right";b.style.marginTop="-2px";b.style.left=228-f-e+"px";b.style.width=e+"px";b.style.height="21px";b.style.border="1px solid rgb(160, 160, 160)";b.style.borderRadius="4px";b.style.boxSizing="border-box";a.appendChild(b);e=this.createStepper(b,g,d,null,n,null,u);e.style.marginTop=k-2+"px";e.style.left=228-f+"px";a.appendChild(e);return b};
BaseFormatPanel.prototype.createRelativeOption=function(a,b,f,e,g){f=null!=f?f:52;var d=this.editorUi,k=d.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=e)e(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var A=k.view.getState(d.getSelectionState().cells[0]);null!=A&&x!=mxUtils.getValue(A.style,b,100)&&(100==x&&(x=null),A=d.getSelectionState().cells,
k.setCellStyles(b,x,A),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[x],"cells",A)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=e);if(null!=b){var m=mxUtils.bind(this,function(r,x,A){if(A||u!=document.activeElement)r=d.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,b,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
BaseFormatPanel.prototype.addLabel=function(a,b,f,e){e=null!=e?e:61;var g=document.createElement("div");mxUtils.write(g,b);g.style.position="absolute";g.style.left=240-f-e+"px";g.style.width=e+"px";g.style.marginTop="6px";g.style.textAlign="center";a.appendChild(g)};
BaseFormatPanel.prototype.addKeyHandler=function(a,b){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(f){13==f.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(f)):27==f.keyCode&&(null!=b&&b(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(f))}))};
BaseFormatPanel.prototype.styleButtons=function(a){for(var b=0;b<a.length;b++)mxUtils.setPrefixedStyle(a[b].style,"borderRadius","3px"),mxUtils.setOpacity(a[b],100),a[b].style.border="1px solid #a0a0a0",a[b].style.padding="4px",a[b].style.paddingTop="3px",a[b].style.paddingRight="1px",a[b].style.margin="1px",a[b].style.marginRight="2px",a[b].style.width="24px",a[b].style.height="20px",a[b].className+=" geColorBtn"};
BaseFormatPanel.prototype.destroy=function(){if(null!=this.listeners){for(var a=0;a<this.listeners.length;a++)this.listeners[a].destroy();this.listeners=null}};ArrangePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(ArrangePanel,BaseFormatPanel);
ArrangePanel.prototype.addTable=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="10px";var g=document.createElement("div");g.style.marginTop="0px";g.style.marginBottom="6px";g.style.fontWeight="bold";mxUtils.write(g,mxResources.get("table"));a.appendChild(g);g=document.createElement("div");g.style.position="relative";g.style.paddingLeft="0px";g.style.borderWidth="0px";g.style.width="220px";g.className="geToolbarContainer";var d=
e.vertices[0];1<f.getSelectionCount()&&(f.isTableCell(d)&&(d=f.model.getParent(d)),f.isTableRow(d)&&(d=f.model.getParent(d)));var k=e.table||e.row||e.cell,n=f.isStack(d)||f.isStackChild(d),u=k;n&&(k="0"==(f.isStack(d)?e.style:f.getCellStyle(f.model.getParent(d))).horizontalStack,u=!k);var m=[];u&&(m=m.concat([b.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!0):f.insertTableColumn(d,!0)}catch(r){b.handleError(r)}}),
g),b.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableColumn(d,!1)}catch(r){b.handleError(r)}}),g),b.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableColumn(d)}catch(r){b.handleError(r)}}),g)]));k&&(m=m.concat([b.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,
function(){try{n?f.insertLane(d,!0):f.insertTableRow(d,!0)}catch(r){b.handleError(r)}}),g),b.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{n?f.insertLane(d,!1):f.insertTableRow(d,!1)}catch(r){b.handleError(r)}}),g),b.toolbar.addButton("geSprite-deleterow",mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{n?f.deleteLane(d):f.deleteTableRow(d)}catch(r){b.handleError(r)}}),g)]));if(0<m.length){this.styleButtons(m);a.appendChild(g);
ArrangePanel.prototype.addGroupOps=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="8px";a.style.paddingBottom="6px";var g=0;e.cell||e.row||(g+=this.addActions(a,["group","ungroup","copySize","pasteSize"])+this.addActions(a,["removeFromGroup"]));var d=null;1!=e.cells.length||null==e.cells[0].value||isNaN(e.cells[0].value.nodeType)||(d=mxUtils.button(mxResources.get("copyData"),function(n){if(mxEvent.isShiftDown(n)){var u=f.getDataForCells(f.getSelectionCells());
n=new EmbedDialog(b,JSON.stringify(u,null,2),null,null,function(){console.log(u);b.alert("Written to Console (Dev Tools)")},mxResources.get("copyData"),null,"Console","data.json");b.showDialog(n.container,450,240,!0,!0);n.init()}else b.actions.get("copyData").funct(n)}),d.setAttribute("title",mxResources.get("copyData")+" ("+this.editorUi.actions.get("copyData").shortcut+") Shift+Click to Extract Data"),d.style.marginBottom="2px",d.style.width="210px",a.appendChild(d),g++);var k=null;null!=b.copiedValue&&
0<e.cells.length&&(k=mxUtils.button(mxResources.get("pasteData"),function(n){b.actions.get("pasteData").funct(n)}),k.setAttribute("title",mxResources.get("pasteData")+" ("+this.editorUi.actions.get("pasteData").shortcut+")"),k.style.marginBottom="2px",k.style.width="210px",a.appendChild(k),g++,null!=d&&(d.style.width="104px",k.style.width="104px",k.style.marginBottom="2px",d.style.marginBottom="2px",d.style.marginRight="2px"));null==d&&null==k||mxUtils.br(a);e=this.addAction(a,"clearWaypoints");null!=
ArrangePanel.prototype.addAlign=function(a){var b=this.editorUi.getSelectionState(),f=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="8px";a.appendChild(this.createTitle(mxResources.get("align")));var e=document.createElement("div");e.style.position="relative";e.style.whiteSpace="nowrap";e.style.paddingLeft="0px";e.style.paddingBottom="2px";e.style.borderWidth="0px";e.style.width="220px";e.className="geToolbarContainer";if(1<b.vertices.length){b=this.editorUi.toolbar.addButton("geSprite-alignleft",
mxResources.get("middle"),function(){f.alignCells(mxConstants.ALIGN_MIDDLE)},e),u=this.editorUi.toolbar.addButton("geSprite-alignbottom",mxResources.get("bottom"),function(){f.alignCells(mxConstants.ALIGN_BOTTOM)},e);this.styleButtons([b,g,d,k,n,u]);d.style.marginRight="10px"}a.appendChild(e);this.addActions(a,["snapToGrid"]);return a};
ArrangePanel.prototype.addFlip=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="10px";var f=this.editorUi.getSelectionState(),e=document.createElement("div");e.style.marginTop="2px";e.style.marginBottom="8px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("flip"));a.appendChild(e);e=mxUtils.button(mxResources.get("horizontal"),function(g){b.flipCells(f.cells,!0)});e.setAttribute("title",mxResources.get("horizontal"));e.style.width="104px";e.style.marginRight=
"2px";a.appendChild(e);e=mxUtils.button(mxResources.get("vertical"),function(g){b.flipCells(f.cells,!1)});e.setAttribute("title",mxResources.get("vertical"));e.style.width="104px";a.appendChild(e);return a};
ArrangePanel.prototype.addDistribute=function(a){var b=this.editorUi.editor.graph;a.style.paddingTop="6px";a.style.paddingBottom="12px";a.appendChild(this.createTitle(mxResources.get("distribute")));var f=mxUtils.button(mxResources.get("horizontal"),function(e){b.distributeCells(!0)});f.setAttribute("title",mxResources.get("horizontal"));f.style.width="104px";f.style.marginRight="2px";a.appendChild(f);f=mxUtils.button(mxResources.get("vertical"),function(e){b.distributeCells(!1)});f.setAttribute("title",
ArrangePanel.prototype.addAngle=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingBottom="8px";var g=document.createElement("div");g.style.position="absolute";g.style.width="70px";g.style.marginTop="0px";g.style.fontWeight="bold";var d=null,k=null,n=null;!e.rotatable||e.table||e.row||e.cell?a.style.paddingTop="8px":(mxUtils.write(g,mxResources.get("angle")),a.appendChild(g),d=this.addUnitInput(a,"°",16,52,function(){k.apply(this,arguments)}),mxUtils.br(a),a.style.paddingTop=
"10px");e.containsLabel||(g=mxResources.get("reverse"),0<e.vertices.length&&0<e.edges.length?g=mxResources.get("turn")+" / "+g:0<e.vertices.length&&(g=mxResources.get("turn")),n=mxUtils.button(g,function(m){b.actions.get("turn").funct(m)}),n.setAttribute("title",g+" ("+this.editorUi.actions.get("turn").shortcut+")"),n.style.width="210px",a.appendChild(n),null!=d&&(n.style.marginTop="8px"));if(null!=d){var u=mxUtils.bind(this,function(m,r,x){if(x||document.activeElement!=d)e=b.getSelectionState(),
ArrangePanel.prototype.addGeometry=function(a){var b=this,f=this.editorUi,e=f.editor.graph,g=e.getModel(),d=f.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var n=document.createElement("div");n.style.position="absolute";n.style.width="50px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("size"));k.appendChild(n);var u=this.addUnitInput(k,this.getUnit(),87,52,function(){C.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);d.cell||d.row?r.style.visibility="hidden":k.appendChild(n);var A=x.getElementsByTagName("input")[0];this.addKeyHandler(u,R);this.addKeyHandler(m,R);var C=this.addGeometryHandler(u,function(T,U,fa){if(e.isTableCell(fa))return e.setTableColumnWidth(fa,U-T.width,!0),!0;0<T.width&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.height=Math.round(T.height*U*100/T.width)/100),T.width=U)});var F=this.addGeometryHandler(m,function(T,
U,fa){e.isTableCell(fa)&&(fa=e.model.getParent(fa));if(e.isTableRow(fa))return e.setTableRowHeight(fa,U-T.height),!0;0<T.height&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.width=Math.round(T.width*U*100/T.height)/100),T.height=U)});(d.resizable||d.row||d.cell)&&a.appendChild(k);var K=this.createPanel();K.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
(""==d.y?"":" "+this.getUnit())}else K.style.display="none"});this.addKeyHandler(E,R);this.addKeyHandler(O,R);g.addListener(mxEvent.CHANGE,R);this.listeners.push({destroy:function(){g.removeListener(R)}});R();var Q=this.addGeometryHandler(E,function(T,U){U=b.fromUnit(U);T.relative?T.offset.x=U:T.x=U});var P=this.addGeometryHandler(O,function(T,U){U=b.fromUnit(U);T.relative?T.offset.y=U:T.y=U});if(d.movable){if(0==d.edges.length&&1==d.vertices.length&&g.isEdge(g.getParent(d.vertices[0]))){var aa=e.getCellGeometry(d.vertices[0]);
ArrangePanel.prototype.addGeometryHandler=function(a,b){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=d+" "+k.getUnit();else if(u!=d){g.getModel().beginUpdate();try{for(var m=e.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!b(x,u,m[r]))){var A=g.view.getState(m[r]);null!=A&&g.isRecursiveVertexResize(A)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}d=
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function f(k){if(""!=a.value){var n=parseFloat(a.value);if(isNaN(n))a.value=d+" pt";else if(n!=d){g.getModel().beginUpdate();try{for(var u=e.getSelectionState().cells,m=0;m<u.length;m++)if(g.getModel().isEdge(u[m])){var r=g.getCellGeometry(u[m]);null!=r&&(r=r.clone(),b(r,n),g.getModel().setGeometry(u[m],r))}}finally{g.getModel().endUpdate()}d=n;a.value=n+" pt"}}mxEvent.consume(k)}var e=this.editorUi,g=e.editor.graph,d=null;mxEvent.addListener(a,
ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState(),g=this.createPanel(),d=document.createElement("div");d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";d.style.fontWeight="bold";mxUtils.write(d,mxResources.get("width"));g.appendChild(d);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,F);var n=mxUtils.bind(this,function(Q){var P=parseInt(k.value);P=Math.min(999,
Math.max(1,isNaN(P)?1:P));if(P!=mxUtils.getValue(e.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var aa=b.getSelectionState().cells;f.setCellStyles("width",P,aa);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[P],"cells",aa))}k.value=P+" pt";mxEvent.consume(Q)});mxEvent.addListener(k,"blur",n);mxEvent.addListener(k,"change",n);a.appendChild(g);var u=this.createPanel();u.style.paddingBottom="30px";d=document.createElement("div");d.style.position=
d.style.position="absolute";d.style.width="70px";d.style.marginTop="0px";mxUtils.write(d,mxResources.get("lineend"));x.appendChild(d);var A=this.addUnitInput(x,"pt",87,52,function(){O.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){R.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(A,F);this.addKeyHandler(C,F);var F=mxUtils.bind(this,function(Q,P,aa){e=b.getSelectionState();
F()};TextFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(TextFormatPanel,BaseFormatPanel);TextFormatPanel.prototype.init=function(){this.container.style.borderBottom="none";this.addFont(this.container)};
TextFormatPanel.prototype.addFont=function(a){function b(ca,t){ca.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,e=f.editor.graph,g=f.getSelectionState(),d=this.createTitle(mxResources.get("font"));d.style.paddingLeft="14px";d.style.paddingTop="10px";d.style.paddingBottom="6px";a.appendChild(d);d=this.createPanel();d.style.paddingTop="2px";d.style.paddingBottom="2px";d.style.position=
a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);var Ua=mxUtils.bind(this,function(ca,t,z){g=f.getSelectionState();ca=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(ca&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(ca&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC);b(m[2],(ca&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=
mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=V)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),V.value=isNaN(ca)?"":ca+" pt";ca=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);b(C,ca==mxConstants.ALIGN_LEFT);b(F,ca==mxConstants.ALIGN_CENTER);b(K,ca==mxConstants.ALIGN_RIGHT);ca=mxUtils.getValue(g.style,
mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);b(O,ca==mxConstants.ALIGN_TOP);b(R,ca==mxConstants.ALIGN_MIDDLE);b(Q,ca==mxConstants.ALIGN_BOTTOM);ca=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=ca==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_TOP?"topLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":ca==mxConstants.ALIGN_RIGHT&&
0;ja<ia.length;ja++)if(da.containsNode(ia[ja],!0)){temp=mxUtils.getCurrentStyle(ia[ja]);M=Math.max(B(temp),M);var ta=D(M,temp,ia[ja]);if(ta!=X||isNaN(ta))X=""}null!=G&&(b(m[0],"bold"==G.fontWeight||400<G.fontWeight||z("B")||z("STRONG")),b(m[1],"italic"==G.fontStyle||z("I")||z("EM")),b(m[2],z("U")),b(aa,z("SUP")),b(P,z("SUB")),e.cellEditor.isTableSelected()?(b(ha,t(G.textAlign,"justify")),b(C,t(G.textAlign,"left")),b(F,t(G.textAlign,"center")),b(K,t(G.textAlign,"right"))):(z=e.cellEditor.align||mxUtils.getValue(g.style,
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(G.textAlign,"justify")?(b(ha,t(G.textAlign,"justify")),b(C,!1),b(F,!1),b(K,!1)):(b(ha,!1),b(C,z==mxConstants.ALIGN_LEFT),b(F,z==mxConstants.ALIGN_CENTER),b(K,z==mxConstants.ALIGN_RIGHT))),T=e.getParentByName(ca,"TABLE",e.cellEditor.textarea),fa=null==T?null:e.getParentByName(ca,"TR",T),U=null==T?null:e.getParentByNames(ca,["TD","TH"],T),db.style.display=null!=T?"":"none",document.activeElement!=V&&("FONT"==ca.nodeName&&"4"==ca.getAttribute("size")&&
!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(e.cellEditor.textarea,"DOMSubtreeModified",d);mxEvent.addListener(e.cellEditor.textarea,"input",d);mxEvent.addListener(e.cellEditor.textarea,"touchend",d);mxEvent.addListener(e.cellEditor.textarea,"mouseup",d);mxEvent.addListener(e.cellEditor.textarea,"keyup",d);this.listeners.push({destroy:function(){}});d()}return a};StyleFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
StyleFormatPanel.prototype.getCssRules=function(a){var b=document.implementation.createHTMLDocument(""),f=document.createElement("style");mxUtils.setTextContent(f,a);b.body.appendChild(f);return f.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var f=b.style.editableCssRules;if(null!=f){var e=new RegExp(f),g=b.style.image.substring(b.style.image.indexOf(",")+1),d=window.atob?atob(g):Base64.decode(g,!0),k=mxUtils.parseXml(d);if(null!=k){var n=k.getElementsByTagName("style");for(b=0;b<n.length;b++){var u=this.getCssRules(mxUtils.getTextContent(n[b]));
for(f=0;f<u.length;f++)this.addSvgRule(a,u[f],k,n[b],u,f,e)}}}}catch(m){}return a};
StyleFormatPanel.prototype.addSvgRule=function(a,b,f,e,g,d,k){var n=this.editorUi,u=n.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var A=mxUtils.trim(m.style[r]);""!=A&&"url("!=A.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=A;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[d].style[r]=C;C="";for(var F=0;F<g.length;F++)C+=g[F].cssText+" ";e.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
StyleFormatPanel.prototype.addEditOps=function(a){var b=this.editorUi.getSelectionState(),f=null;1==b.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(e){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",a.appendChild(f));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(e){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==f?b.style.width="210px":(f.style.width="104px",b.style.width="104px",b.style.marginLeft="2px"),a.appendChild(b));return a};
StyleFormatPanel.prototype.addFill=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var g=document.createElement("select");g.style.position="absolute";g.style.left="104px";g.style.width="70px";g.style.height="22px";g.style.padding="0px";g.style.marginTop="-3px";g.style.borderRadius="4px";g.style.border="1px solid rgb(160, 160, 160)";g.style.boxSizing="border-box";var d=g.cloneNode(!1);mxEvent.addListener(g,"click",function(C){mxEvent.consume(C)});
for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),d.appendChild(r);k.appendChild(d);var A=mxUtils.bind(this,function(){e=b.getSelectionState();var C=mxUtils.getValue(e.style,mxConstants.STYLE_GRADIENT_DIRECTION,
A();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",e.cells));mxEvent.consume(C)});mxEvent.addListener(d,"change",function(C){f.setCellStyles("fillStyle",d.value,e.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[d.value],"cells",e.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
StyleFormatPanel.prototype.addStroke=function(a){function b(W){var Z=parseFloat(E.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,Z,d.cells),e.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[Z],"cells",d.cells)));E.value=Z+" pt";mxEvent.consume(W)}function f(W){var Z=parseFloat(O.value);Z=Math.min(999,Math.max(0,isNaN(Z)?1:Z));Z!=mxUtils.getValue(d.style,
A.appendChild(E);var O=E.cloneNode(!0);F.appendChild(O);var R=this.createStepper(E,b,1,9);R.style.display=E.style.display;R.style.marginTop="2px";R.style.left="198px";A.appendChild(R);R=this.createStepper(O,f,1,9);R.style.display=O.style.display;R.style.marginTop="2px";O.style.position="absolute";R.style.left="198px";F.appendChild(R);mxEvent.addListener(E,"blur",b);mxEvent.addListener(E,"change",b);mxEvent.addListener(O,"blur",f);mxEvent.addListener(O,"change",f);var Q=this.editorUi.toolbar.addMenuFunctionInContainer(u,
StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();if(Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps){a.style.padding="2px 0px 24px 14px";var g=document.createElement("div");g.style.position="absolute";g.style.maxWidth="82px";g.style.overflow="hidden";g.style.textOverflow="ellipsis";mxUtils.write(g,mxResources.get("lineJumps"));a.appendChild(g);var d=document.createElement("select");d.style.position="absolute";
d.value,e.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[d.value],"cells",e.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(d,"click",function(x){mxEvent.consume(x)});a.appendChild(d);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,A,C){e=b.getSelectionState();d.value=mxUtils.getValue(e.style,
StyleFormatPanel.prototype.addEffects=function(a){var b=this.editorUi,f=b.editor.graph,e=b.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";g.style.tableLayout="fixed";var d=document.createElement("tbody"),k=document.createElement("tr");k.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","top");var u=n.cloneNode(!0);u.style.paddingLeft=
"8px";k.appendChild(n);k.appendChild(u);d.appendChild(k);g.appendChild(d);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,F,K){C=this.createCellOption(C,F,K);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),A=mxUtils.bind(this,function(C,F,K){e=b.getSelectionState();n.innerHTML="";u.innerHTML="";m=n;e.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);e.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);e.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
0);e.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});A();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,f=b.editor.graph,e=f.getModel(),g=f.view.gridColor;a.style.whiteSpace="normal";var d="1"==f.currentVertexStyle.sketch&&"1"==f.currentEdgeStyle.sketch,k="1"==f.currentVertexStyle.rounded,n="1"==f.currentEdgeStyle.curved,u=document.createElement("div");u.style.marginRight="16px";a.style.paddingTop="8px";var m=document.createElement("table");m.style.width="210px";m.style.fontWeight="bold";var r=document.createElement("tbody"),x=document.createElement("tr");
I||null!=qa[S]&&qa[S]!=mxConstants.NONE||S!=mxConstants.STYLE_FILLCOLOR&&S!=mxConstants.STYLE_STROKECOLOR)qa[S]=ba[S]}});"1"!=urlParams.sketch&&(A=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){e.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{e.endUpdate()}}b.clearDefaultStyle()})),A.setAttribute("title",mxResources.get("reset")),A.style.textOverflow=
O(I,f.currentEdgeStyle);"1"==urlParams.sketch&&(d=Editor.sketchMode);d?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";e.beginUpdate();try{var ea=F.slice(),ka;for(ka in ba)ea.push(ka);K(ea,L);var wa=new ChangePageSetup(b,null!=L?L.background:null);wa.ignoreImage=!0;e.execute(wa);e.execute(new ChangeGridColor(b,null!=
aa))})),m(A),m(C))}else U();return a};DiagramStylePanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.darkModeChangedListener&&(this.editorUi.removeListener(this.darkModeChangedListener),this.darkModeChangedListener=null)};DiagramFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
DiagramFormatPanel.prototype.addView=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return f.pageVisible},function(d){b.actions.get("pageView").funct()},{install:function(d){this.listener=function(){d(f.pageVisible)};b.addListener("pageViewChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}));
if(f.isEnabled()){var e=this.createColorOption(mxResources.get("background"),function(){return f.background},function(d){var k=new ChangePageSetup(b,d);k.ignoreImage=null!=d&&d!=mxConstants.NONE;f.model.execute(k)},"#ffffff",{install:function(d){this.listener=function(){d(f.background)};b.addListener("backgroundColorChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});if(this.showBackgroundImageOption){var g=e.getElementsByTagName("span")[0];g.style.display="inline-block";
g.style.textOverflow="ellipsis";g.style.overflow="hidden";g.style.maxWidth="68px";mxClient.IS_FF&&(g.style.marginTop="1px");g=mxUtils.button(mxResources.get("change"),function(d){b.showBackgroundImageDialog(null,b.editor.graph.backgroundImage);mxEvent.consume(d)});g.className="geColorBtn";g.style.position="absolute";g.style.marginTop="-3px";g.style.height="22px";g.style.left="118px";g.style.width="56px";e.appendChild(g)}a.appendChild(e)}return a};
DiagramFormatPanel.prototype.addOptions=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("options")));f.isEnabled()&&(a.appendChild(this.createOption(mxResources.get("connectionArrows"),function(){return f.connectionArrowsEnabled},function(e){b.actions.get("connectionArrows").funct()},{install:function(e){this.listener=function(){e(f.connectionArrowsEnabled)};b.addListener("connectionArrowsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),
a.appendChild(this.createOption(mxResources.get("connectionPoints"),function(){return f.connectionHandler.isEnabled()},function(e){b.actions.get("connectionPoints").funct()},{install:function(e){this.listener=function(){e(f.connectionHandler.isEnabled())};b.addListener("connectionPointsChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})),a.appendChild(this.createOption(mxResources.get("guides"),function(){return f.graphHandler.guidesEnabled},function(e){b.actions.get("guides").funct()},
{install:function(e){this.listener=function(){e(f.graphHandler.guidesEnabled)};b.addListener("guidesEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}})));return a};
DiagramFormatPanel.prototype.addGridOption=function(a){function b(u){var m=f.isFloatUnit()?parseFloat(d.value):parseInt(d.value);m=f.fromUnit(Math.max(f.inUnit(1),isNaN(m)?f.inUnit(10):m));m!=g.getGridSize()&&(mxGraph.prototype.gridSize=m,g.setGridSize(m));d.value=f.inUnit(m)+" "+f.getUnit();mxEvent.consume(u)}var f=this,e=this.editorUi,g=e.editor.graph,d=document.createElement("input");d.style.position="absolute";d.style.textAlign="right";d.style.width="48px";d.style.marginTop="-2px";d.style.height=
"21px";d.style.border="1px solid rgb(160, 160, 160)";d.style.borderRadius="4px";d.style.boxSizing="border-box";d.value=this.inUnit(g.getGridSize())+" "+this.getUnit();var k=this.createStepper(d,b,this.getUnitStep(),null,null,null,this.isFloatUnit());d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;mxEvent.addListener(d,"keydown",function(u){13==u.keyCode?(g.container.focus(),mxEvent.consume(u)):27==u.keyCode&&(d.value=g.getGridSize(),g.container.focus(),mxEvent.consume(u))});
mxEvent.addListener(d,"blur",b);mxEvent.addListener(d,"change",b);d.style.right="78px";k.style.marginTop="-17px";k.style.right="66px";var n=this.createColorOption(mxResources.get("grid"),function(){var u=g.view.gridColor;return g.isGridEnabled()?u:null},function(u){var m=g.isGridEnabled();u==mxConstants.NONE?g.setGridEnabled(!1):(g.setGridEnabled(!0),e.setGridColor(u));d.style.display=g.isGridEnabled()?"":"none";k.style.display=d.style.display;m!=g.isGridEnabled()&&(g.defaultGridEnabled=g.isGridEnabled(),
DiagramFormatPanel.prototype.addPaperSize=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var e=PageSetupDialog.addPageFormatPanel(a,"formatpanel",f.pageFormat,function(d){if(null==f.pageFormat||f.pageFormat.width!=d.width||f.pageFormat.height!=d.height)d=new ChangePageSetup(b,null,null,d),d.ignoreColor=!0,d.ignoreImage=!0,f.model.execute(d)});this.addKeyHandler(e.widthInput,function(){e.set(f.pageFormat)});this.addKeyHandler(e.heightInput,
function(){e.set(f.pageFormat)});var g=function(){e.set(f.pageFormat)};b.addListener("pageFormatChanged",g);this.listeners.push({destroy:function(){b.removeListener(g)}});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});return a};DiagramFormatPanel.prototype.addStyleOps=function(a){this.addActions(a,["editData"]);this.addActions(a,["clearDefaultStyle"]);return a};
DiagramFormatPanel.prototype.destroy=function(){BaseFormatPanel.prototype.destroy.apply(this,arguments);this.gridEnabledListener&&(this.editorUi.removeListener(this.gridEnabledListener),this.gridEnabledListener=null)};(function(){function a(c,h,q){mxShape.call(this);this.line=c;this.stroke=h;this.strokewidth=null!=q?q:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function f(){mxSwimlane.call(this)}function e(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function d(){mxActor.call(this)}function k(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function m(){mxCylinder.call(this)}function r(){mxShape.call(this)}function x(){mxShape.call(this)}
function A(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function F(){mxCylinder.call(this)}function K(){mxCylinder.call(this)}function E(){mxActor.call(this)}function O(){mxActor.call(this)}function R(){mxActor.call(this)}function Q(){mxActor.call(this)}function P(){mxActor.call(this)}function aa(){mxActor.call(this)}function T(){mxActor.call(this)}function U(c,h){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
function ja(){mxRhombus.call(this)}function ta(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Ea(){mxActor.call(this)}function Fa(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
function Pa(c,h,q,l,p,v,w,J,y,Y){w+=y;var N=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){c.ellipse(N.x-p-w,N.y-v-w,2*w,2*w);Y?c.fillAndStroke():c.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==c?c=q:c.add(q))}this.bounds=null!=c?c:new mxRectangle};a.prototype.paintVertexShape=function(c,
h,q,l,p){this.paintTableLine(c,this.line,0,0)};a.prototype.paintTableLine=function(c,h,q,l){if(null!=h){var p=null;c.begin();for(var v=0;v<h.length;v++){var w=h[v];null!=w&&(null==p?c.moveTo(w.x+q,w.y+l):null!=p&&c.lineTo(w.x+q,w.y+l));p=w}c.end();c.stroke()}};a.prototype.intersectsRectangle=function(c){var h=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var q=null,l=0;l<this.line.length&&!h;l++){var p=this.line[l];null!=p&&null!=q&&(h=mxUtils.rectangleIntersectsSegment(c,
q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(c,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),J=this.getTitleSize();0==J||this.outline?Da.prototype.paintVertexShape.apply(this,
arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-h,-q));v||this.outline||!(w&&J<p||!w&&J<l)||this.paintForeground(c,h,q,l,p)};b.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var J=v;v=w;w=J}c.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
s;this.paintTableForeground(c,h,q,l,p)}};b.prototype.paintTableForeground=function(c,h,q,l,p){l=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(p=0;p<l.length;p++)a.prototype.paintTableLine(c,l[p],h,q)};b.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
b);mxUtils.extend(f,b);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(e,mxCylinder);e.prototype.size=20;e.prototype.darkOpacity=0;e.prototype.darkOpacity2=0;e.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),J=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"darkOpacity2",this.darkOpacity2))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(v,p);c.lineTo(0,p-v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(l-v,0),c.lineTo(l,v),c.lineTo(v,v),c.close(),c.fill()),0!=J&&(c.setFillAlpha(Math.abs(J)),c.setFillColor(0>J?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(v,
v),c.lineTo(v,p),c.lineTo(0,p-v),c.close(),c.fill()),c.begin(),c.moveTo(v,p),c.lineTo(v,v),c.lineTo(0,0),c.moveTo(v,v),c.lineTo(l,v),c.end(),c.stroke())};e.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",e);var Na=Math.tan(mxUtils.toRadians(30)),Sa=(.5-Na)/2;mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(g,
mxCylinder);g.prototype.size=6;g.prototype.paintVertexShape=function(c,h,q,l,p){c.setFillColor(this.stroke);var v=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(h+.5*(l-v),q+.5*(p-v),v,v);c.fill();c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};mxCellRenderer.registerShape("waypoint",g);mxUtils.extend(d,mxActor);d.prototype.size=20;d.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/Na);c.translate((l-h)/2,(p-h)/2+h/4);c.moveTo(0,
.25*h);c.lineTo(.5*h,h*Sa);c.lineTo(h,.25*h);c.lineTo(.5*h,(.5-Sa)*h);c.lineTo(0,.25*h);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",d);mxUtils.extend(k,mxCylinder);k.prototype.size=20;k.prototype.redrawPath=function(c,h,q,l,p,v){h=Math.min(l,p/(.5+Na));v?(c.moveTo(0,.25*h),c.lineTo(.5*h,(.5-Sa)*h),c.lineTo(h,.25*h),c.moveTo(.5*h,(.5-Sa)*h),c.lineTo(.5*h,(1-Sa)*h)):(c.translate((l-h)/2,(p-h)/2),c.moveTo(0,.25*h),c.lineTo(.5*h,h*Sa),c.lineTo(h,.25*h),c.lineTo(h,.75*h),c.lineTo(.5*
h,(1-Sa)*h),c.lineTo(0,.75*h),c.close());c.end()};mxCellRenderer.registerShape("isoCube",k);mxUtils.extend(n,mxCylinder);n.prototype.redrawPath=function(c,h,q,l,p,v){h=Math.min(p/2,Math.round(p/8)+this.strokewidth-1);if(v&&null!=this.fill||!v&&null==this.fill)c.moveTo(0,h),c.curveTo(0,2*h,l,2*h,l,h),v||(c.stroke(),c.begin()),c.translate(0,h/2),c.moveTo(0,h),c.curveTo(0,2*h,l,2*h,l,h),v||(c.stroke(),c.begin()),c.translate(0,h/2),c.moveTo(0,h),c.curveTo(0,2*h,l,2*h,l,h),v||(c.stroke(),c.begin()),c.translate(0,
-h);v||(c.moveTo(0,h),c.curveTo(0,-h/3,l,-h/3,l,h),c.lineTo(l,p-h),c.curveTo(l,p+h/3,0,p+h/3,0,p-h),c.close())};n.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",n);mxUtils.extend(u,mxCylinder);u.prototype.size=30;u.prototype.darkOpacity=0;u.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",
this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(0,p);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),c.close(),c.fill()),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),
c.end(),c.stroke())};mxCellRenderer.registerShape("note",u);mxUtils.extend(m,u);mxCellRenderer.registerShape("note2",m);m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,0)}return null};mxUtils.extend(r,mxShape);r.prototype.isoAngle=15;r.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
"isoAngle",this.isoAngle))))*Math.PI/200;v=Math.min(l*Math.tan(v),.5*p);c.translate(h,q);c.begin();c.moveTo(.5*l,0);c.lineTo(l,v);c.lineTo(l,p-v);c.lineTo(.5*l,p);c.lineTo(0,p-v);c.lineTo(0,v);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,v);c.lineTo(.5*l,2*v);c.lineTo(l,v);c.moveTo(.5*l,2*v);c.lineTo(.5*l,p);c.stroke()};mxCellRenderer.registerShape("isoCube2",r);mxUtils.extend(x,mxShape);x.prototype.size=15;x.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*
p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(A,mxCylinder);A.prototype.size=
15;A.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),w?(c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v)):(c.moveTo(0,0),c.arcTo(.5*l,v,0,0,0,.5*l,v),c.arcTo(.5*l,v,0,0,0,l,0)),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),
w&&(c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke()))};mxCellRenderer.registerShape("cylinder3",A);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l/2,.5*p,l,0);c.quadTo(.5*l,p/2,l,p);c.quadTo(l/2,.5*p,0,p);c.quadTo(.5*l,p/2,0,0);c.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(F,mxCylinder);F.prototype.tabWidth=60;F.prototype.tabHeight=20;F.prototype.tabPosition="right";F.prototype.arcSize=.1;
F.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),J=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));J||(y*=Math.min(l,p));
y=Math.min(y,.5*l,.5*(p-q));h=Math.max(h,y);h=Math.min(l-y,h);w||(y=0);c.begin();"left"==v?(c.moveTo(Math.max(y,0),q),c.lineTo(Math.max(y,0),0),c.lineTo(h,0),c.lineTo(h,q)):(c.moveTo(l-h,q),c.lineTo(l-h,0),c.lineTo(l-Math.max(y,0),0),c.lineTo(l-Math.max(y,0),q));w?(c.moveTo(0,y+q),c.arcTo(y,y,0,0,1,y,q),c.lineTo(l-y,q),c.arcTo(y,y,0,0,1,l,y+q),c.lineTo(l,p-y),c.arcTo(y,y,0,0,1,l-y,p),c.lineTo(y,p),c.arcTo(y,y,0,0,1,0,p-y)):(c.moveTo(0,q),c.lineTo(l,q),c.lineTo(l,p),c.lineTo(0,p));c.close();c.fillAndStroke();
c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(l-30,q+20),c.lineTo(l-20,q+10),c.lineTo(l-10,q+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",F);F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-
h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};mxUtils.extend(K,mxCylinder);K.prototype.arcSize=.1;K.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);c.begin();c.moveTo(v,
h);c.arcTo(h,h,0,0,1,v+h,0);c.lineTo(l-h,0);c.arcTo(h,h,0,0,1,l,h);c.lineTo(l,p-h);c.arcTo(h,h,0,0,1,l-h,p);c.lineTo(v+h,p);c.arcTo(h,h,0,0,1,v,p-h);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(l-40,p-20,10,10,3,3),c.stroke(),c.roundrect(l-20,p-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(l-30,p-15),c.lineTo(l-20,p-15),c.stroke());"connPointRefEntry"==q?(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke()):"connPointRefExit"==
q&&(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*p-5),c.lineTo(15,.5*p+5),c.moveTo(15,.5*p-5),c.lineTo(5,.5*p+5),c.stroke())};K.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};mxCellRenderer.registerShape("umlState",K);mxUtils.extend(E,mxActor);E.prototype.size=30;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=
function(c,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("card",E);mxUtils.extend(O,mxActor);O.prototype.size=.4;O.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c.moveTo(0,h/2);c.quadTo(l/4,1.4*h,l/2,h/2);c.quadTo(3*l/4,h*(1-1.4),l,h/2);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};O.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=c.width,l=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
l,new mxRectangle(c.x,c.y+h,q,l-2*h);h*=q;return new mxRectangle(c.x+h,c.y,q-2*h,l)}return c};mxCellRenderer.registerShape("tape",O);mxUtils.extend(R,mxActor);R.prototype.size=.3;R.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};R.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
0);c.lineTo(l,0);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};mxCellRenderer.registerShape("document",R);var eb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,h,q,l){var p=mxUtils.getValue(this.style,"size");return null!=p?l*Math.max(0,Math.min(1,p)):eb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=2*mxUtils.getValue(this.style,
"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*h),0,0)}return null};A.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};K.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,Math.max(0,h*this.scale))}return null};mxUtils.extend(Q,mxActor);Q.prototype.size=.2;Q.prototype.fixedSize=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l-h,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("parallelogram",Q);mxUtils.extend(P,mxActor);P.prototype.size=.2;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("trapezoid",P);mxUtils.extend(aa,mxActor);aa.prototype.size=.5;aa.prototype.redrawPath=function(c,h,q,l,p){c.setFillColor(null);
h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",aa);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,h,q,l,p){c.setStrokeWidth(1);c.setFillColor(this.stroke);
h=l/5;c.rect(0,0,h,p);c.fillAndStroke();c.rect(2*h,0,h,p);c.fillAndStroke();c.rect(4*h,0,h,p);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",T);U.prototype.moveTo=function(c,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;this.firstX=c;this.firstY=h};U.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
U.prototype.quadTo=function(c,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};U.prototype.curveTo=function(c,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};U.prototype.arcTo=function(c,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};U.prototype.lineTo=function(c,h){if(null!=this.lastX&&null!=this.lastY){var q=function(N){return"number"===typeof N?N?0>N?-1:1:N===N?0:NaN:NaN},l=Math.abs(c-
this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;return}var w=Math.round(v/10),J=this.defaultVariation;5>w&&(w=5,J/=3);var y=q(c-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*J;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,c,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=
h};U.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var Za=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){Za.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var pb=mxShape.prototype.afterPaint;
mxShape.prototype.afterPaint=function(c){pb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new U(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=mxRectangleShape.prototype.isHtmlAllowed;
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,h,q,l,p){if(null==c.handJiggle||c.handJiggle.constructor!=U)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(v||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)v||null!=this.fill&&this.fill!=mxConstants.NONE||(c.pointerEvents=!1),c.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?v=Math.min(l/2,Math.min(p/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,v=Math.min(l*
v,p*v)),c.moveTo(h+v,q),c.lineTo(h+l-v,q),c.quadTo(h+l,q,h+l,q+v),c.lineTo(h+l,q+p-v),c.quadTo(h+l,q+p,h+l-v,q+p),c.lineTo(h+v,q+p),c.quadTo(h,q+p,h,q+p-v),c.lineTo(h,q+v),c.quadTo(h,q,h+v,q)):(c.moveTo(h,q),c.lineTo(h+l,q),c.lineTo(h+l,q+p),c.lineTo(h,q+p),c.lineTo(h,q)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var h=c.width,q=c.height;c=new mxRectangle(c.x,c.y,h,q);var l=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var p=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;l=Math.max(l,Math.min(h*p,q*p))}c.x+=Math.round(l);c.width-=Math.round(2*l);return c}return c};
fa.prototype.paintForeground=function(c,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.moveTo(h+l-w,q);c.lineTo(h+l-w,q+p);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(c,h,q,l,p){c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};ha.prototype.paintForeground=function(c,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,h,q,l,p){h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),w=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),J=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+J),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(c,h,
q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(0,p),new mxPoint(h,p/2)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("step",
qa);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,
0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(c,h,q,l,p){var v=Math.min(l/5,p/5)+1;c.begin();c.moveTo(h+l/2,q+v);c.lineTo(h+l/2,q+p-v);c.moveTo(h+v,q+p/2);c.lineTo(h+l-v,q+p/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
L);var ab=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};mxRhombus.prototype.paintVertexShape=function(c,h,q,l,p){ab.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(c.setShadow(!1),ab.apply(this,[c,h,q,l,p]))}};mxUtils.extend(H,mxRectangleShape);H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};H.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var J=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],N=this.style["symbol"+v+"Height"],Ca=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ca,
Ka=this.style["symbol"+v+"ArcSpacing"];null!=Ka&&(Ka*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ca+=Ka,Qa+=Ka);Ka=h;var la=q;Ka=J==mxConstants.ALIGN_CENTER?Ka+(l-Y)/2:J==mxConstants.ALIGN_RIGHT?Ka+(l-Y-Ca):Ka+Ca;la=y==mxConstants.ALIGN_MIDDLE?la+(p-N)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-N-Qa):la+Qa;c.save();J=new w;J.style=this.style;w.prototype.paintVertexShape.call(J,c,Ka,la,Y,N);c.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
H);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(c,h,q,l,p,v){v?(c.moveTo(0,0),c.lineTo(l/2,p/2),c.lineTo(l,0),c.end()):(c.moveTo(0,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(0,p),c.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(V,mxShape);V.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.ellipse(l/4,0,l/2,p/4);c.fillAndStroke();c.begin();c.moveTo(l/2,p/4);c.lineTo(l/2,2*p/3);c.moveTo(l/2,p/3);c.lineTo(0,p/3);c.moveTo(l/2,p/3);c.lineTo(l,p/3);c.moveTo(l/
2,2*p/3);c.lineTo(0,p);c.moveTo(l/2,2*p/3);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",V);mxUtils.extend(ea,mxShape);ea.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};ea.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,p/4);c.lineTo(0,3*p/4);c.end();c.stroke();c.begin();c.moveTo(0,p/2);c.lineTo(l/6,p/2);c.end();c.stroke();c.ellipse(l/6,0,5*l/6,p);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
ea);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/8,q+p);c.lineTo(h+7*l/8,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ka);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(l,0);c.lineTo(0,p);c.moveTo(0,0);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
mxShape);W.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};W.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,0);c.end();c.stroke();c.ellipse(0,p/8,l,7*p/8);c.fillAndStroke()};W.prototype.paintForeground=function(c,h,q,l,p){c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,p/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",W);mxUtils.extend(Z,mxRectangleShape);Z.prototype.size=
40;Z.prototype.isHtmlAllowed=function(){return!1};Z.prototype.getLabelBounds=function(c){var h=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,h)};Z.prototype.paintBackground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"participant");null==w||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,h,
q,l,v):(w=this.state.view.graph.cellRenderer.getShape(w),null!=w&&w!=Z&&(w=new w,w.apply(this.state),c.save(),w.paintVertexShape(c,h,q,l,v),c.restore()));v<p&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(h+l/2,q+v),c.lineTo(h+l/2,q+p),c.end(),c.stroke())};Z.prototype.paintForeground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,h,q,l,Math.min(p,
v))};mxCellRenderer.registerShape("umlLifeline",Z);mxUtils.extend(oa,mxShape);oa.prototype.width=60;oa.prototype.height=30;oa.prototype.corner=10;oa.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};oa.prototype.paintBackground=function(c,h,q,l,p){var v=this.corner,w=Math.min(l,Math.max(v,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),J=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(c.setFillColor(y),c.rect(h,q,l,p),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,h,q,l,p),c.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
c.moveTo(h,q);c.lineTo(h+w,q);c.lineTo(h+w,q+Math.max(0,J-1.5*v));c.lineTo(h+Math.max(0,w-v),q+J);c.lineTo(h,q+J);c.close();c.fillAndStroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+l,q);c.lineTo(h+l,q+p);c.lineTo(h,q+p);c.lineTo(h,q+J);c.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(c,h,q,l){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,h,
q,l){l=Z.prototype.size;null!=h&&(l=mxUtils.getValue(h.style,"size",l)*h.view.scale);h=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;q.x<c.getCenterX()&&(h=-1*(h+1));return new mxPoint(c.getCenterX()+h,Math.min(c.y+c.height,Math.max(c.y+l,q.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,h,q,l){l=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,h,q,l){l=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;null!=h.style.backboneSize&&(l+=parseFloat(h.style.backboneSize)*h.view.scale/2-1);if("south"==h.style[mxConstants.STYLE_DIRECTION]||"north"==h.style[mxConstants.STYLE_DIRECTION])return q.x<c.getCenterX()&&(l=-1*(l+1)),new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y,q.y)));q.y<c.getCenterY()&&(l=-1*(l+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,q.x)),c.getCenterY()+l)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,h,q,l){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(h.style,"size",ba.prototype.size))*h.view.scale))),h.style),h,q,l)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?Q.prototype.fixedSize:Q.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+
y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,
"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_WEST?
J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=
h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,c),new mxPoint(w,J)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,c),new mxPoint(w+
y,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y),new mxPoint(N,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(N,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]);N=new mxPoint(N,
c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?I.prototype.fixedSize:I.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p),new mxPoint(N,J)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]);N=new mxPoint(N,
c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(va,mxShape);va.prototype.size=10;va.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));c.translate(h,q);c.ellipse((l-v)/2,0,v,v);c.fillAndStroke();c.begin();c.moveTo(l/2,v);c.lineTo(l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",va);mxUtils.extend(Ja,
mxShape);Ja.prototype.size=10;Ja.prototype.inset=2;Ja.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.begin();c.moveTo(l/2,v+w);c.lineTo(l/2,p);c.end();c.stroke();c.begin();c.moveTo((l-v)/2-w,v/2);c.quadTo((l-v)/2-w,v+w,l/2,v+w);c.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",Ja);mxUtils.extend(Ga,
mxShape);Ga.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Ga);mxUtils.extend(sa,mxShape);sa.prototype.inset=2;sa.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.ellipse(0,v,l-2*v,p-2*v);c.fillAndStroke();c.begin();c.moveTo(l/2,0);c.quadTo(l,0,l,p/2);c.quadTo(l,
p,l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",sa);mxUtils.extend(za,mxCylinder);za.prototype.jettyWidth=20;za.prototype.jettyHeight=10;za.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=Math.min(h,p-h),y=Math.min(J+2*h,p-h);v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,
y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("module",za);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=.3*p-h/2,y=.7*p-h/2;v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Ha,mxRectangleShape);Ha.prototype.paintForeground=
function(c,h,q,l,p){var v=l/2,w=p/2,J=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,J,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Ha);mxUtils.extend(Ta,mxDoubleEllipse);Ta.prototype.outerStroke=!0;Ta.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.min(4,
Math.min(l/5,p/5));0<l&&0<p&&(c.ellipse(h+v,q+v,l-2*v,p-2*v),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(h,q,l,p),c.stroke())};mxCellRenderer.registerShape("endState",Ta);mxUtils.extend(db,Ta);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ua,mxArrowConnector);Ua.prototype.defaultWidth=4;Ua.prototype.isOpenEnded=function(){return!0};Ua.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.size=30;Ya.prototype.isRoundable=function(){return!0};Ya.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
0),new mxPoint(l,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ya);mxUtils.extend(bb,mxRectangleShape);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.isHtmlAllowed=function(){return!1};bb.prototype.paintForeground=function(c,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(h,q+v);c.lineTo(h+l,q+v);c.end();c.stroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",bb);mxUtils.extend(cb,mxActor);cb.prototype.dx=20;cb.prototype.dy=20;cb.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("corner",cb);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(c,h,q,
l,p){c.moveTo(0,0);c.lineTo(0,p);c.end();c.moveTo(l,0);c.lineTo(l,p);c.end();c.moveTo(0,p/2);c.lineTo(l,p/2);c.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("tee",$a);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(c,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(c,
h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
v),new mxPoint(h,p)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",t);mxUtils.extend(z,mxActor);z.prototype.size=.1;z.prototype.fixedSize=20;z.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(h,0);c.lineTo(l,0);c.quadTo(l-2*h,p/2,l,p);c.lineTo(h,p);c.quadTo(h-
2*h,p/2,h,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.close();c.end()};mxCellRenderer.registerShape("or",B);mxUtils.extend(D,mxActor);D.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.quadTo(l/2,p/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",D);mxUtils.extend(G,mxActor);G.prototype.size=20;
G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("loopLimit",G);mxUtils.extend(M,mxActor);M.prototype.size=
.375;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",M);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/2,q+p);c.lineTo(h+l,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke();c.begin();c.moveTo(h+l/2,q);c.lineTo(h+l/2,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",
ia);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h+.145*l,q+.145*p);c.lineTo(h+.855*l,q+.855*p);c.end();c.stroke();c.begin();c.moveTo(h+.855*l,q+.145*p);c.lineTo(h+.145*l,q+.855*p);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",da);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(c,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(c,h,q,l,p){c.begin();c.moveTo(h,q);c.lineTo(h+l,q);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke();c.begin();c.moveTo(h,q+p);c.lineTo(h+l,q+p);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",ta);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
function(c,h,q,l,p){var v=c.state.strokeWidth/2,w=10+2*v,J=q+p-w/2;c.begin();c.moveTo(h,q);c.lineTo(h,q+p);c.moveTo(h+v,J);c.lineTo(h+v+w,J-w/2);c.moveTo(h+v,J);c.lineTo(h+v+w,J+w/2);c.moveTo(h+v,J);c.lineTo(h+l-v,J);c.moveTo(h+l,q);c.lineTo(h+l,q+p);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J-w/2);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J+w/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Da,mxEllipse);Da.prototype.drawHidden=!0;Da.prototype.paintVertexShape=function(c,h,q,
l,p){this.outline||c.setStrokeColor(null);if(null!=this.style){var v=c.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(c.pointerEvents=!1);var J="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),N="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||J||Y||N||y?(c.rect(h,q,l,p),c.fill(),c.pointerEvents=
v,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(h,q),this.outline||J?c.lineTo(h+l,q):c.moveTo(h+l,q),this.outline||Y?c.lineTo(h+l,q+p):c.moveTo(h+l,q+p),this.outline||N?c.lineTo(h,q+p):c.moveTo(h,q+p),(this.outline||y)&&c.lineTo(h,q),c.end(),c.stroke(),c.setLineCap("flat")):c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(h+l/2,q),c.lineTo(h+l/2,q+p)):(c.moveTo(h,q+p/2),c.lineTo(h+l,q+p/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ma);mxUtils.extend(La,mxActor);La.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/2);c.moveTo(0,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(0,p);c.close();c.end()};mxCellRenderer.registerShape("delay",La);mxUtils.extend(Ia,mxActor);Ia.prototype.size=
.2;Ia.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;c.moveTo(0,h);c.lineTo(w,h);c.lineTo(w,0);c.lineTo(v,0);c.lineTo(v,h);c.lineTo(l,h);c.lineTo(l,q);c.lineTo(v,q);c.lineTo(v,p);c.lineTo(w,p);c.lineTo(w,q);c.lineTo(0,q);c.close();c.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Ea,mxActor);Ea.prototype.size=.25;Ea.prototype.redrawPath=function(c,
h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.moveTo(0,p/2);c.lineTo(q,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(q,p);c.close();c.end()};mxCellRenderer.registerShape("display",Ea);mxUtils.extend(Fa,mxActor);Fa.prototype.cst={RECT2:"mxgraph.basic.rect"};Fa.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",
enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Fa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);this.strictDrawShape(c,0,0,l,p)};Fa.prototype.strictDrawShape=function(c,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),J=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Fa.prototype;c.setDashed(Ca);Qa&&""!=Qa&&c.setDashPattern(Qa);c.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);J||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));J||(N=Math.min(Ka*Math.min(l,p)/100));N=Math.min(N,.5*Math.min(l,
p)-y);(la||pa||na||ma)&&"frame"!=Y&&(c.begin(),la?v.moveNW(c,h,q,l,p,w,ua,y,ma):c.moveTo(0,0),la&&v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),na&&v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),ma&&v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(wb),Ca=J=Cb,"none"==wb&&(J=0),"none"==yb&&(Ca=0),c.setGradient(wb,yb,0,0,l,p,Bb,J,Ca),
c.begin(),la?v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma):c.moveTo(N,0),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),ma&&na&&v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),na&&pa&&v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),pa&&la&&v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),la&&ma&&v.paintNWInner(c,h,q,l,p,w,ua,y,N),c.fill(),"none"==zb&&(c.begin(),v.paintFolds(c,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma),c.stroke()));
la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,
h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,
p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&
!ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,
h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),
v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),
v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,
ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,
h,q,l,p,w,ua,y,N,ma,la)),c.stroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,
Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,
h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,
l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),
v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),
v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,
h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,
h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,
w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),c.close(),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,
y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close()),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,
l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),c.close(),v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ua,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,
na,ma),c.close(),c.fillAndStroke())):"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ua,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ua,y,N,ma,la),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==
Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,
h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ua,y,na),v.paintLeft(c,h,q,l,p,w,ua,y,la),v.lineNWInner(c,h,q,l,p,w,ua,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,
w,Aa,y,N,na,ma),c.close(),c.fillAndStroke());c.begin();v.paintFolds(c,h,q,l,p,w,ua,xa,ya,Aa,y,la,pa,na,ma);c.stroke()};Fa.prototype.moveNW=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,0):c.moveTo(0,J)};Fa.prototype.moveNE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,0):c.moveTo(l-J,0)};Fa.prototype.moveSE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,p):c.moveTo(l,p-J)};Fa.prototype.moveSW=
function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,p):c.moveTo(J,p)};Fa.prototype.paintNW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,J,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(J,0);else c.lineTo(0,0)};Fa.prototype.paintTop=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==
w&&"square"==v||!y?c.lineTo(l,0):c.lineTo(l-J,0)};Fa.prototype.paintNE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l,J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l,J);else c.lineTo(l,0)};Fa.prototype.paintRight=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(l,p):c.lineTo(l,p-
J)};Fa.prototype.paintLeft=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,0):c.lineTo(0,J)};Fa.prototype.paintSE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l-J,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-J,p);else c.lineTo(l,p)};Fa.prototype.paintBottom=function(c,h,q,
l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,p):c.lineTo(J,p)};Fa.prototype.paintSW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,0,p-J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(0,p-J);else c.lineTo(0,p)};Fa.prototype.paintNWInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==
w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,y,.5*y+J);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,y,y+J);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(y,.5*y+J);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,y+J),c.lineTo(y,y+J)};Fa.prototype.paintTopInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(0,y):Y&&!N?c.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
v?c.lineTo(J+.5*y,y):c.lineTo(J+y,y):c.lineTo(0,y):c.lineTo(0,0)};Fa.prototype.paintNEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-J-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-J-y,y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-J-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,J+y),c.lineTo(l-J-y,y)};Fa.prototype.paintRightInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&
N?c.lineTo(l-y,0):Y&&!N?c.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):c.lineTo(l-y,J+y):c.lineTo(l-y,0):c.lineTo(l,0)};Fa.prototype.paintLeftInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,p):Y&&!N?c.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*
y):c.lineTo(y,p-J-y):c.lineTo(y,p):c.lineTo(0,p)};Fa.prototype.paintSEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-y,p-J-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-y,p-J-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-y,p-J-.5*y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,p-J-y),c.lineTo(l-y,p-J-y)};Fa.prototype.paintBottomInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(l,
p-y):Y&&!N?c.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-J-.5*y,p-y):c.lineTo(l-J-y,p-y):c.lineTo(l,p)};Fa.prototype.paintSWInner=function(c,h,q,l,p,v,w,J,y,Y){if(!Y)c.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)c.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,J+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+
y,J+y,0,0,1,J+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(J+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,p-J-y),c.lineTo(y+J,p-y)};Fa.prototype.moveSWInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,p-J-y):c.moveTo(0,p-y)};Fa.prototype.lineSWInner=
function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,p-J-y):c.lineTo(0,p-y)};Fa.prototype.moveSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-
y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,p-J-y):c.moveTo(l-y,p)};Fa.prototype.lineSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,p-J-y):c.lineTo(l-y,p)};Fa.prototype.moveNEInner=function(c,h,
q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,J+y):c.moveTo(l,y)};Fa.prototype.lineNEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):
("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,J+y):c.lineTo(l,y)};Fa.prototype.moveNWInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.moveTo(y,0):Y&&!N?c.moveTo(0,y):"square"==w||"default"==w&&"square"==v?c.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,J+y):c.moveTo(0,0)};Fa.prototype.lineNWInner=
function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,0):Y&&!N?c.lineTo(0,y):"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,J+y):c.lineTo(0,0)};Fa.prototype.paintFolds=function(c,h,q,l,p,v,w,J,y,Y,N,Ca,Qa,Ka,la){if("fold"==v||"fold"==w||"fold"==J||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
Ca&&la&&(c.moveTo(0,N),c.lineTo(N,N),c.lineTo(N,0)),("fold"==J||"default"==J&&"fold"==v)&&Ca&&Qa&&(c.moveTo(l-N,0),c.lineTo(l-N,N),c.lineTo(l,N)),("fold"==y||"default"==y&&"fold"==v)&&Ka&&Qa&&(c.moveTo(l-N,p),c.lineTo(l-N,p-N),c.lineTo(l,p-N)),("fold"==Y||"default"==Y&&"fold"==v)&&Ka&&la&&(c.moveTo(0,p-N),c.lineTo(N,p-N),c.lineTo(N,p))};mxCellRenderer.registerShape(Fa.prototype.cst.RECT2,Fa);Fa.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
Oa.prototype.paintEdgeShape=function(c,h,q){for(var l=[],p=0;p<h.length;p++)l.push(mxUtils.clone(h[p]));p=c.state.dashed;var v=c.state.fixDash;Oa.prototype.origPaintEdgeShape.apply(this,[c,l,q]);3<=c.state.strokeWidth&&(l=mxUtils.getValue(this.style,"fillColor",null),null!=l&&(c.setStrokeColor(l),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(p,v),Oa.prototype.origPaintEdgeShape.apply(this,[c,h,q])))};mxCellRenderer.registerShape("filledEdge",Oa);"undefined"!==typeof StyleFormatPanel&&function(){var c=
StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=c.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);c.stroke()}});mxMarker.addMarker("box",
function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.x+N/2,Ka=l.y+Ca/2;l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa-N/2-Ca/2,Ka-Ca/2+N/2);c.lineTo(Qa-N/2+Ca/2,Ka-Ca/2-N/2);c.lineTo(Qa+Ca/2-3*N/2,Ka-3*Ca/2-N/2);c.lineTo(Qa-Ca/2-3*N/2,Ka-3*Ca/2+N/2);c.close();Y?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);
c.moveTo(l.x-N/2+Ca/2,l.y-Ca/2-N/2);c.lineTo(l.x-Ca/2-3*N/2,l.y-3*Ca/2+N/2);c.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(c,h,q,l,p,v,w,J,y,Y){var N=l.clone(),Ca=Pa.apply(this,arguments),Qa=p*(w+2*y),Ka=v*(w+2*y);return function(){Ca.apply(this,arguments);c.begin();c.moveTo(N.x-p*y,N.y-v*y);c.lineTo(N.x-2*Qa+p*y,N.y-2*Ka+v*y);c.moveTo(N.x-Qa-Ka+v*y,N.y-Ka+Qa-p*y);c.lineTo(N.x+Ka-Qa-v*y,N.y-Ka-Qa+p*y);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,
h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.clone();l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa.x-Ca,Qa.y+N);c.quadTo(l.x-Ca,l.y+N,l.x,l.y);c.quadTo(l.x+Ca,l.y-N,Qa.x+Ca,Qa.y-N);c.stroke()}});mxMarker.addMarker("async",function(c,h,q,l,p,v,w,J,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var N=l.clone();N.x-=h;N.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){c.begin();c.moveTo(N.x,N.y);J?c.lineTo(N.x-p-v/2,N.y-v+p/2):c.lineTo(N.x+v/2-p,N.y-v-p/2);c.lineTo(N.x-p,N.y-v);c.close();Y?c.fillAndStroke():
c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(h,q,l,p,v,w,J,y,Y,N){v*=J+Y;w*=J+Y;var Ca=p.clone();return function(){h.begin();h.moveTo(Ca.x,Ca.y);y?h.lineTo(Ca.x-v-w/c,Ca.y-w+v/c):h.lineTo(Ca.x+w/c-v,Ca.y-w-v/c);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(c,h,q){return Xa(c,["width"],h,function(l,p,v,w,J){J=c.shape.getEdgeWidth()*c.view.scale+q;return new mxPoint(w.x+p*l/4+v*J/2,w.y+v*l/4-p*J/2)},function(l,p,v,w,J,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
w.y,J.x,J.y,y.x,y.y));c.style.width=Math.round(2*l)/c.view.scale-q})},Xa=function(c,h,q,l,p){return Ra(c,h,function(v){var w=c.absolutePoints,J=w.length-1;v=c.view.translate;var y=c.view.scale,Y=q?w[0]:w[J];w=q?w[1]:w[J-1];J=w.x-Y.x;var N=w.y-Y.y,Ca=Math.sqrt(J*J+N*N);Y=l.call(this,Ca,J/Ca,N/Ca,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,J){var y=c.absolutePoints,Y=y.length-1;v=c.view.translate;var N=c.view.scale,Ca=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ca.x;var Qa=y.y-Ca.y,Ka=Math.sqrt(Y*
Y+Qa*Qa);w.x=(w.x+v.x)*N;w.y=(w.y+v.y)*N;p.call(this,Ka,Y/Ka,Qa/Ka,Ca,y,w,J)})},ib=function(c){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),p=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
2-l.y)/q.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(q.x+q.width-l.x)/q.width))})]}},gb=function(c){return function(h){return[Ra(h,["size"],function(q){var l=Math.max(0,Math.min(.5*q.height,parseFloat(mxUtils.getValue(this.state.style,"size",c))));return new mxPoint(q.x,q.y+l)},function(q,l){this.state.style.size=Math.max(0,l.y-q.y)},!0)]}},Wa=function(c,h,q){return function(l){var p=[Ra(l,["size"],function(v){var w=Math.max(0,Math.min(v.width,Math.min(v.height,parseFloat(mxUtils.getValue(this.state.style,
"size",h)))))*c;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/c)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(c,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(J){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:c));return new mxPoint(J.x+
Math.max(0,Math.min(.5*J.width,Y*(y?1:J.width))),J.getCenterY())},function(J,y,Y){J=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-J.x:Math.max(0,Math.min(q,(y.x-J.x)/J.width));this.state.style.size=J},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(c,h,q){c=null!=c?c:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,J=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*c,J*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(c,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(c){var h=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));return h}},fb=function(c,h){return Ra(c,
[mxConstants.STYLE_ARCSIZE],function(q){var l=null!=h?h:q.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var p=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(q.x+q.width-Math.min(q.width/2,p),q.y+l)}p=Math.max(0,parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(q.x+q.width-Math.min(Math.max(q.width/2,q.height/2),Math.min(q.width,q.height)*
p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(c,h,q,l,p,v,w){var J=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);J.execute=function(Y){for(var N=0;N<h.length;N++)this.copyStyle(h[N]);
w&&w(Y)};J.getPosition=q;J.setPosition=l;J.ignoreGrid=null!=p?p:!0;if(v){var y=J.positionChanged;J.positionChanged=function(){y.apply(this,arguments);c.view.invalidate(this.state.cell);c.view.validate()}}return J},rb={link:function(c){return[mb(c,!0,10),mb(c,!1,10)]},flexArrow:function(c){var h=c.view.graph.gridSize/c.view.scale,q=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
!0,function(l,p,v,w,J){l=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),
Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<h&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],
c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<h&&(c.style.endWidth=c.style.startWidth))})));return q},swimlane:function(c){var h=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var q=parseFloat(mxUtils.getValue(c.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));h.push(fb(c,q/2))}h.push(Ra(c,[mxConstants.STYLE_STARTSIZE],function(l){var p=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(c.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(l.getCenterX(),l.y+Math.max(0,Math.min(l.height,p))):new mxPoint(l.x+Math.max(0,Math.min(l.width,p)),l.getCenterY())},function(l,p){c.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=c.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(c.cell)||p.isTableCell(c.cell))){l=p.getSwimlaneDirection(c.style);var v=p.model.getParent(c.cell);v=p.model.getChildCells(v,!0);for(var w=[],J=0;J<v.length;J++)v[J]!=c.cell&&p.isSwimlane(v[J])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[J]))==
l&&w.push(v[J]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(c){return[Ra(c,
!1)]},process:function(c){var h=[Ra(c,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
!1)&&h.push(fb(c));return h},cross:function(c){return[Ra(c,["size"],function(h){var q=Math.min(h.width,h.height);q=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ia.prototype.size)))*q/2;return new mxPoint(h.getCenterX()-q,h.getCenterY()-q)},function(h,q){var l=Math.min(h.width,h.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,h.getCenterY()-q.y)/l*2,Math.max(0,h.getCenterX()-q.x)/l*2)))})]},note:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,
Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",u.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},note2:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",m.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},
function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(c){var h=[Ra(c,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Ya.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
return h},dataStorage:function(c){return[Ra(c,["size"],function(h){var q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),l=parseFloat(mxUtils.getValue(this.state.style,"size",q?z.prototype.fixedSize:z.prototype.size));return new mxPoint(h.x+h.width-l*(q?1:h.width),h.getCenterY())},function(h,q){h="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(h.width,h.x+h.width-q.x)):Math.max(0,Math.min(1,(h.x+h.width-q.x)/h.width));this.state.style.size=h},!1)]},callout:function(c){var h=
[Ra(c,["size","position"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));mxUtils.getValue(this.state.style,"base",ba.prototype.base);return new mxPoint(q.x+p*q.width,q.y+q.height-l)},function(q,l){mxUtils.getValue(this.state.style,"base",ba.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(q.height,q.y+q.height-l.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["position2"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ba.prototype.position2)));return new mxPoint(q.x+l*q.width,q.y+q.height)},function(q,l){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["base"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,
mxUtils.getValue(this.state.style,"position",ba.prototype.position))),v=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"base",ba.prototype.base)));return new mxPoint(q.x+Math.min(q.width,p*q.width+v),q.y+q.height-l)},function(q,l){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(q.width,l.x-q.x-p*q.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
return h},internalStorage:function(c){var h=[Ra(c,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&
h.push(fb(c));return h},module:function(c){return[Ra(c,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",za.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",za.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
q.y-h.y))/2)})]},corner:function(c){return[Ra(c,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",cb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",cb.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(c){return[Ra(c,["dx","dy"],function(h){var q=
Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",$a.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(c){return[Ra(c,["tabWidth","tabHeight"],function(h){var q=
(l=h.width-l);this.state.style.tabWidth=Math.round(l);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},document:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",R.prototype.size))));return new mxPoint(h.x+3*h.width/4,h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},tape:function(c){return[Ra(c,["size"],function(h){var q=
Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",O.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(c){return[Ra(c,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(A.prototype.size),offPageConnector:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(c){var h=[Graph.createHandle(c,["size"],function(q){var l=
Math.max(0,Math.min(q.width/2,q.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(q.x+l,q.y+l)},function(q,l){this.state.style.size=Math.round(100*Math.max(0,Math.min(q.height/2,q.width/2,l.x-q.x)))/100})];c=Graph.createHandle(c,["indent"],function(q){var l=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(q.x+.75*q.width,q.y+l*q.height/200)},function(q,l){this.state.style.indent=Math.round(100*
Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(c);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:qb(aa.prototype.size,!1),display:qb(Ea.prototype.size,!1),cube:Wa(1,e.prototype.size,!1),card:Wa(.5,E.prototype.size,!0),loopLimit:Wa(.5,G.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,Q.prototype.size,Q.prototype.fixedSize)};Graph.createHandle=
Ra;Graph.handleFactory=rb;var xb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=xb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var h=this.state.style.shape;null==mxCellRenderer.defaultShapes[h]&&null==mxStencilRegistry.getStencil(h)?h=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(h=mxConstants.SHAPE_SWIMLANE);h=rb[h];null==h&&null!=this.state.shape&&this.state.shape.isRoundable()&&
(h=rb[mxConstants.SHAPE_RECTANGLE]);null!=h&&(h=h(this.state),null!=h&&(c=null==c?h:c.concat(h)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var kb=new mxPoint(1,0),hb=new mxPoint(1,0),ob=mxUtils.toRadians(-30);kb=mxUtils.getRotatedPoint(kb,
Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,h,q,l,p){var v=c.view;l=null!=l&&0<l.length?l[0]:null;var w=c.absolutePoints,J=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(c,l));null==J&&null!=h&&(J=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,N=hb.x,Ca=hb.y,Qa="horizontal"==mxUtils.getValue(c.style,
"elbow","horizontal");if(null!=w&&null!=J){c=function(la,pa,na){la-=Ka.x;var ma=pa-Ka.y;pa=(Ca*la-N*ma)/(y*Ca-Y*N);la=(Y*la-y*ma)/(Y*N-y*Ca);Qa?(na&&(Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa),p.push(Ka)),Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la)):(na&&(Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la),p.push(Ka)),Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa));p.push(Ka)};var Ka=J;null==l&&(l=new mxPoint(J.x+(w.x-J.x)/2,J.y+(w.y-J.y)/2));c(l.x,l.y,!0);c(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
var sb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,h){if(h==mxEdgeStyle.IsometricConnector){var q=new mxElbowEdgeHandler(c);q.snapToTerminals=!1;return q}return sb.apply(this,arguments)};d.prototype.constraints=[];k.prototype.getConstraints=function(c,h,q){c=[];var l=Math.tan(mxUtils.toRadians(30)),p=(.5-l)/2;l=Math.min(h,q/(.5+l));h=(h-l)/2;q=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h+.5*l,q+l*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.75*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+.5*l,q+(1-p)*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.75*l));return c};r.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;l=Math.min(h*
Math.tan(l),.5*q);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
0,l));return c};ba.prototype.getConstraints=function(c,h,q){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var l=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q-l)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,
mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return c};E.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};e.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return c};A.prototype.getConstraints=function(c,h,q){c=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return c};F.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
"tabWidth",this.tabWidth)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(h+l),p))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,q));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};bb.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
mxEllipse.prototype.constraints;Ya.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.getConstraints=function(c,h,q){c=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(p+h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};za.prototype.getConstraints=function(c,h,q){h=parseFloat(mxUtils.getValue(c,"jettyWidth",za.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,
h),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*c,3.5*c))];q>5*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,h));q>8*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h));q>
15*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};G.prototype.constraints=mxRectangleShape.prototype.constraints;M.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;$a.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*h+.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(h+l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*h-.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return c};cb.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return c};jb.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ca.prototype.getConstraints=
function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return c};t.prototype.getConstraints=function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};Ia.prototype.getConstraints=
function(c,h,q){c=[];var l=Math.min(q,h),p=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(q-p)/2;var v=l+p,w=(h-p)/2;p=w+p;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return c};Z.prototype.constraints=null;B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
Actions.prototype.init=function(){function a(m){d.escape();m=d.deleteCells(d.getDeletableCells(d.getSelectionCells()),m);null!=m&&d.setSelectionCells(m)}function b(){if(!d.isSelectionEmpty()){d.getModel().beginUpdate();try{for(var m=d.getSelectionCells(),r=0;r<m.length;r++)d.cellLabelChanged(m[r],"")}finally{d.getModel().endUpdate()}}}function f(m,r,x,A,C){C.getModel().beginUpdate();try{var F=C.getCellGeometry(m);null!=F&&x&&A&&(x/=A,F=F.clone(),1<x?F.height=F.width/x:F.width=F.height*x,C.getModel().setGeometry(m,
try{var C=d.getEditableCells(d.getSelectionCells());if(0==C.length)x(A.getRoot(),e.copiedValue);else for(r=0;r<C.length;r++)x(C[r],e.copiedValue)}finally{A.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?b():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+
m);e.showDialog(r.container,350,450,!0,!1,function(){r.destroy()});r.init()}}).isEnabled=k};Actions.prototype.addAction=function(a,b,f,e,g){if("..."==a.substring(a.length-3)){a=a.substring(0,a.length-3);var d=mxResources.get(a)+"..."}else d=mxResources.get(a);return this.put(a,new Action(d,b,f,e,g))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};
function Action(a,b,f,e,g){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=f?f:!0;this.iconCls=e;this.shortcut=g;this.visible=!0}mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};
Menus.prototype.init=function(){var a=this.editorUi,b=a.editor.graph,f=mxUtils.bind(b,b.isEnabled);this.customFonts=[];this.customFontSizes=[];this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,g){for(var d=mxUtils.bind(this,function(n){this.styleChange(e,n,[mxConstants.STYLE_FONTFAMILY],[n],null,g,function(){document.execCommand("fontname",!1,n);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTFAMILY],"values",[n],"cells",[b.cellEditor.getEditingCell()]))},function(){b.updateLabelElements(b.getSelectionCells(),
function(u){u.removeAttribute("face");u.style.fontFamily=null;"PRE"==u.nodeName&&b.replaceElement(u,"div")})}).firstChild.nextSibling.style.fontFamily=n}),k=0;k<this.defaultFonts.length;k++)d(this.defaultFonts[k]);e.addSeparator(g);if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)d(this.customFonts[k]);e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFonts=[];this.editorUi.fireEvent(new mxEventObject("customFontsChanged"))}),g);e.addSeparator(g)}this.promptChange(e,
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,g,!0,mxUtils.bind(this,function(n){0>mxUtils.indexOf(this.customFonts,n)&&(this.customFonts.push(n),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(e,g){function d(k,n){return e.addItem(k,null,mxUtils.bind(this,function(){null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
[6,8,9,10,11,12,14,18,24,36,48,72];0>mxUtils.indexOf(d,this.defaultFontSize)&&(d.push(this.defaultFontSize),d.sort(function(x,A){return x-A}));for(var k=mxUtils.bind(this,function(x){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var A=b.cellEditor.textarea.getElementsByTagName("font"),C=0;C<A.length;C++)if("3"==A[C].getAttribute("size")){A[C].removeAttribute("size");A[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[x],"cells",[b.cellEditor.getEditingCell()]))}}),n=mxUtils.bind(this,function(x){this.styleChange(e,x,[mxConstants.STYLE_FONTSIZE],[x],null,g,function(){k(x)})}),u=0;u<d.length;u++)n(d[u]);e.addSeparator(g);if(0<this.customFontSizes.length){var m=0;for(u=0;u<this.customFontSizes.length;u++)0>mxUtils.indexOf(d,this.customFontSizes[u])&&(n(this.customFontSizes[u]),m++);0<m&&e.addSeparator(g);e.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),g);e.addSeparator(g)}var r=
null;this.promptChange(e,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,g,!0,mxUtils.bind(this,function(x){null!=r&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(r));null!=x&&0<x.length&&(this.customFontSizes.push(x),k(x))}),null,function(){r=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},g);e.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},g);this.addMenuItems(e,["-","rotation"],g)})));this.put("align",new Menu(mxUtils.bind(this,function(e,g){var d=1<this.editorUi.getSelectionState().vertices.length;e.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},g,null,d);e.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},g,null,d);e.addItem(mxResources.get("rightAlign"),
null,function(){b.alignCells(mxConstants.ALIGN_RIGHT)},g,null,d);e.addSeparator(g);e.addItem(mxResources.get("topAlign"),null,function(){b.alignCells(mxConstants.ALIGN_TOP)},g,null,d);e.addItem(mxResources.get("middle"),null,function(){b.alignCells(mxConstants.ALIGN_MIDDLE)},g,null,d);e.addItem(mxResources.get("bottomAlign"),null,function(){b.alignCells(mxConstants.ALIGN_BOTTOM)},g,null,d);this.addMenuItems(e,["-","snapToGrid"],g)})));this.put("distribute",new Menu(mxUtils.bind(this,function(e,g){e.addItem(mxResources.get("horizontal"),
null,function(){b.distributeCells(!0)},g);e.addItem(mxResources.get("vertical"),null,function(){b.distributeCells(!1)},g)})));this.put("line",new Menu(mxUtils.bind(this,function(e,g){var d=b.view.getState(b.getSelectionCell());null!=d&&(d=mxUtils.getValue(d.style,mxConstants.STYLE_SHAPE),"arrow"!=d&&(this.edgeStyleChange(e,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_CURVED,mxConstants.STYLE_NOEDGESTYLE],[null,null,null],"geIcon geSprite geSprite-straight",g,!0).setAttribute("title",mxResources.get("straight")),
mxConstants.STYLE_ENDSIZE,"width"],["arrow",null,null,null],"geIcon geSprite geSprite-simplearrow",g,!0,null,!0).setAttribute("title",mxResources.get("simpleArrow")))})));this.put("layout",new Menu(mxUtils.bind(this,function(e,g){var d=mxUtils.bind(this,function(n,u){this.editorUi.prompt(mxResources.get("spacing"),n,u)}),k=mxUtils.bind(this,function(n){var u=b.getSelectionCell(),m=null;null==u||0==b.getModel().getChildCount(u)?0==b.getModel().getEdgeCount(u)&&(m=b.findTreeRoots(b.getDefaultParent())):
m=b.findTreeRoots(u);null!=m&&0<m.length&&(u=m[0]);null!=u&&this.editorUi.executeLayout(function(){n.execute(b.getDefaultParent(),u);b.isSelectionEmpty()||(u=b.getModel().getParent(u),b.getModel().isVertex(u)&&b.updateGroupBounds([u],2*b.gridSize,!0))},!0)});e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(b,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(function(){var u=b.getSelectionCells();n.execute(b.getDefaultParent(),0==u.length?
null:u)},!0)}),g);e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var n=new mxHierarchicalLayout(b,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(function(){var u=b.getSelectionCells();n.execute(b.getDefaultParent(),0==u.length?null:u)},!0)}),g);e.addSeparator(g);e.addItem(mxResources.get("horizontalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(b,!0);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||
(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("verticalTree"),null,mxUtils.bind(this,function(){var n=new mxCompactTreeLayout(b,!1);n.edgeRouting=!1;n.levelDistance=30;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),g);e.addItem(mxResources.get("radialTree"),null,mxUtils.bind(this,function(){var n=new mxRadialTreeLayout(b);n.levelDistance=80;n.autoRadius=!0;d(n.levelDistance,mxUtils.bind(this,function(u){isNaN(u)||(n.levelDistance=u,k(n))}))}),
g);e.addSeparator(g);e.addItem(mxResources.get("organic"),null,mxUtils.bind(this,function(){var n=new mxFastOrganicLayout(b);d(n.forceConstant,mxUtils.bind(this,function(u){n.forceConstant=u;this.editorUi.executeLayout(function(){var m=b.getSelectionCell();if(null==m||0==b.getModel().getChildCount(m))m=b.getDefaultParent();n.execute(m);b.getModel().isVertex(m)&&b.updateGroupBounds([m],2*b.gridSize,!0)},!0)}))}),g);e.addItem(mxResources.get("circle"),null,mxUtils.bind(this,function(){var n=new mxCircleLayout(b);
this.editorUi.executeLayout(function(){var u=b.getSelectionCell();if(null==u||0==b.getModel().getChildCount(u))u=b.getDefaultParent();n.execute(u);b.getModel().isVertex(u)&&b.updateGroupBounds([u],2*b.gridSize,!0)},!0)}),g)})));this.put("navigation",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"home - exitGroup enterGroup - expand collapse - collapsible".split(" "),g)})));this.put("arrange",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["toFront","toBack","bringForward",
"sendBackward","-"],g);this.addSubmenu("direction",e,g);this.addMenuItems(e,["turn","-"],g);this.addSubmenu("align",e,g);this.addSubmenu("distribute",e,g);e.addSeparator(g);this.addSubmenu("navigation",e,g);this.addSubmenu("insert",e,g);this.addSubmenu("layout",e,g);this.addMenuItems(e,"- group ungroup removeFromGroup - clearWaypoints autosize".split(" "),g)}))).isEnabled=f;this.put("insert",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["insertLink","insertImage"],g)})));this.put("view",
new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,(null!=this.editorUi.format?["formatPanel"]:[]).concat("outline layers - pageView pageScale - scrollbars tooltips - grid guides - connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),g))})));this.put("viewPanels",new Menu(mxUtils.bind(this,function(e,g){null!=this.editorUi.format&&this.addMenuItems(e,["formatPanel"],g);this.addMenuItems(e,["outline","layers"],g)})));this.put("viewZoom",new Menu(mxUtils.bind(this,function(e,
g){this.addMenuItems(e,["resetView","-"],g);for(var d=[.25,.5,.75,1,1.25,1.5,2,3,4],k=0;k<d.length;k++)(function(n){e.addItem(100*n+"%",null,function(){b.zoomTo(n)},g)})(d[k]);this.addMenuItems(e,"- fitWindow fitPageWidth fitPage fitTwoPages - customZoom".split(" "),g)})));this.put("file",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,"new open - save saveAs - import export - pageSetup print".split(" "),g)})));this.put("edit",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,
"undo redo - cut copy paste delete - duplicate - editData editTooltip - editStyle - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));this.put("extras",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(e,g){this.addMenuItems(e,["help","-","about"])})))};Menus.prototype.put=function(a,b){return this.menus[a]=b};
Menus.prototype.get=function(a){return this.menus[a]};Menus.prototype.addSubmenu=function(a,b,f,e){var g=this.get(a);null!=g&&(g=g.isEnabled(),b.showDisabled||g)&&(f=b.addItem(e||mxResources.get(a),null,null,f,null,g),this.addMenu(a,b,f))};Menus.prototype.addMenu=function(a,b,f){var e=this.get(a);null!=e&&(b.showDisabled||e.isEnabled())&&this.get(a).execute(b,f)};
Menus.prototype.addInsertTableCellItem=function(a,b){var f=this.editorUi.editor.graph,e=f.getSelectionCell(),g=f.getCurrentCellStyle(e);1<f.getSelectionCount()&&(f.isTableCell(e)&&(e=f.model.getParent(e)),f.isTableRow(e)&&(e=f.model.getParent(e)));var d=f.isTable(e)||f.isTableRow(e)||f.isTableCell(e),k=f.isStack(e)||f.isStackChild(e),n=d,u=d;k&&(g=f.isStack(e)?g:f.getCellStyle(f.model.getParent(e)),u="0"==g.horizontalStack,n=!u);null!=b||!d&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(m,
x&&0<x.length&&(f.scrollCellToVisible(x[0]),f.setSelectionCells(x))}),b):(n&&(b=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableColumn(e,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),b.setAttribute("title",mxResources.get("insertColumnBefore")),b=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableColumn(e,!1)}catch(m){this.editorUi.handleError(m)}}),
null,"geIcon geSprite geSprite-insertcolumnafter"),b.setAttribute("title",mxResources.get("insertColumnAfter")),b=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=e)try{k?f.deleteLane(e):f.deleteTableColumn(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),b.setAttribute("title",mxResources.get("deleteColumn"))),u&&(b=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!0):f.insertTableRow(e,
!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),b.setAttribute("title",mxResources.get("insertRowBefore")),b=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(e,!1):f.insertTableRow(e,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),b.setAttribute("title",mxResources.get("insertRowAfter")),b=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?
f.deleteLane(e):f.deleteTableRow(e)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),b.setAttribute("title",mxResources.get("deleteRow")),u=this.editorUi.getSelectionState(),null!=u.mergeCell?this.addMenuItem(a,"mergeCells"):(1<u.style.colspan||1<u.style.rowspan)&&this.addMenuItem(a,"unmergeCells")))};
Menus.prototype.addInsertTableItem=function(a,b,f,e){function g(C){n=d.getParentByName(mxEvent.getSource(C),"TD");var F=!1;if(null!=n){k=d.getParentByName(n,"TR");var K=mxEvent.isMouseEvent(C)?2:4,E=x,O=Math.min(20,k.sectionRowIndex+K);K=Math.min(20,n.cellIndex+K);for(var R=E.rows.length;R<O;R++)for(var Q=E.insertRow(R),P=0;P<E.rows[0].cells.length;P++)Q.insertCell(-1);for(R=0;R<E.rows.length;R++)for(Q=E.rows[R],P=Q.cells.length;P<K;P++)Q.insertCell(-1);A.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
1);for(E=0;E<x.rows.length;E++)for(O=x.rows[E],K=0;K<O.cells.length;K++)R=O.cells[K],E==k.sectionRowIndex&&K==n.cellIndex&&(F="blue"==R.style.backgroundColor),R.style.backgroundColor=E<=k.sectionRowIndex&&K<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return F}e=null!=e?e:!0;b=null!=b?b:mxUtils.bind(this,function(C,F,K){var E=this.editorUi.editor.graph;C=E.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=E.cellEditor.textarea){E.getParentByName(C,"TR");var O=E.cellEditor.textarea.getElementsByTagName("table");
"4px";A.innerHTML="1x1";a.firstChild.appendChild(A);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var F=g(C);null!=n&&null!=k&&F&&(b(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
Menus.prototype.edgeStyleChange=function(a,b,f,e,g,d,k,n){return this.showIconOnly(a.addItem(b,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var A=m[x];if(u.getModel().isEdge(A)){if(k){var C=u.getCellGeometry(A);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(A,C))}for(var F=0;F<f.length;F++)u.setCellStyles(f[F],e[F],[A]);r.push(A)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",f,"values",e,"cells",r))}finally{u.getModel().endUpdate()}}),d,g))};Menus.prototype.showIconOnly=function(a){var b=a.getElementsByTagName("td");for(i=0;i<b.length;i++)"mxPopupMenuItem"==b[i].getAttribute("class")&&(b[i].style.display="none");return a};
Menus.prototype.styleChange=function(a,b,f,e,g,d,k,n,u){var m=this.createStyleChangeFunction(f,e);a=a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph;null!=k&&r.cellEditor.isContentEditing()?k():m(n)}),d,g);u&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(f){var e=this.editorUi.editor.graph;e.stopEditing(!1);e.getModel().beginUpdate();try{for(var g=e.getEditableCells(e.getSelectionCells()),d=!1,k=0;k<a.length;k++)if(e.setCellStyles(a[k],b[k],g),a[k]==mxConstants.STYLE_ALIGN&&e.updateLabelElements(g,function(n){n.removeAttribute("align");n.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])d=!0;if(d)for(d=0;d<g.length;d++)0==e.model.getChildCount(g[d])&&
e.autoSizeCell(g[d],!1);null!=f&&f();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",b,"cells",g))}finally{e.getModel().endUpdate()}})};
Menus.prototype.promptChange=function(a,b,f,e,g,d,k,n,u,m){return a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=e,A=r.getView().getState(r.getSelectionCell());null!=A&&(x=A.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(F){if(null!=F&&0<F.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,F)}finally{r.getModel().endUpdate()}}null!=n&&n(F)}}),mxResources.get("enterValue")+
Menus.prototype.pickColor=function(a,b,f){var e=this.editorUi,g=e.editor.graph,d=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=b&&g.cellEditor.isContentEditing()){var k=g.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,f||g.shapeForegroundColor,mxUtils.bind(this,function(u){g.cellEditor.restoreSelection(k);document.execCommand(b,!1,u!=mxConstants.NONE?u:"transparent");var m={forecolor:mxConstants.STYLE_FONTCOLOR,
backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[b];null!=m&&e.fireEvent(new mxEventObject("styleChanged","keys",[m],"values",[u],"cells",[g.cellEditor.getEditingCell()]))}),function(){g.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,d,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;f=g.getView().getState(g.getSelectionCell());var n=mxConstants.NONE;null!=f&&(n=f.style[a]||n);n==mxConstants.NONE?
(n=g.shapeBackgroundColor.substring(1),this.colorDialog.picker.fromString(n),this.colorDialog.colorInput.value=mxConstants.NONE):this.colorDialog.picker.fromString(mxUtils.rgba2hex(n));this.editorUi.showDialog(this.colorDialog.container,230,d,!0,!0);this.colorDialog.init()}};Menus.prototype.toggleStyle=function(a,b){var f=this.editorUi.editor.graph;b=f.toggleCellStyles(a,b);this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[a],"values",[b],"cells",f.getSelectionCells()))};
Menus.prototype.addMenuItem=function(a,b,f,e,g,d){var k=this.editorUi.actions.get(b);return null!=k&&(a.showDisabled||k.isEnabled())&&k.visible?(b=a.addItem(d||k.label,null,function(n){k.funct(e,n)},f,g,k.isEnabled()),k.toggleAction&&k.isSelected()&&a.addCheckmark(b,Editor.checkmarkImage),this.addShortcut(b,k),b):null};
Menus.prototype.addShortcut=function(a,b){if(null!=b.shortcut){a=a.firstChild.nextSibling.nextSibling;var f=document.createElement("span");f.style.color="gray";mxUtils.write(f,b.shortcut);a.appendChild(f)}};Menus.prototype.addMenuItems=function(a,b,f,e,g){for(var d=0;d<b.length;d++)"-"==b[d]?a.addSeparator(f):this.addMenuItem(a,b[d],f,e,null!=g?g[d]:null)};
Menus.prototype.createPopupMenu=function(a,b,f){a.smartSeparators=!0;this.addPopupMenuHistoryItems(a,b,f);this.addPopupMenuEditItems(a,b,f);this.addPopupMenuStyleItems(a,b,f);this.addPopupMenuArrangeItems(a,b,f);this.addPopupMenuCellItems(a,b,f);this.addPopupMenuSelectionItems(a,b,f)};Menus.prototype.addPopupMenuHistoryItems=function(a,b,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["undo","redo"],null,f)};
Menus.prototype.addPopupMenuEditItems=function(a,b,f){this.editorUi.editor.graph.isSelectionEmpty()?this.addMenuItems(a,["pasteHere"],null,f):this.addMenuItems(a,"delete - cut copy - duplicate".split(" "),null,f)};Menus.prototype.addPopupMenuStyleItems=function(a,b,f){1==this.editorUi.editor.graph.getSelectionCount()?this.addMenuItems(a,["-","setAsDefaultStyle"],null,f):this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","clearDefaultStyle"],null,f)};
Menus.prototype.addPopupMenuArrangeItems=function(a,b,f){var e=this.editorUi.editor.graph;0<e.getEditableCells(e.getSelectionCells()).length&&(this.addMenuItems(a,["-","toFront","toBack"],null,f),1==e.getSelectionCount()&&this.addMenuItems(a,["bringForward","sendBackward"],null,f));1<e.getSelectionCount()?this.addMenuItems(a,["-","group"],null,f):1==e.getSelectionCount()&&!e.getModel().isEdge(b)&&!e.isSwimlane(b)&&0<e.getModel().getChildCount(b)&&e.isCellEditable(b)&&this.addMenuItems(a,["-","ungroup"],
Menus.prototype.addPopupMenuCellItems=function(a,b,f){var e=this.editorUi.editor.graph,g=e.view.getState(b);a.addSeparator();if(null!=g){var d=!1;1==e.getSelectionCount()&&e.getModel().isEdge(b)&&(a.addSeparator(),this.addSubmenu("line",a));if(e.getModel().isEdge(b)&&"entityRelationEdgeStyle"!=mxUtils.getValue(g.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(g.style,mxConstants.STYLE_SHAPE,null)){g=e.selectionCellsHandler.getHandler(b);var k=!1;g instanceof mxEdgeHandler&&null!=g.bends&&
2<g.bends.length&&(d=g.getHandleForEvent(e.updateMouseEvent(new mxMouseEvent(f))),0<d&&d<g.bends.length-1&&(null==g.bends[d]||null==g.bends[d].node||""==g.bends[d].node.style.opacity)&&(k=this.editorUi.actions.get("removeWaypoint"),k.handler=g,k.index=d,k=!0));a.addSeparator();this.addMenuItem(a,"turn",null,f,null,mxResources.get("reverse"));this.addMenuItems(a,[k?"removeWaypoint":"addWaypoint"],null,f);g=e.getModel().getGeometry(b);d=null!=g&&null!=g.points&&0<g.points.length}1==e.getSelectionCount()&&
(d||e.getModel().isVertex(b)&&0<e.getModel().getEdgeCount(b))&&this.addMenuItems(a,["-","clearWaypoints"],null,f);1==e.getSelectionCount()&&e.isCellEditable(b)&&this.addPopupMenuCellEditItems(a,b,f)}};
Menus.prototype.addPopupMenuCellEditItems=function(a,b,f,e){var g=this.editorUi.editor.graph,d=g.view.getState(b);this.addMenuItems(a,["-","editStyle","editData","editLink"],e,f);g.getModel().isVertex(b)&&null!=mxUtils.getValue(d.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",e,f).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...",this.addMenuItem(a,"crop",e,f));(g.getModel().isVertex(b)&&0==g.getModel().getChildCount(b)||g.isContainer(b))&&this.addMenuItem(a,
"editConnectionPoints",e,f)};Menus.prototype.addPopupMenuSelectionItems=function(a,b,f){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","selectVertices","selectEdges","selectAll"],null,f)};
Menus.prototype.createMenubar=function(a){for(var b=new Menubar(this.editorUi,a),f=this.defaultMenuItems,e=0;e<f.length;e++)mxUtils.bind(this,function(g){var d=b.addMenu(mxResources.get(f[e]),mxUtils.bind(this,function(){g.funct.apply(this,arguments)}));this.menuCreated(g,d)})(this.get(f[e]));return b};
Menus.prototype.menuCreated=function(a,b,f){null!=b&&(f=null!=f?f:"geItem",a.addListener("stateChanged",function(){(b.enabled=a.enabled)?(b.className=f,8==document.documentMode&&(b.style.color="")):(b.className=f+" mxDisabled",8==document.documentMode&&(b.style.color="#c3c3c3"))}))};function Menubar(a,b){this.editorUi=a;this.container=b}Menubar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};
Menubar.prototype.addMenu=function(a,b,f){var e=document.createElement("a");e.className="geItem";mxUtils.write(e,a);this.addMenuHandler(e,b);null!=f?this.container.insertBefore(e,f):this.container.appendChild(e);return e};
Menubar.prototype.addMenuHandler=function(a,b){if(null!=b){var f=!0,e=mxUtils.bind(this,function(g){if(f&&(null==a.enabled||a.enabled)){this.editorUi.editor.graph.popupMenuHandler.hideMenu();var d=new mxPopupMenu(b);d.div.className+=" geMenubarMenu";d.smartSeparators=!0;d.showDisabled=!0;d.autoExpand=!0;d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();d.destroy()});var k=mxUtils.getOffset(a);d.popup(k.x,k.y+a.offsetHeight,null,
function Menu(a,b){mxEventSource.call(this);this.funct=a;this.enabled=null!=b?b:!0}mxUtils.extend(Menu,mxEventSource);Menu.prototype.isEnabled=function(){return this.enabled};Menu.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Menu.prototype.execute=function(a,b){this.funct(a,b)};EditorUi.prototype.createMenus=function(){return new Menus(this)};function Toolbar(a,b){this.editorUi=a;this.container=b;this.staticElements=[];this.init();this.gestureHandler=mxUtils.bind(this,function(f){null!=this.editorUi.currentMenu&&mxEvent.getSource(f)!=this.editorUi.currentMenu.div&&this.hideMenu()});mxEvent.addGestureListeners(document,this.gestureHandler)}
Toolbar.prototype.init=function(){var a=screen.width;a-=740<screen.height?56:0;if(700<=a){var b=this.addMenu("",mxResources.get("view")+" ("+mxResources.get("panTooltip")+")",!0,"viewPanels",null,!0);this.addDropDownArrow(b,"geSprite-formatpanel",38,50,-4,-3,36,-8);this.addSeparator()}var f=this.addMenu("",mxResources.get("zoom")+" (Alt+Mousewheel)",!0,"viewZoom",null,!0);f.showDisabled=!0;f.style.whiteSpace="nowrap";f.style.position="relative";f.style.overflow="hidden";f.style.width=EditorUi.compactUi?
"50px":"36px";420<=a&&(this.addSeparator(),b=this.addItems(["zoomIn","zoomOut"]),b[0].setAttribute("title",mxResources.get("zoomIn")+" ("+this.editorUi.actions.get("zoomIn").shortcut+")"),b[1].setAttribute("title",mxResources.get("zoomOut")+" ("+this.editorUi.actions.get("zoomOut").shortcut+")"));this.updateZoom=mxUtils.bind(this,function(){f.innerHTML=Math.round(100*this.editorUi.editor.graph.view.scale)+"%";this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.getElementsByTagName("img")[0].style.right=
"1px",f.getElementsByTagName("img")[0].style.top="5px")});this.editorUi.editor.graph.view.addListener(mxEvent.EVENT_SCALE,this.updateZoom);this.editorUi.editor.addListener("resetGraphView",this.updateZoom);b=this.addItems(["-","undo","redo"]);b[1].setAttribute("title",mxResources.get("undo")+" ("+this.editorUi.actions.get("undo").shortcut+")");b[2].setAttribute("title",mxResources.get("redo")+" ("+this.editorUi.actions.get("redo").shortcut+")");320<=a&&(b=this.addItems(["-","delete"]),b[1].setAttribute("title",
Toolbar.prototype.appendDropDownImageHtml=function(a){var b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",Toolbar.prototype.dropDownImage);a.appendChild(b);b.style.position="absolute";b.style.right="4px";b.style.top=(EditorUi.compactUi?6:8)+"px"};
"22px",a.getElementsByTagName("img")[0].style.top="5px");var b=this.editorUi.menus.get("insert");null!=b&&"function"===typeof a.setEnabled&&b.addListener("stateChanged",function(){a.setEnabled(b.enabled)});return a};
Toolbar.prototype.addDropDownArrow=function(a,b,f,e,g,d,k,n){g=EditorUi.compactUi?g:n;a.style.whiteSpace="nowrap";a.style.overflow="hidden";a.style.position="relative";a.style.width=e-(null!=k?k:32)+"px";a.innerHTML='<div class="geSprite '+b+'"></div>';this.appendDropDownImageHtml(a);b=a.getElementsByTagName("div")[0];b.style.marginLeft=g+"px";b.style.marginTop=d+"px";EditorUi.compactUi&&(a.getElementsByTagName("img")[0].style.left="24px",a.getElementsByTagName("img")[0].style.top="5px",a.style.width=
f-10+"px")};Toolbar.prototype.setFontName=function(a){if(null!=this.fontMenu){this.fontMenu.innerHTML="";var b=document.createElement("div");b.style.display="inline-block";b.style.overflow="hidden";b.style.textOverflow="ellipsis";b.style.maxWidth="66px";mxUtils.write(b,a);this.fontMenu.appendChild(b);this.appendDropDownImageHtml(this.fontMenu)}};
Toolbar.prototype.setFontSize=function(a){if(null!=this.sizeMenu){this.sizeMenu.innerHTML="";var b=document.createElement("div");b.style.display="inline-block";b.style.overflow="hidden";b.style.textOverflow="ellipsis";b.style.maxWidth="24px";mxUtils.write(b,a);this.sizeMenu.appendChild(b);this.appendDropDownImageHtml(this.sizeMenu)}};
Toolbar.prototype.createTextToolbar=function(){var a=this.editorUi,b=a.editor.graph,f=this.addMenu("",mxResources.get("style"),!0,"formatBlock");f.style.position="relative";f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.innerHTML=mxResources.get("style");this.appendDropDownImageHtml(f);EditorUi.compactUi&&(f.style.paddingRight="18px",f.getElementsByTagName("img")[0].style.right="1px",f.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.fontMenu=this.addMenu("",mxResources.get("fontFamily"),
d.addItem("",null,mxUtils.bind(this,function(k){b.cellEditor.alignText(mxConstants.ALIGN_LEFT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",[b.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-left");g.setAttribute("title",mxResources.get("left"));g=d.addItem("",null,mxUtils.bind(this,function(k){b.cellEditor.alignText(mxConstants.ALIGN_CENTER,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],
"values",[mxConstants.ALIGN_CENTER],"cells",[b.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-center");g.setAttribute("title",mxResources.get("center"));g=d.addItem("",null,mxUtils.bind(this,function(k){b.cellEditor.alignText(mxConstants.ALIGN_RIGHT,k);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",[b.cellEditor.getEditingCell()]))}),null,"geIcon geSprite geSprite-right");g.setAttribute("title",mxResources.get("right"));
"-2px";e.appendChild(f);this.appendDropDownImageHtml(e);EditorUi.compactUi&&(e.getElementsByTagName("img")[0].style.left="22px",e.getElementsByTagName("img")[0].style.top="5px");this.addSeparator();this.addButton("geIcon geSprite geSprite-code",mxResources.get("html"),function(){b.cellEditor.toggleViewMode();0<b.cellEditor.textarea.innerHTML.length&&("&nbsp;"!=b.cellEditor.textarea.innerHTML||!b.cellEditor.clearOnChange)&&window.setTimeout(function(){document.execCommand("selectAll",!1,null)})});
!1,mxUtils.bind(this,function(d){var k=b.getSelectedElement(),n=b.getParentByNames(k,["TD","TH"],b.cellEditor.text2),u=b.getParentByName(k,"TR",b.cellEditor.text2);if(null==u)this.editorUi.menus.addInsertTableItem(d);else{var m=b.getParentByName(u,"TABLE",b.cellEditor.text2);k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex:0))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnbefore");k.setAttribute("title",mxResources.get("insertColumnBefore"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex+1:-1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnafter");k.setAttribute("title",mxResources.get("insertColumnAfter"));k=d.addItem("Delete column",null,mxUtils.bind(this,function(){if(null!=n)try{b.deleteColumn(m,n.cellIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deletecolumn");k.setAttribute("title",mxResources.get("deleteColumn"));
k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowbefore");k.setAttribute("title",mxResources.get("insertRowBefore"));k=d.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex+1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowafter");k.setAttribute("title",mxResources.get("insertRowAfter"));k=d.addItem("",
null,mxUtils.bind(this,function(){try{b.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=d.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,
(g.getElementsByTagName("img")[0].style.left="22px",g.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,b,f,e,g,d,k){var n=this.editorUi.menus.get(e),u=this.addMenuFunction(a,b,f,function(){n.funct.apply(n,arguments)},g,d);k||"function"!==typeof u.setEnabled||n.addListener("stateChanged",function(){u.setEnabled(n.enabled)});return u};
Toolbar.prototype.addMenuFunction=function(a,b,f,e,g,d){return this.addMenuFunctionInContainer(null!=g?g:this.container,a,b,f,e,d)};Toolbar.prototype.addMenuFunctionInContainer=function(a,b,f,e,g,d){b=e?this.createLabel(b):this.createButton(b);this.initElement(b,f);this.addMenuHandler(b,e,g,d);a.appendChild(b);return b};Toolbar.prototype.addSeparator=function(a){a=null!=a?a:this.container;var b=document.createElement("div");b.className="geSeparator";a.appendChild(b);return b};
Toolbar.prototype.addItems=function(a,b,f){for(var e=[],g=0;g<a.length;g++){var d=a[g];"-"==d?e.push(this.addSeparator(b)):e.push(this.addItem("geSprite-"+d.toLowerCase(),d,b,f))}return e};Toolbar.prototype.addItem=function(a,b,f,e){var g=this.editorUi.actions.get(b),d=null;null!=g&&(b=g.label,null!=g.shortcut&&(b+=" ("+g.shortcut+")"),d=this.addButton(a,b,g.funct,f),e||"function"!==typeof d.setEnabled||(d.setEnabled(g.enabled),g.addListener("stateChanged",function(){d.setEnabled(g.enabled)})));return d};
Toolbar.prototype.addButton=function(a,b,f,e){a=this.createButton(a);e=null!=e?e:this.container;this.initElement(a,b);this.addClickHandler(a,f);e.appendChild(a);return a};Toolbar.prototype.initElement=function(a,b){null!=b&&a.setAttribute("title",b);this.addEnabledState(a)};Toolbar.prototype.addEnabledState=function(a){var b=a.className;a.setEnabled=function(f){a.enabled=f;a.className=f?b:b+" mxDisabled"};a.setEnabled(!0)};
Toolbar.prototype.addClickHandler=function(a,b){null!=b&&(mxEvent.addListener(a,"click",function(f){a.enabled&&b(f);mxEvent.consume(f)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(f){f.preventDefault()})))};Toolbar.prototype.createButton=function(a){var b=document.createElement("a");b.className="geButton";var f=document.createElement("div");null!=a&&(f.className="geSprite "+a);b.appendChild(f);return b};
Toolbar.prototype.createLabel=function(a,b){b=document.createElement("a");b.className="geLabel";mxUtils.write(b,a);return b};
Toolbar.prototype.addMenuHandler=function(a,b,f,e){if(null!=f){var g=this.editorUi.editor.graph,d=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(n){if(k&&(null==a.enabled||a.enabled)){g.popupMenuHandler.hideMenu();d=new mxPopupMenu(f);d.div.className+=" geToolbarMenu";d.showDisabled=e;d.labels=b;d.autoExpand=!0;!b&&d.div.scrollHeight>d.div.clientHeight&&(d.div.style.width="40px");d.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(d,arguments);this.editorUi.resetCurrentMenu();
d.destroy()});var u=mxUtils.getOffset(a);d.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(d,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==d||null==d.div||null==d.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,f,e){function g(){var K=k.value;/(^#?[a-zA-Z0-9]*$)/.test(K)?("none"!=K&&"#"!=
A=r(this.defaultColors);A.style.marginBottom="16px";f.appendChild(m);A=document.createElement("div");A.style.textAlign="right";A.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});C.className="geBtn";a.editor.cancelFirst&&A.appendChild(C);var F=mxUtils.button(mxResources.get("apply"),g);F.className="geBtn gePrimaryBtn";A.appendChild(F);a.editor.cancelFirst||A.appendChild(C);null!=b&&("none"==b?(u.fromString("ffffff"),k.value="none"):u.fromString(b));
ColorDialog.prototype.createApplyFunction=function(){return mxUtils.bind(this,function(a){var b=this.editorUi.editor.graph;b.getModel().beginUpdate();try{b.setCellStyles(this.currentColorKey,a),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[this.currentColorKey],"values",[a],"cells",b.getSelectionCells()))}finally{b.getModel().endUpdate()}})};ColorDialog.recentColors=[];
ColorDialog.addRecentColor=function(a,b){null!=a&&(mxUtils.remove(a,ColorDialog.recentColors),ColorDialog.recentColors.splice(0,0,a),ColorDialog.recentColors.length>=b&&ColorDialog.recentColors.pop())};ColorDialog.resetRecentColors=function(){ColorDialog.recentColors=[]};
var AboutDialog=function(a){var b=document.createElement("div");b.setAttribute("align","center");var f=document.createElement("h3");mxUtils.write(f,mxResources.get("about")+" GraphEditor");b.appendChild(f);f=document.createElement("img");f.style.border="0px";f.setAttribute("width","176");f.setAttribute("width","151");f.setAttribute("src",IMAGE_PATH+"/logo.png");b.appendChild(f);mxUtils.br(b);mxUtils.write(b,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(b);f=document.createElement("a");f.setAttribute("href",
"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");b.appendChild(f);mxUtils.br(b);mxUtils.br(b);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";b.appendChild(f);this.container=b},TextareaDialog=function(a,b,f,e,g,d,k,n,u,m,r,x,A,C,F){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
n.style.position="absolute";n.style.left="0px";n.style.right="0px";var K=n.cloneNode(!1),E=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";K.style.top="20px";K.style.bottom="64px";E.style.bottom="0px";E.style.height="60px";E.style.textAlign="center";mxUtils.write(n,b);k.appendChild(n);k.appendChild(K);k.appendChild(E);null!=F&&n.appendChild(F);var O=document.createElement("textarea");r&&O.setAttribute("wrap","off");O.setAttribute("spellcheck","false");O.setAttribute("autocorrect","off");O.setAttribute("autocomplete",
"off");O.setAttribute("autocapitalize","off");mxUtils.write(O,f||"");O.style.resize="none";O.style.outline="none";O.style.position="absolute";O.style.boxSizing="border-box";O.style.top="0px";O.style.left="0px";O.style.height="100%";O.style.width="100%";this.textarea=O;this.init=function(){O.focus();O.scrollTop=0};K.appendChild(O);null!=A&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(A)}),b.className="geBtn",E.appendChild(b));if(null!=C)for(b=0;b<C.length;b++)(function(Q,
P,aa){Q=mxUtils.button(Q,function(T){P(T,O)});null!=aa&&Q.setAttribute("title",aa);Q.className="geBtn";E.appendChild(Q)})(C[b][0],C[b][1],C[b][2]);d=mxUtils.button(d||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});d.setAttribute("title","Escape");d.className="geBtn";a.editor.cancelFirst&&E.appendChild(d);null!=u&&u(E,O);if(null!=e){var R=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();e(O.value)});R.setAttribute("title","Ctrl+Enter");R.className="geBtn gePrimaryBtn";
E.appendChild(R);mxEvent.addListener(O,"keypress",function(Q){13==Q.keyCode&&mxEvent.isControlDown(Q)&&R.click()})}a.editor.cancelFirst||E.appendChild(d);this.container=k},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
f.style.resize="none";f.style.width="600px";f.style.height="360px";f.style.marginBottom="16px";f.value=mxUtils.getPrettyXml(a.editor.getGraphXml());b.appendChild(f);this.init=function(){f.focus()};Graph.fileSupport&&(f.addEventListener("dragover",function(k){k.stopPropagation();k.preventDefault()},!1),f.addEventListener("drop",function(k){k.stopPropagation();k.preventDefault();if(0<k.dataTransfer.files.length){k=k.dataTransfer.files[0];var n=new FileReader;n.onload=function(u){f.value=u.target.result};
n.readAsText(k)}else f.value=a.extractGraphModelFromEvent(k)},!1));var e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";a.editor.cancelFirst&&b.appendChild(e);var g=document.createElement("select");g.style.width="180px";g.className="geBtn";if(a.editor.graph.isEnabled()){var d=document.createElement("option");d.setAttribute("value","replace");mxUtils.write(d,mxResources.get("replaceExistingDrawing"));g.appendChild(d)}d=document.createElement("option");d.setAttribute("value",
"new");mxUtils.write(d,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&g.appendChild(d);a.editor.graph.isEnabled()&&(d=document.createElement("option"),d.setAttribute("value","import"),mxUtils.write(d,mxResources.get("addToExistingDrawing")),g.appendChild(d));b.appendChild(g);d=mxUtils.button(mxResources.get("ok"),function(){var k=Graph.zapGremlins(mxUtils.trim(f.value)),n=null;if("new"==g.value)a.hideDialog(),a.editor.editAsNew(k);else if("replace"==g.value){a.editor.graph.model.beginUpdate();
d.className="geBtn gePrimaryBtn";b.appendChild(d);a.editor.cancelFirst||b.appendChild(e);this.container=b};EditDiagramDialog.showNewWindowOption=!0;
var ExportDialog=function(a){function b(){var U=r.value,fa=U.lastIndexOf(".");r.value=0<fa?U.substring(0,fa+1)+x.value:U+"."+x.value;"xml"===x.value?(A.setAttribute("disabled","true"),C.setAttribute("disabled","true"),F.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(A.removeAttribute("disabled"),C.removeAttribute("disabled"),F.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled",
d.appendChild(u);mxEvent.addListener(x,"change",b);b();mxEvent.addListener(A,"change",function(){O=!0;var U=Math.max(0,parseFloat(A.value)||100)/100;A.value=parseFloat((100*U).toFixed(2));0<k?(C.value=Math.floor(k*U),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(C,"change",function(){var U=parseInt(C.value)/k;0<U?(A.value=parseFloat((100*U).toFixed(2)),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(F,"change",function(){var U=
ExportDialog.exportFile=function(a,b,f,e,g,d,k,n){n=a.editor.graph;if("xml"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,f);else if("svg"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(n.getSvg(e,g,d)),b,f);else{var u=n.getGraphBounds(),m=mxUtils.createXmlDocument(),r=m.createElement("output");m.appendChild(r);m=new mxXmlCanvas2D(r);m.translate(Math.floor((d/g-u.x)/n.view.scale),Math.floor((d/g-u.y)/n.view.scale));m.scale(g/n.view.scale);(new mxImageExport).drawState(n.getView().getState(n.model.root),
m);r="xml="+encodeURIComponent(mxUtils.getXml(r));m=Math.ceil(u.width*g/n.view.scale+2*d);g=Math.ceil(u.height*g/n.view.scale+2*d);r.length<=MAX_REQUEST_SIZE&&m*g<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+f+"&filename="+encodeURIComponent(b)+"&bg="+(null!=e?e:"none")+"&w="+m+"&h="+g+"&"+r+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,b,f,e){b.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(f)+"&format="+e)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
var EditDataDialog=function(a,b){function f(){0<Q.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var e=document.createElement("div"),g=a.editor.graph,d=g.getModel().getValue(b);if(!mxUtils.isNode(d)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",d||"");d=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(T){}var m=new mxForm("properties");m.table.style.width=
"100%";var r=d.attributes,x=[],A=[],C=0,F=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,K=function(T,U){var fa=document.createElement("div");fa.style.position="relative";fa.style.paddingRight="20px";fa.style.boxSizing="border-box";fa.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
fa){x[T]=U;A[T]=m.addTextarea(x[C]+":",fa,2);A[T].style.width="100%";0<fa.indexOf("\n")&&A[T].setAttribute("rows","2");K(A[T],U);null!=n[U]&&0==n[U].editable&&A[T].setAttribute("disabled","disabled")};u=[];for(var E=g.getModel().getParent(b)==g.getModel().getRoot(),O=0;O<r.length;O++)!E&&"label"==r[O].nodeName||"placeholders"==r[O].nodeName||u.push({name:r[O].nodeName,value:r[O].nodeValue});u.sort(function(T,U){return T.name<U.name?-1:T.name>U.name?1:0});if(null!=F){r=document.createElement("div");
r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,F);var R=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(T){mxEvent.isShiftDown(T)&&(T=new FilenameDialog(a,F,mxResources.get("apply"),mxUtils.bind(this,function(U){null!=U&&0<U.length&&U!=F&&(null==g.getModel().getCell(U)?(g.getModel().cellRemoved(b),b.setId(U),F=U,R.innerHTML=mxUtils.htmlEntities(U),g.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",
U=0;U<x.length;U++)null==A[U]?d.removeAttribute(x[U]):(d.setAttribute(x[U],A[U].value),T=T||"placeholder"==x[U]&&"1"==d.getAttribute("placeholders"));T&&d.removeAttribute("label");g.getModel().setValue(b,d)}catch(fa){mxUtils.alert(fa)}});aa.setAttribute("title","Ctrl+Enter");aa.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(T){13==T.keyCode&&mxEvent.isControlDown(T)&&aa.click()});mxEvent.addListener(Q,"keyup",f);mxEvent.addListener(Q,"change",f);k=document.createElement("div");
k.style.cssText="position:absolute;left:30px;right:30px;text-align:right;bottom:30px;height:40px;";if(a.editor.graph.getModel().isVertex(b)||a.editor.graph.getModel().isEdge(b))r=document.createElement("span"),r.style.marginRight="10px",E=document.createElement("input"),E.setAttribute("type","checkbox"),E.style.marginRight="6px","1"==d.getAttribute("placeholders")&&(E.setAttribute("checked","checked"),E.defaultChecked=!0),mxEvent.addListener(E,"click",function(){"1"==d.getAttribute("placeholders")?
"0"),O.setAttribute("valign","middle"),O.style.marginTop=mxClient.IS_IE11?"0px":"-4px",O.setAttribute("src",Editor.helpImage),E.appendChild(O),r.appendChild(E)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(aa)):(k.appendChild(aa),k.appendChild(u));e.appendChild(k);this.container=e};EditDataDialog.getDisplayIdForCell=function(a,b){var f=null;null!=a.editor.graph.getModel().getParent(b)&&(f=b.getId());return f};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,b,f,e){var g=document.createElement("div");mxUtils.write(g,mxResources.get("editLink")+":");var d=document.createElement("div");d.className="geTitle";d.style.backgroundColor="transparent";d.style.borderColor="transparent";d.style.whiteSpace="nowrap";d.style.textOverflow="clip";d.style.cursor="default";d.style.paddingRight="20px";var k=document.createElement("input");k.setAttribute("value",b);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.style.paddingRight="14px";b=document.createElement("div");b.setAttribute("title",mxResources.get("reset"));b.style.position="relative";b.style.left="-16px";b.style.width="12px";b.style.height="14px";b.style.cursor="pointer";b.style.display="inline-block";b.style.top="3px";b.style.background="url("+IMAGE_PATH+"/transparent.gif)";
mxEvent.addListener(b,"click",function(){k.value="";k.focus()});d.appendChild(k);d.appendChild(b);g.appendChild(d);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="right";mxEvent.addListener(k,"keypress",function(n){13==n.keyCode&&(a.hideDialog(),e(k.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
b.className="geBtn";a.editor.cancelFirst&&d.appendChild(b);f=mxUtils.button(f,function(){a.hideDialog();e(k.value)});f.className="geBtn gePrimaryBtn";d.appendChild(f);a.editor.cancelFirst||d.appendChild(b);g.appendChild(d);this.container=g},OutlineWindow=function(a,b,f,e,g){var d=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,b,f,e,g,!0,!0);this.window.minimumSize=
20*(x-1)),d.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,b,f,e,g){function d(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=T.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(U):null!=
new mxWindow(mxResources.get("layers"),m,b,f,e,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,150,120);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.init=function(){x.scrollTop=x.scrollHeight-x.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=n;this.window.setLocation=function(ha,ba){var qa=window.innerHeight||document.body.clientHeight||
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null!=y.buttonKey?mxResources.get(y.buttonKey):y.button);null!=y.modified&&(this.editor.modified=y.modified);return}if("layout"==y.action){this.executeLayouts(this.editor.graph.createLayouts(y.layouts));return}if("prompt"==y.action){this.spinner.stop();var q=new FilenameDialog(this,y.defaultValue||"",null!=y.okKey?mxResources.get(y.okKey):y.ok,function(O){null!=O?v.postMessage(JSON.stringify({event:"prompt",value:O,message:y}),"*"):v.postMessage(JSON.stringify({event:"prompt-cancel",message:y}),"*")},
null!=y.titleKey?mxResources.get(y.titleKey):y.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==y.action){var E=N(y.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[y.name||this.defaultFilename]),E,mxUtils.bind(this,function(){this.hideDialog();v.postMessage(JSON.stringify({event:"draft",result:"edit",message:y}),"*")}),mxUtils.bind(this,function(){this.hideDialog();v.postMessage(JSON.stringify({event:"draft",result:"discard",message:y}),"*")}),
y.editKey?mxResources.get(y.editKey):null,y.discardKey?mxResources.get(y.discardKey):null,y.ignore?mxUtils.bind(this,function(){this.hideDialog();v.postMessage(JSON.stringify({event:"draft",result:"ignore",message:y}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(O){O&&this.actions.get("exit").funct()}));try{q.init()}catch(O){v.postMessage(JSON.stringify({event:"draft",error:O.toString(),message:y}),"*")}return}if("template"==y.action){this.spinner.stop();var A=
1==y.enableRecent,B=1==y.enableSearch,G=1==y.enableCustomTemp;if("1"==urlParams.newTempDlg&&!y.templatesOnly&&null!=y.callback){var M=this.getCurrentUser(),H=new TemplatesDialog(this,function(O,S,Y){O=O||this.emptyDiagramXml;v.postMessage(JSON.stringify({event:"template",xml:O,blank:O==this.emptyDiagramXml,name:S,tempUrl:Y.url,libs:Y.libs,builtIn:null!=Y.info&&null!=Y.info.custContentId,message:y}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=M?M.id:null,A?
mxUtils.bind(this,function(O,S,Y){this.remoteInvoke("getRecentDiagrams",[Y],null,O,S)}):null,B?mxUtils.bind(this,function(O,S,Y,da){this.remoteInvoke("searchDiagrams",[O,da],null,S,Y)}):null,mxUtils.bind(this,function(O,S,Y){this.remoteInvoke("getFileContent",[O.url],null,S,Y)}),null,G?mxUtils.bind(this,function(O){this.remoteInvoke("getCustomTemplates",null,null,O,function(){O({},0)})}):null,!1,!1,!0,!0);this.showDialog(H.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=
new NewDialog(this,!1,y.templatesOnly?!1:null!=y.callback,mxUtils.bind(this,function(O,S,Y,da){O=O||this.emptyDiagramXml;null!=y.callback?v.postMessage(JSON.stringify({event:"template",xml:O,blank:O==this.emptyDiagramXml,name:S,tempUrl:Y,libs:da,builtIn:!0,message:y}),"*"):(c(O,z,O!=this.emptyDiagramXml,y.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,A?mxUtils.bind(this,function(O){this.remoteInvoke("getRecentDiagrams",[null],null,O,function(){O(null,
"Network Error!")})}):null,B?mxUtils.bind(this,function(O,S){this.remoteInvoke("searchDiagrams",[O,null],null,S,function(){S(null,"Network Error!")})}):null,mxUtils.bind(this,function(O,S,Y){v.postMessage(JSON.stringify({event:"template",docUrl:O,info:S,name:Y}),"*")}),null,null,G?mxUtils.bind(this,function(O){this.remoteInvoke("getCustomTemplates",null,null,O,function(){O({},0)})}):null,1==y.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(O){this.sidebar.hideTooltip();
O&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==y.action){var F=this.getDiagramTextContent();v.postMessage(JSON.stringify({event:"textContent",data:F,message:y}),"*");return}if("status"==y.action){null!=y.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(y.messageKey))):null!=y.message&&this.editor.setStatus(mxUtils.htmlEntities(y.message));null!=y.modified&&(this.editor.modified=y.modified);return}if("spinner"==y.action){var I=null!=y.messageKey?mxResources.get(y.messageKey):
y.message;null==y.show||y.show?this.spinner.spin(document.body,I):this.spinner.stop();return}if("exit"==y.action){this.actions.get("exit").funct();return}if("viewport"==y.action){null!=y.viewport&&(this.embedViewport=y.viewport);return}if("snapshot"==y.action){this.sendEmbeddedSvgExport(!0);return}if("export"==y.action){if("png"==y.format||"xmlpng"==y.format){if(null==y.spin&&null==y.spinKey||this.spinner.spin(document.body,null!=y.spinKey?mxResources.get(y.spinKey):y.spin)){var R=null!=y.xml?y.xml:
this.getFileData(!0);this.editor.graph.setEnabled(!1);var W=this.editor.graph,P=mxUtils.bind(this,function(O){this.editor.graph.setEnabled(!0);this.spinner.stop();var S=this.createLoadMessage("export");S.format=y.format;S.message=y;S.data=O;S.xml=R;v.postMessage(JSON.stringify(S),"*")}),V=mxUtils.bind(this,function(O){null==O&&(O=Editor.blankImage);"xmlpng"==y.format&&(O=Editor.writeGraphModelToPng(O,"tEXt","mxfile",encodeURIComponent(R)));W!=this.editor.graph&&W.container.parentNode.removeChild(W.container);
P(O)}),U=y.pageId||(null!=this.pages?y.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var X=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=U){var O=W.getGlobalVariable;W=this.createTemporaryGraph(W.getStylesheet());for(var S,Y=0;Y<this.pages.length;Y++)if(this.pages[Y].getId()==U){S=this.updatePageRoot(this.pages[Y]);break}null==S&&(S=this.currentPage);W.getGlobalVariable=function(ea){return"page"==ea?S.getName():"pagenumber"==
ea?1:O.apply(this,arguments)};document.body.appendChild(W.container);W.model.setRoot(S.root)}if(null!=y.layerIds){var da=W.model,ha=da.getChildCells(da.getRoot()),Z={};for(Y=0;Y<y.layerIds.length;Y++)Z[y.layerIds[Y]]=!0;for(Y=0;Y<ha.length;Y++)da.setVisible(ha[Y],Z[ha[Y].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(ea){V(ea.toDataURL("image/png"))}),y.width,null,y.background,mxUtils.bind(this,function(){V(null)}),null,null,y.scale,y.transparent,y.shadow,null,W,y.border,null,y.grid,
y.keepTheme)});null!=y.xml&&0<y.xml.length?(g=!0,this.setFileData(R),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==y.format?"1":"0")+(null!=U?"&pageId="+U:"")+(null!=y.layerIds&&0<y.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:y.layerIds})):"")+(null!=y.scale?"&scale="+y.scale:"")+"&base64=1&xml="+encodeURIComponent(R))).send(mxUtils.bind(this,function(O){200<=
O.getStatus()&&299>=O.getStatus()?P("data:image/png;base64,"+O.getText()):V(null)}),mxUtils.bind(this,function(){V(null)}))}}else X=mxUtils.bind(this,function(){var O=this.createLoadMessage("export");O.message=y;if("html2"==y.format||"html"==y.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var S=this.getXmlFileData();O.xml=mxUtils.getXml(S);O.data=this.getFileData(null,null,!0,null,null,null,S);O.format=y.format}else if("html"==y.format)S=this.editor.getGraphXml(),O.data=this.getHtml(S,
this.editor.graph),O.xml=mxUtils.getXml(S),O.format=y.format;else{mxSvgCanvas2D.prototype.foAltText=null;S=null!=y.background?y.background:this.editor.graph.background;S==mxConstants.NONE&&(S=null);O.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);O.format="svg";var Y=mxUtils.bind(this,function(da){this.editor.graph.setEnabled(!0);this.spinner.stop();O.data=Editor.createSvgDataUri(da);v.postMessage(JSON.stringify(O),"*")});if("xmlsvg"==y.format)(null==y.spin&&null==y.spinKey||
this.spinner.spin(document.body,null!=y.spinKey?mxResources.get(y.spinKey):y.spin))&&this.getEmbeddedSvg(O.xml,this.editor.graph,null,!0,Y,null,null,y.embedImages,S,y.scale,y.border,y.shadow,y.keepTheme);else if(null==y.spin&&null==y.spinKey||this.spinner.spin(document.body,null!=y.spinKey?mxResources.get(y.spinKey):y.spin))this.editor.graph.setEnabled(!1),S=this.editor.graph.getSvg(S,y.scale,y.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||y.shadow,null,y.keepTheme),(this.editor.graph.shadowVisible||
y.shadow)&&this.editor.graph.addSvgShadow(S),this.embedFonts(S,mxUtils.bind(this,function(da){y.embedImages||null==y.embedImages?this.editor.convertImages(da,mxUtils.bind(this,function(ha){Y(mxUtils.getXml(ha))})):Y(mxUtils.getXml(da))}));return}v.postMessage(JSON.stringify(O),"*")}),null!=y.xml&&0<y.xml.length?(g=!0,this.setFileData(y.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(X)},0):X()):X();return}if("load"==y.action){K=y.toSketch;k=1==y.autosave;
this.hideDialog();null!=y.modified&&null==urlParams.modified&&(urlParams.modified=y.modified);null!=y.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=y.saveAndExit);null!=y.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=y.noSaveBtn);if(null!=y.rough){var n=Editor.sketchMode;this.doSetSketchMode(y.rough);n!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=y.dark&&(n=Editor.darkMode,this.doSetDarkMode(y.dark),n!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));
null!=y.border&&(this.embedExportBorder=y.border);null!=y.background&&(this.embedExportBackground=y.background);null!=y.viewport&&(this.embedViewport=y.viewport);this.embedExitPoint=null;if(null!=y.rect){var C=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=y.rect.top+"px";this.diagramContainer.style.left=y.rect.left+"px";this.diagramContainer.style.height=y.rect.height+"px";this.diagramContainer.style.width=y.rect.width+"px";this.diagramContainer.style.bottom=
"";this.diagramContainer.style.right="";L=mxUtils.bind(this,function(){var O=this.editor.graph,S=O.maxFitScale;O.maxFitScale=y.maxFitScale;O.fit(2*C);O.maxFitScale=S;O.container.scrollTop-=2*C;O.container.scrollLeft-=2*C;this.fireEvent(new mxEventObject("editInlineStart","data",[y]))})}null!=y.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=y.noExitBtn);null!=y.title&&null!=this.buttonContainer&&(E=document.createElement("span"),mxUtils.write(E,y.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),
this.buttonContainer.appendChild(E),this.embedFilenameSpan=E);try{y.libs&&this.sidebar.showEntries(y.libs)}catch(O){}y=null!=y.xmlpng?this.extractGraphModelFromPng(y.xmlpng):null!=y.descriptor?y.descriptor:y.xml}else{if("merge"==y.action){var J=this.getCurrentFile();null!=J&&(E=N(y.xml),null!=E&&""!=E&&J.mergeFile(new LocalFile(this,E),function(){v.postMessage(JSON.stringify({event:"merge",message:y}),"*")},function(O){v.postMessage(JSON.stringify({event:"merge",message:y,error:O}),"*")}))}else"remoteInvokeReady"==
y.action?this.handleRemoteInvokeReady(v):"remoteInvoke"==y.action?this.handleRemoteInvoke(y,z.origin):"remoteInvokeResponse"==y.action?this.handleRemoteInvokeResponse(y):v.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(y)}),"*");return}}catch(O){this.handleError(O)}}var T=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),Q=mxUtils.bind(this,function(O,S){g=!0;try{c(O,
S,null,K)}catch(Y){this.handleError(Y)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");m=T();k&&null==e&&(e=mxUtils.bind(this,function(Y,da){Y=T();Y==m||g||(da=this.createLoadMessage("autosave"),da.xml=Y,(window.opener||window.parent).postMessage(JSON.stringify(da),"*"));m=Y}),this.editor.graph.model.addListener(mxEvent.CHANGE,e),this.editor.graph.addListener("gridSizeChanged",e),this.editor.graph.addListener("shadowVisibleChanged",e),this.addListener("pageFormatChanged",e),this.addListener("pageScaleChanged",
e),this.addListener("backgroundColorChanged",e),this.addListener("backgroundImageChanged",e),this.addListener("foldingEnabledChanged",e),this.addListener("mathEnabledChanged",e),this.addListener("gridEnabledChanged",e),this.addListener("guidesEnabledChanged",e),this.addListener("pageViewChanged",e));if("1"==urlParams.returnbounds||"json"==urlParams.proto)S=this.createLoadMessage("load"),S.xml=O,v.postMessage(JSON.stringify(S),"*");null!=L&&L()});null!=y&&"function"===typeof y.substring&&"data:application/vnd.visio;base64,"==
y.substring(0,34)?(N="0M8R4KGxGuE"==y.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(y.substring(y.indexOf(",")+1)),function(O){Q(O,z)},mxUtils.bind(this,function(O){this.handleError(O)}),N)):null!=y&&"function"===typeof y.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(y,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(y,mxUtils.bind(this,function(O){4==O.readyState&&200<=O.status&&299>=O.status&&
"<mxGraphModel"==O.responseText.substring(0,13)&&Q(O.responseText,z)}),""):null!=y&&"function"===typeof y.substring&&this.isLucidChartData(y)?this.convertLucidChart(y,mxUtils.bind(this,function(O){Q(O)}),mxUtils.bind(this,function(O){this.handleError(O)})):null==y||"object"!==typeof y||null==y.format||null==y.data&&null==y.url?(y=N(y),Q(y,z)):this.loadDescriptor(y,mxUtils.bind(this,function(O){Q(T(),z)}),mxUtils.bind(this,function(O){this.handleError(O,mxResources.get("errorLoadingFile"))}))}}));
var v=window.opener||window.parent;p="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";v.postMessage(p,"*");if("json"==urlParams.proto){var x=this.editor.graph.openLink;this.editor.graph.openLink=function(z,y,L){x.apply(this,arguments);v.postMessage(JSON.stringify({event:"openLink",href:z,target:y,allowOpener:L}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var c=document.createElement("div");c.style.display=
"inline-block";c.style.position="absolute";c.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";c.style.paddingLeft="8px";c.style.paddingBottom="2px";var e=document.createElement("button");e.className="geBigButton";var g=e;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var k="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(e,k);e.setAttribute("title",k);mxEvent.addListener(e,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));
640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(c,e){try{var g=c.split("\n"),k=[],m=[],p=[],v={};if(0<g.length){var x={},z=this.editor.graph,y=null,L=null,N=null,K=null,q=null,E=null,A=null,B="whiteSpace=wrap;html=1;",G=null,M=null,H="",F="auto",I="auto",R=null,W=null,P=40,V=40,U=100,X=0,n=function(){null!=e?e(ta):(z.setSelectionCells(ta),z.scrollCellToVisible(z.getSelectionCell()))},C=z.getFreeInsertPoint(),J=C.x,T=C.y;C=T;var Q=null,O="auto";
M=null;for(var S=[],Y=null,da=null,ha=0;ha<g.length&&"#"==g[ha].charAt(0);){c=g[ha].replace(/\r$/,"");for(ha++;ha<g.length&&"\\"==c.charAt(c.length-1)&&"#"==g[ha].charAt(0);)c=c.substring(0,c.length-1)+mxUtils.trim(g[ha].substring(1)),ha++;if("#"!=c.charAt(1)){var Z=c.indexOf(":");if(0<Z){var ea=mxUtils.trim(c.substring(1,Z)),aa=mxUtils.trim(c.substring(Z+1));"label"==ea?Q=z.sanitizeHtml(aa):"labelname"==ea&&0<aa.length&&"-"!=aa?q=aa:"labels"==ea&&0<aa.length&&"-"!=aa?A=JSON.parse(aa):"style"==ea?
L=aa:"parentstyle"==ea?B=aa:"unknownStyle"==ea&&"-"!=aa?E=aa:"stylename"==ea&&0<aa.length&&"-"!=aa?K=aa:"styles"==ea&&0<aa.length&&"-"!=aa?N=JSON.parse(aa):"vars"==ea&&0<aa.length&&"-"!=aa?y=JSON.parse(aa):"identity"==ea&&0<aa.length&&"-"!=aa?G=aa:"parent"==ea&&0<aa.length&&"-"!=aa?M=aa:"namespace"==ea&&0<aa.length&&"-"!=aa?H=aa:"width"==ea?F=aa:"height"==ea?I=aa:"left"==ea&&0<aa.length?R=aa:"top"==ea&&0<aa.length?W=aa:"ignore"==ea?da=aa.split(","):"connect"==ea?S.push(JSON.parse(aa)):"link"==ea?
Y=aa:"padding"==ea?X=parseFloat(aa):"edgespacing"==ea?P=parseFloat(aa):"nodespacing"==ea?V=parseFloat(aa):"levelspacing"==ea?U=parseFloat(aa):"layout"==ea&&(O=aa)}}}if(null==g[ha])throw Error(mxResources.get("invalidOrMissingFile"));var va=this.editor.csvToArray(g[ha].replace(/\r$/,""));Z=c=null;ea=[];for(aa=0;aa<va.length;aa++)G==va[aa]&&(c=aa),M==va[aa]&&(Z=aa),ea.push(mxUtils.trim(va[aa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==Q&&(Q="%"+ea[0]+"%");if(null!=S)for(var la=
0;la<S.length;la++)null==x[S[la].to]&&(x[S[la].to]={});G=[];for(aa=ha+1;aa<g.length;aa++){var Aa=this.editor.csvToArray(g[aa].replace(/\r$/,""));if(null==Aa){var Ba=40<g[aa].length?g[aa].substring(0,40)+"...":g[aa];throw Error(Ba+" ("+aa+"):\n"+mxResources.get("containsValidationErrors"));}0<Aa.length&&G.push(Aa)}z.model.beginUpdate();try{for(aa=0;aa<G.length;aa++){Aa=G[aa];var ua=null,Da=null!=c?H+Aa[c]:null;null!=Da&&(ua=z.model.getCell(Da));g=null!=ua;var Fa=new mxCell(Q,new mxGeometry(J,C,0,0),
L||"whiteSpace=wrap;html=1;");Fa.vertex=!0;Fa.id=Da;Ba=null!=ua?ua:Fa;for(var Ka=0;Ka<Aa.length;Ka++)z.setAttributeForCell(Ba,ea[Ka],Aa[Ka]);if(null!=q&&null!=A){var Oa=A[Ba.getAttribute(q)];null!=Oa&&z.labelChanged(Ba,Oa)}if(null!=K&&null!=N){var Ia=N[Ba.getAttribute(K)];null!=Ia&&(Ba.style=Ia)}z.setAttributeForCell(Ba,"placeholders","1");Ba.style=z.replacePlaceholders(Ba,Ba.style,y);g?(0>mxUtils.indexOf(p,ua)&&p.push(ua),z.fireEvent(new mxEventObject("cellsInserted","cells",[ua]))):z.fireEvent(new mxEventObject("cellsInserted",
"cells",[Fa]));ua=Fa;if(!g)for(la=0;la<S.length;la++)x[S[la].to][ua.getAttribute(S[la].to)]=ua;null!=Y&&"link"!=Y&&(z.setLinkForCell(ua,ua.getAttribute(Y)),z.setAttributeForCell(ua,Y,null));var Ea=this.editor.graph.getPreferredSizeForCell(ua);M=null!=Z?z.model.getCell(H+Aa[Z]):null;if(ua.vertex){Ba=null!=M?0:J;ha=null!=M?0:T;null!=R&&null!=ua.getAttribute(R)&&(ua.geometry.x=Ba+parseFloat(ua.getAttribute(R)));null!=W&&null!=ua.getAttribute(W)&&(ua.geometry.y=ha+parseFloat(ua.getAttribute(W)));var Ca=
"@"==F.charAt(0)?ua.getAttribute(F.substring(1)):null;ua.geometry.width=null!=Ca&&"auto"!=Ca?parseFloat(ua.getAttribute(F.substring(1))):"auto"==F||"auto"==Ca?Ea.width+X:parseFloat(F);var Ma="@"==I.charAt(0)?ua.getAttribute(I.substring(1)):null;ua.geometry.height=null!=Ma&&"auto"!=Ma?parseFloat(Ma):"auto"==I||"auto"==Ma?Ea.height+X:parseFloat(I);C+=ua.geometry.height+V}g?(null==v[Da]&&(v[Da]=[]),v[Da].push(ua)):(k.push(ua),null!=M?(M.style=z.replacePlaceholders(M,B,y),z.addCell(ua,M),m.push(M)):p.push(z.addCell(ua)))}for(aa=
0;aa<m.length;aa++)Ca="@"==F.charAt(0)?m[aa].getAttribute(F.substring(1)):null,Ma="@"==I.charAt(0)?m[aa].getAttribute(I.substring(1)):null,"auto"!=F&&"auto"!=Ca||"auto"!=I&&"auto"!=Ma||z.updateGroupBounds([m[aa]],X,!0);var za=p.slice(),ta=p.slice();for(la=0;la<S.length;la++){var ka=S[la];for(aa=0;aa<k.length;aa++){ua=k[aa];var pa=mxUtils.bind(this,function(ia,ma,qa){var oa=ma.getAttribute(qa.from);if(null!=oa&&""!=oa){oa=oa.split(",");for(var na=0;na<oa.length;na++){var Ja=x[qa.to][oa[na]];if(null==
Ja&&null!=E){Ja=new mxCell(oa[na],new mxGeometry(J,T,0,0),E);Ja.style=z.replacePlaceholders(ma,Ja.style,y);var Ga=this.editor.graph.getPreferredSizeForCell(Ja);Ja.geometry.width=Ga.width+X;Ja.geometry.height=Ga.height+X;x[qa.to][oa[na]]=Ja;Ja.vertex=!0;Ja.id=oa[na];p.push(z.addCell(Ja))}if(null!=Ja){Ga=qa.label;null!=qa.fromlabel&&(Ga=(ma.getAttribute(qa.fromlabel)||"")+(Ga||""));null!=qa.sourcelabel&&(Ga=z.replacePlaceholders(ma,qa.sourcelabel,y)+(Ga||""));null!=qa.tolabel&&(Ga=(Ga||"")+(Ja.getAttribute(qa.tolabel)||
""));null!=qa.targetlabel&&(Ga=(Ga||"")+z.replacePlaceholders(Ja,qa.targetlabel,y));var Ra="target"==qa.placeholders==!qa.invert?Ja:ia;Ra=null!=qa.style?z.replacePlaceholders(Ra,qa.style,y):z.createCurrentEdgeStyle();Ga=z.insertEdge(null,null,Ga||"",qa.invert?Ja:ia,qa.invert?ia:Ja,Ra);if(null!=qa.labels)for(Ra=0;Ra<qa.labels.length;Ra++){var Sa=qa.labels[Ra],Ha=new mxCell(Sa.label||Ra,new mxGeometry(null!=Sa.x?Sa.x:0,null!=Sa.y?Sa.y:0,0,0),"resizable=0;html=1;");Ha.vertex=!0;Ha.connectable=!1;Ha.geometry.relative=
!0;null!=Sa.placeholders&&(Ha.value=z.replacePlaceholders("target"==Sa.placeholders==!qa.invert?Ja:ia,Ha.value,y));if(null!=Sa.dx||null!=Sa.dy)Ha.geometry.offset=new mxPoint(null!=Sa.dx?Sa.dx:0,null!=Sa.dy?Sa.dy:0);Ga.insert(Ha)}ta.push(Ga);mxUtils.remove(qa.invert?ia:Ja,za)}}}});pa(ua,ua,ka);if(null!=v[ua.id])for(Ka=0;Ka<v[ua.id].length;Ka++)pa(ua,v[ua.id][Ka],ka)}}if(null!=da)for(aa=0;aa<k.length;aa++)for(ua=k[aa],Ka=0;Ka<da.length;Ka++)z.setAttributeForCell(ua,mxUtils.trim(da[Ka]),null);if(0<p.length){var sa=
new mxParallelEdgeLayout(z);sa.spacing=P;sa.checkOverlap=!0;var ya=function(){0<sa.spacing&&sa.execute(z.getDefaultParent());for(var ia=0;ia<p.length;ia++){var ma=z.getCellGeometry(p[ia]);ma.x=Math.round(z.snap(ma.x));ma.y=Math.round(z.snap(ma.y));"auto"==F&&(ma.width=Math.round(z.snap(ma.width)));"auto"==I&&(ma.height=Math.round(z.snap(ma.height)))}};if("["==O.charAt(0)){var wa=n;z.view.validate();this.executeLayouts(z.createLayouts(JSON.parse(O)),function(){ya();wa()});n=null}else if("circle"==
O){var ra=new mxCircleLayout(z);ra.disableEdgeStyle=!1;ra.resetEdges=!1;var xa=ra.isVertexIgnored;ra.isVertexIgnored=function(ia){return xa.apply(this,arguments)||0>mxUtils.indexOf(p,ia)};this.executeLayout(function(){ra.execute(z.getDefaultParent());ya()},!0,n);n=null}else if("horizontaltree"==O||"verticaltree"==O||"auto"==O&&ta.length==2*p.length-1&&1==za.length){z.view.validate();var fa=new mxCompactTreeLayout(z,"horizontaltree"==O);fa.levelDistance=V;fa.edgeRouting=!1;fa.resetEdges=!1;this.executeLayout(function(){fa.execute(z.getDefaultParent(),
0<za.length?za[0]:null)},!0,n);n=null}else if("horizontalflow"==O||"verticalflow"==O||"auto"==O&&1==za.length){z.view.validate();var ca=new mxHierarchicalLayout(z,"horizontalflow"==O?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);ca.intraCellSpacing=V;ca.parallelEdgeSpacing=P;ca.interRankCellSpacing=U;ca.disableEdgeStyle=!1;this.executeLayout(function(){ca.execute(z.getDefaultParent(),ta);z.moveCells(ta,J,T)},!0,n);n=null}else if("organic"==O||"auto"==O&&ta.length>p.length){z.view.validate();
var ba=new mxFastOrganicLayout(z);ba.forceConstant=3*V;ba.disableEdgeStyle=!1;ba.resetEdges=!1;var ja=ba.isVertexIgnored;ba.isVertexIgnored=function(ia){return ja.apply(this,arguments)||0>mxUtils.indexOf(p,ia)};this.executeLayout(function(){ba.execute(z.getDefaultParent());ya()},!0,n);n=null}}this.hideDialog()}finally{z.model.endUpdate()}null!=n&&n()}}catch(ia){this.handleError(ia)}};EditorUi.prototype.getSearch=function(c){var e="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=c&&0<window.location.search.length){var g=
"?",k;for(k in urlParams)0>mxUtils.indexOf(c,k)&&null!=urlParams[k]&&(e+=g+k+"="+urlParams[k],g="&")}else e=window.location.search;return e};EditorUi.prototype.getUrl=function(c){c=null!=c?c:window.location.pathname;var e=0<c.indexOf("?")?1:0;if("1"==urlParams.offline)c+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),k;for(k in urlParams)0>mxUtils.indexOf(g,k)&&(c=0==e?c+"?":c+"&",null!=urlParams[k]&&(c+=k+"="+
urlParams[k],e++))}return c};EditorUi.prototype.showLinkDialog=function(c,e,g,k,m){c=new LinkDialog(this,c,e,g,!0,k,m);this.showDialog(c.container,560,130,!0,!0);c.init()};EditorUi.prototype.getServiceCount=function(c){var e=1;null==this.drive&&"function"!==typeof window.DriveClient||e++;null==this.dropbox&&"function"!==typeof window.DropboxClient||e++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||e++;null!=this.gitHub&&e++;null!=this.gitLab&&e++;c&&isLocalStorage&&"1"==urlParams.browser&&
e++;return e};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var c=this.getCurrentFile(),e=null!=c||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(e);this.menus.get("viewZoom").setEnabled(e);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==c||c.isRestricted());this.actions.get("makeCopy").setEnabled(!g);this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);
g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));c="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=c&&c.isEditable();this.actions.get("image").setEnabled(e);this.actions.get("zoomIn").setEnabled(e);this.actions.get("zoomOut").setEnabled(e);this.actions.get("resetView").setEnabled(e);this.actions.get("undo").setEnabled(this.canUndo()&&
c);this.actions.get("redo").setEnabled(this.canRedo()&&c);this.menus.get("edit").setEnabled(e);this.menus.get("view").setEnabled(e);this.menus.get("importFrom").setEnabled(c);this.menus.get("arrange").setEnabled(c);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(c),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(c));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=
function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var c=this.getCurrentFile();return null!=c&&c.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var c=this.editor.graph,e=this.getCurrentFile(),g=this.getSelectionState(),k=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(k);
this.actions.get("autosave").setEnabled(null!=e&&e.isEditable()&&e.isAutosaveOptional());this.actions.get("guides").setEnabled(k);this.actions.get("editData").setEnabled(c.isEnabled());this.actions.get("shadowVisible").setEnabled(k);this.actions.get("connectionArrows").setEnabled(k);this.actions.get("connectionPoints").setEnabled(k);this.actions.get("copyStyle").setEnabled(k&&!c.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(k&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<
g.vertices.length);this.actions.get("createShape").setEnabled(k);this.actions.get("createRevision").setEnabled(k);this.actions.get("moveToFolder").setEnabled(null!=e);this.actions.get("makeCopy").setEnabled(null!=e&&!e.isRestricted());this.actions.get("editDiagram").setEnabled(k&&(null==e||!e.isRestricted()));this.actions.get("publishLink").setEnabled(null!=e&&!e.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=
this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=e&&e.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=e);this.menus.get("publish").setEnabled(null!=e&&!e.isRestricted());e=this.actions.get("findReplace");e.setEnabled("hidden"!=this.diagramContainer.style.visibility);e.label=mxResources.get("find")+(c.isEnabled()?"/"+mxResources.get("replace"):
"")+"...";c=c.view.getState(c.getSelectionCell());this.actions.get("editShape").setEnabled(k&&null!=c&&null!=c.shape&&null!=c.shape.stencil)};var D=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);D.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(c,e,g,k,m,p,v,x){var z=c.editor.graph;
if("xml"==g)c.hideDialog(),c.saveData(e,"xml",mxUtils.getXml(c.editor.getGraphXml()),"text/xml");else if("svg"==g)c.hideDialog(),c.saveData(e,"svg",mxUtils.getXml(z.getSvg(k,m,p)),"image/svg+xml");else{var y=c.getFileData(!0,null,null,null,null,!0),L=z.getGraphBounds(),N=Math.floor(L.width*m/z.view.scale),K=Math.floor(L.height*m/z.view.scale);if(y.length<=MAX_REQUEST_SIZE&&N*K<MAX_AREA)if(c.hideDialog(),"png"!=g&&"jpg"!=g&&"jpeg"!=g||!c.isExportToCanvas()){var q={globalVars:z.getExportVariables()};
x&&(q.grid={size:z.gridSize,steps:z.view.gridSteps,color:z.view.gridColor});c.saveRequest(e,g,function(E,A){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(A||"0")+(null!=E?"&filename="+encodeURIComponent(E):"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(0<v?"&dpi="+v:"")+"&bg="+(null!=k?k:"none")+"&w="+N+"&h="+K+"&border="+p+"&xml="+encodeURIComponent(y))})}else"png"==g?c.exportImage(m,null==k||"none"==k,!0,!1,!1,p,!0,!1,null,x,v):c.exportImage(m,!1,!0,!1,!1,p,!0,!1,"jpeg",x);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});
EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var c=this.editor.graph,e="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var k=c;this.currentPage!=this.pages[g]&&(k=this.createTemporaryGraph(c.getStylesheet()),this.updatePageRoot(this.pages[g]),k.model.setRoot(this.pages[g].root));e+=this.pages[g].getName()+" "+k.getIndexableText()+" "}else e=c.getIndexableText();this.editor.graph.setEnabled(!0);return e};EditorUi.prototype.showRemotelyStoredLibrary=
function(c){var e={},g=document.createElement("div");g.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,mxUtils.htmlEntities(c));k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(k);var m=document.createElement("div");m.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";m.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var p={};try{var v=mxSettings.getCustomLibraries();
for(c=0;c<v.length;c++){var x=v[c];if("R"==x.substring(0,1)){var z=JSON.parse(decodeURIComponent(x.substring(1)));p[z[0]]={id:z[0],title:z[1],downloadUrl:z[2]}}}}catch(y){}this.remoteInvoke("getCustomLibraries",null,null,function(y){m.innerHTML="";if(0==y.length)m.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var L=0;L<y.length;L++){var N=y[L];p[N.id]&&(e[N.id]=N);var K=this.addCheckbox(m,N.title,p[N.id]);
(function(q,E){mxEvent.addListener(E,"change",function(){this.checked?e[q.id]=q:delete e[q.id]})})(N,K)}},mxUtils.bind(this,function(y){m.innerHTML="";var L=document.createElement("div");L.style.padding="8px";L.style.textAlign="center";mxUtils.write(L,mxResources.get("error")+": ");mxUtils.write(L,null!=y&&null!=y.message?y.message:mxResources.get("unknownError"));m.appendChild(L)}));g.appendChild(m);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));
var y=0,L;for(L in e)null==p[L]&&(y++,mxUtils.bind(this,function(N){this.remoteInvoke("getFileContent",[N.downloadUrl],null,mxUtils.bind(this,function(K){y--;0==y&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,K,N))}catch(q){this.handleError(q,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){y--;0==y&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(e[L]));for(L in p)e[L]||this.closeLibrary(new RemoteLibrary(this,null,p[L]));
0==y&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];
EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(c){this.remoteWin=c;for(var e=0;e<this.remoteInvokeQueue.length;e++)c.postMessage(this.remoteInvokeQueue[e],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(c){var e=c.msgMarkers,g=this.remoteInvokeCallbacks[e.callbackId];if(null==g)throw Error("No callback for "+(null!=e?e.callbackId:"null"));c.error?g.error&&g.error(c.error.errResp):g.callback&&g.callback.apply(this,
c.resp);this.remoteInvokeCallbacks[e.callbackId]=null};EditorUi.prototype.remoteInvoke=function(c,e,g,k,m){var p=!0,v=window.setTimeout(mxUtils.bind(this,function(){p=!1;m({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),x=mxUtils.bind(this,function(){window.clearTimeout(v);p&&k.apply(this,arguments)}),z=mxUtils.bind(this,function(){window.clearTimeout(v);p&&m.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:x,
error:z});c=JSON.stringify({event:"remoteInvoke",funtionName:c,functionArgs:e,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(c,"*"):this.remoteInvokeQueue.push(c)};EditorUi.prototype.handleRemoteInvoke=function(c,e){var g=mxUtils.bind(this,function(y,L){var N={event:"remoteInvokeResponse",msgMarkers:c.msgMarkers};null!=L?N.error={errResp:L}:null!=y&&(N.resp=y);this.remoteWin.postMessage(JSON.stringify(N),"*")});try{var k=c.funtionName,m=this.remoteInvokableFns[k];if(null!=m&&"function"===
typeof this[k]){if(m.allowedDomains){for(var p=!1,v=0;v<m.allowedDomains.length;v++)if(e=="https://"+m.allowedDomains[v]){p=!0;break}if(!p){g(null,"Invalid Call: "+k+" is not allowed.");return}}var x=c.functionArgs;Array.isArray(x)||(x=[]);if(m.isAsync)x.push(function(){g(Array.prototype.slice.apply(arguments))}),x.push(function(y){g(null,y||"Unkown Error")}),this[k].apply(this,x);else{var z=this[k].apply(this,x);g([z])}}else g(null,"Invalid Call: "+k+" is not found.")}catch(y){g(null,"Invalid Call: An error occurred, "+
y.message)}};EditorUi.prototype.openDatabase=function(c,e){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var k=g.open("database",2);k.onupgradeneeded=function(m){try{var p=k.result;1>m.oldVersion&&p.createObjectStore("objects",{keyPath:"key"});2>m.oldVersion&&(p.createObjectStore("files",{keyPath:"title"}),p.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(v){null!=e&&e(v)}};k.onsuccess=
mxUtils.bind(this,function(m){var p=k.result;this.database=p;EditorUi.migrateStorageFiles&&(StorageFile.migrate(p),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(v){if(!v||"1"==urlParams.forceMigration){var x=document.createElement("iframe");x.style.display="none";x.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);
document.body.appendChild(x);var z=!0,y=!1,L,N=0,K=mxUtils.bind(this,function(){y=!0;this.setDatabaseItem(".drawioMigrated3",!0);x.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),q=mxUtils.bind(this,function(){N++;E()}),E=mxUtils.bind(this,function(){try{if(N>=L.length)K();else{var B=L[N];StorageFile.getFileContent(this,B,mxUtils.bind(this,function(G){null==G||".scratchpad"==B&&G==this.emptyLibraryXml?x.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
funtionName:"getLocalStorageFile",functionArgs:[B]}),"*"):q()}),q)}}catch(G){console.log(G)}}),A=mxUtils.bind(this,function(B){try{this.setDatabaseItem(null,[{title:B.title,size:B.data.length,lastModified:Date.now(),type:B.isLib?"L":"F"},{title:B.title,data:B.data}],q,q,["filesInfo","files"])}catch(G){console.log(G)}});v=mxUtils.bind(this,function(B){try{if(B.source==x.contentWindow){var G={};try{G=JSON.parse(B.data)}catch(M){}"init"==G.event?(x.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
"*"),x.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=G.event||y||(z?null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?(L=G.resp[0],z=!1,E()):K():null!=G.resp&&0<G.resp.length&&null!=G.resp[0]?A(G.resp[0]):q())}}catch(M){console.log(M)}});window.addEventListener("message",v)}})));c(p);p.onversionchange=function(){p.close()}});k.onerror=e;k.onblocked=function(){}}catch(m){null!=e&&e(m)}else null!=e&&e()}else c(this.database)};
EditorUi.prototype.setDatabaseItem=function(c,e,g,k,m){this.openDatabase(mxUtils.bind(this,function(p){try{m=m||"objects";Array.isArray(m)||(m=[m],c=[c],e=[e]);var v=p.transaction(m,"readwrite");v.oncomplete=g;v.onerror=k;for(p=0;p<m.length;p++)v.objectStore(m[p]).put(null!=c&&null!=c[p]?{key:c[p],data:e[p]}:e[p])}catch(x){null!=k&&k(x)}}),k)};EditorUi.prototype.removeDatabaseItem=function(c,e,g,k){this.openDatabase(mxUtils.bind(this,function(m){k=k||"objects";Array.isArray(k)||(k=[k],c=[c]);m=m.transaction(k,
"readwrite");m.oncomplete=e;m.onerror=g;for(var p=0;p<k.length;p++)m.objectStore(k[p]).delete(c[p])}),g)};EditorUi.prototype.getDatabaseItem=function(c,e,g,k){this.openDatabase(mxUtils.bind(this,function(m){try{k=k||"objects";var p=m.transaction([k],"readonly").objectStore(k).get(c);p.onsuccess=function(){e(p.result)};p.onerror=g}catch(v){null!=g&&g(v)}}),g)};EditorUi.prototype.getDatabaseItems=function(c,e,g){this.openDatabase(mxUtils.bind(this,function(k){try{g=g||"objects";var m=k.transaction([g],
"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),p=[];m.onsuccess=function(v){null==v.target.result?c(p):(p.push(v.target.result.value),v.target.result.continue())};m.onerror=e}catch(v){null!=e&&e(v)}}),e)};EditorUi.prototype.getDatabaseItemKeys=function(c,e,g){this.openDatabase(mxUtils.bind(this,function(k){try{g=g||"objects";var m=k.transaction([g],"readonly").objectStore(g).getAllKeys();m.onsuccess=function(){c(m.result)};m.onerror=e}catch(p){null!=e&&e(p)}}),e)};EditorUi.prototype.commentsSupported=
function(){var c=this.getCurrentFile();return null!=c?c.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var c=this.getCurrentFile();return null!=c?c.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var c=this.getCurrentFile();return null!=c?c.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(c,e){var g=this.getCurrentFile();null!=g?g.getComments(c,e):c([])};EditorUi.prototype.addComment=function(c,e,g){var k=this.getCurrentFile();
null!=k?k.addComment(c,e,g):e(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var c=this.getCurrentFile();return null!=c?c.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var c=this.getCurrentFile();return null!=c?c.canComment():!0};EditorUi.prototype.newComment=function(c,e){var g=this.getCurrentFile();return null!=g?g.newComment(c,e):new DrawioComment(this,null,c,Date.now(),Date.now(),!1,e)};EditorUi.prototype.isRevisionHistorySupported=function(){var c=this.getCurrentFile();
return null!=c&&c.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(c,e){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(c,e):e({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var c=this.getCurrentFile();return null!=c&&(c.constructor==DriveFile&&c.isEditable()||c.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(c){c.setRequestHeader("Content-Language",
"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(c,e,g,k,m,p,v,x){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(c,e,g,k,m,p,v,x)};EditorUi.prototype.loadFonts=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(c)};EditorUi.prototype.createSvgDataUri=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(c)};EditorUi.prototype.embedCssFonts=function(c,e){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
return this.editor.embedCssFonts(c,e)};EditorUi.prototype.embedExtFonts=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(c)};EditorUi.prototype.exportToCanvas=function(c,e,g,k,m,p,v,x,z,y,L,N,K,q,E,A){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(c,e,g,k,m,p,v,x,z,y,L,N,K,q,E,A)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(c,e,g,k){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(c,e,g,k)};EditorUi.prototype.convertImageToDataUri=function(c,e){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(c,e)};EditorUi.prototype.base64Encode=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(c)};EditorUi.prototype.updateCRC=
function(c,e,g,k){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(c,e,g,k)};EditorUi.prototype.crc32=function(c){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(c)};EditorUi.prototype.writeGraphModelToPng=function(c,e,g,k,m){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(c,e,g,k,m)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var c=[],e=0;e<localStorage.length;e++){var g=localStorage.key(e),k=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<k.length){var m="<mxfile "===k.substring(0,8)||"<?xml"===k.substring(0,5)||"\x3c!--[if IE]>"===k.substring(0,12);k="<mxlibrary>"===k.substring(0,11);(m||k)&&c.push(g)}}return c};EditorUi.prototype.getLocalStorageFile=function(c){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
var e=localStorage.getItem(c);return{title:c,data:e,isLib:"<mxlibrary>"===e.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
d.executeLayouts(u.createLayouts(A));d.customLayoutConfig=A;d.hideDialog()}catch(B){d.handleError(B)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");d.showDialog(q.container,620,460,!0,!0);q.init()});k=this.get("layout");var x=k.funct;k.funct=function(q,E){x.apply(this,arguments);q.addItem(mxResources.get("orgChart"),null,function(){function A(){"undefined"!==typeof mxOrgChartLayout||d.loadingOrgChart||d.isOffline(!0)?F():d.spinner.spin(document.body,mxResources.get("loading"))&&
(d.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",F)})})}):mxscript("js/extensions.min.js",F))}var B=null,G=20,M=20,H=!0,F=function(){d.loadingOrgChart=!1;d.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=B&&H){var n=d.editor.graph,C=new mxOrgChartLayout(n,B,G,M),J=n.getDefaultParent();
1<n.model.getChildCount(n.getSelectionCell())&&(J=n.getSelectionCell());C.execute(J);H=!1}},I=document.createElement("div"),R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("orgChartType")+": ");I.appendChild(R);var W=document.createElement("select");W.style.width="200px";W.style.boxSizing="border-box";R=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),
mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")];for(var P=0;P<R.length;P++){var V=document.createElement("option");mxUtils.write(V,R[P]);V.value=P;2==P&&V.setAttribute("selected","selected");W.appendChild(V)}mxEvent.addListener(W,"change",function(){B=W.value});I.appendChild(W);R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("parentChildSpacing")+
": ");I.appendChild(R);var U=document.createElement("input");U.type="number";U.value=G;U.style.width="200px";U.style.boxSizing="border-box";I.appendChild(U);mxEvent.addListener(U,"change",function(){G=U.value});R=document.createElement("div");R.style.marginTop="6px";R.style.display="inline-block";R.style.width="140px";mxUtils.write(R,mxResources.get("siblingSpacing")+": ");I.appendChild(R);var X=document.createElement("input");X.type="number";X.value=M;X.style.width="200px";X.style.boxSizing="border-box";
I.appendChild(X);mxEvent.addListener(X,"change",function(){M=X.value});I=new CustomDialog(d,I,function(){null==B&&(B=2);A()});d.showDialog(I.container,355,140,!0,!0)},E,null,t());q.addSeparator(E);q.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var A=new mxParallelEdgeLayout(u);A.checkOverlap=!0;d.prompt(mxResources.get("spacing"),A.spacing,mxUtils.bind(this,function(B){A.spacing=B;d.executeLayout(function(){A.execute(u.getDefaultParent(),u.isSelectionEmpty()?null:u.getSelectionCells())},
!1)}))}),E);q.addSeparator(E);d.menus.addMenuItem(q,"runLayout",E,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(q,E){if(!mxClient.IS_CHROMEAPP&&d.isOffline())this.addMenuItems(q,["about"],E);else{var A=q.addItem("Search:",null,null,E,null,null,!1);A.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";A.style.cursor="default";var B=document.createElement("input");B.setAttribute("type","text");B.setAttribute("size","25");B.style.marginLeft=
"8px";mxEvent.addListener(B,"keydown",mxUtils.bind(this,function(G){var M=mxUtils.trim(B.value);13==G.keyCode&&0<M.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(M)),B.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:M}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==G.keyCode&&(B.value="")}));A.firstChild.nextSibling.appendChild(B);
mxEvent.addGestureListeners(B,function(G){document.activeElement!=B&&B.focus();mxEvent.consume(G)},function(G){mxEvent.consume(G)},function(G){mxEvent.consume(G)});window.setTimeout(function(){B.focus()},0);EditorUi.isElectronApp?(d.actions.addAction("website...",function(){d.openLink("https://www.diagrams.net")}),d.actions.addAction("check4Updates",function(){d.checkForUpdates()}),this.addMenuItems(q,"- keyboardShortcuts quickStart website support -".split(" "),E),"1"!=urlParams.disableUpdate&&this.addMenuItems(q,
["check4Updates","-"],E),this.addMenuItems(q,["forkme","-","about"],E)):this.addMenuItems(q,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),E)}"1"==urlParams.test&&(q.addSeparator(E),this.addSubmenu("testDevelop",q,E))})));mxResources.parse("diagramLanguage=Diagram Language");d.actions.addAction("diagramLanguage...",function(){var q=prompt("Language Code",Graph.diagramLanguage||"");null!=q&&(Graph.diagramLanguage=0<q.length?q:null,u.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");
X){"1"==urlParams.sketch?(A.insertTemplateEnabled&&!A.isOffline()&&A.menus.addMenuItems(U,["insertTemplate"],X),A.menus.addMenuItems(U,["insertImage","insertLink","-"],X),A.menus.addSubmenu("insertAdvanced",U,X,mxResources.get("advanced")),A.menus.addSubmenu("layout",U,X)):(V.apply(this,arguments),A.menus.addSubmenu("table",U,X))}})();var R="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),W=function(P,V,U,X){P.addItem(U,null,mxUtils.bind(this,function(){var n=
new CreateGraphDialog(A,U,X);A.showDialog(n.container,620,420,!0,!1);n.init()}),V)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(P,V){for(var U=0;U<R.length;U++)"-"==R[U]?P.addSeparator(V):W(P,V,mxResources.get(R[U])+"...",R[U])})))};EditorUi.prototype.installFormatToolbar=function(A){var B=this.editor.graph,G=document.createElement("div");G.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
function Dialog(b,e,k,n,D,t,E,d,f,g,m){var q=f?57:0,y=k,F=n,C=f?0:64,H=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(H.height=window.innerHeight);var G=H.height,aa=Math.max(1,Math.round((H.width-k-C)/2)),da=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=da+14+"px",t.style.left=aa+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!m)){var Y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Y=!0}),null,mxUtils.bind(this,function(qa){Y&&(b.hideDialog(!0),Y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
var ErrorDialog=function(b,e,k,n,D,t,E,d,f,g,m){f=null!=f?f:!0;var q=document.createElement("div");q.style.textAlign="center";if(null!=e){var y=document.createElement("div");y.style.padding="0px";y.style.margin="0px";y.style.fontSize="18px";y.style.paddingBottom="16px";y.style.marginBottom="10px";y.style.borderBottom="1px solid #c0c0c0";y.style.color="gray";y.style.whiteSpace="nowrap";y.style.textOverflow="ellipsis";y.style.overflow="hidden";mxUtils.write(y,e);y.setAttribute("title",e);q.appendChild(y)}e=
document.createElement("div");e.style.lineHeight="1.2em";e.style.padding="6px";e.innerHTML=k;q.appendChild(e);k=document.createElement("div");k.style.marginTop="12px";k.style.textAlign="center";null!=t&&(e=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();t()}),e.className="geBtn",k.appendChild(e),k.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=m&&m()}),g.className="geBtn",k.appendChild(g));var F=mxUtils.button(n,function(){f&&b.hideDialog();null!=D&&D()});
PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,H=parseInt(q.value)/100;isNaN(H)&&(H=1,q.value="100%");H*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,aa=1/k.pageScale;if(C){var da=E.checked?1:parseInt(m.value);isNaN(da)||(aa=mxUtils.getScaleForPageCount(da,k,G))}k.getGraphBounds();var ba=da=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*H);G.height=Math.ceil(G.height*H);aa*=H;!C&&k.pageVisible?(H=k.getPageLayout(),da-=H.x*G.width,ba-=H.y*
d.appendChild(f);mxEvent.addListener(f,"click",function(F){g.checked=!g.checked;E.checked=!g.checked;mxEvent.consume(F)});t.appendChild(d);var m=document.createElement("input");m.setAttribute("value","1");m.setAttribute("type","number");m.setAttribute("min","1");m.setAttribute("size","4");m.setAttribute("disabled","disabled");m.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(m);mxUtils.write(d," "+mxResources.get("pages")+" (max)");t.appendChild(d);D.appendChild(t);
mxEvent.addListener(g,"change",function(){g.checked?m.removeAttribute("disabled"):m.setAttribute("disabled","disabled");E.checked=!g.checked});t=t.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");t.appendChild(d);d=document.createElement("td");var q=document.createElement("input");q.setAttribute("value","100 %");q.setAttribute("size","5");q.style.width="50px";d.appendChild(q);t.appendChild(d);D.appendChild(t);t=document.createElement("tr");d=document.createElement("td");
var PageSetupDialog=function(b){function e(){null==m||m==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=m,g.style.backgroundImage="")}function k(){var G=C;null!=G&&Graph.isPageLink(G.src)&&(G=b.createImageForPageLink(G.src,null));null!=G&&null!=G.src?(F.setAttribute("src",G.src),F.style.display=""):(F.removeAttribute("src"),F.style.display="none")}var n=b.editor.graph,D=document.createElement("table");D.style.width=
mxUtils.write(d,mxResources.get("background")+":");E.appendChild(d);d=document.createElement("td");d.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="22px";g.style.height="22px";g.style.cursor="pointer";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(g.style.position="relative",g.style.top="-6px");var m=n.background;e();mxEvent.addListener(g,
"click",function(G){b.pickColor(m||"none",function(aa){m=aa;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
"geBtn";b.editor.cancelFirst&&d.appendChild(y);H=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var G=parseInt(q.value);isNaN(G)||n.gridSize===G||n.setGridSize(G);G=new ChangePageSetup(b,m,C,f.get());G.ignoreColor=n.background==m;G.ignoreImage=(null!=n.backgroundImage?n.backgroundImage.src:null)===(null!=C?C.src:null);n.pageFormat.width==G.previousFormat.width&&n.pageFormat.height==G.previousFormat.height&&G.ignoreColor&&G.ignoreImage||n.model.execute(G)});H.className="geBtn gePrimaryBtn";
X.format.width&&k.height==X.format.height?(d.value=X.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==X.format.height&&k.height==X.format.width&&(d.value=X.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",m.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
"checked"),d.value="custom",f.style.display="none",m.style.display="")}}e="format-"+e;var t=document.createElement("input");t.setAttribute("name",e);t.setAttribute("type","radio");t.setAttribute("value","portrait");var E=document.createElement("input");E.setAttribute("name",e);E.setAttribute("type","radio");E.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";
var f=document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";t.style.marginRight="6px";f.appendChild(t);e=document.createElement("span");e.style.maxWidth="100px";mxUtils.write(e,mxResources.get("portrait"));f.appendChild(e);E.style.marginLeft="10px";E.style.marginRight="6px";f.appendChild(E);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));f.appendChild(g);var m=document.createElement("div");m.style.marginLeft=
"4px";m.style.width="210px";m.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";m.appendChild(q);mxUtils.write(m," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";m.appendChild(y);mxUtils.write(m," in");f.style.display="none";m.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),H=0;H<C.length;H++){var G=C[H];F[G.key]=G;var aa=document.createElement("option");aa.setAttribute("value",
G.key);mxUtils.write(aa,G.title);d.appendChild(aa)}var da=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(m);var ba=k,Y=function(qa,O){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,m.style.display="none",f.style.display=""):(f.style.display="none",m.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
var FilenameDialog=function(b,e,k,n,D,t,E,d,f,g,m,q){f=null!=f?f:!0;var y=document.createElement("table"),F=document.createElement("tbody");y.style.position="absolute";y.style.top="30px";y.style.left="20px";var C=document.createElement("tr");var H=document.createElement("td");H.style.textOverflow="ellipsis";H.style.textAlign="right";H.style.maxWidth="100px";H.style.fontSize="10pt";H.style.width="84px";mxUtils.write(H,(D||mxResources.get("filename"))+":");C.appendChild(H);var G=document.createElement("input");
Y.stopPropagation();Y.preventDefault()}))}}};H=document.createElement("td");H.style.whiteSpace="nowrap";H.appendChild(G);C.appendChild(H);if(null!=D||null==E)F.appendChild(C),null!=m&&(H.appendChild(FilenameDialog.createTypeHint(b,G,m)),null!=b.editor.diagramFileTypes&&(C=document.createElement("tr"),H=document.createElement("td"),H.style.textOverflow="ellipsis",H.style.textAlign="right",H.style.maxWidth="100px",H.style.fontSize="10pt",H.style.width="84px",mxUtils.write(H,mxResources.get("type")+
2;H.style.paddingTop=null!=m?"12px":"20px";H.style.whiteSpace="nowrap";H.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});m.className="geBtn";b.editor.cancelFirst&&H.appendChild(m);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",H.appendChild(q));mxEvent.addListener(G,"keypress",function(da){13==da.keyCode&&aa.click()});H.appendChild(aa);b.editor.cancelFirst||H.appendChild(m);
mxGraphView.prototype.validateBackgroundStyles=function(){var E=this.graph,d=null==E.background||E.background==mxConstants.NONE?E.defaultPageBackgroundColor:E.background,f=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",g="none",m="";if(E.isGridEnabled()||E.gridVisible){m=10;mxClient.IS_SVG?(g=unescape(encodeURIComponent(this.createSvgGrid(f))),g=window.btoa?btoa(g):Base64.encode(g,!0),g="url(data:image/svg+xml;base64,"+g+")",m=E.gridSize*this.scale*this.gridSteps):g="url("+this.gridImage+
")";var q=f=0;null!=E.view.backgroundPageShape&&(q=this.getBackgroundPageBounds(),f=1+q.x,q=1+q.y);m=-Math.round(m-mxUtils.mod(this.translate.x*this.scale-f,m))+"px "+-Math.round(m-mxUtils.mod(this.translate.y*this.scale-q,m))+"px"}f=E.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);null!=E.view.backgroundPageShape?(E.view.backgroundPageShape.node.style.backgroundPosition=m,E.view.backgroundPageShape.node.style.backgroundImage=g,E.view.backgroundPageShape.node.style.backgroundColor=d,E.view.backgroundPageShape.node.style.borderColor=
E.defaultPageBorderColor,E.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(E.container.className="geDiagramContainer",f.style.backgroundPosition=m,f.style.backgroundColor=d,f.style.backgroundImage=g)};mxGraphView.prototype.createSvgGrid=function(E){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,g=[],m=1;m<this.gridSteps;m++){var q=m*d;g.push("M 0 "+q+" L "+f+" "+q+" M "+q+" 0 L "+q+
if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps;g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+E,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";f.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.view.scale,m=this.view.translate,q=this.pageFormat,y=g*this.pageScale,F=this.view.getBackgroundPageBounds();
d=F.width;f=F.height;var C=new mxRectangle(g*m.x,g*m.y,q.width*y,q.height*y),H=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,aa=F.x+d,da=F.y+f;null==this.horizontalPageBreaks&&0<H&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(ba){if(null!=ba){for(var Y=ba==this.horizontalPageBreaks?H:G,qa=0;qa<=Y;qa++){var O=ba==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
E(this.horizontalPageBreaks);E(this.verticalPageBreaks)};var e=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(E,d,f){for(var g=0;g<d.length;g++){if(this.graph.isTableCell(d[g])||this.graph.isTableRow(d[g]))return!1;if(this.graph.getModel().isVertex(d[g])){var m=this.graph.getCellGeometry(d[g]);if(null!=m&&m.relative)return!1}}return e.apply(this,arguments)};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=
m=this.graph.pageScale,q=g.width*m;g=g.height*m;m=Math.floor(Math.min(0,d)/q);var y=Math.floor(Math.min(0,f)/g);return new mxRectangle(this.scale*(this.translate.x+m*q),this.scale*(this.translate.y+y*g),this.scale*(Math.ceil(Math.max(1,d+E.width/this.scale)/q)-m)*q,this.scale*(Math.ceil(Math.max(1,f+E.height/this.scale)/g)-y)*g)};var n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){n.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=E+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var D=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(E,d,f,g,m,q){var y=D.apply(this,arguments);null==q||q||mxEvent.addListener(y,"mousedown",function(F){mxEvent.consume(F)});return y};var t=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(E,d,f){var g=this.graph.model.getParent(E);if(d){var m=this.graph.model.isEdge(E)?null:this.graph.getCellGeometry(E);m=!this.graph.model.isEdge(g)&&!this.graph.isSiblingSelected(E)&&(null!=m&&m.relative||!this.graph.isContainer(g)||this.graph.isPart(E))}else if(m=t.apply(this,arguments),this.graph.isTableCell(E)||this.graph.isTableRow(E))m=g,this.graph.isTable(m)||(m=this.graph.model.getParent(m)),m=!this.graph.selectionCellsHandler.isHandled(m)||this.graph.isCellSelected(m)&&this.graph.isToggleEvent(f.getEvent())||
this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return m};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),m=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);m=m||q;if(q||!m&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var I=D.apply(this,arguments),V=this.backgroundImage;if(null!=V&&null!=V.width&&null!=V.height){var Q=this.view.translate,R=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((Q.x+V.x)*R,(Q.y+V.y)*R,V.width*R,V.height*R))}return I};n.useCssTransforms&&(this.lazyZoomDelay=
n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),m=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(I,V,Q,R,fa,la,ra){R=null!=R?R:n.currentVertexStyle;fa=null!=fa?fa:n.currentEdgeStyle;la=null!=la?la:!0;Q=null!=Q?Q:n.getModel();if(ra){ra=[];for(var u=0;u<I.length;u++)ra=ra.concat(Q.getDescendants(I[u]));I=ra}Q.beginUpdate();try{for(u=0;u<I.length;u++){var J=I[u];if(V)var N=["fontSize",
"fontFamily","fontColor"];else{var W=Q.getStyle(J),S=null!=W?W.split(";"):[];N=t.slice();for(var P=0;P<S.length;P++){var Z=S[P],oa=Z.indexOf("=");if(0<=oa){var va=Z.substring(0,oa),Aa=mxUtils.indexOf(N,va);0<=Aa&&N.splice(Aa,1);for(ra=0;ra<m.length;ra++){var sa=m[ra];if(0<=mxUtils.indexOf(sa,va))for(var Ba=0;Ba<sa.length;Ba++){var ta=mxUtils.indexOf(N,sa[Ba]);0<=ta&&N.splice(ta,1)}}}}}var Na=Q.isEdge(J);ra=Na?fa:R;var Ca=Q.getStyle(J);for(P=0;P<N.length;P++){va=N[P];var Qa=ra[va];null!=Qa&&"edgeStyle"!=
EditorUi.prototype.updateSelectionStateForTableCells=function(b){if(1<b.cells.length&&b.cell){for(var e=mxUtils.sortCells(b.cells),k=this.editor.graph.model,n=k.getParent(e[0]),D=k.getParent(n),t=n.getIndex(e[0]),E=D.getIndex(n),d=null,f=1,g=1,m=0,q=E<D.getChildCount()-1?k.getChildAt(k.getChildAt(D,E+1),t):null;m<e.length-1;){var y=e[++m];null==q||q!=y||null!=d&&f!=d||(d=f,f=0,g++,n=k.getParent(q),q=E+g<D.getChildCount()?k.getChildAt(k.getChildAt(D,E+g),t):null);var F=this.editor.graph.view.getState(y);
if(y==k.getChildAt(n,t+f)&&null!=F&&1==mxUtils.getValue(F.style,"colspan",1)&&1==mxUtils.getValue(F.style,"rowspan",1))f++;else break}m==g*f-1&&(b.mergeCell=e[0],b.colspan=f,b.rowspan=g)}};
b.popupMenuHandler.isMenuShowing=function(){return n.apply(this,arguments)||null!=e.shapePicker};var D=b.dblClick;b.dblClick=function(f,g){if(this.isEnabled())if(null!=g||null==e.sidebar||mxEvent.isShiftDown(f)||b.isCellLocked(b.getDefaultParent()))D.apply(this,arguments);else{var m=mxUtils.convertPoint(this.container,mxEvent.getClientX(f),mxEvent.getClientY(f));mxEvent.consume(f);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.x,m.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
k);var t=this.hoverIcons.drag;this.hoverIcons.drag=function(){e.hideShapePicker();t.apply(this,arguments)};var E=this.hoverIcons.execute;this.hoverIcons.execute=function(f,g,m){var q=m.getEvent();this.graph.isCloneEvent(q)||mxEvent.isShiftDown(q)?E.apply(this,arguments):this.graph.connectVertex(f.cell,g,this.graph.defaultEdgeLength,q,null,null,mxUtils.bind(this,function(y,F,C){var H=b.getCompositeParent(f.cell);y=b.getCellGeometry(H);for(m.consume();null!=H&&b.model.isVertex(H)&&null!=y&&y.relative;)cell=
H,H=b.model.getParent(cell),y=b.getCellGeometry(H);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.getGraphX(),m.getGraphY(),H,mxUtils.bind(this,function(G){C(G);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(G))}),g)}),30)}),mxUtils.bind(this,function(y){this.graph.selectCellsForConnectVertex(y,q,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d);d=window.setTimeout(mxUtils.bind(this,function(){var m=
g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");m=m.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+m.x-F.x;F=b.container.scrollTop+m.y-F.y;var H=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,H,mxUtils.bind(this,function(aa){null!=aa&&b.connectVertex(H,q,b.defaultEdgeLength,y,!0,!0,function(da,ba,Y){Y(aa);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(aa))},
function(da){b.selectCellsForConnectVertex(da)},y,this.hoverIcons)}),q,!0);this.centerShapePicker(G,m,C,F,q);mxUtils.setOpacity(G,30);mxEvent.addListener(G,"mouseenter",function(){mxUtils.setOpacity(G,100)});mxEvent.addListener(G,"mouseleave",function(){e.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d)}))}};
EditorUi.prototype.createShapePicker=function(b,e,k,n,D,t,E,d){var f=null;if(null!=E&&0<E.length){var g=this,m=this.editor.graph;f=document.createElement("div");D=m.view.getState(k);var q=null==k||null!=D&&m.isTransparentState(D)?null:m.copyStyle(k);k=6>E.length?35*E.length:140;f.className="geToolbarContainer geSidebarContainer";f.style.cssText="position:absolute;left:"+b+"px;top:"+e+"px;width:"+k+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(f.style,"transform","translate(-22px,-22px)");null!=m.background&&m.background!=mxConstants.NONE&&(f.style.backgroundColor=m.background);m.container.appendChild(f);k=mxUtils.bind(this,function(y){var F=document.createElement("a");F.className="geItem";F.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";f.appendChild(F);null!=q&&"1"!=urlParams.sketch?
this.sidebar.graph.pasteStyle(q,[y]):g.insertHandler([y],""!=y.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([y],25,25,F,null,!0,!1,y.geometry.width,y.geometry.height);mxEvent.addListener(F,"click",function(){var C=m.cloneCell(y);if(null!=n)n(C);else{C.geometry.x=m.snap(Math.round(b/m.view.scale)-m.view.translate.x-y.geometry.width/2);C.geometry.y=m.snap(Math.round(e/m.view.scale)-m.view.translate.y-y.geometry.height/2);m.model.beginUpdate();try{m.addCell(C)}finally{m.model.endUpdate()}m.setSelectionCell(C);
m.scrollCellToVisible(C);m.startEditingAtCell(C);null!=g.hoverIcons&&g.hoverIcons.update(m.view.getState(C))}null!=t&&t()})});for(D=0;D<(d?Math.min(E.length,4):E.length);D++)k(E[D]);E=f.offsetTop+f.clientHeight-(m.container.scrollTop+m.container.offsetHeight);0<E&&(f.style.top=Math.max(m.container.scrollTop+22,e-E)+"px");E=f.offsetLeft+f.clientWidth-(m.container.scrollLeft+m.container.offsetWidth);0<E&&(f.style.left=Math.max(m.container.scrollLeft+22,b-E)+"px")}return f};
EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipboard.cut=function(t){t.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):e.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(t){var E=null;if(t.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{E=E||t.getSelectionCells();E=t.getExportableCells(t.model.getTopmostCells(E));for(var d={},f=t.createCellLookup(E),g=t.cloneCells(E,null,d),m=new mxGraphModel,q=m.getChildAt(m.getRoot(),
0),y=0;y<g.length;y++){m.add(q,g[y]);var F=t.view.getState(E[y]);if(null!=F){var C=t.getCellGeometry(g[y]);null!=C&&C.relative&&!m.isEdge(E[y])&&null==f[mxObjectIdentity.get(m.getParent(E[y]))]&&(C.offset=null,C.relative=!1,C.x=F.x/F.view.scale-F.view.translate.x,C.y=F.y/F.view.scale-F.view.translate.y)}}t.updateCustomLinks(t.createCellMapping(d,f),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return E};var k=mxClipboard.paste;mxClipboard.paste=function(t){var E=
this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(Q){this.actions.get("nextPage").funct();mxEvent.consume(Q)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerHTML="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(Q){this.actions.get("zoomOut").funct();mxEvent.consume(Q)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){this.actions.get("zoomIn").funct();
EditorUi.prototype.addSplitHandler=function(b,e,k,n){function D(q){if(null!=E){var y=new mxPoint(mxEvent.getClientX(q),mxEvent.getClientY(q));n(Math.max(0,d+(e?y.x-E.x:E.y-y.y)-k));mxEvent.consume(q);d!=m()&&(f=!0,g=null)}}function t(q){D(q);E=d=null}var E=null,d=null,f=!0,g=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var m=mxUtils.bind(this,function(){var q=parseInt(e?b.style.left:b.style.bottom);e||(q=q+k-this.footerHeight);return q});mxEvent.addGestureListeners(b,function(q){E=new mxPoint(mxEvent.getClientX(q),
mxEvent.getClientY(q));d=m();f=!1;mxEvent.consume(q)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(q){if(!f&&this.hsplitClickEnabled){var y=null!=g?g-k:0;g=m();n(y);mxEvent.consume(q)}}));mxEvent.addGestureListeners(document,null,D,t);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,D,t)})};
EditorUi.prototype.prompt=function(b,e,k){b=new FilenameDialog(this,e,mxResources.get("apply"),function(n){k(parseFloat(n))},b);this.showDialog(b.container,300,80,!0,!0);b.init()};
EditorUi.prototype.showError=function(b,e,k,n,D,t,E,d,f,g,m,q,y){b=new ErrorDialog(this,b,e,k||mxResources.get("ok"),n,D,t,E,q,d,f);e=Math.ceil(null!=e?e.length/50:1);this.showDialog(b.container,g||340,m||100+20*e,!0,!1,y);b.init()};EditorUi.prototype.showDialog=function(b,e,k,n,D,t,E,d,f,g){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,e,k,n,D,t,E,d,f,g);this.dialogs.push(this.dialog)};
0<=d&&d<E.length-3&&(E=E.substring(0,d+3))}catch(m){}try{var f=t.getElementsByTagName("span"),g=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(E);this.isCompatibleString(g)&&(E=g)}catch(m){}}catch(m){}b(this.isCompatibleString(E)?E:null)}))["catch"](function(D){b(null)})}))["catch"](function(n){b(null)});else if(null!=k&&0<k.length&&"text"==e&&0<=mxUtils.indexOf(k[0].types,"text/plain"))k[0].getType("text/plain").then(function(n){n.text().then(function(D){b(D)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
EditorUi.prototype.executeLayouts=function(b,e){this.executeLayout(mxUtils.bind(this,function(){var k=new mxCompositeLayout(this.editor.graph,b),n=this.editor.graph.getSelectionCells();k.execute(this.editor.graph.getDefaultParent(),0==n.length?null:n)}),!0,e)};
mxUtils.bind(this,function(q,y,F,C){var H=this.actions.get(F);null!=H&&(F=function(){H.isEnabled()&&H.funct()},y?C?D.bindControlShiftKey(q,F):D.bindControlKey(q,F):C?D.bindShiftKey(q,F):D.bindKey(q,F))});var g=this,m=D.escape;D.escape=function(q){m.apply(this,arguments)};D.enter=function(){};D.bindControlShiftKey(36,function(){n.exitGroup()});D.bindControlShiftKey(35,function(){n.enterGroup()});D.bindShiftKey(36,function(){n.home()});D.bindKey(35,function(){n.refresh()});D.bindAction(107,!0,"zoomIn");
arguments[2])}var d=Number(D.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),k);for(var f=e(this)?Object(new this(d)):Array(d),g=0,m;g<d;)m=D[g],f[g]=t?"undefined"===typeof E?t(m,g):t.call(E,m,g):m,g+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,V){if("mouseDown"==V.getProperty("eventName")&&this.isEnabled()){I=V.getProperty("event");var Q=I.getState();V=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=Q)if(this.model.isEdge(Q.cell))if(E=new mxPoint(I.getGraphX(),I.getGraphY()),m=this.isCellSelected(Q.cell),f=Q,d=I,null!=Q.text&&null!=
V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var fa=this.selectionCellsHandler.getHandler(Q.cell);null==fa&&this.model.isEdge(Q.cell)&&(fa=this.createHandler(Q));if(null!=fa&&null!=fa.bends&&0<fa.bends.length){I=fa.getHandleForEvent(d);var la=this.view.getEdgeStyle(Q);R=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(I=g);if(R&&0!=I&&I!=fa.bends.length-1&&I!=mxEvent.LABEL_HANDLE)!R||null==Q.visibleSourceState&&null==Q.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(I==
m=!1;E=d=f=g=null}}else if(Q=V.getState(),null!=Q&&this.isCellEditable(Q.cell)){fa=null;if(this.model.isEdge(Q.cell)){if(I=new mxRectangle(V.getGraphX(),V.getGraphY()),I.grow(mxEdgeHandler.prototype.handleImage.width/2),R=Q.absolutePoints,null!=R)if(null!=Q.text&&null!=Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,V.getGraphX(),V.getGraphY()))fa="move";else if(mxUtils.contains(I,R[0].x,R[0].y)||mxUtils.contains(I,R[R.length-1].x,R[R.length-1].y))fa="pointer";else if(null!=Q.visibleSourceState||
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
Graph.sanitizeHtml=function(b,e){return Graph.domPurify(b,!1)};Graph.sanitizeLink=function(b){var e=document.createElement("a");e.setAttribute("href",b);Graph.sanitizeNode(e);return e.getAttribute("href")};Graph.sanitizeNode=function(b){return Graph.domPurify(b,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(b){"use"==b.nodeName&&b.hasAttribute("xlink:href")&&!b.getAttribute("xlink:href").match(/^#/)&&b.remove()});
Graph.clipSvgDataUri=function(b,e){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var k=document.createElement("div");k.style.position="absolute";k.style.visibility="hidden";var n=decodeURIComponent(escape(atob(b.substring(26)))),D=n.indexOf("<svg");if(0<=D){k.innerHTML=Graph.sanitizeHtml(n.substring(D));var t=k.getElementsByTagName("svg");if(0<t.length){if(e||null!=t[0].getAttribute("preserveAspectRatio")){document.body.appendChild(k);try{n=e=
1;var E=t[0].getAttribute("width"),d=t[0].getAttribute("height");E=null!=E&&"%"!=E.charAt(E.length-1)?parseFloat(E):NaN;d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN;var f=t[0].getAttribute("viewBox");if(null!=f&&!isNaN(E)&&!isNaN(d)){var g=f.split(" ");4<=f.length&&(e=parseFloat(g[2])/E,n=parseFloat(g[3])/d)}var m=t[0].getBBox();0<m.width&&0<m.height&&(k.getElementsByTagName("svg")[0].setAttribute("viewBox",m.x+" "+m.y+" "+m.width+" "+m.height),k.getElementsByTagName("svg")[0].setAttribute("width",
m.width/e),k.getElementsByTagName("svg")[0].setAttribute("height",m.height/n))}catch(q){}finally{document.body.removeChild(k)}}b=Editor.createSvgDataUri(mxUtils.getXml(t[0]))}}}catch(q){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(k,n){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var D=k.view.graph.tolerance,t=!0,E=null,d=mxUtils.bind(this,function(m){t=!0;E=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m))}),f=mxUtils.bind(this,function(m){t=t&&null!=E&&Math.abs(E.x-mxEvent.getClientX(m))<D&&Math.abs(E.y-mxEvent.getClientY(m))<D}),g=mxUtils.bind(this,function(m){if(t)for(var q=mxEvent.getSource(m);null!=
q&&q!=n.node;){if("a"==q.nodeName.toLowerCase()){k.view.graph.labelLinkClicked(k,q,m);break}q=q.parentNode}});mxEvent.addGestureListeners(n.node,d,f,g);mxEvent.addListener(n.node,"click",function(m){mxEvent.consume(m)})};if(null!=this.tooltipHandler){var e=this.tooltipHandler.init;this.tooltipHandler.init=function(){e.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(k){var n=mxEvent.getSource(k);"A"==n.nodeName&&(n=n.getAttribute("href"),null!=
d,0==f)}return d};Graph.prototype.mergeStyle=function(E,d,f){if(null!=E){var g={},m;for(m in E){var q=E[m];null!=q&&(g[m]=!0,null==d[m]&&f?d[m]=q:d[m]!=q&&delete d[m])}for(m in d)g[m]||delete d[m]}};Graph.prototype.getStartEditingCell=function(E,d){d=this.getCellStyle(E);d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(E)&&(!this.isSwimlane(E)||0==d)&&""==this.getLabel(E)&&0<this.model.getChildCount(E)&&(E=this.model.getChildAt(E,0),d=this.getCellStyle(E),d=parseInt(mxUtils.getValue(d,
function(E,d){this.model.beginUpdate();try{for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var g=this.getCellStyle(d[f],!1),m;for(m in E){var q=E[m];g[m]!=q&&this.setCellStyles(m,q,[d[f]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==
mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(E,d,f,g,m,q){this.useCssTransforms&&(E=E/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(E,d,f,g,m,q){g=null!=g?g:!0;m=null!=m?m:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var y=this.model.getChildCount(f)-1;0<=
y;y--){var F=this.model.getChildAt(f,y),C=this.getScaledCellAt(E,d,F,g,m,q);if(null!=C)return C;if(this.isCellVisible(F)&&(m&&this.model.isEdge(F)||g&&this.model.isVertex(F))&&(C=this.view.getState(F),null!=C&&(null==q||!q(C,E,d))&&this.intersects(C,E,d)))return F}return null};Graph.prototype.isRecursiveVertexResize=function(E){return!this.isSwimlane(E.cell)&&0<this.model.getChildCount(E.cell)&&!this.isCellCollapsed(E.cell)&&"1"==mxUtils.getValue(E.style,"recursiveResize","1")&&null==mxUtils.getValue(E.style,
"childLayout",null)};Graph.prototype.getAbsoluteParent=function(E){for(var d=this.getCellGeometry(E);null!=d&&d.relative;)E=this.getModel().getParent(E),d=this.getCellGeometry(E);return E};Graph.prototype.isPart=function(E){return"1"==mxUtils.getValue(this.getCurrentCellStyle(E),"part","0")||this.isTableCell(E)||this.isTableRow(E)};Graph.prototype.getCompositeParents=function(E){for(var d=new mxDictionary,f=[],g=0;g<E.length;g++){var m=this.getCompositeParent(E[g]);this.isTableCell(m)&&(m=this.graph.model.getParent(m));
this.isTableRow(m)&&(m=this.graph.model.getParent(m));null==m||d.get(m)||(d.put(m,!0),f.push(m))}return f};Graph.prototype.getCompositeParent=function(E){for(;this.isPart(E);){var d=this.model.getParent(E);if(!this.model.isVertex(d))break;E=d}return E};Graph.prototype.filterSelectionCells=function(E){var d=this.getSelectionCells();if(null!=E){for(var f=[],g=0;g<d.length;g++)E(d[g])||f.push(d[g]);d=f}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(E){if(this.useCssTransforms){var d=
mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.useCssTransforms,m=this.view.scale,q=this.view.translate;g&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);t.apply(this,arguments);g&&(this.view.scale=m,this.view.translate=q,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),e;if("circleLayout"==b.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==b.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==b.childLayout)return new TableLayout(this.graph);if(null!=b.childLayout&&"["==b.childLayout.charAt(0))try{return new mxCompositeLayout(this.graph,this.graph.createLayouts(JSON.parse(b.childLayout)))}catch(n){null!=window.console&&console.error(n)}}return null}};
Graph.prototype.createLayouts=function(b){for(var e=[],k=0;k<b.length;k++)if(0<=mxUtils.indexOf(Graph.layoutNames,b[k].layout)){var n=new window[b[k].layout](this);if(null!=b[k].config)for(var D in b[k].config)n[D]=b[k].config[D];e.push(n)}else throw Error(mxResources.get("invalidCallFnNotFound",[b[k].layout]));return e};
Graph.prototype.createEdgeWipeAnimation=function(b,e){var k=b.absolutePoints.slice(),n=b.segments,D=b.length,t=k.length;return{execute:mxUtils.bind(this,function(E,d){if(null!=b.shape){var f=[k[0]];d=E/d;e||(d=1-d);for(var g=D*d,m=1;m<t;m++)if(g<=n[m-1]){f.push(new mxPoint(k[m-1].x+(k[m].x-k[m-1].x)*g/n[m-1],k[m-1].y+(k[m].y-k[m-1].y)*g/n[m-1]));break}else g-=n[m-1],f.push(k[m]);b.shape.points=f;b.shape.redraw();0==E&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
/\d/.test(b)||(e=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");e=String(n.masks[e]||e||n.masks["default"]);"UTC:"==e.slice(0,4)&&(e=e.slice(4),k=!0);var d=k?"getUTC":"get",f=b[d+"Date"](),g=b[d+"Day"](),m=b[d+"Month"](),q=b[d+"FullYear"](),y=b[d+"Hours"](),F=b[d+"Minutes"](),C=b[d+"Seconds"]();d=b[d+"Milliseconds"]();var H=k?0:b.getTimezoneOffset(),G={d:f,dd:E(f),ddd:n.i18n.dayNames[g],dddd:n.i18n.dayNames[g+7],m:m+1,mm:E(m+1),mmm:n.i18n.monthNames[m],mmmm:n.i18n.monthNames[m+
Graph.prototype.createLayersDialog=function(b,e){var k=document.createElement("div");k.style.position="absolute";for(var n=this.getModel(),D=n.getChildCount(n.root),t=0;t<D;t++)mxUtils.bind(this,function(E){function d(){n.isVisible(E)?(m.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(m.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var f=this.convertValueToString(E)||mxResources.get("background")||"Background",g=document.createElement("div");g.style.overflow=
"hidden";g.style.textOverflow="ellipsis";g.style.padding="2px";g.style.whiteSpace="nowrap";g.style.cursor="pointer";g.setAttribute("title",mxResources.get(n.isVisible(E)?"hideIt":"show",[f]));var m=document.createElement("img");m.setAttribute("draggable","false");m.setAttribute("align","absmiddle");m.setAttribute("border","0");m.style.position="relative";m.style.width="16px";m.style.padding="0px 6px 0 4px";e&&(m.style.filter="invert(100%)",m.style.top="-2px");g.appendChild(m);mxUtils.write(g,f);k.appendChild(g);
Graph.prototype.connectVertex=function(b,e,k,n,D,t,E,d){t=t?t:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),g=f?b:this.getCompositeParent(b),m=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);e==mxConstants.DIRECTION_NORTH?(m.x+=g.geometry.width/2,m.y-=k):e==
mxConstants.DIRECTION_SOUTH?(m.x+=g.geometry.width/2,m.y+=g.geometry.height+k):(m.x=e==mxConstants.DIRECTION_WEST?m.x-k:m.x+(g.geometry.width+k),m.y+=g.geometry.height/2);var q=this.view.getState(this.model.getParent(b));k=this.view.scale;var y=this.view.translate;g=y.x*k;y=y.y*k;null!=q&&this.model.isVertex(q.cell)&&(g=q.x,y=q.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(m.x+=b.parent.geometry.x,m.y+=b.parent.geometry.y);t=t?null:(new mxRectangle(g+m.x*k,y+m.y*k)).grow(40*k);t=null!=t?
!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;aa&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?m.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=b.geometry.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-b.geometry.width/2:m.x+b.geometry.width/2);var da=[],ba=C;C=F;D=mxUtils.bind(this,function(Y){if(null==E||null!=Y||null==C&&f){this.model.beginUpdate();try{if(null==ba&&aa){var qa=this.getAbsoluteParent(null!=Y?Y:b);qa=f?b:this.getCompositeParent(qa);ba=null!=Y?Y:this.duplicateCells([qa],
!1)[0];null!=Y&&this.addCells([ba],this.model.getParent(b),null,null,null,!0);var O=this.getCellGeometry(ba);null!=O&&(null!=Y&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?m.y-=O.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=O.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-O.width/2:m.x+O.width/2),O.x=m.x-O.width/2,O.y=m.y-O.height/2);null!=F?(this.addCells([ba],F,null,null,null,!0),C=null):aa&&!f&&this.addCells([ba],this.getDefaultParent(),null,null,null,!0)}var X=mxEvent.isControlDown(n)&&
ba,ea));null!=X&&da.push(X);null==C&&null!=ba&&da.push(ba);null==ba&&null!=X&&X.geometry.setTerminalPoint(m,!1);null!=X&&this.fireEvent(new mxEventObject("cellsInserted","cells",[X]))}finally{this.model.endUpdate()}}if(null!=d)d(da);else return da});if(null==E||null!=ba||!aa||null==C&&f)return D(ba);E(g+m.x*k,y+m.y*k,D)};
Graph.prototype.foldCells=function(b,e,k,n,D){e=null!=e?e:!1;null==k&&(k=this.getFoldableCells(this.getSelectionCells(),b));if(null!=k){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var t=0;t<k.length;t++){var E=this.view.getState(k[t]),d=this.getCellGeometry(k[t]);if(null!=E&&null!=d){var f=Math.round(d.width-E.width/this.view.scale),g=Math.round(d.height-E.height/this.view.scale);if(0!=g||0!=f){var m=this.model.getParent(k[t]),q=this.layoutManager.getLayout(m);
null==q?null!=D&&this.isMoveCellsEvent(D,E)&&this.moveSiblings(E,m,f,g):null!=D&&mxEvent.isAltDown(D)||q.constructor!=mxStackLayout||q.resizeLast||this.resizeParentStacks(m,q,f,g)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(k)}};
(k=e.rotationShape.boundingBox));e=mxUtils.bind(this,function(d,f,g){if(null!=k){var m=new mxRectangle(f,g,d.clientWidth,d.clientHeight);mxUtils.intersects(m,k)&&(d==this.arrowUp?g-=m.y+m.height-k.y:d==this.arrowRight?f+=k.x+k.width-m.x:d==this.arrowDown?g+=k.y+k.height-m.y:d==this.arrowLeft&&(f-=m.x+m.width-k.x))}d.style.left=f+"px";d.style.top=g+"px";mxUtils.setOpacity(d,this.inactiveOpacity)});e(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
Graph.prototype.visitTableCells=function(b,e){var k=null,n=this.model.getChildCells(b,!0);b=this.getActualStartSize(b,!0);for(var D=0;D<n.length;D++){for(var t=this.getActualStartSize(n[D],!0),E=this.model.getChildCells(n[D],!0),d=this.getCellStyle(n[D],!0),f=null,g=[],m=0;m<E.length;m++){var q=this.getCellGeometry(E[m]),y={cell:E[m],rospan:1,colspan:1,row:D,col:m,geo:q};q=null!=q.alternateBounds?q.alternateBounds:q;y.point=new mxPoint(q.width+(null!=f?f.point.x:b.x+t.x),q.height+(null!=k&&null!=
k[0]?k[0].point.y:b.y+t.y));y.actual=y;null!=k&&null!=k[m]&&1<k[m].rowspan?(y.rowspan=k[m].rowspan-1,y.colspan=k[m].colspan,y.actual=k[m].actual):null!=f&&1<f.colspan?(y.rowspan=f.rowspan,y.colspan=f.colspan-1,y.actual=f.actual):(f=this.getCurrentCellStyle(E[m],!0),null!=f&&(y.rowspan=parseInt(f.rowspan||1),y.colspan=parseInt(f.colspan||1)));f=1==mxUtils.getValue(d,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(d,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;e(y,E.length,
Graph.prototype.setTableRowHeight=function(b,e,k){k=null!=k?k:!0;var n=this.getModel();n.beginUpdate();try{var D=this.getCellGeometry(b);if(null!=D){D=D.clone();D.height+=e;n.setGeometry(b,D);var t=n.getParent(b),E=n.getChildCells(t,!0);if(!k){var d=mxUtils.indexOf(E,b);if(d<E.length-1){var f=E[d+1],g=this.getCellGeometry(f);null!=g&&(g=g.clone(),g.y+=e,g.height-=e,n.setGeometry(f,g))}}var m=this.getCellGeometry(t);null!=m&&(k||(k=b==E[E.length-1]),k&&(m=m.clone(),m.height+=e,n.setGeometry(t,m)))}}finally{n.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(b,e,k){k=null!=k?k:!1;var n=this.getModel(),D=n.getParent(b),t=n.getParent(D),E=n.getChildCells(D,!0);b=mxUtils.indexOf(E,b);var d=b==E.length-1;n.beginUpdate();try{for(var f=n.getChildCells(t,!0),g=0;g<f.length;g++){D=f[g];E=n.getChildCells(D,!0);var m=E[b],q=this.getCellGeometry(m);null!=q&&(q=q.clone(),q.width+=e,null!=q.alternateBounds&&(q.alternateBounds.width+=e),n.setGeometry(m,q));b<E.length-1&&(m=E[b+1],q=this.getCellGeometry(m),null!=q&&(q=q.clone(),
q.x+=e,k||(q.width-=e,null!=q.alternateBounds&&(q.alternateBounds.width-=e)),n.setGeometry(m,q)))}if(d||k){var y=this.getCellGeometry(t);null!=y&&(y=y.clone(),y.width+=e,n.setGeometry(t,y))}null!=this.layoutManager&&this.layoutManager.executeLayout(t)}finally{n.endUpdate()}};function TableLayout(b){mxGraphLayout.call(this,b)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.execute=function(b){if(null!=b){var e=this.graph.getActualStartSize(b,!0),k=this.graph.getCellGeometry(b),n=this.graph.getCellStyle(b),D="1"==mxUtils.getValue(n,"resizeLastRow","0"),t="1"==mxUtils.getValue(n,"resizeLast","0");n="1"==mxUtils.getValue(n,"fixedRows","0");var E=this.graph.getModel(),d=0;E.beginUpdate();try{for(var f=k.height-e.y-e.height,g=k.width-e.x-e.width,m=E.getChildCells(b,!0),q=0;q<m.length;q++)E.setVisible(m[q],!0);var y=this.getSize(m,!1);if(0<f&&0<g&&0<
m.length&&0<y){if(D){var F=this.graph.getCellGeometry(m[m.length-1]);null!=F&&(F=F.clone(),F.height=f-y+F.height,E.setGeometry(m[m.length-1],F))}var C=t?null:this.getRowLayout(m[0],g),H=[],G=e.y;for(q=0;q<m.length;q++)F=this.graph.getCellGeometry(m[q]),null!=F&&(F=F.clone(),F.x=e.x,F.width=g,F.y=Math.round(G),G=D||n?G+F.height:G+F.height/y*f,F.height=Math.round(G)-F.y,E.setGeometry(m[q],F)),d=Math.max(d,this.layoutRow(m[q],C,F.height,g,H));n&&f<y&&(k=k.clone(),k.height=G+e.height,E.setGeometry(b,
0;q<m.length;q++)E.setVisible(m[q],!1)}finally{E.endUpdate()}}};
(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var e=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(m,q){q=null!=q?q:!0;var y=this.getState(m);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&!y.invalid&&this.updateLineJumps(y)&&this.graph.cellRenderer.redraw(y,!1,this.isRendering());y=e.apply(this,
arguments);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(y);return y};var k=mxShape.prototype.paint;mxShape.prototype.paint=function(){k.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var m=this.node.getElementsByTagName("path");if(1<m.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&m[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var q=this.state.view.graph.getFlowAnimationStyle();null!=q&&m[1].setAttribute("class",q.getAttribute("id"))}}};var n=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(m,q){return n.apply(this,arguments)||null!=m.routedPoints&&null!=q.routedPoints&&!mxUtils.equalPoints(q.routedPoints,m.routedPoints)};var D=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(m){D.apply(this,arguments);this.graph.model.isEdge(m.cell)&&1!=m.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(m)};mxGraphView.prototype.updateLineJumps=function(m){var q=m.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=m.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(m.style,"jumpStyle","none")){var C=function(ja,U,I){var V=new mxPoint(U,I);V.type=ja;F.push(V);V=null!=m.routedPoints?m.routedPoints[F.length-1]:null;return null==V||V.type!=
ja||V.x!=U||V.y!=I},H=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var aa=q[G+1],da=q[G],ba=[],Y=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(da.x,da.y,Y.x,Y.y,aa.x,aa.y)<1*this.scale*this.scale;)aa=Y,G++,Y=q[G+2];y=C(0,da.x,da.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var O=this.validEdges[qa],X=O.absolutePoints;if(null!=X&&mxUtils.intersects(m,O)&&"1"!=O.style.noJump)for(O=0;O<X.length-1;O++){var ea=X[O+1],ka=X[O];for(Y=X[O+2];O<X.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Y.x,Y.y,
Y.x&&ba[ba.length-1].y===Y.y||ba.push(Y)}}}for(O=0;O<ba.length;O++)y=C(1,ba[O].x,ba[O].y)||y}Y=q[q.length-1];y=C(0,Y.x,Y.y)||y}m.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(m,q,y){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,H=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,aa=null,da=null,ba=[],Y=null;m.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var O=this.state.routedPoints[qa],X=new mxPoint(O.x/this.scale,O.y/this.scale);0==qa?X=q[0]:qa==this.state.routedPoints.length-1&&(X=q[q.length-1]);var ea=!1;if(null!=aa&&1==O.type){var ka=this.state.routedPoints[qa+1];O=ka.x/this.scale-
X.x;ka=ka.y/this.scale-X.y;O=O*O+ka*ka;null==Y&&(Y=new mxPoint(X.x-aa.x,X.y-aa.y),da=Math.sqrt(Y.x*Y.x+Y.y*Y.y),0<da?(Y.x=Y.x*C/da,Y.y=Y.y*C/da):Y=null);O>C*C&&0<da&&(O=aa.x-X.x,ka=aa.y-X.y,O=O*O+ka*ka,O>C*C&&(ea=new mxPoint(X.x-Y.x,X.y-Y.y),O=new mxPoint(X.x+Y.x,X.y+Y.y),ba.push(ea),this.addPoints(m,ba,y,F,!1,null,G),ba=0>Math.round(Y.x)||0==Math.round(Y.x)&&0>=Math.round(Y.y)?1:-1,G=!1,"sharp"==H?(m.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),m.lineTo(O.x-Y.y*ba,O.y+Y.x*ba),m.lineTo(O.x,O.y)):"line"==H?(m.moveTo(ea.x+
Y.y*ba,ea.y-Y.x*ba),m.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),m.moveTo(O.x-Y.y*ba,O.y+Y.x*ba),m.lineTo(O.x+Y.y*ba,O.y-Y.x*ba),m.moveTo(O.x,O.y)):"arc"==H?(ba*=1.3,m.curveTo(ea.x-Y.y*ba,ea.y+Y.x*ba,O.x-Y.y*ba,O.y+Y.x*ba,O.x,O.y)):(m.moveTo(O.x,O.y),G=!0),ba=[O],ea=!0))}else Y=null;ea||(ba.push(X),aa=X)}this.addPoints(m,ba,y,F,!1,null,G);m.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(m,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(m,q,y,F){if(null==q||null==m||"1"!=q.style.snapToPoint&&"1"!=m.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(m,q,F);var C=this.getNextPoint(m,y,F),H=this.graph.isOrthogonal(m),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),aa=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
G){var da=Math.cos(-G),ba=Math.sin(-G);C=mxUtils.getRotatedPoint(C,da,ba,aa)}da=parseFloat(m.style[mxConstants.STYLE_PERIMETER_SPACING]||0);da+=parseFloat(m.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&H,da);0!=G&&(da=Math.cos(G),ba=Math.sin(G),C=mxUtils.getRotatedPoint(C,da,ba,aa));m.setAbsoluteTerminalPoint(this.snapToAnchorPoint(m,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(m,q,y,F,C){if(null!=
q&&null!=m){m=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=m)for(var H=0;H<m.length;H++){var G=this.graph.getConnectionPoint(q,m[H]);if(null!=G){var aa=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||aa<F)y=G,F=aa}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(m,q,y){var F=f.apply(this,arguments);"1"==m.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,
F));return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(m){if(null!=m.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(m.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],T)}finally{this.model.endUpdate()}L=!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,T,ca,ia,ma){if(this.swapShapes(z,L,M,T,ca,ia,ma))return z;ma=null!=ma?ma:{};if(this.isTable(ca)){for(var pa=[],ua=0;ua<z.length;ua++)this.isTable(z[ua])?pa=pa.concat(this.model.getChildCells(z[ua],!0).reverse()):pa.push(z[ua]);z=pa}this.model.beginUpdate();try{pa=[];for(ua=0;ua<z.length;ua++)if(null!=ca&&this.isTableRow(z[ua])){var ya=
!0),Sa=this.model.getChildCells(Oa[0],!0),za=Sa.length-Pa.length;if(0<za)for(var wa=0;wa<za;wa++){var Da=this.cloneCell(Pa[Pa.length-1]);null!=Da&&(Da.value="",this.model.add(z[ua],Da))}else if(0>za)for(wa=0;wa>za;wa--)this.model.remove(Pa[Pa.length+wa-1]);Pa=this.model.getChildCells(z[ua],!0);for(wa=0;wa<Sa.length;wa++){var Ea=this.getCellGeometry(Sa[wa]),La=this.getCellGeometry(Pa[wa]);null!=Ea&&null!=La&&(La=La.clone(),La.width=Ea.width,this.model.setGeometry(Pa[wa],La))}}}}var Ta=m.apply(this,
null!=this.linkHint&&(this.linkHint.style.visibility="")};var $a=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){$a.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(c,l,x){mxShape.call(this);this.line=c;this.stroke=l;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function q(){mxShape.call(this)}
function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function H(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function da(){mxActor.call(this)}function ba(){mxActor.call(this)}function Y(){mxActor.call(this)}function qa(){mxActor.call(this)}function O(){mxActor.call(this)}function X(c,l){this.canvas=c;this.canvas.setLineJoin("round");
this.canvas.setLineCap("round");this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
function pa(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ya(){mxRhombus.call(this)}function Fa(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Sa(){mxActor.call(this)}function za(){mxActor.call(this)}function wa(){mxActor.call(this)}function Da(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
!0;this.indent=2;this.rectOutline="single"}function Ea(){mxConnector.call(this)}function La(c,l,x,p,v,A,B,ha,K,xa){B+=K;var na=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(na.x-v-B,na.y-A-B,2*B,2*B);xa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
p=0;p<this.line.length&&!l;p++){var v=this.line[p];null!=v&&null!=x&&(l=mxUtils.rectangleIntersectsSegment(c,x,v));x=v}return l};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,l,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):
!1,B=this.isHorizontal(),ha=this.getTitleSize();0==ha||this.outline?Oa.prototype.paintVertexShape.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-l,-x));A||this.outline||!(B&&ha<v||!B&&ha<p)||this.paintForeground(c,l,x,p,v)};e.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ha=A;A=B;B=ha}c.rotate(-this.getShapeRotation(),
A,B,l+p/2,x+v/2);s=this.scale;l=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/s;this.paintTableForeground(c,l,x,p,v)}};e.prototype.paintTableForeground=function(c,l,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],l,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?
c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,
parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ha=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),
n);var Ta=Math.tan(mxUtils.toRadians(30)),Wa=(.5-Ta)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,l,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(l+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=
20;t.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/Ta);c.translate((p-l)/2,(v-l)/2+l/4);c.moveTo(0,.25*l);c.lineTo(.5*l,l*Wa);c.lineTo(l,.25*l);c.lineTo(.5*l,(.5-Wa)*l);c.lineTo(0,.25*l);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(p,v/(.5+Ta));A?(c.moveTo(0,.25*l),c.lineTo(.5*l,(.5-Wa)*l),c.lineTo(l,.25*l),c.moveTo(.5*l,(.5-Wa)*l),c.lineTo(.5*l,(1-Wa)*l)):(c.translate((p-
l)/2,(v-l)/2),c.moveTo(0,.25*l),c.lineTo(.5*l,l*Wa),c.lineTo(l,.25*l),c.lineTo(l,.75*l),c.lineTo(.5*l,(1-Wa)*l),c.lineTo(0,.75*l),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),
c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,-l);A||(c.moveTo(0,l),c.curveTo(0,-l/3,p,-l/3,p,l),c.lineTo(p,v-l),c.curveTo(p,v+l/3,0,v+l/3,0,v-l),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=
function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-
A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=
function(c,l,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(l,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(q,mxShape);
q.prototype.size=15;q.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};
mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=15;y.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),
c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=
60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;C.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ha=mxUtils.getValue(this.style,"absoluteArcSize",!1),K=parseFloat(mxUtils.getValue(this.style,
"arcSize",this.arcSize));ha||(K*=Math.min(p,v));K=Math.min(K,.5*p,.5*(v-x));l=Math.max(l,K);l=Math.min(p-K,l);B||(K=0);c.begin();"left"==A?(c.moveTo(Math.max(K,0),x),c.lineTo(Math.max(K,0),0),c.lineTo(l,0),c.lineTo(l,x)):(c.moveTo(p-l,x),c.lineTo(p-l,0),c.lineTo(p-Math.max(K,0),0),c.lineTo(p-Math.max(K,0),x));B?(c.moveTo(0,K+x),c.arcTo(K,K,0,0,1,K,x),c.lineTo(p-K,x),c.arcTo(K,K,0,0,1,p,K+x),c.lineTo(p,v-K),c.arcTo(K,K,0,0,1,p-K,v),c.lineTo(K,v),c.arcTo(K,K,0,0,1,0,v-K)):(c.moveTo(0,x),c.lineTo(p,
x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,
"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,
c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};mxUtils.extend(H,mxCylinder);H.prototype.arcSize=.1;H.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(l*=Math.min(p,v));l=Math.min(l,.5*p,.5*v);A||(l=
0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,l);c.arcTo(l,l,0,0,1,A+l,0);c.lineTo(p-l,0);c.arcTo(l,l,0,0,1,p,l);c.lineTo(p,v-l);c.arcTo(l,l,0,0,1,p-l,v);c.lineTo(A+l,v);c.arcTo(l,l,0,0,1,A,v-l);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,
function(){return!0};G.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(aa,mxActor);aa.prototype.size=.4;aa.prototype.redrawPath=function(c,l,
x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,l/2);c.quadTo(p/4,1.4*l,p/2,l/2);c.quadTo(3*p/4,l*(1-1.4),p,l/2);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};aa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
this.direction==mxConstants.DIRECTION_WEST)return l*=p,new mxRectangle(c.x,c.y+l,x,p-2*l);l*=x;return new mxRectangle(c.x+l,c.y,x-2*l,p)}return c};mxCellRenderer.registerShape("tape",aa);mxUtils.extend(da,mxActor);da.prototype.size=.3;da.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};da.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c.moveTo(0,0);c.lineTo(p,0);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};mxCellRenderer.registerShape("document",da);var fb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,l,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):fb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var l=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*l),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(l/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*l*this.scale),0,Math.max(0,.3*l*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==
mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};H.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=
function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,Math.max(0,l*this.scale))}return null};mxUtils.extend(ba,mxActor);ba.prototype.size=.2;ba.prototype.fixedSize=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p-l,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",ba);mxUtils.extend(Y,mxActor);Y.prototype.size=.2;Y.prototype.fixedSize=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(c,l,x,p,v){l="0"!=
mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Y);mxUtils.extend(qa,mxActor);qa.prototype.size=
.5;qa.prototype.redrawPath=function(c,l,x,p,v){c.setFillColor(null);l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(l,0),new mxPoint(l,v/2),new mxPoint(0,v/2),new mxPoint(l,v/2),new mxPoint(l,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(O,mxActor);O.prototype.redrawPath=
function(c,l,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);l=p/5;c.rect(0,0,l,v);c.fillAndStroke();c.rect(2*l,0,l,v);c.fillAndStroke();c.rect(4*l,0,l,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",O);X.prototype.moveTo=function(c,l){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;this.firstX=c;this.firstY=l};X.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
arguments));this.originalClose.apply(this.canvas,arguments)};X.prototype.quadTo=function(c,l,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};X.prototype.curveTo=function(c,l,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};X.prototype.arcTo=function(c,l,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};X.prototype.lineTo=function(c,l){if(null!=this.lastX&&null!=this.lastY){var x=function(na){return"number"===
typeof na?na?0>na?-1:1:na===na?0:NaN:NaN},p=Math.abs(c-this.lastX),v=Math.abs(l-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;return}var B=Math.round(A/10),ha=this.defaultVariation;5>B&&(B=5,ha/=3);var K=x(c-this.lastX)*p/B;x=x(l-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var xa=(Math.random()-.5)*ha;this.originalLineTo.call(this.canvas,K*A+this.lastX-xa*v,x*A+this.lastY-xa*p)}this.originalLineTo.call(this.canvas,c,l)}else this.originalLineTo.apply(this.canvas,
arguments);this.lastX=c;this.lastY=l};X.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var gb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){gb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&tb.apply(this,arguments)};var qb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,l,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=X)qb.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
A,v*A)),c.moveTo(l+A,x),c.lineTo(l+p-A,x),c.quadTo(l+p,x,l+p,x+A),c.lineTo(l+p,x+v-A),c.quadTo(l+p,x+v,l+p-A,x+v),c.lineTo(l+A,x+v),c.quadTo(l,x+v,l,x+v-A),c.lineTo(l,x+A),c.quadTo(l,x,l+A,x)):(c.moveTo(l,x),c.lineTo(l+p,x),c.lineTo(l+p,x+v),c.lineTo(l,x+v),c.lineTo(l,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=.1;ea.prototype.fixedSize=!1;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var l=c.width,x=c.height;c=new mxRectangle(c.x,c.y,l,x);var p=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;p=Math.max(p,Math.min(l*v,x*v))}c.x+=Math.round(p);c.width-=Math.round(2*p);return c}return c};
ea.prototype.paintForeground=function(c,l,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.moveTo(l+p-B,x);c.lineTo(l+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",ea);mxCellRenderer.registerShape("process2",ea);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,l,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,l,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ja,mxHexagon);ja.prototype.size=30;ja.prototype.position=.5;ja.prototype.position2=.5;ja.prototype.base=20;ja.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(c,l,x,p,v){l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),ha=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ha),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,l,!0,[4])};mxCellRenderer.registerShape("callout",ja);mxUtils.extend(U,mxActor);U.prototype.size=.2;U.prototype.fixedSize=20;U.prototype.isRoundable=function(){return!0};U.prototype.redrawPath=function(c,l,x,p,
v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(0,v),new mxPoint(l,v/2)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("step",
U);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,
0),new mxPoint(p-l,0),new mxPoint(p,.5*v),new mxPoint(p-l,v),new mxPoint(l,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(V,mxRectangleShape);V.prototype.isHtmlAllowed=function(){return!1};V.prototype.paintForeground=function(c,l,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(l+p/2,x+A);c.lineTo(l+p/2,x+v-A);c.moveTo(l+A,x+v/2);c.lineTo(l+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
V);var cb=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};mxRhombus.prototype.paintVertexShape=function(c,l,x,p,v){cb.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),cb.apply(this,[c,l,x,p,v]))}};mxUtils.extend(Q,mxRectangleShape);Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};Q.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ha=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],xa=this.style["symbol"+A+"Width"],na=this.style["symbol"+A+"Height"],ab=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
ab,db=this.style["symbol"+A+"ArcSpacing"];null!=db&&(db*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),ab+=db,jb+=db);db=l;var Ga=x;db=ha==mxConstants.ALIGN_CENTER?db+(p-xa)/2:ha==mxConstants.ALIGN_RIGHT?db+(p-xa-ab):db+ab;Ga=K==mxConstants.ALIGN_MIDDLE?Ga+(v-na)/2:K==mxConstants.ALIGN_BOTTOM?Ga+(v-na-jb):Ga+jb;c.save();ha=new B;ha.style=this.style;B.prototype.paintVertexShape.call(ha,c,db,Ga,xa,na);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
mxCellRenderer.registerShape("ext",Q);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",fa);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
la);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ra);mxUtils.extend(u,mxShape);u.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",u);mxUtils.extend(J,mxShape);
J.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};J.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};J.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(N,mxRectangleShape);N.prototype.size=
40;N.prototype.isHtmlAllowed=function(){return!1};N.prototype.getLabelBounds=function(c){var l=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,l)};N.prototype.paintBackground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,l,
x,p,A):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=N&&(B=new B,B.apply(this.state),c.save(),B.paintVertexShape(c,l,x,p,A),c.restore()));A<v&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(l+p/2,x+A),c.lineTo(l+p/2,x+v),c.end(),c.stroke())};N.prototype.paintForeground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,l,x,p,Math.min(v,
A))};mxCellRenderer.registerShape("umlLifeline",N);mxUtils.extend(W,mxShape);W.prototype.width=60;W.prototype.height=30;W.prototype.corner=10;W.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};W.prototype.paintBackground=function(c,l,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),ha=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),K=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);K!=mxConstants.NONE&&(c.setFillColor(K),c.rect(l,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,l,x,p,v),c.setGradient(this.fill,this.gradient,l,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
c.moveTo(l,x);c.lineTo(l+B,x);c.lineTo(l+B,x+Math.max(0,ha-1.5*A));c.lineTo(l+Math.max(0,B-A),x+ha);c.lineTo(l,x+ha);c.close();c.fillAndStroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+p,x);c.lineTo(l+p,x+v);c.lineTo(l,x+v);c.lineTo(l,x+ha);c.stroke()};mxCellRenderer.registerShape("umlFrame",W);mxPerimeter.CenterPerimeter=function(c,l,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
l,x,p){p=N.prototype.size;null!=l&&(p=mxUtils.getValue(l.style,"size",p)*l.view.scale);l=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;x.x<c.getCenterX()&&(l=-1*(l+1));return new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y+p,x.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,l,x,p){p=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,l,x,p){p=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;null!=l.style.backboneSize&&(p+=parseFloat(l.style.backboneSize)*l.view.scale/2-1);if("south"==l.style[mxConstants.STYLE_DIRECTION]||"north"==l.style[mxConstants.STYLE_DIRECTION])return x.x<c.getCenterX()&&(p=-1*(p+1)),new mxPoint(c.getCenterX()+p,Math.min(c.y+c.height,Math.max(c.y,x.y)));x.y<c.getCenterY()&&(p=-1*(p+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,l,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(l.style,"size",ja.prototype.size))*l.view.scale))),l.style),l,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?ba.prototype.fixedSize:ba.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha+v),new mxPoint(B+
K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]):(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,l,x,p){var v="0"!=
mxUtils.getValue(l.style,"fixedSize","0"),A=v?Y.prototype.fixedSize:Y.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+
v,ha)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,ha)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+
K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?U.prototype.fixedSize:U.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,
ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,c),new mxPoint(B,ha)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,
A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,c),new mxPoint(B+K,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa),new mxPoint(na,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(na,ha+
v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?I.prototype.fixedSize:I.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=
c.x,ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v),new mxPoint(na,ha)]):(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,
Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(S,mxShape);S.prototype.size=10;S.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
c.translate(l,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",S);mxUtils.extend(P,mxShape);P.prototype.size=10;P.prototype.inset=2;P.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(l,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(Z,mxShape);Z.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Z);mxUtils.extend(oa,mxShape);oa.prototype.inset=2;oa.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
"inset",this.inset))+this.strokewidth;c.translate(l,x);c.ellipse(0,A,p-2*A,v-2*A);c.fillAndStroke();c.begin();c.moveTo(p/2,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",oa);mxUtils.extend(va,mxCylinder);va.prototype.jettyWidth=20;va.prototype.jettyHeight=10;va.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",
this.jettyHeight));x=B/2;B=x+B/2;var ha=Math.min(l,v-l),K=Math.min(ha+2*l,v-l);A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+l),c.lineTo(x,ha+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,K),c.lineTo(x,ha+l),c.lineTo(0,ha+l),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("module",va);mxUtils.extend(Aa,mxCylinder);Aa.prototype.jettyWidth=
32;Aa.prototype.jettyHeight=12;Aa.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ha=.3*v-l/2,K=.7*v-l/2;A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+l),c.lineTo(x,ha+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,
K),c.lineTo(x,ha+l),c.lineTo(0,ha+l),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("component",Aa);mxUtils.extend(sa,mxRectangleShape);sa.prototype.paintForeground=function(c,l,x,p,v){var A=p/2,B=v/2,ha=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(l+A,x),new mxPoint(l+p,x+B),new mxPoint(l+A,x+v),new mxPoint(l,x+B)],this.isRounded,ha,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("associativeEntity",sa);mxUtils.extend(Ba,mxDoubleEllipse);Ba.prototype.outerStroke=!0;Ba.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.min(4,Math.min(p/5,v/5));0<p&&0<v&&(c.ellipse(l+A,x+A,p-2*A,v-2*A),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(l,x,p,v),c.stroke())};mxCellRenderer.registerShape("endState",Ba);mxUtils.extend(ta,Ba);ta.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ta);mxUtils.extend(Na,mxArrowConnector);
"startWidth",this.defaultArrowWidth)};Ca.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Ca);mxUtils.extend(Qa,mxActor);Qa.prototype.size=30;Qa.prototype.isRoundable=function(){return!0};Qa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,parseFloat(mxUtils.getValue(this.style,
"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,l),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Qa);mxUtils.extend(Ua,mxRectangleShape);Ua.prototype.dx=20;Ua.prototype.dy=20;Ua.prototype.isHtmlAllowed=function(){return!1};Ua.prototype.paintForeground=function(c,l,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(l,x+A);c.lineTo(l+p,x+A);c.end();c.stroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Ua);
mxUtils.extend(Ka,mxActor);Ka.prototype.dx=20;Ka.prototype.dy=20;Ka.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(l,x),
new mxPoint(l,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",Ka);mxUtils.extend(bb,mxActor);bb.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",bb);mxUtils.extend(Va,mxActor);Va.prototype.dx=20;Va.prototype.dy=20;Va.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint((p+l)/2,x),new mxPoint((p+l)/2,v),new mxPoint((p-l)/2,v),new mxPoint((p-l)/2,x),new mxPoint(0,x)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("tee",Va);mxUtils.extend($a,
mxActor);$a.prototype.arrowWidth=.3;$a.prototype.arrowSize=.2;$a.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-
l,v),new mxPoint(p-l,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("singleArrow",$a);mxUtils.extend(z,mxActor);z.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,
l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",T);mxUtils.extend(ca,mxActor);ca.prototype.size=20;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),
new mxPoint(p,.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ia,mxActor);ia.prototype.size=.375;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
0),new mxPoint(p,v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ia);mxUtils.extend(ma,mxEllipse);ma.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",ma);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(l+p/2,x);c.lineTo(l+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",pa);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l+.145*p,x+.145*v);c.lineTo(l+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(l+.855*p,x+.145*v);c.lineTo(l+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",ua);mxUtils.extend(ya,mxRhombus);ya.prototype.paintVertexShape=function(c,l,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ya);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(c,l,x,p,v){c.begin();c.moveTo(l,x);c.lineTo(l+p,x);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke();
c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Fa);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ha=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,ha);c.lineTo(l+A+B,ha-B/2);c.moveTo(l+A,ha);c.lineTo(l+A+B,ha+B/2);c.moveTo(l+A,ha);c.lineTo(l+p-A,ha);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,ha);c.lineTo(l+p-B-A,ha-B/2);c.moveTo(l+
p-A,ha);c.lineTo(l+p-B-A,ha+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(Oa,mxEllipse);Oa.prototype.drawHidden=!0;Oa.prototype.paintVertexShape=function(c,l,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ha="1"==mxUtils.getValue(this.style,"top","1"),K="1"==mxUtils.getValue(this.style,
"left","1"),xa="1"==mxUtils.getValue(this.style,"right","1"),na="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ha||xa||na||K?(c.rect(l,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(l,x),this.outline||ha?c.lineTo(l+p,x):c.moveTo(l+p,x),this.outline||xa?c.lineTo(l+p,x+v):c.moveTo(l+p,x+v),this.outline||na?c.lineTo(l,x+v):c.moveTo(l,x+v),(this.outline||K)&&c.lineTo(l,x),c.end(),c.stroke(),c.setLineCap("flat")):
c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Oa);mxUtils.extend(Pa,mxEllipse);Pa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(l+p/2,x),c.lineTo(l+p/2,x+v)):(c.moveTo(l,x+v/2),c.lineTo(l+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Pa);mxUtils.extend(Sa,mxActor);Sa.prototype.redrawPath=function(c,
l,x,p,v){l=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Sa);mxUtils.extend(za,mxActor);za.prototype.size=.2;za.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,p);var A=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(v-A)/2;x=l+A;var B=(p-A)/2;A=B+A;c.moveTo(0,l);c.lineTo(B,l);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,l);c.lineTo(p,l);c.lineTo(p,x);
c.lineTo(A,x);c.lineTo(A,v);c.lineTo(B,v);c.lineTo(B,x);c.lineTo(0,x);c.close();c.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/2);x=Math.min(p-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*p);c.moveTo(0,v/2);c.lineTo(x,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(x,v);c.close();c.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Da,
dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Da.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,
x);this.strictDrawShape(c,0,0,p,v)};Da.prototype.strictDrawShape=function(c,l,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ha=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),K=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),xa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),na=A&&A.indent?
Ib=Math.max(0,Math.min(50,K));A=Da.prototype;c.setDashed(ab);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);K=Math.min(.5*v,.5*p,K);ha||(K=Ib*Math.min(p,v)/100);K=Math.min(K,.5*Math.min(p,v));ha||(na=Math.min(db*Math.min(p,v)/100));na=Math.min(na,.5*Math.min(p,v)-K);(Ga||Ja||Ia||Ha)&&"frame"!=xa&&(c.begin(),Ga?A.moveNW(c,l,x,p,v,B,Ra,K,Ha):c.moveTo(0,0),Ga&&A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),Ja&&A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),Ia&&
A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),Ha&&A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),ab=ha=Hb,"none"==Cb&&(ha=0),"none"==Db&&(ab=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ha,ab),c.begin(),Ga?A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha):c.moveTo(na,0),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),Ia&&Ja&&A.paintSEInner(c,
l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),Ja&&Ga&&A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),Ga&&Ha&&A.paintNWInner(c,l,x,p,v,B,Ra,K,na),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,l,x,p,v,B,Ra,Xa,Ya,Za,K,Ga,Ja,Ia,Ha),c.stroke()));Ga||Ja||Ia||!Ha?Ga||Ja||!Ia||Ha?!Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==
xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),
c.fillAndStroke()):Ga||!Ja||Ia||Ha?!Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,
K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,
l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&
Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga||Ja||Ia||Ha?
Ga&&!Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,
l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,
K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,
K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,
x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,
l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,
l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,
l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,
v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,
l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):
Ga&&Ja&&Ia&&Ha&&("frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),c.close(),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,
B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),
A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),c.close(),A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,
l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),
A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,l,x,p,v,B,Ra,Xa,
Ya,Za,K,Ga,Ja,Ia,Ha);c.stroke()};Da.prototype.moveNW=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,0):c.moveTo(0,ha)};Da.prototype.moveNE=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,0):c.moveTo(p-ha,0)};Da.prototype.moveSE=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,v):c.moveTo(p,v-ha)};Da.prototype.moveSW=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,
v):c.moveTo(ha,v)};Da.prototype.paintNW=function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,ha,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ha,0);else c.lineTo(0,0)};Da.prototype.paintTop=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,0):c.lineTo(p-ha,0)};Da.prototype.paintNE=
function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,p,ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ha);else c.lineTo(p,0)};Da.prototype.paintRight=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,v):c.lineTo(p,v-ha)};Da.prototype.paintLeft=function(c,l,x,p,v,A,B,ha,K){"square"==
B||"default"==B&&"square"==A||!K?c.lineTo(0,0):c.lineTo(0,ha)};Da.prototype.paintSE=function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,p-ha,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ha,v);else c.lineTo(p,v)};Da.prototype.paintBottom=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(0,
v):c.lineTo(ha,v)};Da.prototype.paintSW=function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,0,v-ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ha);else c.lineTo(0,v)};Da.prototype.paintNWInner=function(c,l,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,K,.5*K+ha);else if("invRound"==
B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,K,K+ha);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(K,.5*K+ha);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,K+ha),c.lineTo(K,K+ha)};Da.prototype.paintTopInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(0,K):xa&&!na?c.lineTo(K,0):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ha+.5*K,K):c.lineTo(ha+K,K):c.lineTo(0,
K):c.lineTo(0,0)};Da.prototype.paintNEInner=function(c,l,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-ha-.5*K,K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-ha-K,K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ha-.5*K,K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,ha+K),c.lineTo(p-ha-K,K)};Da.prototype.paintRightInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p-K,0):xa&&!na?c.lineTo(p,
K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):c.lineTo(p-K,ha+K):c.lineTo(p-K,0):c.lineTo(p,0)};Da.prototype.paintLeftInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,v):xa&&!na?c.lineTo(0,v-K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):c.lineTo(K,v-ha-K):
c.lineTo(K,v):c.lineTo(0,v)};Da.prototype.paintSEInner=function(c,l,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-K,v-ha-.5*K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-K,v-ha-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-K,v-ha-.5*K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,v-ha-K),c.lineTo(p-K,v-ha-K)};Da.prototype.paintBottomInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p,
v-K):xa&&!na?c.lineTo(p-K,v):"square"==B||"default"==B&&"square"==A||!xa?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ha-.5*K,v-K):c.lineTo(p-ha-K,v-K):c.lineTo(p,v)};Da.prototype.paintSWInner=function(c,l,x,p,v,A,B,ha,K,xa){if(!xa)c.lineTo(K,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(K,v-K);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,ha+.5*K,v-K);else if("invRound"==B||"default"==B&&"invRound"==
A)c.arcTo(ha+K,ha+K,0,0,1,ha+K,v-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ha+.5*K,v-K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,v-ha-K),c.lineTo(K+ha,v-K)};Da.prototype.moveSWInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(K,v-ha-K):
c.moveTo(0,v-K)};Da.prototype.lineSWInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,v-ha-K):c.lineTo(0,v-K)};Da.prototype.moveSEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,v-ha-K):c.moveTo(p-K,v)};Da.prototype.lineSEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,v-ha-K):
c.lineTo(p-K,v)};Da.prototype.moveNEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.moveTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,ha+K):c.moveTo(p,K)};Da.prototype.lineNEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,ha+K):c.lineTo(p,K)};Da.prototype.moveNWInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.moveTo(K,0):xa&&!na?c.moveTo(0,K):"square"==B||"default"==B&&"square"==A?c.moveTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
B&&"fold"==A)&&c.moveTo(K,ha+K):c.moveTo(0,0)};Da.prototype.lineNWInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,0):xa&&!na?c.lineTo(0,K):"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,ha+K):c.lineTo(0,0)};Da.prototype.paintFolds=function(c,l,x,p,v,A,B,ha,K,xa,na,ab,jb,db,Ga){if("fold"==
Da.prototype.constraints=null;mxUtils.extend(Ea,mxConnector);Ea.prototype.origPaintEdgeShape=Ea.prototype.paintEdgeShape;Ea.prototype.paintEdgeShape=function(c,l,x){for(var p=[],v=0;v<l.length;v++)p.push(mxUtils.clone(l[v]));v=c.state.dashed;var A=c.state.fixDash;Ea.prototype.origPaintEdgeShape.apply(this,[c,p,x]);3<=c.state.strokeWidth&&(p=mxUtils.getValue(this.style,"fillColor",null),null!=p&&(c.setStrokeColor(p),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(v,A),Ea.prototype.origPaintEdgeShape.apply(this,
[c,l,x])))};mxCellRenderer.registerShape("filledEdge",Ea);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var l=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==l.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,l,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();
c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.stroke()}});mxMarker.addMarker("box",function(c,l,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.x+na/2,db=p.y+ab/2;p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb-na/2-ab/2,db-ab/2+na/2);c.lineTo(jb-na/2+ab/2,db-ab/2-na/2);c.lineTo(jb+ab/2-3*na/2,db-3*ab/2-na/2);c.lineTo(jb-ab/2-3*na/2,db-3*ab/2+na/2);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,l,x,p,v,A,B,ha,K,
xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.moveTo(p.x-na/2+ab/2,p.y-ab/2-na/2);c.lineTo(p.x-ab/2-3*na/2,p.y-3*ab/2+na/2);c.stroke()}});mxMarker.addMarker("circle",La);mxMarker.addMarker("circlePlus",function(c,l,x,p,v,A,B,ha,K,xa){var na=p.clone(),ab=La.apply(this,arguments),jb=v*(B+2*K),db=A*(B+2*K);return function(){ab.apply(this,arguments);c.begin();c.moveTo(na.x-v*K,na.y-A*K);c.lineTo(na.x-2*jb+
v*K,na.y-2*db+A*K);c.moveTo(na.x-jb-db+A*K,na.y-db+jb-v*K);c.lineTo(na.x+db-jb-A*K,na.y-db-jb+v*K);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,l,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.clone();p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb.x-ab,jb.y+na);c.quadTo(p.x-ab,p.y+na,p.x,p.y);c.quadTo(p.x+ab,p.y-na,jb.x+ab,jb.y-na);c.stroke()}});mxMarker.addMarker("async",function(c,l,x,p,v,A,B,ha,K,xa){l=v*K*1.118;x=A*K*1.118;v*=B+K;A*=B+K;var na=p.clone();na.x-=l;na.y-=
x;p.x+=-v-l;p.y+=-A-x;return function(){c.begin();c.moveTo(na.x,na.y);ha?c.lineTo(na.x-v-A/2,na.y-A+v/2):c.lineTo(na.x+A/2-v,na.y-A-v/2);c.lineTo(na.x-v,na.y-A);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(l,x,p,v,A,B,ha,K,xa,na){A*=ha+xa;B*=ha+xa;var ab=v.clone();return function(){l.begin();l.moveTo(ab.x,ab.y);K?l.lineTo(ab.x-A-B/c,ab.y-B+A/c):l.lineTo(ab.x+B/c-A,ab.y-B-A/c);l.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var hb=
function(c,l,x){return lb(c,["width"],l,function(p,v,A,B,ha){ha=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ha/2,B.y+A*p/4-v*ha/2)},function(p,v,A,B,ha,K){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ha.x,ha.y,K.x,K.y));c.style.width=Math.round(2*p)/c.view.scale-x})},lb=function(c,l,x,p,v){return eb(c,l,function(A){var B=c.absolutePoints,ha=B.length-1;A=c.view.translate;var K=c.view.scale,xa=x?B[0]:B[ha];B=x?B[1]:B[ha-1];ha=B.x-xa.x;var na=B.y-xa.y,ab=Math.sqrt(ha*ha+na*na);xa=
p.call(this,ab,ha/ab,na/ab,xa,B);return new mxPoint(xa.x/K-A.x,xa.y/K-A.y)},function(A,B,ha){var K=c.absolutePoints,xa=K.length-1;A=c.view.translate;var na=c.view.scale,ab=x?K[0]:K[xa];K=x?K[1]:K[xa-1];xa=K.x-ab.x;var jb=K.y-ab.y,db=Math.sqrt(xa*xa+jb*jb);B.x=(B.x+A.x)*na;B.y=(B.y+A.y)*na;v.call(this,db,xa/db,jb/db,ab,K,B,ha)})},rb=function(c){return function(l){return[eb(l,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",$a.prototype.arrowWidth))),
v=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",$a.prototype.arrowSize)));return new mxPoint(x.x+(1-v)*x.width,x.y+(1-p)*x.height/2)},function(x,p){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(x.y+x.height/2-p.y)/x.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(x.x+x.width-p.x)/x.width))})]}},vb=function(c){return function(l){return[eb(l,["size"],function(x){var p=Math.max(0,Math.min(.5*x.height,parseFloat(mxUtils.getValue(this.state.style,"size",
c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},ob=function(c,l,x){return function(p){var v=[eb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",l)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
!1)&&v.push(kb(p));return v}},Ab=function(c,l,x,p,v){x=null!=x?x:.5;return function(A){var B=[eb(A,["size"],function(ha){var K=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,xa=parseFloat(mxUtils.getValue(this.state.style,"size",K?v:c));return new mxPoint(ha.x+Math.max(0,Math.min(.5*ha.width,xa*(K?1:ha.width))),ha.getCenterY())},function(ha,K,xa){ha=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?K.x-ha.x:Math.max(0,Math.min(x,(K.x-ha.x)/ha.width));this.state.style.size=
ha},!1,p)];l&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(kb(A));return B}},Bb=function(c,l,x){c=null!=c?c:.5;return function(p){var v=[eb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ha=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:l)));return new mxPoint(A.x+Math.min(.75*A.width*c,ha*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(kb(p));return v}},ub=function(){return function(c){var l=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l}},kb=function(c,l){return eb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=l?l:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},eb=function(c,l,x,p,v,A,B){var ha=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ha.execute=function(xa){for(var na=0;na<l.length;na++)this.copyStyle(l[na]);B&&B(xa)};ha.getPosition=x;ha.setPosition=p;ha.ignoreGrid=null!=v?v:!0;if(A){var K=ha.positionChanged;ha.positionChanged=function(){K.apply(this,arguments);c.view.invalidate(this.state.cell);
c.view.validate()}}return ha},mb={link:function(c){return[hb(c,!0,10),hb(c,!1,10)]},flexArrow:function(c){var l=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(lb(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(xa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<l&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,
c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(xa.getEvent())||mxEvent.isControlDown(xa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),
l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<l&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var l=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));l.push(kb(c,x/2))}l.push(eb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ha=0;ha<A.length;ha++)A[ha]!=c.cell&&v.isSwimlane(A[ha])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ha]))==p&&B.push(A[ha]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return l},label:ub(),ext:ub(),rectangle:ub(),
triangle:ub(),rhombus:ub(),umlLifeline:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",N.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},umlFrame:function(c){return[eb(c,["width","height"],function(l){var x=Math.max(W.prototype.corner,Math.min(l.width,mxUtils.getValue(this.state.style,"width",W.prototype.width))),
p=Math.max(1.5*W.prototype.corner,Math.min(l.height,mxUtils.getValue(this.state.style,"height",W.prototype.height)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.width=Math.round(Math.max(W.prototype.corner,Math.min(l.width,x.x-l.x)));this.state.style.height=Math.round(Math.max(1.5*W.prototype.corner,Math.min(l.height,x.y-l.y)))},!1)]},process:function(c){var l=[eb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
"size",ea.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},cross:function(c){return[eb(c,["size"],function(l){var x=Math.min(l.width,l.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"size",za.prototype.size)))*x/2;return new mxPoint(l.getCenterX()-x,l.getCenterY()-x)},function(l,x){var p=Math.min(l.width,l.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,l.getCenterY()-x.y)/p*2,Math.max(0,l.getCenterX()-x.x)/p*2)))})]},note:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},note2:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},manualInput:function(c){var l=[eb(c,["size"],function(x){var p=
Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Qa.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},dataStorage:function(c){return[eb(c,["size"],function(l){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?L.prototype.fixedSize:
L.prototype.size));return new mxPoint(l.x+l.width-p*(x?1:l.width),l.getCenterY())},function(l,x){l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(l.width,l.x+l.width-x.x)):Math.max(0,Math.min(1,(l.x+l.width-x.x)/l.width));this.state.style.size=l},!1)]},callout:function(c){var l=[eb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},internalStorage:function(c){var l=[eb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Ua.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
"dy",Ua.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},module:function(c){return[eb(c,["jettyWidth","jettyHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"jettyWidth",va.prototype.jettyWidth))),p=Math.max(0,Math.min(l.height,
mxUtils.getValue(this.state.style,"jettyHeight",va.prototype.jettyHeight)));return new mxPoint(l.x+x/2,l.y+2*p)},function(l,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y))/2)})]},corner:function(c){return[eb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",Ka.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,
"dy",Ka.prototype.dy)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.dx=Math.round(Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},tee:function(c){return[eb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",Va.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"dy",Va.prototype.dy)));return new mxPoint(l.x+(l.width+x)/2,l.y+p)},function(l,
x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:rb(1),doubleArrow:rb(.5),folder:function(c){return[eb(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=l.width-x);return new mxPoint(l.x+x,l.y+p)},function(l,x){var p=Math.max(0,Math.min(l.width,x.x-l.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=l.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},document:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",da.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[eb(c,
["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size))));
return new mxPoint(l.getCenterX(),l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},"mxgraph.basic.rect":function(c){var l=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Ab(U.prototype.size,!0,null,!0,U.prototype.fixedSize),hexagon:Ab(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:Ab(qa.prototype.size,!1),display:Ab(wa.prototype.size,!1),cube:ob(1,
n.prototype.size,!1),card:ob(.5,G.prototype.size,!0),loopLimit:ob(.5,ca.prototype.size,!0),trapezoid:Bb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:Bb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=eb;Graph.handleFactory=mb;var wb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=wb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
null==mxStencilRegistry.getStencil(l)?l=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(l=mxConstants.SHAPE_SWIMLANE);l=mb[l];null==l&&null!=this.state.shape&&this.state.shape.isRoundable()&&(l=mb[mxConstants.SHAPE_RECTANGLE]);null!=l&&(l=l(this.state),null!=l&&(c=null==c?l:c.concat(l)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);
c=mb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var pb=new mxPoint(1,0),xb=new mxPoint(1,0),zb=mxUtils.toRadians(-30);pb=mxUtils.getRotatedPoint(pb,Math.cos(zb),Math.sin(zb));var yb=mxUtils.toRadians(-150);xb=mxUtils.getRotatedPoint(xb,Math.cos(yb),Math.sin(yb));mxEdgeStyle.IsometricConnector=function(c,l,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ha=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
null==ha&&null!=l&&(ha=new mxPoint(l.getCenterX(),l.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var K=pb.x,xa=pb.y,na=xb.x,ab=xb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ha){c=function(Ga,Ja,Ia){Ga-=db.x;var Ha=Ja-db.y;Ja=(ab*Ga-na*Ha)/(K*ab-xa*na);Ga=(xa*Ga-K*Ha)/(xa*na-K*ab);jb?(Ia&&(db=new mxPoint(db.x+K*Ja,db.y+xa*Ja),v.push(db)),db=new mxPoint(db.x+na*Ga,db.y+ab*Ga)):(Ia&&(db=new mxPoint(db.x+na*Ga,db.y+ab*Ga),v.push(db)),
db=new mxPoint(db.x+K*Ja,db.y+xa*Ja));v.push(db)};var db=ha;null==p&&(p=new mxPoint(ha.x+(B.x-ha.x)/2,ha.y+(B.y-ha.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var nb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,l){if(l==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return nb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.tan(mxUtils.toRadians(30)),v=(.5-p)/2;p=Math.min(l,x/(.5+p));l=(l-p)/2;x=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+p*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.75*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+(1-v)*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x+.75*p));return c};m.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;p=Math.min(l*Math.tan(p),.5*x);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ja.prototype.getConstraints=function(c,l,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=l*Math.max(0,
Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-p)));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;V.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};G.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};n.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l+p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));return c};y.prototype.getConstraints=function(c,l,x){c=[];l=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-l));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l+.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,l+.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,x-l-.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-l-.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*l));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*l));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-l));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-l));return c};C.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,
ua.prototype.constraints=mxEllipse.prototype.constraints;Pa.prototype.constraints=mxEllipse.prototype.constraints;Qa.prototype.constraints=mxRectangleShape.prototype.constraints;Sa.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(c,l,x){c=[];var p=Math.min(l,x/2),v=Math.min(l-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};va.prototype.getConstraints=function(c,l,x){l=parseFloat(mxUtils.getValue(c,
"jettyWidth",va.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",va.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,l));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ia.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;Va.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*l+.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l+p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*l-.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};Ka.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
function(c,l,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-v),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-v),x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));return c};z.prototype.getConstraints=function(c,l,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth)))),v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};za.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.min(x,l),v=Math.max(0,Math.min(p,p*parseFloat(mxUtils.getValue(this.style,"size",this.size))));p=(x-v)/2;var A=p+v,B=(l-v)/2;v=B+v;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+v),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+v),A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*B,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
Actions.prototype.init=function(){function b(g){t.escape();g=t.deleteCells(t.getDeletableCells(t.getSelectionCells()),g);null!=g&&t.setSelectionCells(g)}function e(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{for(var g=t.getSelectionCells(),m=0;m<g.length;m++)t.cellLabelChanged(g[m],"")}finally{t.getModel().endUpdate()}}}function k(g,m,q,y,F){F.getModel().beginUpdate();try{var C=F.getCellGeometry(g);null!=C&&q&&y&&(q/=y,C=C.clone(),1<q?C.height=C.width/q:C.width=C.height*q,F.getModel().setGeometry(g,
C));F.setCellStyles(mxConstants.STYLE_CLIP_PATH,m,[g]);F.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[g])}finally{F.getModel().endUpdate()}}var n=this.editorUi,D=n.editor,t=D.graph,E=function(){return Action.prototype.isEnabled.apply(this,arguments)&&t.isEnabled()};this.addAction("new...",function(){t.openLink(n.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";n.openFile()});this.addAction("smartFit",function(){t.popupMenuHandler.hideMenu();var g=t.view.scale,
m=t.view.translate.x,q=t.view.translate.y;n.actions.get("resetView").funct();1E-5>Math.abs(g-t.view.scale)&&m==t.view.translate.x&&q==t.view.translate.y&&n.actions.get(t.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){t.isEnabled()&&(t.isSelectionEmpty()?n.actions.get("smartFit").funct():t.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){n.hideDialog()}));
window.openFile.setConsumer(mxUtils.bind(this,function(g,m){try{var q=mxUtils.parseXml(g);D.graph.setSelectionCells(D.graph.importGraphModel(q.documentElement))}catch(y){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+y.message)}}));n.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=E;this.addAction("save",function(){n.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=E;this.addAction("saveAs...",function(){n.saveFile(!0)},null,
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(t,null,10,10)});this.addAction("undo",function(){n.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){n.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var g=null;try{g=n.copyXml(),null!=g&&t.removeCells(g,!1)}catch(m){}null==g&&mxClipboard.cut(t)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{n.copyXml()}catch(g){}try{mxClipboard.copy(t)}catch(g){n.handleError(g)}},
null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(m){if(null!=m){t.getModel().beginUpdate();try{n.pasteXml(m,!0)}finally{t.getModel().endUpdate()}}else mxClipboard.paste(t)}),g=!0)}catch(m){}g||mxClipboard.paste(t)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(g){function m(y){if(null!=y){for(var F=!0,C=0;C<
y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var H=t.view.translate;C=t.view.scale;var G=H.x,aa=H.y;H=null;if(1==y.length&&F){var da=t.getCellGeometry(y[0]);null!=da&&(H=da.getTerminalPoint(!0))}H=null!=H?H:t.getBoundingBoxFromGeometry(y,F);null!=H&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-aa)),t.cellsMoved(y,F-H.x,C-H.y))}}function q(){t.getModel().beginUpdate();try{m(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
!t.isCellLocked(t.getDefaultParent())){g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(y){if(null!=y){t.getModel().beginUpdate();try{m(n.pasteXml(y,!0))}finally{t.getModel().endUpdate()}}else q()}),g=!0)}catch(y){}g||q()}});this.addAction("copySize",function(){var g=t.getSelectionCell();t.isEnabled()&&null!=g&&t.getModel().isVertex(g)&&(g=t.getCellGeometry(g),null!=g&&(n.copiedSize=new mxRectangle(g.x,g.y,g.width,g.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedSize){t.getModel().beginUpdate();try{for(var g=t.getResizableCells(t.getSelectionCells()),m=0;m<g.length;m++)if(t.getModel().isVertex(g[m])){var q=t.getCellGeometry(g[m]);null!=q&&(q=q.clone(),q.width=n.copiedSize.width,q.height=n.copiedSize.height,t.getModel().setGeometry(g[m],q))}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var g=t.getSelectionCell()||t.getModel().getRoot();t.isEnabled()&&
null!=g&&(g=g.cloneValue(),null==g||isNaN(g.nodeType)||(n.copiedValue=g))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(g,m){function q(C,H){var G=y.getValue(C);H=C.cloneValue(H);H.removeAttribute("placeholders");null==G||isNaN(G.nodeType)||H.setAttribute("placeholders",G.getAttribute("placeholders"));null!=g&&mxEvent.isShiftDown(g)||H.setAttribute("label",t.convertValueToString(C));y.setValue(C,H)}g=null!=m?m:g;var y=t.getModel();if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedValue){y.beginUpdate();
try{var F=t.getEditableCells(t.getSelectionCells());if(0==F.length)q(y.getRoot(),n.copiedValue);else for(m=0;m<F.length;m++)q(F[m],n.copiedValue)}finally{y.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(g,m){g=null!=m?m:g;null!=g&&mxEvent.isShiftDown(g)?e():b(null!=g&&(mxEvent.isControlDown(g)||mxEvent.isMetaDown(g)||mxEvent.isAltDown(g)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){e()},null,null,Editor.ctrlKey+
new Action(mxResources.get("unmerge"),function(){var g=n.getSelectionState();if(0<g.cells.length){t.getModel().beginUpdate();try{t.setCellStyles("rowspan",null,g.cells),t.setCellStyles("colspan",null,g.cells)}finally{t.getModel().endUpdate()}}}));this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(g,m){g=null!=m?m:g;t.turnShapes(t.getResizableCells(t.getSelectionCells()),null!=g?mxEvent.isShiftDown(g):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));
null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),m=t.getCurrentCellStyle(t.getSelectionCell()),q=1==mxUtils.getValue(m,mxConstants.STYLE_EDITABLE,1)?0:1;t.setCellStyles(mxConstants.STYLE_MOVABLE,q,g);t.setCellStyles(mxConstants.STYLE_RESIZABLE,q,g);t.setCellStyles(mxConstants.STYLE_ROTATABLE,q,g);t.setCellStyles(mxConstants.STYLE_DELETABLE,q,g);t.setCellStyles(mxConstants.STYLE_EDITABLE,
(g=t.getCellsForGroup(g),1<g.length&&t.setSelectionCell(t.groupCells(null,0,g))):t.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(t.isEnabled()){var g=t.getEditableCells(t.getSelectionCells());t.model.beginUpdate();try{var m=t.ungroupCells();if(null!=g)for(var q=0;q<g.length;q++)t.model.contains(g[q])&&(0==t.model.getChildCount(g[q])&&t.model.isVertex(g[q])&&t.setCellStyles("container","0",[g[q]]),m.push(g[q]))}finally{t.model.endUpdate()}0<
m.length&&t.setSelectionCells(m)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(t.isEnabled()){var g=t.getSelectionCells();if(null!=g){for(var m=[],q=0;q<g.length;q++)t.isTableRow(g[q])||t.isTableCell(g[q])||m.push(g[q]);t.removeCellsFromParent(m)}}});this.addAction("edit",function(){t.isEnabled()&&t.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var g=t.getSelectionCell()||t.getModel().getRoot();n.showDataDialog(g)},null,
null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var m="";if(mxUtils.isNode(g.value)){var q=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&g.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(q=g.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==q&&(q=g.value.getAttribute("tooltip"));null!=q&&(m=q)}m=new TextareaDialog(n,mxResources.get("editTooltip")+":",m,function(y){t.setTooltipForCell(g,
y)});n.showDialog(m.container,320,200,!0,!0);m.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var g=t.getLinkForCell(t.getSelectionCell());null!=g&&t.openLink(g)});this.addAction("editLink...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var m=t.getLinkForCell(g)||"";n.showLinkDialog(m,mxResources.get("apply"),function(q,y,F){q=mxUtils.trim(q);t.setLinkForCell(g,0<q.length?q:null);t.setAttributeForCell(g,"linkTarget",F)},!0,t.getLinkTargetForCell(g))}},
null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&(t.clearSelection(),n.actions.get("image").funct())})).isEnabled=E;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&n.showLinkDialog("",mxResources.get("insert"),function(g,m,q){g=mxUtils.trim(g);if(0<g.length){var y=null,F=t.getLinkTitle(g);null!=m&&0<m.length&&(y=m[0].iconUrl,
F=m[0].name||m[0].type,F=F.charAt(0).toUpperCase()+F.substring(1),30<F.length&&(F=F.substring(0,30)+"..."));m=new mxCell(F,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=y?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+y:"spacing=10;"));m.vertex=!0;y=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry([m],!0));m.geometry.x=y.x;m.geometry.y=y.y;t.setAttributeForCell(m,"linkTarget",q);t.setLinkForCell(m,g);t.cellSizeUpdated(m,
!0);t.getModel().beginUpdate();try{m=t.addCell(m),t.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{t.getModel().endUpdate()}t.setSelectionCell(m);t.scrollCellToVisible(t.getSelectionCell())}},!0)})).isEnabled=E;this.addAction("link...",mxUtils.bind(this,function(){if(t.isEnabled())if(t.cellEditor.isContentEditing()){var g=t.getSelectedElement(),m=t.getParentByName(g,"A",t.cellEditor.textarea),q="";if(null==m&&null!=g&&null!=g.getElementsByTagName)for(var y=g.getElementsByTagName("a"),
F=0;F<y.length&&null==m;F++)y[F].textContent==g.textContent&&(m=y[F]);null!=m&&"A"==m.nodeName&&(q=m.getAttribute("href")||"",t.selectNode(m));var C=t.cellEditor.saveSelection();n.showLinkDialog(q,mxResources.get("apply"),mxUtils.bind(this,function(H){t.cellEditor.restoreSelection(C);null!=H&&t.insertLink(H)}))}else t.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=E;this.addAction("autosize",function(){var g=t.getSelectionCells();if(null!=g){t.getModel().beginUpdate();
try{for(var m=0;m<g.length;m++){var q=g[m];0<t.getModel().getChildCount(q)?t.updateGroupBounds([q],0,!0):t.updateCellSize(q)}}finally{t.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",function(){t.snapCellsToGrid(t.getSelectionCells(),t.gridSize)});this.addAction("formattedText",function(){t.stopEditing();var g=t.getCommonStyle(t.getSelectionCells());g="1"==mxUtils.getValue(g,"html","0")?null:"1";t.getModel().beginUpdate();try{for(var m=t.getEditableCells(t.getSelectionCells()),
q=0;q<m.length;q++)if(state=t.getView().getState(m[q]),null!=state){var y=mxUtils.getValue(state.style,"html","0");if("1"==y&&null==g){var F=t.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var C=document.createElement("div");C.innerHTML=t.sanitizeHtml(F);F=mxUtils.extractTextWithWhitespace(C.childNodes);t.cellLabelChanged(state.cell,F);t.setCellStyles("html",g,[m[q]])}else"0"==y&&"1"==g&&(F=mxUtils.htmlEntities(t.convertValueToString(state.cell),
!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"<br/>")),t.cellLabelChanged(state.cell,t.sanitizeHtml(F)),t.setCellStyles("html",g,[m[q]]))}n.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=g?g:"0"],"cells",m))}finally{t.getModel().endUpdate()}});this.addAction("wordWrap",function(){var g=t.getView().getState(t.getSelectionCell()),m="wrap";t.stopEditing();null!=g&&"wrap"==g.style[mxConstants.STYLE_WHITE_SPACE]&&(m=null);t.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
m)});this.addAction("rotation",function(){var g="0",m=t.getView().getState(t.getSelectionCell());null!=m&&(g=m.style[mxConstants.STYLE_ROTATION]||g);g=new FilenameDialog(n,g,mxResources.get("apply"),function(q){null!=q&&0<q.length&&t.setCellStyles(mxConstants.STYLE_ROTATION,q)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");n.showDialog(g.container,375,80,!0,!0);g.init()});this.addAction("resetView",function(){t.zoomTo(1);n.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
function(g){t.isFastZoomEnabled()?t.lazyZoom(!0,!0,n.buttonZoomDelay):t.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(g){t.isFastZoomEnabled()?t.lazyZoom(!1,!0,n.buttonZoomDelay):t.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var g=t.isSelectionEmpty()?t.getGraphBounds():t.getBoundingBox(t.getSelectionCells()),m=t.view.translate,q=t.view.scale;g.x=g.x/q-m.x;g.y=g.y/q-m.y;g.width/=q;
g.height/=q;null!=t.backgroundImage&&(g=mxRectangle.fromRectangle(g),g.add(new mxRectangle(0,0,t.backgroundImage.width,t.backgroundImage.height)));0==g.width||0==g.height?(t.zoomTo(1),n.resetScrollbars()):(m=Editor.fitWindowBorders,null!=m&&(g.x-=m.x,g.y-=m.y,g.width+=m.width+m.x,g.height+=m.height+m.y),t.fitWindow(g))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,m=t.pageScale;t.zoomTo(Math.floor(20*
Math.min((t.container.clientWidth-10)/g.width/m,(t.container.clientHeight-10)/g.height/m))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=g.y*t.view.scale-1,t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,m=t.pageScale;t.zoomTo(Math.floor(20*Math.min((t.container.clientWidth-
10)/(2*g.width)/m,(t.container.clientHeight-10)/g.height/m))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=Math.min(g.y,(t.container.scrollHeight-t.container.clientHeight)/2),t.container.scrollLeft=Math.min(g.x,(t.container.scrollWidth-t.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();t.zoomTo(Math.floor(20*(t.container.clientWidth-10)/t.pageFormat.width/
t.pageScale)/20);if(mxUtils.hasScrollbars(t.container)){var g=t.getPagePadding();t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(m){m=parseInt(m);!isNaN(m)&&0<m&&t.zoomTo(m/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(g.container,
300,80,!0,!0);g.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(m){m=parseInt(m);!isNaN(m)&&0<m&&(m=new ChangePageSetup(n,null,null,null,m/100),m.ignoreColor=!0,m.ignoreImage=!0,t.model.execute(m))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(g.container,300,80,!0,!0);g.init()}));var d=null;d=this.addAction("grid",
"/help"+g+".html")});var f=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){f||(n.showDialog((new AboutDialog(n)).container,320,280,!0,!0,function(){f=!1}),f=!0)}));d=mxUtils.bind(this,function(g,m,q,y){return this.addAction(g,function(){if(null!=q&&t.cellEditor.isContentEditing())q();else{t.stopEditing(!1);t.getModel().beginUpdate();try{var F=t.getEditableCells(t.getSelectionCells());t.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,m,F);(m&mxConstants.FONT_BOLD)==
mxConstants.FONT_BOLD?t.updateLabelElements(F,function(H){H.style.fontWeight=null;"B"==H.nodeName&&t.replaceElement(H)}):(m&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?t.updateLabelElements(F,function(H){H.style.fontStyle=null;"I"==H.nodeName&&t.replaceElement(H)}):(m&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&t.updateLabelElements(F,function(H){H.style.textDecoration=null;"U"==H.nodeName&&t.replaceElement(H)});for(var C=0;C<F.length;C++)0==t.model.getChildCount(F[C])&&t.autoSizeCell(F[C],
this.addAction("rounded",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),t.setCellStyles(mxConstants.STYLE_CURVED,"0"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!t.isSelectionEmpty()&&t.isEnabled()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),m=t.getCurrentCellStyle(g[0]),
q="1"==mxUtils.getValue(m,mxConstants.STYLE_ROUNDED,"0")?"0":"1";t.setCellStyles(mxConstants.STYLE_ROUNDED,q);t.setCellStyles(mxConstants.STYLE_CURVED,null);n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[q,"0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}});this.addAction("curved",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),t.setCellStyles(mxConstants.STYLE_CURVED,
"1"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("collapsible",function(){var g=t.view.getState(t.getSelectionCell()),m="1";null!=g&&null!=t.getFoldingImage(g)&&(m="0");t.setCellStyles("collapsible",m);n.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[m],"cells",t.getSelectionCells()))});this.addAction("editStyle...",
mxUtils.bind(this,function(){var g=t.getEditableCells(t.getSelectionCells());if(null!=g&&0<g.length){var m=t.getModel();m=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",m.getStyle(g[0])||"",function(q){null!=q&&t.setCellStyle(mxUtils.trim(q),g)},null,null,400,220);this.editorUi.showDialog(m.container,420,300,!0,!0);m.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){t.isEnabled()&&!t.isSelectionEmpty()&&n.setDefaultStyle(t.getSelectionCell())},
null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){t.isEnabled()&&n.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var g=t.getSelectionCell();if(null!=g&&t.getModel().isEdge(g)){var m=D.graph.selectionCellsHandler.getHandler(g);if(m instanceof mxEdgeHandler){var q=t.view.translate,y=t.view.scale,F=q.x;q=q.y;g=t.getModel().getParent(g);for(var C=t.getCellGeometry(g);t.getModel().isVertex(g)&&null!=C;)F+=C.x,q+=C.y,g=
t.getModel().getParent(g),C=t.getCellGeometry(g);F=Math.round(t.snap(t.popupMenuHandler.triggerX/y-F));y=Math.round(t.snap(t.popupMenuHandler.triggerY/y-q));m.addPointAt(m.state,F,y)}}});this.addAction("removeWaypoint",function(){var g=n.actions.get("removeWaypoint");null!=g.handler&&g.handler.removePoint(g.handler.state,g.index)});this.addAction("clearWaypoints",function(g,m){g=null!=m?m:g;var q=t.getSelectionCells();if(null!=q){q=t.getEditableCells(t.addAllEdges(q));t.getModel().beginUpdate();try{for(var y=
0;y<q.length;y++){var F=q[y];if(t.getModel().isEdge(F)){var C=t.getCellGeometry(F);null!=m&&mxEvent.isShiftDown(g)?(t.setCellStyles(mxConstants.STYLE_EXIT_X,null,[F]),t.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[F])):null!=C&&(C=C.clone(),C.points=null,C.x=0,C.y=0,C.offset=null,t.getModel().setGeometry(F,C))}}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",
mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=mxResources.get("image")+" ("+mxResources.get("url")+"):",m=t.getView().getState(t.getSelectionCell()),
q="",y=null;null!=m&&(q=m.style[mxConstants.STYLE_IMAGE]||q,y=m.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,H,G,aa,da,ba){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,H,G);else{var Y=t.getSelectionCells();if(null!=C&&(0<C.length||0<Y.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Y.length){Y=[t.insertVertex(t.getDefaultParent(),null,"",0,0,H,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
null!=g){var m=t.getCurrentCellStyle(g),q=m[mxConstants.STYLE_IMAGE],y=m[mxConstants.STYLE_SHAPE];q&&"image"==y&&(m=new CropImageDialog(n,q,m[mxConstants.STYLE_CLIP_PATH],function(F,C,H){k(g,F,C,H,t)}),n.showDialog(m.container,300,390,!0,!0))}}).isEnabled=E;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(n,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("layers"))})),
this.outlineWindow.window.setVisible(!0),n.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&null!=g){var m=new ConnectionPointsDialog(n,
g);n.showDialog(m.container,350,450,!0,!1,function(){m.destroy()});m.init()}}).isEnabled=E};Actions.prototype.addAction=function(b,e,k,n,D){if("..."==b.substring(b.length-3)){b=b.substring(0,b.length-3);var t=mxResources.get(b)+"..."}else t=mxResources.get(b);return this.put(b,new Action(t,e,k,n,D))};Actions.prototype.put=function(b,e){return this.actions[b]=e};Actions.prototype.get=function(b){return this.actions[b]};
DrawioFile.prototype.mergeFile=function(b,e,k,n){var D=!0;try{this.stats.fileMerged++;var t=this.getShadowPages(),E=b.getShadowPages();if(null!=E&&0<E.length){var d=[this.ui.diffPages(null!=n?n:t,E)],f=this.ignorePatches(d);this.setShadowPages(E);if(f)EditorUi.debug("File.mergeFile",[this],"file",[b],"ignored",f);else{null!=this.sync&&this.sync.sendLocalChanges();this.backupPatch=this.isModified()?this.ui.diffPages(t,this.ui.pages):null;n={};f={};var g=this.ui.patchPages(t,d[0]),m=this.ui.getHashValueForPages(g,
n),q=this.ui.getHashValueForPages(E,f);EditorUi.debug("File.mergeFile",[this],"file",[b],"shadow",t,"pages",this.ui.pages,"patches",d,"backup",this.backupPatch,"checksum",m,"current",q,"valid",m==q,"from",this.getCurrentRevisionId(),"to",b.getCurrentRevisionId(),"modified",this.isModified());if(null!=m&&m!=q){var y=this.compressReportData(this.getAnonymizedXmlForPages(E)),F=this.compressReportData(this.getAnonymizedXmlForPages(g)),C=this.ui.hashValue(b.getCurrentEtag()),H=this.ui.hashValue(this.getCurrentEtag());
this.checksumError(k,d,"Shadow Details: "+JSON.stringify(n)+"\nChecksum: "+m+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+C+"\nTo: "+H+"\n\nFile Data:\n"+y+"\nPatched Shadow:\n"+F,null,"mergeFile");return}if(null!=this.sync){var G=this.sync.patchRealtime(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null);null==G||mxUtils.isEmptyObject(G)||d.push(G)}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw D=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=
DrawioFile.prototype.sendErrorReport=function(b,e,k,n){try{var D=this.compressReportData(this.getAnonymizedXmlForPages(this.getShadowPages()),25E3),t=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),E=this.getCurrentUser(),d=null!=E?this.ui.hashValue(E.id):"unknown",f=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",g=this.getTitle(),m=g.lastIndexOf(".");E="xml";0<m&&(E=g.substring(m));var q=null!=k?k.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
DrawioFile.prototype.patch=function(b,e,k){if(null!=b){var n=this.ui.editor.undoManager,D=n.history.slice(),t=n.indexOfNextAdd,E=this.ui.editor.graph;E.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=k;var f=E.foldingEnabled,g=E.mathEnabled,m=E.cellRenderer.redraw;E.cellRenderer.redraw=function(q){q.view.graph.isEditing(q.cell)&&(q.view.graph.scrollCellToVisible(q.cell),q.view.graph.cellEditor.resize());m.apply(this,arguments)};E.model.beginUpdate();
try{this.ui.pages=this.ui.applyPatches(this.ui.pages,b,!0,e,this.isModified()),0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage()),0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{E.container.style.visibility="";E.model.endUpdate();E.cellRenderer.redraw=m;this.changeListenerEnabled=d;k||(n.history=D,n.indexOfNextAdd=t,n.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)g!=E.mathEnabled?
LocalFile.prototype.saveFile=function(b,e,k,n,D){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;D||this.updateFileData();var t=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var E=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=k&&k()}),f=mxUtils.bind(this,function(g){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var m=mxUtils.bind(this,
function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(C){try{var H=this.desc;this.savingFile=!1;this.desc=C;this.fileSaved(E,H,d,m);this.removeDraft()}catch(G){m(G)}}),m)}),m)}),m):(this.inConflictState=!0,m())}),mxUtils.bind(this,function(F){this.invalidFileHandle=!0;m(F)}))}),m)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(g,b,t?"image/png":"text/xml",t);else if(g.length<MAX_REQUEST_SIZE){var q=b.lastIndexOf(".");q=0<q?b.substring(q+1):"xml";
N=J.getId():null!=u.currentPage&&(N=u.currentPage.getId());return N});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=
mxClient.IS_SF)nb.writeln('<style type="text/css">'),nb.writeln(Editor.mathJaxWebkitCss),nb.writeln("</style>");mxClient.IS_GC&&(nb.writeln('<style type="text/css">'),nb.writeln("@media print {"),nb.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),nb.writeln("}"),nb.writeln("</style>"));null!=u.editor.fontCss&&(nb.writeln('<style type="text/css">'),nb.writeln(u.editor.fontCss),nb.writeln("</style>"));for(var c=cb.getCustomFonts(),l=0;l<c.length;l++){var x=c[l].name,p=c[l].url;Graph.isCssFontUrl(p)?
nb.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(p)+'" charset="UTF-8" type="text/css">'):(nb.writeln('<style type="text/css">'),nb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(x)+'";\nsrc: url("'+mxUtils.htmlEntities(p)+'");\n}'),nb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var yb=hb.renderPage;hb.renderPage=function(nb,c,l,x,p,v){var A=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!u.editor.useForeignObjectForMath?!0:u.editor.originalNoForeignObject;
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,m,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
"1"!=urlParams.dev)try{if(d!=EditorUi.lastErrorMessage&&(null==d||null==f||-1==d.indexOf("Script error")&&-1==d.indexOf("extension"))&&null!=d&&0>d.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=d;var C=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";q=null!=q?q:Error(d);(new Image).src=C+"/log?severity="+y+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(d)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(g)+(null!=m?":colno:"+
encodeURIComponent(m):"")+(null!=q&&null!=q.stack?"&stack="+encodeURIComponent(q.stack):"")}}catch(H){}try{F||null==window.console||console.error(y,d,f,g,m,q)}catch(H){}};EditorUi.logEvent=function(d){if("1"==urlParams.dev)EditorUi.debug("logEvent",d);else if(EditorUi.enableLogging)try{var f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=d?"&data="+encodeURIComponent(JSON.stringify(d)):"")}catch(g){}};EditorUi.sendReport=
f.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=q&&6<q.length}catch(y){}};g.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(q){}try{f=document.createElement("canvas");f.width=f.height=1;var m=f.toDataURL("image/jpeg");
EditorUi.prototype.jpgSupported=null!==m.match("image/jpeg")}catch(q){}})();EditorUi.prototype.openLink=function(d,f,g){return this.editor.graph.openLink(d,f,g)};EditorUi.prototype.showSplash=function(d){};EditorUi.prototype.getLocalData=function(d,f){f(localStorage.getItem(d))};EditorUi.prototype.setLocalData=function(d,f,g){localStorage.setItem(d,f);null!=g&&g()};EditorUi.prototype.removeLocalData=function(d,f){localStorage.removeItem(d);f()};EditorUi.prototype.setShareCursorPosition=function(d){this.shareCursorPosition=
EditorUi.prototype.createSpinner=function(d,f,g){var m=null==d||null==f;g=null!=g?g:24;var q=new Spinner({lines:12,length:g,width:Math.round(g/3),radius:Math.round(g/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),y=q.spin;q.spin=function(C,H){var G=!1;this.active||(y.call(this,C),this.active=!0,null!=H&&(m&&(f=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,d=document.body.clientWidth/2-2),G=document.createElement("div"),
return q};EditorUi.prototype.isCompatibleString=function(d){try{var f=mxUtils.parseXml(d),g=this.editor.extractGraphModel(f.documentElement,!0);return null!=g&&0==g.getElementsByTagName("parsererror").length}catch(m){}return!1};EditorUi.prototype.isVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&
EditorUi.prototype.createKeyHandler=function(d){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var g=f.getFunction,m=this.editor.graph,q=this;f.getFunction=function(y){if(m.isSelectionEmpty()&&null!=q.pages&&0<q.pages.length){var F=q.getSelectedPageIndex();if(mxEvent.isShiftDown(y)){if(37==y.keyCode)return function(){0<F&&q.movePage(F,F-1)};if(38==y.keyCode)return function(){0<F&&q.movePage(F,0)};if(39==y.keyCode)return function(){F<q.pages.length-1&&q.movePage(F,
var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var f=e.apply(this,arguments);if(null==f)try{var g=d.indexOf("&lt;mxfile ");if(0<=g){var m=d.lastIndexOf("&lt;/mxfile&gt;");m>g&&(f=d.substring(g,m+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else{var q=mxUtils.parseXml(d),y=this.editor.extractGraphModel(q.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility);f=null!=
f.model.beginUpdate();try{var g=null!=this.pages?this.pages.slice():null,m=d.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<m.length||1==m.length&&m[0].hasAttribute("name")){this.fileNode=d;this.pages=null!=this.pages?this.pages:[];for(var q=m.length-1;0<=q;q--){var y=this.updatePageRoot(new DiagramPage(m[q]));null==y.getName()&&y.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,y,0==q?y:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
function(d,f,g,m,q,y,F,C,H,G,aa){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;H=null!=H?H:!0;var da=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var ba="_blank";else da=ba=m;if(null==d)return"";var Y=d;if("mxfile"!=Y.nodeName.toLowerCase()){if(aa){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Y=Graph.compress(qa);if(Graph.decompress(Y)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
aa=aa?mxUtils.getPrettyXml(Y):mxUtils.getXml(Y);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))aa=this.getHtml2(mxUtils.getXml(Y),f,null!=g?g.getTitle():null,ba,da);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(m=null),aa=this.getEmbeddedSvg(aa,f,m,null,C,H,da);return aa};EditorUi.prototype.getXmlFileData=function(d,f,g,m){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
m);if(d&&null!=this.fileNode&&null!=this.currentPage)if(d=function(H){var G=H.getElementsByTagName("mxGraphModel");G=0<G.length?G[0]:null;null==G&&g?(G=mxUtils.trim(mxUtils.getTextContent(H)),H=H.cloneNode(!1),0<G.length&&(G=Graph.decompress(G),null!=G&&0<G.length&&H.appendChild(mxUtils.parseXml(G).documentElement))):null==G||g?H=H.cloneNode(!0):(H=H.cloneNode(!1),mxUtils.setTextContent(H,Graph.compressNode(G)));q.appendChild(H)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(q)),q=this.fileNode.cloneNode(!1),f)d(this.currentPage.node);else for(f=0;f<this.pages.length;f++){var y=this.pages[f],F=y.node;if(y!=this.currentPage)if(y.needsUpdate){var C=new mxCodec(mxUtils.createXmlDocument());C=C.encode(new mxGraphModel(y.root));this.editor.graph.saveViewState(y.viewState,C,null,m);EditorUi.removeChildNodes(F);mxUtils.setTextContent(F,Graph.compressNode(C));delete y.needsUpdate}else m&&(this.updatePageRoot(y),null!=y.viewState.backgroundImage&&(null!=y.viewState.backgroundImage.originalSrc?
y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.originalSrc,y):Graph.isPageLink(y.viewState.backgroundImage.src)&&(y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.src,y))),null!=y.viewState.backgroundImage&&null!=y.viewState.backgroundImage.originalSrc&&(C=new mxCodec(mxUtils.createXmlDocument()),C=C.encode(new mxGraphModel(y.root)),this.editor.graph.saveViewState(y.viewState,C,null,m),F=F.cloneNode(!1),mxUtils.setTextContent(F,
Graph.compressNode(C))));d(F)}return q};EditorUi.prototype.anonymizeString=function(d,f){for(var g=[],m=0;m<d.length;m++){var q=d.charAt(m);0<=EditorUi.ignoredAnonymizedChars.indexOf(q)?g.push(q):isNaN(parseInt(q))?q.toLowerCase()!=q?g.push(String.fromCharCode(65+Math.round(25*Math.random()))):q.toUpperCase()!=q?g.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(q)?g.push(" "):g.push("?"):g.push(f?"0":Math.round(9*Math.random()))}return g.join("")};EditorUi.prototype.anonymizePatch=
function(d){if(null!=d[EditorUi.DIFF_INSERT])for(var f=0;f<d[EditorUi.DIFF_INSERT].length;f++)try{var g=mxUtils.parseXml(d[EditorUi.DIFF_INSERT][f].data).documentElement.cloneNode(!1);null!=g.getAttribute("name")&&g.setAttribute("name",this.anonymizeString(g.getAttribute("name")));d[EditorUi.DIFF_INSERT][f].data=mxUtils.getXml(g)}catch(y){d[EditorUi.DIFF_INSERT][f].data=y.message}if(null!=d[EditorUi.DIFF_UPDATE]){for(var m in d[EditorUi.DIFF_UPDATE]){var q=d[EditorUi.DIFF_UPDATE][m];null!=q.name&&
delete d[EditorUi.DIFF_UPDATE][m]}mxUtils.isEmptyObject(d[EditorUi.DIFF_UPDATE])&&delete d[EditorUi.DIFF_UPDATE]}return d};EditorUi.prototype.anonymizeAttributes=function(d,f){if(null!=d.attributes)for(var g=0;g<d.attributes.length;g++)"as"!=d.attributes[g].name&&d.setAttribute(d.attributes[g].name,this.anonymizeString(d.attributes[g].value,f));if(null!=d.childNodes)for(g=0;g<d.childNodes.length;g++)this.anonymizeAttributes(d.childNodes[g],f)};EditorUi.prototype.anonymizeNode=function(d,f){f=d.getElementsByTagName("mxCell");
function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,m,q,y,F,C,H,G,aa){q=null!=q?q:!0;y=null!=y?y:!1;var da=this.editor.graph;if(f||!d&&null!=H&&/(\.svg)$/i.test(H.getTitle())){var ba=null!=da.themes&&"darkTheme"==da.defaultThemeName;G=!1;if(ba||null!=this.pages&&this.currentPage!=this.pages[0]){var Y=da.getGlobalVariable;da=this.createTemporaryGraph(ba?da.getDefaultStylesheet():da.getStylesheet());
G,aa);H=null!=H?H:this.getCurrentFile();d=this.createFileData(F,da,H,window.location.href,d,f,g,m,q,C,G);da!=this.editor.graph&&da.container.parentNode.removeChild(da.container);return d};EditorUi.prototype.getHtml=function(d,f,g,m,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var H=f.view.scale;y=Math.floor(F.x/H-f.view.translate.x);H=Math.floor(F.y/H-f.view.translate.y);F=f.background;null==
q&&(f=this.getBasenames().join(";"),0<f.length&&(C=EditorUi.drawHost+"/embed.js?s="+f));d.setAttribute("x0",y);d.setAttribute("y0",H)}null!=d&&(d.setAttribute("pan","1"),d.setAttribute("zoom","1"),d.setAttribute("resize","0"),d.setAttribute("fit","0"),d.setAttribute("border","20"),d.setAttribute("links","1"),null!=m&&d.setAttribute("edit",m));null!=q&&(q=q.replace(/&/g,"&amp;"));d=null!=d?Graph.zapGremlins(mxUtils.getXml(d)):"";m=Graph.compress(d);Graph.decompress(m)!=d&&(m=encodeURIComponent(d));
m+"</div>\n</div>\n"+(null==q?'<script type="text/javascript" src="'+C+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+q+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(d,f,g,m,q){f=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=q&&(q=q.replace(/&/g,"&amp;"));d={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){g=null;this.fileNode=f;this.pages=[];for(var m=0;m<d.length;m++)null==d[m].getAttribute("id")&&d[m].setAttribute("id",m),f=new DiagramPage(d[m]),null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[m+1])),this.pages.push(f),null!=urlParams["page-id"]&&f.getId()==urlParams["page-id"]&&(g=f);this.currentPage=null!=g?g:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];f=this.currentPage.node}"0"!=
urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(f.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(f);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var q=urlParams["layer-ids"].split(" ");f={};for(m=0;m<q.length;m++)f[q[m]]=!0;var y=this.editor.graph.getModel(),
F=y.getChildren(y.root);for(m=0;m<F.length;m++){var C=F[m];y.setVisible(C,f[C.id]||!1)}}catch(H){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,H,G,aa,da){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Y,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
fa){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ra=this.createDownloadRequest(R,d,m,fa,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ra}catch(u){this.handleError(u)}}))}else{var U=null,I=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
if(F||V==mxConstants.NONE)V=null;var Q=this.editor.graph.getSvg(V,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(Q);this.editor.convertImages(Q,mxUtils.bind(this,mxUtils.bind(this,function(R){this.spinner.stop();I(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(R))})))}else Y=ba+".svg",U=this.getFileData(!1,!0,null,mxUtils.bind(this,function(R){this.spinner.stop();I(R)}),m)}}catch(R){this.handleError(R)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,C,H,
this.currentPage){O="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};H&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+O+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(da&&isFinite(da)?"&w="+da:"")+(ba&&isFinite(ba)?"&h="+ba:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var m=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
decodeURIComponent(urlParams.title):this.defaultFilename,!0);y.getHash=function(){return m};this.fileLoaded(y);"csv"==d.format&&this.importCsv(F,mxUtils.bind(this,function(da){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=d.update){var C=null!=d.interval?parseInt(d.interval):6E4,H=null,G=mxUtils.bind(this,function(){var da=this.currentPage;mxUtils.post(d.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ja){var U=new mxCellOverlay(ja.image||q.warningImage,ja.tooltip,ja.align,ja.valign,ja.offset);U.addListener(mxEvent.CLICK,function(I,V){m.alert(ja.tooltip)});return U}var g=null,m=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
d.hasAttribute("dy"))q.view.translate=new mxPoint(parseFloat(d.getAttribute("dx")||0),parseFloat(d.getAttribute("dy")||0))}else"fit"==d.nodeName&&(F=d.hasAttribute("max-scale")?parseFloat(d.getAttribute("max-scale")):1);d=d.nextSibling}}finally{y.endUpdate()}null!=F&&this.chromelessResize&&this.chromelessResize(!0,F)}return g};EditorUi.prototype.getCopyFilename=function(d,f){var g=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;d="";var m=g.lastIndexOf(".");0<=m&&(d=g.substring(m),g=
g.substring(0,m));if(f){f=g;var q=new Date;g=q.getFullYear();m=q.getMonth()+1;var y=q.getDate(),F=q.getHours(),C=q.getMinutes();q=q.getSeconds();g=f+(" "+(g+"-"+m+"-"+y+"-"+F+"-"+C+"-"+q))}return g=mxResources.get("copyOf",[g])+d};EditorUi.prototype.fileLoaded=function(d,f){var g=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var m=!1;this.hideDialog();null!=g&&(EditorUi.debug("File.closed",[g]),g.removeListener(this.descriptorChangedListener),g.close());
this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));m=!0;if(!this.isOffline()&&null!=d.getMode()){var y="1"==urlParams.sketch?"sketch":uiTheme;if(null==y)y="default";else if("sketch"==y||"min"==y)y+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:d.getMode().toUpperCase()+"-OPEN-FILE-"+d.getHash(),action:"size_"+d.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+y})}EditorUi.debug("File.opened",[d]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));
F.stack})}catch(C){}d=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=g?this.fileLoaded(g)||q():q()});f?d():this.handleError(F,mxResources.get("errorLoadingFile"),d,!0,null,null,!0)}else q();return m};EditorUi.prototype.getHashValueForPages=function(d,f){var g=0,m=new mxGraphModel,q=new mxCodec;null!=f&&(f.byteCount=0,f.attrCount=0,f.eltCount=0,f.nodeCount=0);for(var y=0;y<d.length;y++){this.updatePageRoot(d[y]);
var F=d[y].node.cloneNode(!1);F.removeAttribute("name");m.root=d[y].root;var C=q.encode(m);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(H,G,aa,da){return!da||"mxGeometry"!=H.nodeName&&"mxPoint"!=H.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?da&&"mxCell"==H.nodeName&&
"previous"==G?null:aa:Math.round(aa)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var m=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(m^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(m^=this.hashValue(y,
f,g)+this.hashValue(F,f,g))}}if(null!=d.childNodes)for(q=0;q<d.childNodes.length;q++)m=(m<<5)-m+this.hashValue(d.childNodes[q],f,g)<<0}else if(null!=d&&"function"!==typeof d){d=String(d);f=0;null!=g&&(g.byteCount+=d.length);for(q=0;q<d.length;q++)f=(f<<5)-f+d.charCodeAt(q)<<0;m^=f}return m};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(d,f,g,m,q,y,F){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||
if(null==d){var g=this.sidebar.palettes["L.scratchpad"];null==g&&(g=this.sidebar.palettes.search);null!=g&&(d=g[g.length-1].nextSibling)}d=null!=d?d:f.firstChild.nextSibling.nextSibling;g=f.lastChild;var m=g.previousSibling;f.insertBefore(g,d);f.insertBefore(m,g)};EditorUi.prototype.loadLibrary=function(d,f){var g=mxUtils.parseXml(d.getData());if("mxlibrary"==g.documentElement.nodeName){var m=JSON.parse(mxUtils.getTextContent(g.documentElement));this.libraryLoaded(d,m,g.documentElement.getAttribute("title"),
f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,m){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ja){0==ka.length&&d.isEditable()?
(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ja.appendChild(y)):this.addLibraryEntries(ka,ja)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=m?m:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var H=C.parentNode.previousSibling;m=H.getAttribute("title");
null!=m&&0<m.length&&".scratchpad"!=d.title&&H.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+m);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";H.style.position="relative";var aa=document.createElement("img");aa.setAttribute("src",Editor.crossImage);aa.setAttribute("title",mxResources.get("close"));aa.setAttribute("valign","absmiddle");aa.setAttribute("border","0");aa.style.position=
mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});m=aa.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,
G.firstChild);mxEvent.addListener(m,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}H.appendChild(G);H.style.paddingRight=
18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
m.w,m.h,m.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=d?d[mxLanguage]||d.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground=
Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(d,f,g,m,q,y,F){d=new ImageDialog(this,d,f,g,m,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,m){m||(g=new ChangePageSetup(this,null,g),
g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,m,q){d=new LibraryDialog(this,d,f,g,m,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);
f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(m){m.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(m){this.actions.get("shapes").funct();mxEvent.consume(m)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,m,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?
m,q)}),aa,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Y(){ea.innerHTML="";for(var ka=0;ka<qa.length;ka++){var ja=document.createElement("option");mxUtils.write(ja,qa[ka].displayName);ja.value=ka;ea.appendChild(ja);ja=document.createElement("option");ja.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ja,"<"+qa[ka].email+">");ja.setAttribute("disabled","disabled");ea.appendChild(ja)}ja=document.createElement("option");mxUtils.write(ja,mxResources.get("addAccount"));ja.value=qa.length;
")"),ba=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(H.ownerEmail))}));this.showError(f,F,G,g,aa,null,null,y,ba,null,null,null,m?g:null)}else null!=g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,m,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/
50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},m,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};EditorUi.prototype.showBanner=function(d,f,g,m){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(m?"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");
F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";if(!m){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var H=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||m)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=
function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,m){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,
"tEXt","mxfile",encodeURIComponent(f))),0<m&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",m));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,m,q){var y="jpeg"==g?"jpg":g;m=this.getBaseFilename(m)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(m,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(d,f){d=new TextareaDialog(this,d,f,null,null,mxResources.get("close"));this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(d,f,g,m,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||
/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)d=m?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,
g,m);else{var F=document.createElement("a");y=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(m?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},
2E4),F.click(),F.parentNode.removeChild(F)}catch(H){}}else this.createEchoRequest(d,f,g,m,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,m,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(m?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,m=Math.ceil(g/1024),q=Array(m),
y=0;y<m;++y){for(var F=1024*y,C=Math.min(F+1024,g),H=Array(C-F),G=0;F<C;++G,++F)H[G]=d[F].charCodeAt(0);q[y]=new Uint8Array(H)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,m,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var H=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,aa){try{if("_blank"==aa)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,
g,m);else if(null!=g&&"text/html"==g.substring(0,9)){var da=new EmbedDialog(this,d);this.showDialog(da.container,450,240,!0,!0);da.init()}else{var ba=window.open("about:blank");null==ba?mxUtils.popup(d,!0):(ba.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),ba.document.close())}else aa==App.MODE_DEVICE||"download"==aa?this.doSaveLocalFile(d,G,g,m,null,C):null!=G&&0<G.length&&this.pickFolder(aa,mxUtils.bind(this,function(Y){try{this.exportFile(d,G,g,m,aa,Y)}catch(qa){this.handleError(qa)}}))}catch(Y){this.handleError(Y)}}),
mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,y,F,null,1<q,H,d,g,m);y=this.isServices(q)?q>H?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var m=window.open("about:blank");null==m||null==m.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"==f?m.document.write("<html>"+d+"</html>"):(d=g?d:btoa(unescape(encodeURIComponent(d))),m.document.write('<html><img style="max-width:100%;" src="data:'+
f+";base64,"+d+'"/></html>')):m.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),m.document.close())};var n=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(d){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;
var f=d(mxUtils.bind(this,function(m){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding=
4+"px";q=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=q.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(m)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var m=this.editor.graph.getAllTags();f.style.display=0<m.length?"":"none"}))}n.apply(this,arguments);this.editor.addListener("tagsDialogShown",
function(m){var q=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",q);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)q.apply(this);else{this.exportDialog=document.createElement("div");var y=g.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";
Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",q);document.body.appendChild(this.exportDialog)}mxEvent.consume(m)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(d,f,g,m,q){this.isLocalFileSave()?this.saveLocalFile(g,d,m,q,f):this.saveRequest(d,f,mxUtils.bind(this,function(y,F){return this.createEchoRequest(g,y,m,q,f,F)}),g,q,m)};EditorUi.prototype.saveRequest=function(d,f,g,m,q,y,F){F=null!=F?F:!mxClient.IS_IOS||!navigator.standalone;
var C=this.getServiceCount(!1);isLocalStorage&&C++;var H=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,aa){if("_blank"==aa||null!=G&&0<G.length){var da=g("_blank"==aa?null:G,aa==App.MODE_DEVICE||"download"==aa||null==aa||"_blank"==aa?"0":"1");null!=da&&(aa==App.MODE_DEVICE||"download"==aa||"_blank"==aa?da.simulate(document,"_blank"):this.pickFolder(aa,mxUtils.bind(this,function(ba){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=m)try{this.exportFile(m,G,y,!0,aa,
!1,!1,F,null,1<C,H,m,y,q);C=this.isServices(C)?4<C?390:280:160;this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,m,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba,Y){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();
g=null!=g?g:qa;var O=f?null:this.editor.graph.background;O==mxConstants.NONE&&(O=null);null==O&&0==f&&(O=aa?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var X=this.editor.graph.getSvg(O,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!ba,aa,da);m&&this.editor.graph.addSvgShadow(X);var ea=this.getBaseFilename()+(q?".drawio":"")+".svg";Y=null!=Y?Y:mxUtils.bind(this,function(U){this.isLocalFileSave()||U.length<=MAX_REQUEST_SIZE?this.saveData(ea,"svg",U,"image/svg+xml"):
(this.thumbImageCache={}),this.editor.convertImages(U,ka,this.thumbImageCache)):ka(U)});ba?this.embedFonts(X,ja):(this.editor.addFontCss(X),ja(X))}catch(U){this.handleError(U)}};EditorUi.prototype.addRadiobox=function(d,f,g,m,q,y,F){return this.addCheckbox(d,g,m,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;var H=document.createElement("input");H.style.marginRight="8px";H.style.marginTop="16px";H.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();
H.id=F;null!=C&&H.setAttribute("name",C);g&&(H.setAttribute("checked","checked"),H.defaultChecked=!0);m&&H.setAttribute("disabled","disabled");y&&(d.appendChild(H),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return H};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var m=this.getCurrentFile(),q="";null!=m&&m.getMode()!=App.MODE_DEVICE&&m.getMode()!=
App.MODE_BROWSER&&(q=window.location.href);var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";m=document.createElement("option");m.setAttribute("value","blank");mxUtils.write(m,mxResources.get("makeCopy"));y.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom")+"...");y.appendChild(m);d.appendChild(y);mxEvent.addListener(y,
"')");F.innerHTML="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+":");var m=document.createElement("select");m.style.width="100px";m.style.padding="0px";m.style.marginLeft="8px";m.style.marginRight="10px";m.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));m.appendChild(q);
q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,mxResources.get("openInThisWindow"));m.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),m.appendChild(f));d.appendChild(m);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(H){y=H;g()});
mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return m.value},focus:function(){m.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,m,q,y,F){F=null!=F?F:[];m&&("https://viewer.diagrams.net"==
EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,m,q,y,F,C,
H,G){H=this.createUrlParameters(d,f,g,m,q,y,H);d=this.getCurrentFile();f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&H.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(H.push("open="+
g.substring(1)),g="");return(m&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<H.length?"?"+H.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,m,q,y,F,C,H,G,aa,da){this.getBasenames();var ba={};""!=q&&q!=mxConstants.NONE&&(ba.highlight=q);"auto"!==m&&(ba.target=m);G||(ba.lightbox=!1);ba.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||
mxUtils.htmlEntities(JSON.stringify(ba))+'"></div>';d=null!=d?"&fetch="+encodeURIComponent(d):"";da(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(d,f,g,m){var q=document.createElement("div");
ja.style.marginBottom="16px";F+=50;mxEvent.addListener(ea,"change",function(){ea.checked?ja.removeAttribute("disabled"):ja.setAttribute("disabled","disabled");ja.checked&&ea.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){m(C.checked?g:null,da.checked,ba.value,aa.getTarget(),aa.getColor(),Y.checked,qa.checked,O.checked,X.checked,ea.checked,null!=ka?ka.getLink():null)}),null,d,f);
this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=function(d,f,g,m,q,y,F,C){var H=document.createElement("div");H.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";H.appendChild(G);var aa=this.getCurrentFile();d=0;if(null==aa||aa.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";
null,mxResources.get(null!=I?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(I.container,300,80,!0,!1);I.init()}))}))}var ba=null,Y=null;if(null!=g||null!=m)d+=30,mxUtils.write(H,mxResources.get("width")+":"),ba=document.createElement("input"),ba.setAttribute("type","text"),ba.style.marginRight="16px",ba.style.width="50px",ba.style.marginLeft="6px",ba.style.marginRight="16px",ba.style.marginBottom="10px",ba.value="100%",H.appendChild(ba),mxUtils.write(H,mxResources.get("height")+
":"),Y=document.createElement("input"),Y.setAttribute("type","text"),Y.style.width="50px",Y.style.marginLeft="6px",Y.style.marginBottom="10px",Y.value=m+"px",H.appendChild(Y),mxUtils.br(H);var qa=this.addLinkSection(H,y);g=null!=this.pages&&1<this.pages.length;var O=null;if(null==aa||aa.constructor!=window.DriveFile||f)O=this.addCheckbox(H,mxResources.get("allPages"),g,!g);var X=this.addCheckbox(H,mxResources.get("lightbox"),!0,null,null,!y),ea=this.addEditButton(H,X),ka=ea.getEditInput();y&&(ka.style.marginLeft=
!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";
C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var H=document.createElement("input");H.setAttribute("type","text");H.style.marginRight="16px";H.style.width="60px";H.style.marginLeft="4px";H.value=this.lastExportBorder||"0";y.appendChild(H);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),aa=m?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),
Editor.defaultIncludeDiagram);F=this.editor.graph;var da=m?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=da&&(da.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var ba=parseInt(C.value)/100||1,Y=parseInt(H.value)||0;g(!G.checked,null!=aa?aa.checked:!1,null!=da?da.checked:!1,ba,Y)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(m?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
function(d,f,g,m,q,y,F,C,H){F=null!=F?F:Editor.defaultIncludeDiagram;var G=document.createElement("div");G.style.whiteSpace="nowrap";var aa=this.editor.graph,da="jpeg"==C?220:300,ba=document.createElement("h3");mxUtils.write(ba,d);ba.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(ba);mxUtils.write(G,mxResources.get("zoom")+":");var Y=document.createElement("input");Y.setAttribute("type","text");Y.style.marginRight="16px";Y.style.width="60px";Y.style.marginLeft=
V.checked,R.checked,fa.checked,qa.value,X.checked,!1,ra.value,null!=Q?Q.checked:null,null!=I?I.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var H=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),aa=this.addCheckbox(y,g),da=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,da),Y=ba.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),O=this.addCheckbox(y,mxResources.get("layers"),
da.checked,ba.getLink(),O.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,m,q,y,F,C){function H(Y){var qa=" ",O="";m&&(qa=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=aa?"&page="+aa:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",O+="cursor:pointer;");d&&(O+="max-width:100%;");var X="";g&&(X=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Y+'"'+X+(""!=O?' style="'+O+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),aa=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Y){var qa=m?this.getFileData(!0):null;
Y=this.createImageDataUri(Y,qa,"png");H(Y)}),null,null,null,mxUtils.bind(this,function(Y){C({message:mxResources.get("unknownError")})}),null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var da="";g&&(da="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var ba=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(m?"1":"0")+da+"&xml="+encodeURIComponent(f));ba.send(mxUtils.bind(this,function(){200<=
ba.getStatus()&&299>=ba.getStatus()?H("data:image/png;base64,"+ba.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,f,g,m,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),H=C.getElementsByTagName("a");if(null!=H)for(var G=0;G<H.length;G++){var aa=H[G].getAttribute("href");null!=aa&&"#"==aa.charAt(0)&&"_blank"==H[G].getAttribute("target")&&H[G].removeAttribute("target")}m&&
C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var da=" ",ba="";m&&(da="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(q?"&edit=_blank":"")+(y?"&layers=1":
"")+"');}})(this);\"",ba+="cursor:pointer;");d&&(ba+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Y){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Y))+'"'+(""!=ba?' style="'+ba+'"':"")+da+"/>")}))}else ba="",m&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
d.nodeName)g=d;else if("mxfile"==d.nodeName){var m=d.getElementsByTagName("diagram");if(0<m.length){g=m[0];var q=f.getGlobalVariable;f.getGlobalVariable=function(y){return"page"==y?g.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==y?1:q.apply(this,arguments)}}}null!=g&&(d=Editor.parseDiagramNode(g))}m=this.editor.graph;try{this.editor.graph=f,this.editor.setGraphXml(d)}catch(y){}finally{this.editor.graph=m}return d};EditorUi.prototype.getPngFileProperties=function(d){var f=
1,g=0;if(null!=d){if(d.hasAttribute("scale")){var m=parseFloat(d.getAttribute("scale"));!isNaN(m)&&0<m&&(f=m)}d.hasAttribute("border")&&(m=parseInt(d.getAttribute("border")),!isNaN(m)&&0<m&&(g=m))}return{scale:f,border:g}};EditorUi.prototype.getEmbeddedPng=function(d,f,g,m,q){try{var y=this.editor.graph,F=null!=y.themes&&"darkTheme"==y.defaultThemeName,C=null;if(null!=g&&0<g.length)y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet()),document.body.appendChild(y.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,
f&&f(aa)}),null,null,m,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(aa){null!=f&&f(aa)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){C=null!=C?C:!0;aa=null!=aa?aa:0;F=null!=H?H:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,aa,null,null,y,null,null,null,f.shadowVisible||da,null,ba,"diagram");(f.shadowVisible||da)&&f.addSvgShadow(y,null,null,0==aa);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Y=mxUtils.bind(this,
function(qa){qa=(m?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(O){Y(O)})):Y(qa)}));else return Y(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(m){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){H=null!=H?H:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Y=this.editor.graph.isSelectionEmpty();g=null!=g?g:Y;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
q?this.getFileData(!0,null,null,null,g,C):null,H,null==this.pages||0==this.pages.length,aa)}catch(O){this.handleError(O)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,m,null,null,y,F,G,da,ba)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,m,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
this.currentPage,ba))}}else if(0<da.length){y=[];var Y=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[da[0].getAttribute("id")]=this.pages[0].getId(),aa=Editor.parseDiagramNode(da[0]),m=!1,Y=1);for(;Y<da.length;Y++){var qa=da[Y].getAttribute("id");da[Y].removeAttribute("id");var O=this.updatePageRoot(new DiagramPage(da[Y]));d[qa]=da[Y].getAttribute("id");var X=this.pages.length;null==O.getName()&&O.setName(mxResources.get("pageWithNumber",[X+1]));H.model.execute(new ChangePage(this,
O,O,X,!0));y.push(O)}this.updatePageLinks(d,y)}}if(null!=aa&&"mxGraphModel"===aa.nodeName){C=H.importGraphModel(aa,f,g,m);if(null!=C)for(Y=0;Y<C.length;Y++)this.updatePageLinksForCell(d,C[Y]);var ea=H.parseBackgroundImage(aa.getAttribute("backgroundImage"));if(null!=ea&&null!=ea.originalSrc){this.updateBackgroundPageLink(d,ea);var ka=new ChangePageSetup(this,null,ea);ka.ignoreColor=!0;H.model.execute(ka)}}F&&this.insertHandler(C,null,null,H.defaultVertexStyle,H.defaultEdgeStyle,!1,!0)}finally{H.model.endUpdate()}}}catch(ja){if(q)throw ja;
this.handleError(ja)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(m){}};EditorUi.prototype.updatePageLinksForCell=
function(d,f){var g=document.createElement("div"),m=this.editor.graph,q=m.getLinkForCell(f);null!=q&&m.setLinkForCell(f,this.updatePageLink(d,q));if(m.isHtmlLabel(f)){g.innerHTML=m.sanitizeHtml(m.getLabel(f));for(var y=g.getElementsByTagName("a"),F=!1,C=0;C<y.length;C++)q=y[C].getAttribute("href"),null!=q&&(y[C].setAttribute("href",this.updatePageLink(d,q)),F=!0);F&&m.labelChanged(f,g.innerHTML)}for(C=0;C<m.model.getChildCount(f);C++)this.updatePageLinksForCell(d,m.model.getChildAt(f,C))};EditorUi.prototype.updatePageLink=
function(d,f){if(Graph.isPageLink(f)){var g=d[f.substring(f.indexOf(",")+1)];f=null!=g?"data:page/id,"+g:null}else if("data:action/json,"==f.substring(0,17))try{var m=JSON.parse(f.substring(17));if(null!=m.actions){for(var q=0;q<m.actions.length;q++){var y=m.actions[q];if(null!=y.open&&Graph.isPageLink(y.open)){var F=y.open.substring(y.open.indexOf(",")+1);g=d[F];null!=g?y.open="data:page/id,"+g:null==this.getPageById(F)&&delete y.open}}f="data:action/json,"+JSON.stringify(m)}}catch(C){}return f};
EditorUi.prototype.isRemoteVisioFormat=function(d){return/(\.v(sd|dx))($|\?)/i.test(d)||/(\.vs(s|x))($|\?)/i.test(d)};EditorUi.prototype.importVisio=function(d,f,g,m,q){m=null!=m?m:d.name;g=null!=g?g:mxUtils.bind(this,function(F){this.handleError(F)});var y=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var F=this.isRemoteVisioFormat(m);try{var C="UNKNOWN-VISIO",H=m.lastIndexOf(".");if(0<=H&&H<m.length)C=m.substring(H+1).toUpperCase();else{var G=m.lastIndexOf("/");0<=
G&&G<m.length&&(m=m.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+m,label:F?"remote":"local"})}catch(da){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,m);var aa=new XMLHttpRequest;aa.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(m)?"?stencil=1":""));aa.responseType="blob";this.addRemoteServiceSecurityCheck(aa);
null!=q&&aa.setRequestHeader("x-convert-custom",q);aa.onreadystatechange=mxUtils.bind(this,function(){if(4==aa.readyState)if(200<=aa.status&&299>=aa.status)try{var da=aa.response;if("text/xml"==da.type){var ba=new FileReader;ba.onload=mxUtils.bind(this,function(Y){try{f(Y.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});ba.readAsText(da)}else this.doImportVisio(da,f,g,m)}catch(Y){g(Y)}else try{""==aa.responseType||"text"==aa.responseType?g({message:aa.responseText}):(ba=
new FileReader,ba.onload=function(){g({message:JSON.parse(ba.result).Message})},ba.readAsText(aa.response))}catch(Y){g({})}});aa.send(F)}else try{this.doImportVisio(d,f,g,m)}catch(da){g(da)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,
function(q){this.handleError(q)});var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?m():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",m))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=
!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var m=mxUtils.bind(this,
console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(m,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
function(){mxscript("js/orgchart/mxOrgChartLayout.js",m)})})})}):mxscript("js/extensions.min.js",m))};EditorUi.prototype.generateMermaidImage=function(d,f,g,m){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=
F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");if(0<C.length){var H=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(H)||isNaN(G))try{var aa=C[0].getAttribute("viewBox").split(/\s+/);H=parseFloat(aa[2]);G=parseFloat(aa[3])}catch(da){H=H||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),H,G)}else m({message:mxResources.get("invalidInput")})}catch(da){m(da)}})}catch(F){m(F)}};
"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,m){function q(C,H,G){c1=C>>2;c2=(C&3)<<4|H>>4;c3=(H&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+
f)g(this.response);else{var H=new FileReader;H.readAsDataURL(this.response);H.onloadend=function(G){var aa=new Image;aa.onload=function(){try{var da=aa.width,ba=aa.height;if(0==da&&0==ba){var Y=H.result,qa=Y.indexOf(","),O=decodeURIComponent(escape(atob(Y.substring(qa+1)))),X=mxUtils.parseXml(O).getElementsByTagName("svg");0<X.length&&(da=parseFloat(X[0].getAttribute("width")),ba=parseFloat(X[0].getAttribute("height")))}g(H.result,da,ba)}catch(ea){m(ea)}};aa.src=H.result};H.onerror=function(G){m(G)}}else m(C)};
F.onerror=function(C){m(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var m=this.editor.graph,q=null;m.getModel().beginUpdate();try{q=m.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),m.updateCellSize(q,!0)}finally{m.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?
Y);H.setSelectionCell(H.insertVertex(null,null,"",H.snap(f),H.snap(g),qa,ba,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";"))}}),mxUtils.bind(this,function(){var ba=null;H.getModel().beginUpdate();try{ba=H.insertVertex(H.getDefaultParent(),null,d,H.snap(f),H.snap(g),1,1,"text;"+(m?"html=1;":"")),H.updateCellSize(ba),H.fireEvent(new mxEventObject("textInserted","cells",[ba]))}finally{H.getModel().endUpdate()}H.setSelectionCell(ba)}))}else{d=
Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,function(ba){this.editor.graph.setSelectionCells(this.importXml(ba,f,g,y,null,C))}),mxUtils.bind(this,function(ba){this.handleError(ba)}));else{H=this.editor.graph;q=null;H.getModel().beginUpdate();try{q=H.insertVertex(H.getDefaultParent(),null,"",H.snap(f),H.snap(g),1,1,"text;whiteSpace=wrap;"+(m?"html=1;":""));
"none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.getFileContent(this,F,C,H)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.deleteFile(this,F,C,H)});if(!f){var m=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=
function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=m;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(d,f,g){var m=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,H=!1;y.forEach(function(G,aa){G=
aa.name.toLowerCase();"diagram/diagram.xml"==G?(H=!0,aa.async("string").then(function(da){0==da.indexOf("<mxfile ")?f(da):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=aa))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&m.isRemoteFileFormat(G,d.name)?m.isOffline()?m.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):m.parseFileData(G,mxUtils.bind(this,function(aa){4==aa.readyState&&(200<=aa.status&&299>=aa.status?f(aa.responseText):
g())}),d.name):g()}):H||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,m,q,y,F,C,H,G,aa,da){G=null!=G?G:!0;var ba=!1,Y=null,qa=mxUtils.bind(this,function(O){var X=null;null!=O&&"<mxlibrary"==O.substring(0,10)?this.loadLibrary(new LocalLibrary(this,O,F)):X=this.importXml(O,g,m,G,null,null!=da?mxEvent.isControlDown(da):null);null!=C&&
C(X)});"image"==f.substring(0,5)?(H=!1,"image/png"==f.substring(0,9)&&(f=aa?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Y=this.importXml(f,g,m,G,null,null!=da?mxEvent.isControlDown(da):null),H=!0)),H||(f=this.editor.graph,H=d.indexOf(";"),0<H&&(d=d.substring(0,H)+d.substring(d.indexOf(",",H+1))),G&&f.isGridEnabled()&&(g=f.snap(g),m=f.snap(m)),Y=[f.insertVertex(null,null,"",g,m,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
q,F)):0==d.indexOf("PK")&&null!=H?(ba=!0,this.importZipFile(H,qa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G,null,null!=da?mxEvent.isControlDown(da):null));ba||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=
if(null==ta||0==ta.length)Aa.setAttribute("viewBox","0 0 "+sa+" "+Ba);else if(isNaN(sa)||isNaN(Ba)){var Na=ta.split(" ");3<Na.length&&(sa=parseFloat(Na[2]),Ba=parseFloat(Na[3]))}N=Editor.createSvgDataUri(mxUtils.getXml(Aa));var Ca=Math.min(1,Math.min(m/Math.max(1,sa)),m/Math.max(1,Ba)),Qa=q(N,ra.type,f+la*U,g+la*U,Math.max(1,Math.round(sa*Ca)),Math.max(1,Math.round(Ba*Ca)),ra.name);if(isNaN(sa)||isNaN(Ba)){var Ua=new Image;Ua.onload=mxUtils.bind(this,function(){sa=Math.max(1,Ua.width);Ba=Math.max(1,
this.loadImage(J.target.result,mxUtils.bind(this,function(va){this.resizeImage(va,J.target.result,mxUtils.bind(this,function(Aa,sa,Ba){R(la,mxUtils.bind(this,function(){if(null!=Aa&&Aa.length<G){var ta=qa&&this.isResampleImageSize(ra.size,aa)?Math.min(1,Math.min(m/sa,m/Ba)):1;return q(Aa,ra.type,f+la*U,g+la*U,Math.round(sa*ta),Math.round(Ba*ta),ra.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),qa,m,aa,ra.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else N=
function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,
mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,
f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
f};EditorUi.prototype.resizeImage=function(d,f,g,m,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),H=Math.max(1,d.height);if(m&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,H/q);if(1<G){var aa=Math.round(C/G),da=Math.round(H/G),ba=document.createElement("canvas");ba.width=aa;ba.height=da;ba.getContext("2d").drawImage(d,0,0,aa,da);var Y=ba.toDataURL();if(Y.length<f.length){var qa=document.createElement("canvas");qa.width=aa;qa.height=da;var O=qa.toDataURL();
Y!==O&&(f=Y,C=aa,H=da)}}}catch(X){}g(f,C,H)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var m=new Image;m.onload=function(){m.width=0<m.width?m.width:120;m.height=0<m.height?m.height:120;f(m)};null!=g&&(m.onerror=g);m.src=d}catch(q){if(null!=g)g(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?
"mermaidData"),null!=ka)this.editMermaidData(X,ea,ka);else{var ja=f.getCellStyle(X);"1"==mxUtils.getValue(ja,"metaEdit","0")?d.showDataDialog(X):g.apply(this,arguments)}}catch(U){d.handleError(U)}};f.getLinkTitle=function(X){return d.getLinkTitle(X)};f.customLinkClicked=function(X){var ea=!1;try{d.handleCustomLink(X),ea=!0}catch(ka){d.handleError(ka)}return ea};var m=f.parseBackgroundImage;f.parseBackgroundImage=function(X){var ea=m.apply(this,arguments);null!=ea&&null!=ea.src&&Graph.isPageLink(ea.src)&&
mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(H,G,aa,da,ba,Y){d.insertImage(H,ba,Y)},function(){},function(H){return"image/"==H.type.substring(0,6)},function(H){for(var G=0;G<H.length;G++)H[G]()});
"false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var m=!1;this.keyHandler.bindControlKey(88,
null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||m||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",
f.container.appendChild(g),m=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!m||224!=F&&17!=F&&91!=F&&93!=F||(m=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),
d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(m,q,y){null==m[q]&&(m[q]=y)},g=this.editor.graph;
this.editor.exportToCanvas(mxUtils.bind(this,function(m,q){try{this.spinner.stop();var y=this.createImageDataUri(m,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,F,C,mxUtils.bind(this,function(H){this.handleError(H)}))}catch(H){this.handleError(H)}}),null,null,null,mxUtils.bind(this,function(m){this.spinner.stop();this.handleError(m)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,
null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(m){this.handleError(m)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,m){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](m)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerHTML="";else{var m=
mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(m));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(m,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),
f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,m){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),m);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,
function(d,f,g,m){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var H=decodeURIComponent(F);this.isCompatibleString(H)&&(C=!0,F=H)}catch(da){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,
y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(da){console.log("Miro import error:",da)}this.pasteXml(y,m,C,d);try{mxEvent.consume(d)}catch(da){}}else if(!g){var aa=this.editor.graph;aa.lastPasteXml=null;aa.pasteCounter=0}}catch(da){this.handleError(da)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=
0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(m){null!=f&&(f.parentNode.removeChild(f),f=null);m.stopPropagation();m.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(m){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());m.stopPropagation();m.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(m){null!=f&&(f.parentNode.removeChild(f),
f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<m.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(m.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(m)&&!mxEvent.isShiftDown(m)):this.openFiles(m.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(m);if(null==q){var y=null!=m.dataTransfer?m.dataTransfer:m.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):
(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?m.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,
"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}m.stopPropagation();m.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var m=document.body;var q=document.documentElement;var y=(m.clientWidth||q.clientWidth)-3;m=Math.max(m.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,m=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border=
"3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,m-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),
m=new mxGraphModel;g.decode(f,m);f=m.getChildAt(m.getRoot(),0);for(g=0;g<m.getChildCount(f);g++)d.push(m.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,m,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,
10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(H){this.handleError(H,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,m)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();
(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,m)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==
d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,m)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,m=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,m,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=
0;g<d.length;g++)mxUtils.bind(this,function(m){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,m.name,m,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();this.handleError(y);window.openFile=null});"image"!==m.type.substring(0,5)&&"application/pdf"!==m.type||"image/svg"===m.type.substring(0,9)?q.readAsText(m):q.readAsDataURL(m)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,m,q){var y=this.getCurrentFile(),
F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,d,f||this.defaultFilename,g,m,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),
0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var m=this.editor.graph,q=m.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));m.model.isEdge(d)&&
(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=m.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(m.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=
this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,m,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=m?m:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var m=f.background;if(null==m||m==mxConstants.NONE)m=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,m,1,this.embedExportBorder)}else d||
g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,m=!1,q=null,y=mxUtils.bind(this,function(H,G){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayouts(this.editor.graph.createLayouts(G.layouts));return}if("prompt"==G.action){this.spinner.stop();var Y=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(P){null!=P?F.postMessage(JSON.stringify({event:"prompt",value:P,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",message:G}),
"*")},null!=G.titleKey?mxResources.get(G.titleKey):G.title);this.showDialog(Y.container,300,80,!0,!1);Y.init();return}if("draft"==G.action){var qa=da(G.xml);this.spinner.stop();Y=new DraftDialog(this,mxResources.get("draftFound",[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",message:G}),
"*")}),G.editKey?mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),"*")}):null);this.showDialog(Y.container,640,480,!0,!1,mxUtils.bind(this,function(P){P&&this.actions.get("exit").funct()}));try{Y.init()}catch(P){F.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();
var O=1==G.enableRecent,X=1==G.enableSearch,ea=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ja=new TemplatesDialog(this,function(P,Z,oa){P=P||this.emptyDiagramXml;F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa.url,libs:oa.libs,builtIn:null!=oa.info&&null!=oa.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=
ka?ka.id:null,O?mxUtils.bind(this,function(P,Z,oa){this.remoteInvoke("getRecentDiagrams",[oa],null,P,Z)}):null,X?mxUtils.bind(this,function(P,Z,oa,va){this.remoteInvoke("searchDiagrams",[P,va],null,Z,oa)}):null,mxUtils.bind(this,function(P,Z,oa){this.remoteInvoke("getFileContent",[P.url],null,Z,oa)}),null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,!1,!1,!0,!0);this.showDialog(ja.container,window.innerWidth,window.innerHeight,!0,
!1,null,!1,!0);return}Y=new NewDialog(this,!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(P,Z,oa,va){P=P||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa,libs:va,builtIn:!0,message:G}),"*"):(d(P,H,P!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,O?mxUtils.bind(this,function(P){this.remoteInvoke("getRecentDiagrams",[null],
null,P,function(){P(null,"Network Error!")})}):null,X?mxUtils.bind(this,function(P,Z){this.remoteInvoke("searchDiagrams",[P,null],null,Z,function(){Z(null,"Network Error!")})}):null,mxUtils.bind(this,function(P,Z,oa){F.postMessage(JSON.stringify({event:"template",docUrl:P,info:Z,name:oa}),"*")}),null,null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(P){this.sidebar.hideTooltip();
P&&this.actions.get("exit").funct()}));Y.init();return}if("textContent"==G.action){var U=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:U,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var I=null!=G.messageKey?mxResources.get(G.messageKey):
G.message;null==G.show||G.show?this.spinner.spin(document.body,I):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var V=null!=G.xml?G.xml:
this.getFileData(!0);this.editor.graph.setEnabled(!1);var Q=this.editor.graph,R=mxUtils.bind(this,function(P){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=P;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),fa=mxUtils.bind(this,function(P){null==P&&(P=Editor.blankImage);"xmlpng"==G.format&&(P=Editor.writeGraphModelToPng(P,"tEXt","mxfile",encodeURIComponent(V)));Q!=this.editor.graph&&Q.container.parentNode.removeChild(Q.container);
R(P)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ra=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var P=Q.getGlobalVariable;Q=this.createTemporaryGraph(Q.getStylesheet());for(var Z,oa=0;oa<this.pages.length;oa++)if(this.pages[oa].getId()==la){Z=this.updatePageRoot(this.pages[oa]);break}null==Z&&(Z=this.currentPage);Q.getGlobalVariable=function(Ba){return"page"==Ba?Z.getName():
"pagenumber"==Ba?1:P.apply(this,arguments)};document.body.appendChild(Q.container);Q.model.setRoot(Z.root)}if(null!=G.layerIds){var va=Q.model,Aa=va.getChildCells(va.getRoot()),sa={};for(oa=0;oa<G.layerIds.length;oa++)sa[G.layerIds[oa]]=!0;for(oa=0;oa<Aa.length;oa++)va.setVisible(Aa[oa],sa[Aa[oa].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ba){fa(Ba.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){fa(null)}),null,null,G.scale,G.transparent,G.shadow,
null,Q,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(V),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ra)},0):ra()):ra()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,
G.action){ba=G.toSketch;m=1==G.autosave;this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var u=Editor.sketchMode;this.doSetSketchMode(G.rough);u!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(u=Editor.darkMode,this.doSetDarkMode(G.dark),
function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),S=mxUtils.bind(this,function(P,Z){g=!0;try{d(P,Z,null,ba)}catch(oa){this.handleError(oa)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=W();m&&null==f&&(f=mxUtils.bind(this,function(oa,va){oa=W();oa==q||g||(va=this.createLoadMessage("autosave"),va.xml=oa,(window.opener||window.parent).postMessage(JSON.stringify(va),"*"));q=oa}),this.editor.graph.model.addListener(mxEvent.CHANGE,
href:H,target:G,allowOpener:aa}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var m="1"==
urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,m);f.setAttribute("title",m);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),d.appendChild(f),"1"==urlParams.saveAndExit&&
":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,qa=null,O=
null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",I="auto",V=null,Q=null,R=40,fa=40,la=100,ra=0,u=function(){null!=f?f(ma):(H.setSelectionCells(ma),H.scrollCellToVisible(H.getSelectionCell()))},J=H.getFreeInsertPoint(),N=J.x,W=J.y;J=W;var S=null,P="auto";ka=null;for(var Z=[],oa=null,va=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),
Aa++;if("#"!=d.charAt(1)){var sa=d.indexOf(":");if(0<sa){var Ba=mxUtils.trim(d.substring(1,sa)),ta=mxUtils.trim(d.substring(sa+1));"label"==Ba?S=H.sanitizeHtml(ta):"labelname"==Ba&&0<ta.length&&"-"!=ta?Y=ta:"labels"==Ba&&0<ta.length&&"-"!=ta?O=JSON.parse(ta):"style"==Ba?aa=ta:"parentstyle"==Ba?X=ta:"unknownStyle"==Ba&&"-"!=ta?qa=ta:"stylename"==Ba&&0<ta.length&&"-"!=ta?ba=ta:"styles"==Ba&&0<ta.length&&"-"!=ta?da=JSON.parse(ta):"vars"==Ba&&0<ta.length&&"-"!=ta?G=JSON.parse(ta):"identity"==Ba&&0<ta.length&&
"-"!=ta?ea=ta:"parent"==Ba&&0<ta.length&&"-"!=ta?ka=ta:"namespace"==Ba&&0<ta.length&&"-"!=ta?ja=ta:"width"==Ba?U=ta:"height"==Ba?I=ta:"left"==Ba&&0<ta.length?V=ta:"top"==Ba&&0<ta.length?Q=ta:"ignore"==Ba?va=ta.split(","):"connect"==Ba?Z.push(JSON.parse(ta)):"link"==Ba?oa=ta:"padding"==Ba?ra=parseFloat(ta):"edgespacing"==Ba?R=parseFloat(ta):"nodespacing"==Ba?fa=parseFloat(ta):"levelspacing"==Ba?la=parseFloat(ta):"layout"==Ba&&(P=ta)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));
var Na=this.editor.csvToArray(g[Aa].replace(/\r$/,""));sa=d=null;Ba=[];for(ta=0;ta<Na.length;ta++)ea==Na[ta]&&(d=ta),ka==Na[ta]&&(sa=ta),Ba.push(mxUtils.trim(Na[ta]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==S&&(S="%"+Ba[0]+"%");if(null!=Z)for(var Ca=0;Ca<Z.length;Ca++)null==C[Z[Ca].to]&&(C[Z[Ca].to]={});ea=[];for(ta=Aa+1;ta<g.length;ta++){var Qa=this.editor.csvToArray(g[ta].replace(/\r$/,""));if(null==Qa){var Ua=40<g[ta].length?g[ta].substring(0,40)+"...":g[ta];throw Error(Ua+
" ("+ta+"):\n"+mxResources.get("containsValidationErrors"));}0<Qa.length&&ea.push(Qa)}H.model.beginUpdate();try{for(ta=0;ta<ea.length;ta++){Qa=ea[ta];var Ka=null,bb=null!=d?ja+Qa[d]:null;null!=bb&&(Ka=H.model.getCell(bb));g=null!=Ka;var Va=new mxCell(S,new mxGeometry(N,J,0,0),aa||"whiteSpace=wrap;html=1;");Va.vertex=!0;Va.id=bb;Ua=null!=Ka?Ka:Va;for(var $a=0;$a<Qa.length;$a++)H.setAttributeForCell(Ua,Ba[$a],Qa[$a]);if(null!=Y&&null!=O){var z=O[Ua.getAttribute(Y)];null!=z&&H.labelChanged(Ua,z)}if(null!=
ba&&null!=da){var L=da[Ua.getAttribute(ba)];null!=L&&(Ua.style=L)}H.setAttributeForCell(Ua,"placeholders","1");Ua.style=H.replacePlaceholders(Ua,Ua.style,G);g?(0>mxUtils.indexOf(y,Ka)&&y.push(Ka),H.fireEvent(new mxEventObject("cellsInserted","cells",[Ka]))):H.fireEvent(new mxEventObject("cellsInserted","cells",[Va]));Ka=Va;if(!g)for(Ca=0;Ca<Z.length;Ca++)C[Z[Ca].to][Ka.getAttribute(Z[Ca].to)]=Ka;null!=oa&&"link"!=oa&&(H.setLinkForCell(Ka,Ka.getAttribute(oa)),H.setAttributeForCell(Ka,oa,null));var M=
this.editor.graph.getPreferredSizeForCell(Ka);ka=null!=sa?H.model.getCell(ja+Qa[sa]):null;if(Ka.vertex){Ua=null!=ka?0:N;Aa=null!=ka?0:W;null!=V&&null!=Ka.getAttribute(V)&&(Ka.geometry.x=Ua+parseFloat(Ka.getAttribute(V)));null!=Q&&null!=Ka.getAttribute(Q)&&(Ka.geometry.y=Aa+parseFloat(Ka.getAttribute(Q)));var T="@"==U.charAt(0)?Ka.getAttribute(U.substring(1)):null;Ka.geometry.width=null!=T&&"auto"!=T?parseFloat(Ka.getAttribute(U.substring(1))):"auto"==U||"auto"==T?M.width+ra:parseFloat(U);var ca="@"==
I.charAt(0)?Ka.getAttribute(I.substring(1)):null;Ka.geometry.height=null!=ca&&"auto"!=ca?parseFloat(ca):"auto"==I||"auto"==ca?M.height+ra:parseFloat(I);J+=Ka.geometry.height+fa}g?(null==F[bb]&&(F[bb]=[]),F[bb].push(Ka)):(m.push(Ka),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ka,ka),q.push(ka)):y.push(H.addCell(Ka)))}for(ta=0;ta<q.length;ta++)T="@"==U.charAt(0)?q[ta].getAttribute(U.substring(1)):null,ca="@"==I.charAt(0)?q[ta].getAttribute(I.substring(1)):null,"auto"!=U&&"auto"!=T||"auto"!=
I&&"auto"!=ca||H.updateGroupBounds([q[ta]],ra,!0);var ia=y.slice(),ma=y.slice();for(Ca=0;Ca<Z.length;Ca++){var pa=Z[Ca];for(ta=0;ta<m.length;ta++){Ka=m[ta];var ua=mxUtils.bind(this,function(Ea,La,Ta){var Wa=La.getAttribute(Ta.from);if(null!=Wa&&""!=Wa){Wa=Wa.split(",");for(var fb=0;fb<Wa.length;fb++){var gb=C[Ta.to][Wa[fb]];if(null==gb&&null!=qa){gb=new mxCell(Wa[fb],new mxGeometry(N,W,0,0),qa);gb.style=H.replacePlaceholders(La,gb.style,G);var ib=this.editor.graph.getPreferredSizeForCell(gb);gb.geometry.width=
ib.width+ra;gb.geometry.height=ib.height+ra;C[Ta.to][Wa[fb]]=gb;gb.vertex=!0;gb.id=Wa[fb];y.push(H.addCell(gb))}if(null!=gb){ib=Ta.label;null!=Ta.fromlabel&&(ib=(La.getAttribute(Ta.fromlabel)||"")+(ib||""));null!=Ta.sourcelabel&&(ib=H.replacePlaceholders(La,Ta.sourcelabel,G)+(ib||""));null!=Ta.tolabel&&(ib=(ib||"")+(gb.getAttribute(Ta.tolabel)||""));null!=Ta.targetlabel&&(ib=(ib||"")+H.replacePlaceholders(gb,Ta.targetlabel,G));var tb="target"==Ta.placeholders==!Ta.invert?gb:Ea;tb=null!=Ta.style?H.replacePlaceholders(tb,
Ta.style,G):H.createCurrentEdgeStyle();ib=H.insertEdge(null,null,ib||"",Ta.invert?gb:Ea,Ta.invert?Ea:gb,tb);if(null!=Ta.labels)for(tb=0;tb<Ta.labels.length;tb++){var qb=Ta.labels[tb],cb=new mxCell(qb.label||tb,new mxGeometry(null!=qb.x?qb.x:0,null!=qb.y?qb.y:0,0,0),"resizable=0;html=1;");cb.vertex=!0;cb.connectable=!1;cb.geometry.relative=!0;null!=qb.placeholders&&(cb.value=H.replacePlaceholders("target"==qb.placeholders==!Ta.invert?gb:Ea,cb.value,G));if(null!=qb.dx||null!=qb.dy)cb.geometry.offset=
new mxPoint(null!=qb.dx?qb.dx:0,null!=qb.dy?qb.dy:0);ib.insert(cb)}ma.push(ib);mxUtils.remove(Ta.invert?Ea:gb,ia)}}}});ua(Ka,Ka,pa);if(null!=F[Ka.id])for($a=0;$a<F[Ka.id].length;$a++)ua(Ka,F[Ka.id][$a],pa)}}if(null!=va)for(ta=0;ta<m.length;ta++)for(Ka=m[ta],$a=0;$a<va.length;$a++)H.setAttributeForCell(Ka,mxUtils.trim(va[$a]),null);if(0<y.length){var ya=new mxParallelEdgeLayout(H);ya.spacing=R;ya.checkOverlap=!0;var Fa=function(){0<ya.spacing&&ya.execute(H.getDefaultParent());for(var Ea=0;Ea<y.length;Ea++){var La=
H.getCellGeometry(y[Ea]);La.x=Math.round(H.snap(La.x));La.y=Math.round(H.snap(La.y));"auto"==U&&(La.width=Math.round(H.snap(La.width)));"auto"==I&&(La.height=Math.round(H.snap(La.height)))}};if("["==P.charAt(0)){var Ma=u;H.view.validate();this.executeLayouts(H.createLayouts(JSON.parse(P)),function(){Fa();Ma()});u=null}else if("circle"==P){var Oa=new mxCircleLayout(H);Oa.disableEdgeStyle=!1;Oa.resetEdges=!1;var Pa=Oa.isVertexIgnored;Oa.isVertexIgnored=function(Ea){return Pa.apply(this,arguments)||
0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){Oa.execute(H.getDefaultParent());Fa()},!0,u);u=null}else if("horizontaltree"==P||"verticaltree"==P||"auto"==P&&ma.length==2*y.length-1&&1==ia.length){H.view.validate();var Sa=new mxCompactTreeLayout(H,"horizontaltree"==P);Sa.levelDistance=fa;Sa.edgeRouting=!1;Sa.resetEdges=!1;this.executeLayout(function(){Sa.execute(H.getDefaultParent(),0<ia.length?ia[0]:null)},!0,u);u=null}else if("horizontalflow"==P||"verticalflow"==P||"auto"==P&&1==ia.length){H.view.validate();
var za=new mxHierarchicalLayout(H,"horizontalflow"==P?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=fa;za.parallelEdgeSpacing=R;za.interRankCellSpacing=la;za.disableEdgeStyle=!1;this.executeLayout(function(){za.execute(H.getDefaultParent(),ma);H.moveCells(ma,N,W)},!0,u);u=null}else if("organic"==P||"auto"==P&&ma.length>y.length){H.view.validate();var wa=new mxFastOrganicLayout(H);wa.forceConstant=3*fa;wa.disableEdgeStyle=!1;wa.resetEdges=!1;var Da=wa.isVertexIgnored;
wa.isVertexIgnored=function(Ea){return Da.apply(this,arguments)||0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){wa.execute(H.getDefaultParent());Fa()},!0,u);u=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=u&&u()}}catch(Ea){this.handleError(Ea)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],
g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,
d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();
var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);
Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);
this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=
function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,f=this.getCurrentFile(),g=this.getSelectionState(),m=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(m);this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());
this.actions.get("guides").setEnabled(m);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(m);this.actions.get("connectionArrows").setEnabled(m);this.actions.get("connectionPoints").setEnabled(m);this.actions.get("copyStyle").setEnabled(m&&!d.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(m&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(m);this.actions.get("createRevision").setEnabled(m);
this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(m&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);
this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(m&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};
var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(d,f,g,m,q,y,F,C){var H=d.editor.graph;if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,
"svg",mxUtils.getXml(H.getSvg(m,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),aa=H.getGraphBounds(),da=Math.floor(aa.width*q/H.view.scale),ba=Math.floor(aa.height*q/H.view.scale);if(G.length<=MAX_REQUEST_SIZE&&da*ba<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=g&&"jpeg"!=g||!d.isExportToCanvas()){var Y={globalVars:H.getExportVariables()};C&&(Y.grid={size:H.gridSize,steps:H.view.gridSteps,color:H.view.gridColor});d.saveRequest(f,g,function(qa,O){return new mxXmlRequest(EXPORT_URL,
"format="+g+"&base64="+(O||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Y))+(0<F?"&dpi="+F:"")+"&bg="+(null!=m?m:"none")+"&w="+da+"&h="+ba+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==m||"none"==m,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);
var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var m=d;this.currentPage!=this.pages[g]&&(m=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),m.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+m.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var m=
document.createElement("h3");mxUtils.write(m,mxUtils.htmlEntities(d));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(m);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var H=JSON.parse(decodeURIComponent(C.substring(1)));
y[H[0]]={id:H[0],title:H[1],downloadUrl:H[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerHTML="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var aa=0;aa<G.length;aa++){var da=G[aa];y[da.id]&&(f[da.id]=da);var ba=this.addCheckbox(q,da.title,y[da.id]);(function(Y,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Y.id]=Y:delete f[Y.id]})})(da,
ba)}},mxUtils.bind(this,function(G){q.innerHTML="";var aa=document.createElement("div");aa.style.padding="8px";aa.style.textAlign="center";mxUtils.write(aa,mxResources.get("error")+": ");mxUtils.write(aa,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));q.appendChild(aa)}));g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,aa;for(aa in f)null==y[aa]&&(G++,mxUtils.bind(this,function(da){this.remoteInvoke("getFileContent",
[da.downloadUrl],null,mxUtils.bind(this,function(ba){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,ba,da))}catch(Y){this.handleError(Y,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(f[aa]));for(aa in y)f[aa]||this.closeLibrary(new RemoteLibrary(this,null,y[aa]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");
this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=
d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==g)throw Error("No callback for "+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,m,q){var y=
!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&m.apply(this,arguments)}),H=mxUtils.bind(this,function(){window.clearTimeout(F);y&&q.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:C,error:H});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?
this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,aa){var da={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=aa?da.error={errResp:aa}:null!=G&&(da.resp=G);this.remoteWin.postMessage(JSON.stringify(da),"*")});try{var m=d.funtionName,q=this.remoteInvokableFns[m];if(null!=q&&"function"===typeof this[m]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+
q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+m+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),this[m].apply(this,C);else{var H=this[m].apply(this,C);g([H])}}else g(null,"Invalid Call: "+m+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=
window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var m=g.open("database",2);m.onupgradeneeded=function(q){try{var y=m.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",{keyPath:"title"}),y.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(F){null!=f&&f(F)}};m.onsuccess=mxUtils.bind(this,function(q){var y=m.result;this.database=y;EditorUi.migrateStorageFiles&&
(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=document.createElement("iframe");C.style.display="none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(C);var H=!0,G=!1,aa,da=0,ba=mxUtils.bind(this,function(){G=
!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Y=mxUtils.bind(this,function(){da++;qa()}),qa=mxUtils.bind(this,function(){try{if(da>=aa.length)ba();else{var X=aa[da];StorageFile.getFileContent(this,X,mxUtils.bind(this,function(ea){null==ea||".scratchpad"==X&&ea==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[X]}),
"*"):Y()}),Y)}}catch(ea){console.log(ea)}}),O=mxUtils.bind(this,function(X){try{this.setDatabaseItem(null,[{title:X.title,size:X.data.length,lastModified:Date.now(),type:X.isLib?"L":"F"},{title:X.title,data:X.data}],Y,Y,["filesInfo","files"])}catch(ea){console.log(ea)}});F=mxUtils.bind(this,function(X){try{if(X.source==C.contentWindow){var ea={};try{ea=JSON.parse(X.data)}catch(ka){}"init"==ea.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=ea.event||G||(H?null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?(aa=ea.resp[0],H=!1,qa()):ba():null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?O(ea.resp[0]):Y())}}catch(ka){console.log(ka)}});window.addEventListener("message",F)}})));d(y);y.onversionchange=function(){y.close()}});m.onerror=f;m.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,
f,g,m,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=m;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=m&&m(C)}}),m)};EditorUi.prototype.removeDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){m=m||"objects";Array.isArray(m)||(m=[m],d=[d]);q=q.transaction(m,"readwrite");q.oncomplete=f;q.onerror=
g;for(var y=0;y<m.length;y++)q.objectStore(m[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){try{m=m||"objects";var y=q.transaction([m],"readonly").objectStore(m).get(d);y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),
y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=
d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=function(d,f,g){var m=this.getCurrentFile();null!=m?m.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=
function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,f){var g=this.getCurrentFile();return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=
function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=
function(d,f,g,m,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,m,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,
f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba,Y,qa,O){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,m,q,y,F,C,H,G,aa,da,ba,Y,qa,O)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};
EditorUi.prototype.convertImages=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,m)};EditorUi.prototype.convertImageToDataUri=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");
return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=
localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===m.substring(0,8)||"<?xml"===m.substring(0,5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===
f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
mxUtils.write(U,mxResources.get("timeAgo",[I],"{1} ago"));U.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var U=document.createElement("img");U.className="geCommentBusyImg";U.src=IMAGE_PATH+"/spin.gif";ja.appendChild(U);ja.busyImg=U}function m(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,U,I,V,Q){function R(S,P,Z){var oa=document.createElement("li");oa.className=
function(Ca){ta.id=Ca;ja.replies.push(ta);q(Na);Z&&Z()},function(Ca){sa();m(Na);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},oa,va)}function sa(){d(ta,Na,function(Ca){Aa()},!0)}var Ba=fa().pdiv,ta=b.newComment(S,b.getCurrentUser());ta.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var Na=y(ta,ja.replies,Ba,V+1);P?sa():Aa()}if(Q||!ja.isResolved){ba.style.display="none";var ra=document.createElement("div");ra.className="geCommentContainer";ra.setAttribute("data-commentId",
!0)},ja.isResolved);J=b.getCurrentUser();null==J||J.id!=ja.user.id||F||ja.isLocked||(R(mxResources.get("edit"),function(){function S(){d(ja,ra,function(){g(ra);ja.editComment(ja.content,function(){q(ra)},function(P){m(ra);S();b.handleError(P,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}S()},ja.isResolved),R(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(ra);ja.deleteComment(function(S){if(!0===S){S=ra.querySelector(".geCommentTxt");
S.innerHTML="";mxUtils.write(S,mxResources.get("msgDeleted"));var P=ra.querySelectorAll(".geCommentAction");for(S=0;S<P.length;S++)P[S].parentNode.removeChild(P[S]);q(ra);ra.style.opacity="0.5"}else{P=fa(ja).replies;for(S=0;S<P.length;S++)da.removeChild(P[S]);for(S=0;S<U.length;S++)if(U[S]==ja){U.splice(S,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(S){m(ra);b.handleError(S,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
aa.className="geButton";if(!F){var qa=aa.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ja){function U(){d(I,V,function(Q){g(V);b.addComment(Q,function(R){Q.id=R;X.push(Q);q(V)},function(R){m(V);U();b.handleError(R,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var I=b.newComment("",b.getCurrentUser()),V=y(I,X,null,0);
this.window.getX(),U=this.window.getY();this.window.setLocation(ja,U)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
1),D=null,t=0;t<this.pages.length;t++)mxUtils.bind(this,function(g,m){this.pages[g]==this.currentPage?(m.className="geActivePage",m.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):m.className="geInactivePage";m.setAttribute("draggable","true");mxEvent.addListener(m,"dragstart",mxUtils.bind(this,function(q){b.isEnabled()?(mxClient.IS_FF&&q.dataTransfer.setData("Text","<diagram/>"),D=g):mxEvent.consume(q)}));mxEvent.addListener(m,"dragend",mxUtils.bind(this,function(q){D=null;q.stopPropagation();
q.preventDefault()}));mxEvent.addListener(m,"dragover",mxUtils.bind(this,function(q){null!=D&&(q.dataTransfer.dropEffect="move");q.stopPropagation();q.preventDefault()}));mxEvent.addListener(m,"drop",mxUtils.bind(this,function(q){null!=D&&g!=D&&this.movePage(D,g);q.stopPropagation();q.preventDefault()}));e.appendChild(m)})(t,this.createTabForPage(this.pages[t],n,this.pages[t]!=this.currentPage,t+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(e);n=this.createPageMenuTab();this.tabContainer.appendChild(n);
var D=new mxPopupMenu(mxUtils.bind(this,function(d,f){var g=mxUtils.bind(this,function(){for(var F=0;F<this.pages.length;F++)mxUtils.bind(this,function(C){var H=d.addItem(this.pages[C].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[C])}),f),G=this.pages[C].getId();H.setAttribute("title",this.pages[C].getName()+" ("+(C+1)+"/"+this.pages.length+")"+(null!=G?" ["+G+"]":""));this.pages[C]==this.currentPage&&d.addCheckmark(H,Editor.checkmarkImage)})(F)}),m=mxUtils.bind(this,function(){d.addItem(mxResources.get("insertPage"),
null,mxUtils.bind(this,function(){this.insertPage()}),f)});e||g();if(this.editor.graph.isEnabled()){e||(d.addSeparator(f),m());var q=this.currentPage;if(null!=q){d.addSeparator(f);var y=q.getName();d.addItem(mxResources.get("removeIt",[y]),null,mxUtils.bind(this,function(){this.removePage(q)}),f);d.addItem(mxResources.get("renameIt",[y]),null,mxUtils.bind(this,function(){this.renamePage(q,q.getName())}),f);e||d.addSeparator(f);d.addItem(mxResources.get("duplicateIt",[y]),null,mxUtils.bind(this,function(){this.duplicatePage(q,
mxResources.get("copyOf",[q.getName()]))}),f)}}e&&(d.addSeparator(f),m(),d.addSeparator(f),g())}));D.div.className+=" geMenubarMenu";D.smartSeparators=!0;D.showDisabled=!0;D.autoExpand=!0;D.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(D,arguments);D.destroy()});var t=mxEvent.getClientX(n),E=mxEvent.getClientY(n);D.popup(t,E,null,n);this.setCurrentMenu(D);mxEvent.consume(n)}));return b};
null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(t,E,d,f,g,m){t=this.createUrlParameters(t,E,d,f,g,m);d||t.push("hide-pages=1");D.isSelectionEmpty()||(d=D.getBoundingBox(D.getSelectionCells()),E=D.view.translate,g=D.view.scale,d.width/=g,d.height/=g,d.x=d.x/g-E.x,d.y=d.y/g-E.y,t.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
u=0:V==mxConstants.DIRECTION_NORTH?(u=0,J=-J):V==mxConstants.DIRECTION_WEST?(u=-u,J=0):V==mxConstants.DIRECTION_EAST&&(J=0);C.moveCells(ra,u,J);return C.addCells(R,fa)}finally{C.model.endUpdate()}}function m(I,V){C.model.beginUpdate();try{var Q=C.model.getParent(I),R=C.getIncomingTreeEdges(I),fa=d(I);0==R.length&&(R=[C.createEdge(Q,null,"",null,null,C.createCurrentEdgeStyle())],fa=V);var la=C.cloneCells([R[0],I]);C.model.setTerminal(la[0],I,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},O=F.onKeyDown;F.onKeyDown=function(I){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var V=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==I.which?V=mxEvent.isShiftDown(I)?g(C.getSelectionCell()):m(C.getSelectionCell()):13==I.which&&(V=f(C.getSelectionCell(),!mxEvent.isShiftDown(I))));if(null!=V&&0<V.length)1==
return J==V||0==u.length?m(I,V):N==W?g(I):f(I,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(I){var V=[I];!D(I)&&!n(I)||E(I)||C.traverse(I,!0,function(Q,R){var fa=null!=R&&C.isTreeEdge(R);fa&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||fa)&&0>mxUtils.indexOf(V,Q)&&V.push(Q);return null==R||fa});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');q.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");C.geometry.relative=!0;C.edge=!0;E.insertEdge(C,!0);F.insertEdge(C,!1);t.insert(f);t.insert(m);t.insert(y);t.insert(C);t.insert(E);t.insert(d);t.insert(g);t.insert(q);t.insert(F);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var t=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);t.insert(f);t.insert(m);t.insert(E);t.insert(d);t.insert(g);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree root",function(){var t=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');D.setAttributeForCell(t,"treeRoot",
EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(O,
X){null!=X.shortcut&&900>n&&!mxClient.IS_IOS?O.firstChild.nextSibling.setAttribute("title",X.shortcut):m.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var O=this.userElement;O.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+O.style.display;O.className="geToolbarButton";O.innerHTML="";O.style.backgroundImage="url("+Editor.userImage+")";O.style.backgroundPosition="center center";
fa)})));mxUtils.bind(this,function(){var R=this.get("insert"),fa=R.funct;R.funct=function(la,ra){"1"==urlParams.sketch?(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ra),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ra),O.menus.addSubmenu("insertAdvanced",la,ra,mxResources.get("advanced")),O.menus.addSubmenu("layout",la,ra)):(fa.apply(this,arguments),O.menus.addSubmenu("table",la,ra))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var m=this.graph.getGlobalVariable;d=this;this.graph.getGlobalVariable=function(H){var G=f[d.currentPage];return"page"==H?G.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==H?d.currentPage+1:"pagecount"==H?f.length:m.apply(this,arguments)}}}this.diagrams=[];var q=null;this.selectPage=function(H){this.handlingResize||(this.currentPage=mxUtils.mod(H,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
"mouseleave",function(){I.style.backgroundColor="#eee"}),mxUtils.setOpacity(ea,60),I.style.cursor="pointer"):mxUtils.setOpacity(I,30);I.appendChild(ea);k.appendChild(I);m++;return I}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(ea,ka){},mouseUp:function(ea,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,m=0,q=null,y=null,F=null,C=null,H=0;H<g.length;H++){var G=
(G=this.graphConfig["toolbar-buttons"][G],null!=G&&(G.elem=b(null==G.enabled||G.enabled?G.handler:function(){},G.image,G.title,G.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*m);null!=this.graphConfig.title&&(g=e.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),
mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*m;var O=e.style.border,X=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var ea=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
n.refresh=function(){};var D=mxUtils.bind(this,function(m){27==m.keyCode&&n.destroy()}),t=n.destroy;n.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",D);document.body.removeChild(b);document.body.removeChild(e);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;t.apply(this,arguments)};var E=n.editor.graph,d=E.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
"keydown",D)):(b.style.display="none",e.style.display="none");var f=this;E.getImageFromBundles=function(m){return f.getImageUrl(m)};var g=n.createTemporaryGraph;n.createTemporaryGraph=function(){var m=g.apply(this,arguments);m.getImageFromBundles=function(q){return f.getImageUrl(q)};return m};this.graphConfig.move&&(E.isMoveCellsEvent=function(m){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
function(ea,ka,ja){ea.attachEvent?ea.attachEvent("on"+ka,ja):ea.addEventListener(ka,ja)};X(F,"scroll",y);X(H,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var m=k.length;f<m;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],ADD_ATTR:["target"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"18.1.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
function Dialog(b,e,k,n,D,t,E,d,f,g,m){var q=f?57:0,y=k,F=n,C=f?0:64,H=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(H.height=window.innerHeight);var G=H.height,aa=Math.max(1,Math.round((H.width-k-C)/2)),da=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=da+14+"px",t.style.left=aa+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!m)){var Y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Y=!0}),null,mxUtils.bind(this,function(qa){Y&&(b.hideDialog(!0),Y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
var ErrorDialog=function(b,e,k,n,D,t,E,d,f,g,m){f=null!=f?f:!0;var q=document.createElement("div");q.style.textAlign="center";if(null!=e){var y=document.createElement("div");y.style.padding="0px";y.style.margin="0px";y.style.fontSize="18px";y.style.paddingBottom="16px";y.style.marginBottom="10px";y.style.borderBottom="1px solid #c0c0c0";y.style.color="gray";y.style.whiteSpace="nowrap";y.style.textOverflow="ellipsis";y.style.overflow="hidden";mxUtils.write(y,e);y.setAttribute("title",e);q.appendChild(y)}e=
document.createElement("div");e.style.lineHeight="1.2em";e.style.padding="6px";e.innerHTML=k;q.appendChild(e);k=document.createElement("div");k.style.marginTop="12px";k.style.textAlign="center";null!=t&&(e=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();t()}),e.className="geBtn",k.appendChild(e),k.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=m&&m()}),g.className="geBtn",k.appendChild(g));var F=mxUtils.button(n,function(){f&&b.hideDialog();null!=D&&D()});
PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,H=parseInt(q.value)/100;isNaN(H)&&(H=1,q.value="100%");H*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,aa=1/k.pageScale;if(C){var da=E.checked?1:parseInt(m.value);isNaN(da)||(aa=mxUtils.getScaleForPageCount(da,k,G))}k.getGraphBounds();var ba=da=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*H);G.height=Math.ceil(G.height*H);aa*=H;!C&&k.pageVisible?(H=k.getPageLayout(),da-=H.x*G.width,ba-=H.y*
d.appendChild(f);mxEvent.addListener(f,"click",function(F){g.checked=!g.checked;E.checked=!g.checked;mxEvent.consume(F)});t.appendChild(d);var m=document.createElement("input");m.setAttribute("value","1");m.setAttribute("type","number");m.setAttribute("min","1");m.setAttribute("size","4");m.setAttribute("disabled","disabled");m.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(m);mxUtils.write(d," "+mxResources.get("pages")+" (max)");t.appendChild(d);D.appendChild(t);
mxEvent.addListener(g,"change",function(){g.checked?m.removeAttribute("disabled"):m.setAttribute("disabled","disabled");E.checked=!g.checked});t=t.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");t.appendChild(d);d=document.createElement("td");var q=document.createElement("input");q.setAttribute("value","100 %");q.setAttribute("size","5");q.style.width="50px";d.appendChild(q);t.appendChild(d);D.appendChild(t);t=document.createElement("tr");d=document.createElement("td");
var PageSetupDialog=function(b){function e(){null==m||m==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=m,g.style.backgroundImage="")}function k(){var G=C;null!=G&&Graph.isPageLink(G.src)&&(G=b.createImageForPageLink(G.src,null));null!=G&&null!=G.src?(F.setAttribute("src",G.src),F.style.display=""):(F.removeAttribute("src"),F.style.display="none")}var n=b.editor.graph,D=document.createElement("table");D.style.width=
mxUtils.write(d,mxResources.get("background")+":");E.appendChild(d);d=document.createElement("td");d.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var g=document.createElement("button");g.style.width="22px";g.style.height="22px";g.style.cursor="pointer";g.style.marginRight="20px";g.style.backgroundPosition="center center";g.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(g.style.position="relative",g.style.top="-6px");var m=n.background;e();mxEvent.addListener(g,
"click",function(G){b.pickColor(m||"none",function(aa){m=aa;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
"geBtn";b.editor.cancelFirst&&d.appendChild(y);H=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var G=parseInt(q.value);isNaN(G)||n.gridSize===G||n.setGridSize(G);G=new ChangePageSetup(b,m,C,f.get());G.ignoreColor=n.background==m;G.ignoreImage=(null!=n.backgroundImage?n.backgroundImage.src:null)===(null!=C?C.src:null);n.pageFormat.width==G.previousFormat.width&&n.pageFormat.height==G.previousFormat.height&&G.ignoreColor&&G.ignoreImage||n.model.execute(G)});H.className="geBtn gePrimaryBtn";
X.format.width&&k.height==X.format.height?(d.value=X.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==X.format.height&&k.height==X.format.width&&(d.value=X.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",m.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
"checked"),d.value="custom",f.style.display="none",m.style.display="")}}e="format-"+e;var t=document.createElement("input");t.setAttribute("name",e);t.setAttribute("type","radio");t.setAttribute("value","portrait");var E=document.createElement("input");E.setAttribute("name",e);E.setAttribute("type","radio");E.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";
var f=document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";t.style.marginRight="6px";f.appendChild(t);e=document.createElement("span");e.style.maxWidth="100px";mxUtils.write(e,mxResources.get("portrait"));f.appendChild(e);E.style.marginLeft="10px";E.style.marginRight="6px";f.appendChild(E);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));f.appendChild(g);var m=document.createElement("div");m.style.marginLeft=
"4px";m.style.width="210px";m.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";m.appendChild(q);mxUtils.write(m," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";m.appendChild(y);mxUtils.write(m," in");f.style.display="none";m.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),H=0;H<C.length;H++){var G=C[H];F[G.key]=G;var aa=document.createElement("option");aa.setAttribute("value",
G.key);mxUtils.write(aa,G.title);d.appendChild(aa)}var da=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(m);var ba=k,Y=function(qa,O){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,m.style.display="none",f.style.display=""):(f.style.display="none",m.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
var FilenameDialog=function(b,e,k,n,D,t,E,d,f,g,m,q){f=null!=f?f:!0;var y=document.createElement("table"),F=document.createElement("tbody");y.style.position="absolute";y.style.top="30px";y.style.left="20px";var C=document.createElement("tr");var H=document.createElement("td");H.style.textOverflow="ellipsis";H.style.textAlign="right";H.style.maxWidth="100px";H.style.fontSize="10pt";H.style.width="84px";mxUtils.write(H,(D||mxResources.get("filename"))+":");C.appendChild(H);var G=document.createElement("input");
Y.stopPropagation();Y.preventDefault()}))}}};H=document.createElement("td");H.style.whiteSpace="nowrap";H.appendChild(G);C.appendChild(H);if(null!=D||null==E)F.appendChild(C),null!=m&&(H.appendChild(FilenameDialog.createTypeHint(b,G,m)),null!=b.editor.diagramFileTypes&&(C=document.createElement("tr"),H=document.createElement("td"),H.style.textOverflow="ellipsis",H.style.textAlign="right",H.style.maxWidth="100px",H.style.fontSize="10pt",H.style.width="84px",mxUtils.write(H,mxResources.get("type")+
2;H.style.paddingTop=null!=m?"12px":"20px";H.style.whiteSpace="nowrap";H.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});m.className="geBtn";b.editor.cancelFirst&&H.appendChild(m);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",H.appendChild(q));mxEvent.addListener(G,"keypress",function(da){13==da.keyCode&&aa.click()});H.appendChild(aa);b.editor.cancelFirst||H.appendChild(m);
mxGraphView.prototype.validateBackgroundStyles=function(){var E=this.graph,d=null==E.background||E.background==mxConstants.NONE?E.defaultPageBackgroundColor:E.background,f=null!=d&&this.gridColor!=d.toLowerCase()?this.gridColor:"#ffffff",g="none",m="";if(E.isGridEnabled()||E.gridVisible){m=10;mxClient.IS_SVG?(g=unescape(encodeURIComponent(this.createSvgGrid(f))),g=window.btoa?btoa(g):Base64.encode(g,!0),g="url(data:image/svg+xml;base64,"+g+")",m=E.gridSize*this.scale*this.gridSteps):g="url("+this.gridImage+
")";var q=f=0;null!=E.view.backgroundPageShape&&(q=this.getBackgroundPageBounds(),f=1+q.x,q=1+q.y);m=-Math.round(m-mxUtils.mod(this.translate.x*this.scale-f,m))+"px "+-Math.round(m-mxUtils.mod(this.translate.y*this.scale-q,m))+"px"}f=E.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);null!=E.view.backgroundPageShape?(E.view.backgroundPageShape.node.style.backgroundPosition=m,E.view.backgroundPageShape.node.style.backgroundImage=g,E.view.backgroundPageShape.node.style.backgroundColor=d,E.view.backgroundPageShape.node.style.borderColor=
E.defaultPageBorderColor,E.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(E.container.className="geDiagramContainer",f.style.backgroundPosition=m,f.style.backgroundColor=d,f.style.backgroundImage=g)};mxGraphView.prototype.createSvgGrid=function(E){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,g=[],m=1;m<this.gridSteps;m++){var q=m*d;g.push("M 0 "+q+" L "+f+" "+q+" M "+q+" 0 L "+q+
if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps;g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+E,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";f.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.view.scale,m=this.view.translate,q=this.pageFormat,y=g*this.pageScale,F=this.view.getBackgroundPageBounds();
d=F.width;f=F.height;var C=new mxRectangle(g*m.x,g*m.y,q.width*y,q.height*y),H=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,aa=F.x+d,da=F.y+f;null==this.horizontalPageBreaks&&0<H&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(ba){if(null!=ba){for(var Y=ba==this.horizontalPageBreaks?H:G,qa=0;qa<=Y;qa++){var O=ba==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
E(this.horizontalPageBreaks);E(this.verticalPageBreaks)};var e=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(E,d,f){for(var g=0;g<d.length;g++){if(this.graph.isTableCell(d[g])||this.graph.isTableRow(d[g]))return!1;if(this.graph.getModel().isVertex(d[g])){var m=this.graph.getCellGeometry(d[g]);if(null!=m&&m.relative)return!1}}return e.apply(this,arguments)};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=
m=this.graph.pageScale,q=g.width*m;g=g.height*m;m=Math.floor(Math.min(0,d)/q);var y=Math.floor(Math.min(0,f)/g);return new mxRectangle(this.scale*(this.translate.x+m*q),this.scale*(this.translate.y+y*g),this.scale*(Math.ceil(Math.max(1,d+E.width/this.scale)/q)-m)*q,this.scale*(Math.ceil(Math.max(1,f+E.height/this.scale)/g)-y)*g)};var n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){n.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=E+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var D=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(E,d,f,g,m,q){var y=D.apply(this,arguments);null==q||q||mxEvent.addListener(y,"mousedown",function(F){mxEvent.consume(F)});return y};var t=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(E,d,f){var g=this.graph.model.getParent(E);if(d){var m=this.graph.model.isEdge(E)?null:this.graph.getCellGeometry(E);m=!this.graph.model.isEdge(g)&&!this.graph.isSiblingSelected(E)&&(null!=m&&m.relative||!this.graph.isContainer(g)||this.graph.isPart(E))}else if(m=t.apply(this,arguments),this.graph.isTableCell(E)||this.graph.isTableRow(E))m=g,this.graph.isTable(m)||(m=this.graph.model.getParent(m)),m=!this.graph.selectionCellsHandler.isHandled(m)||this.graph.isCellSelected(m)&&this.graph.isToggleEvent(f.getEvent())||
this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return m};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),m=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);m=m||q;if(q||!m&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var I=D.apply(this,arguments),V=this.backgroundImage;if(null!=V&&null!=V.width&&null!=V.height){var Q=this.view.translate,R=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((Q.x+V.x)*R,(Q.y+V.y)*R,V.width*R,V.height*R))}return I};n.useCssTransforms&&(this.lazyZoomDelay=
n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),m=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(I,V,Q,R,fa,la,ra){R=null!=R?R:n.currentVertexStyle;fa=null!=fa?fa:n.currentEdgeStyle;la=null!=la?la:!0;Q=null!=Q?Q:n.getModel();if(ra){ra=[];for(var u=0;u<I.length;u++)ra=ra.concat(Q.getDescendants(I[u]));I=ra}Q.beginUpdate();try{for(u=0;u<I.length;u++){var J=I[u];if(V)var N=["fontSize",
"fontFamily","fontColor"];else{var W=Q.getStyle(J),S=null!=W?W.split(";"):[];N=t.slice();for(var P=0;P<S.length;P++){var Z=S[P],oa=Z.indexOf("=");if(0<=oa){var va=Z.substring(0,oa),Aa=mxUtils.indexOf(N,va);0<=Aa&&N.splice(Aa,1);for(ra=0;ra<m.length;ra++){var sa=m[ra];if(0<=mxUtils.indexOf(sa,va))for(var Ba=0;Ba<sa.length;Ba++){var ta=mxUtils.indexOf(N,sa[Ba]);0<=ta&&N.splice(ta,1)}}}}}var Na=Q.isEdge(J);ra=Na?fa:R;var Ca=Q.getStyle(J);for(P=0;P<N.length;P++){va=N[P];var Qa=ra[va];null!=Qa&&"edgeStyle"!=
EditorUi.prototype.updateSelectionStateForTableCells=function(b){if(1<b.cells.length&&b.cell){for(var e=mxUtils.sortCells(b.cells),k=this.editor.graph.model,n=k.getParent(e[0]),D=k.getParent(n),t=n.getIndex(e[0]),E=D.getIndex(n),d=null,f=1,g=1,m=0,q=E<D.getChildCount()-1?k.getChildAt(k.getChildAt(D,E+1),t):null;m<e.length-1;){var y=e[++m];null==q||q!=y||null!=d&&f!=d||(d=f,f=0,g++,n=k.getParent(q),q=E+g<D.getChildCount()?k.getChildAt(k.getChildAt(D,E+g),t):null);var F=this.editor.graph.view.getState(y);
if(y==k.getChildAt(n,t+f)&&null!=F&&1==mxUtils.getValue(F.style,"colspan",1)&&1==mxUtils.getValue(F.style,"rowspan",1))f++;else break}m==g*f-1&&(b.mergeCell=e[0],b.colspan=f,b.rowspan=g)}};
b.popupMenuHandler.isMenuShowing=function(){return n.apply(this,arguments)||null!=e.shapePicker};var D=b.dblClick;b.dblClick=function(f,g){if(this.isEnabled())if(null!=g||null==e.sidebar||mxEvent.isShiftDown(f)||b.isCellLocked(b.getDefaultParent()))D.apply(this,arguments);else{var m=mxUtils.convertPoint(this.container,mxEvent.getClientX(f),mxEvent.getClientY(f));mxEvent.consume(f);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.x,m.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
k);var t=this.hoverIcons.drag;this.hoverIcons.drag=function(){e.hideShapePicker();t.apply(this,arguments)};var E=this.hoverIcons.execute;this.hoverIcons.execute=function(f,g,m){var q=m.getEvent();this.graph.isCloneEvent(q)||mxEvent.isShiftDown(q)?E.apply(this,arguments):this.graph.connectVertex(f.cell,g,this.graph.defaultEdgeLength,q,null,null,mxUtils.bind(this,function(y,F,C){var H=b.getCompositeParent(f.cell);y=b.getCellGeometry(H);for(m.consume();null!=H&&b.model.isVertex(H)&&null!=y&&y.relative;)cell=
H,H=b.model.getParent(cell),y=b.getCellGeometry(H);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.getGraphX(),m.getGraphY(),H,mxUtils.bind(this,function(G){C(G);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(G))}),g)}),30)}),mxUtils.bind(this,function(y){this.graph.selectCellsForConnectVertex(y,q,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d);d=window.setTimeout(mxUtils.bind(this,function(){var m=
g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");m=m.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+m.x-F.x;F=b.container.scrollTop+m.y-F.y;var H=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,H,mxUtils.bind(this,function(aa){null!=aa&&b.connectVertex(H,q,b.defaultEdgeLength,y,!0,!0,function(da,ba,Y){Y(aa);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(aa))},
function(da){b.selectCellsForConnectVertex(da)},y,this.hoverIcons)}),q,!0);this.centerShapePicker(G,m,C,F,q);mxUtils.setOpacity(G,30);mxEvent.addListener(G,"mouseenter",function(){mxUtils.setOpacity(G,100)});mxEvent.addListener(G,"mouseleave",function(){e.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d)}))}};
EditorUi.prototype.createShapePicker=function(b,e,k,n,D,t,E,d){var f=null;if(null!=E&&0<E.length){var g=this,m=this.editor.graph;f=document.createElement("div");D=m.view.getState(k);var q=null==k||null!=D&&m.isTransparentState(D)?null:m.copyStyle(k);k=6>E.length?35*E.length:140;f.className="geToolbarContainer geSidebarContainer";f.style.cssText="position:absolute;left:"+b+"px;top:"+e+"px;width:"+k+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
mxPopupMenu.prototype.zIndex+1+";";d||mxUtils.setPrefixedStyle(f.style,"transform","translate(-22px,-22px)");null!=m.background&&m.background!=mxConstants.NONE&&(f.style.backgroundColor=m.background);m.container.appendChild(f);k=mxUtils.bind(this,function(y){var F=document.createElement("a");F.className="geItem";F.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";f.appendChild(F);null!=q&&"1"!=urlParams.sketch?
this.sidebar.graph.pasteStyle(q,[y]):g.insertHandler([y],""!=y.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([y],25,25,F,null,!0,!1,y.geometry.width,y.geometry.height);mxEvent.addListener(F,"click",function(){var C=m.cloneCell(y);if(null!=n)n(C);else{C.geometry.x=m.snap(Math.round(b/m.view.scale)-m.view.translate.x-y.geometry.width/2);C.geometry.y=m.snap(Math.round(e/m.view.scale)-m.view.translate.y-y.geometry.height/2);m.model.beginUpdate();try{m.addCell(C)}finally{m.model.endUpdate()}m.setSelectionCell(C);
m.scrollCellToVisible(C);m.startEditingAtCell(C);null!=g.hoverIcons&&g.hoverIcons.update(m.view.getState(C))}null!=t&&t()})});for(D=0;D<(d?Math.min(E.length,4):E.length);D++)k(E[D]);E=f.offsetTop+f.clientHeight-(m.container.scrollTop+m.container.offsetHeight);0<E&&(f.style.top=Math.max(m.container.scrollTop+22,e-E)+"px");E=f.offsetLeft+f.clientWidth-(m.container.scrollLeft+m.container.offsetWidth);0<E&&(f.style.left=Math.max(m.container.scrollLeft+22,b-E)+"px")}return f};
EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipboard.cut=function(t){t.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):e.apply(this,arguments);b.updatePasteActionStates()};mxClipboard.copy=function(t){var E=null;if(t.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{E=E||t.getSelectionCells();E=t.getExportableCells(t.model.getTopmostCells(E));for(var d={},f=t.createCellLookup(E),g=t.cloneCells(E,null,d),m=new mxGraphModel,q=m.getChildAt(m.getRoot(),
0),y=0;y<g.length;y++){m.add(q,g[y]);var F=t.view.getState(E[y]);if(null!=F){var C=t.getCellGeometry(g[y]);null!=C&&C.relative&&!m.isEdge(E[y])&&null==f[mxObjectIdentity.get(m.getParent(E[y]))]&&(C.offset=null,C.relative=!1,C.x=F.x/F.view.scale-F.view.translate.x,C.y=F.y/F.view.scale-F.view.translate.y)}}t.updateCustomLinks(t.createCellMapping(d,f),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return E};var k=mxClipboard.paste;mxClipboard.paste=function(t){var E=
this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(Q){this.actions.get("nextPage").funct();mxEvent.consume(Q)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerHTML="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(Q){this.actions.get("zoomOut").funct();mxEvent.consume(Q)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){this.actions.get("zoomIn").funct();
EditorUi.prototype.addSplitHandler=function(b,e,k,n){function D(q){if(null!=E){var y=new mxPoint(mxEvent.getClientX(q),mxEvent.getClientY(q));n(Math.max(0,d+(e?y.x-E.x:E.y-y.y)-k));mxEvent.consume(q);d!=m()&&(f=!0,g=null)}}function t(q){D(q);E=d=null}var E=null,d=null,f=!0,g=null;mxClient.IS_POINTER&&(b.style.touchAction="none");var m=mxUtils.bind(this,function(){var q=parseInt(e?b.style.left:b.style.bottom);e||(q=q+k-this.footerHeight);return q});mxEvent.addGestureListeners(b,function(q){E=new mxPoint(mxEvent.getClientX(q),
mxEvent.getClientY(q));d=m();f=!1;mxEvent.consume(q)});mxEvent.addListener(b,"click",mxUtils.bind(this,function(q){if(!f&&this.hsplitClickEnabled){var y=null!=g?g-k:0;g=m();n(y);mxEvent.consume(q)}}));mxEvent.addGestureListeners(document,null,D,t);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,D,t)})};
EditorUi.prototype.prompt=function(b,e,k){b=new FilenameDialog(this,e,mxResources.get("apply"),function(n){k(parseFloat(n))},b);this.showDialog(b.container,300,80,!0,!0);b.init()};
EditorUi.prototype.showError=function(b,e,k,n,D,t,E,d,f,g,m,q,y){b=new ErrorDialog(this,b,e,k||mxResources.get("ok"),n,D,t,E,q,d,f);e=Math.ceil(null!=e?e.length/50:1);this.showDialog(b.container,g||340,m||100+20*e,!0,!1,y);b.init()};EditorUi.prototype.showDialog=function(b,e,k,n,D,t,E,d,f,g){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,b,e,k,n,D,t,E,d,f,g);this.dialogs.push(this.dialog)};
0<=d&&d<E.length-3&&(E=E.substring(0,d+3))}catch(m){}try{var f=t.getElementsByTagName("span"),g=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(E);this.isCompatibleString(g)&&(E=g)}catch(m){}}catch(m){}b(this.isCompatibleString(E)?E:null)}))["catch"](function(D){b(null)})}))["catch"](function(n){b(null)});else if(null!=k&&0<k.length&&"text"==e&&0<=mxUtils.indexOf(k[0].types,"text/plain"))k[0].getType("text/plain").then(function(n){n.text().then(function(D){b(D)})["catch"](function(){b(null)})})["catch"](function(){b(null)});
EditorUi.prototype.executeLayouts=function(b,e){this.executeLayout(mxUtils.bind(this,function(){var k=new mxCompositeLayout(this.editor.graph,b),n=this.editor.graph.getSelectionCells();k.execute(this.editor.graph.getDefaultParent(),0==n.length?null:n)}),!0,e)};
mxUtils.bind(this,function(q,y,F,C){var H=this.actions.get(F);null!=H&&(F=function(){H.isEnabled()&&H.funct()},y?C?D.bindControlShiftKey(q,F):D.bindControlKey(q,F):C?D.bindShiftKey(q,F):D.bindKey(q,F))});var g=this,m=D.escape;D.escape=function(q){m.apply(this,arguments)};D.enter=function(){};D.bindControlShiftKey(36,function(){n.exitGroup()});D.bindControlShiftKey(35,function(){n.enterGroup()});D.bindShiftKey(36,function(){n.home()});D.bindKey(35,function(){n.refresh()});D.bindAction(107,!0,"zoomIn");
arguments[2])}var d=Number(D.length);d=isNaN(d)?0:0!==d&&isFinite(d)?(0<d?1:-1)*Math.floor(Math.abs(d)):d;d=Math.min(Math.max(d,0),k);for(var f=e(this)?Object(new this(d)):Array(d),g=0,m;g<d;)m=D[g],f[g]=t?"undefined"===typeof E?t(m,g):t.call(E,m,g):m,g+=1;f.length=d;return f}}());mxConstants.POINTS=1;mxConstants.MILLIMETERS=2;mxConstants.INCHES=3;mxConstants.METERS=4;mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHADOW_OPACITY=.25;mxConstants.SHADOWCOLOR="#000000";
return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,V){if("mouseDown"==V.getProperty("eventName")&&this.isEnabled()){I=V.getProperty("event");var Q=I.getState();V=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=Q)if(this.model.isEdge(Q.cell))if(E=new mxPoint(I.getGraphX(),I.getGraphY()),m=this.isCellSelected(Q.cell),f=Q,d=I,null!=Q.text&&null!=
V.getGraphX())>R||Math.abs(E.y-V.getGraphY())>R){var fa=this.selectionCellsHandler.getHandler(Q.cell);null==fa&&this.model.isEdge(Q.cell)&&(fa=this.createHandler(Q));if(null!=fa&&null!=fa.bends&&0<fa.bends.length){I=fa.getHandleForEvent(d);var la=this.view.getEdgeStyle(Q);R=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(I=g);if(R&&0!=I&&I!=fa.bends.length-1&&I!=mxEvent.LABEL_HANDLE)!R||null==Q.visibleSourceState&&null==Q.visibleTargetState||(this.graphHandler.reset(),V.consume());else if(I==
m=!1;E=d=f=g=null}}else if(Q=V.getState(),null!=Q&&this.isCellEditable(Q.cell)){fa=null;if(this.model.isEdge(Q.cell)){if(I=new mxRectangle(V.getGraphX(),V.getGraphY()),I.grow(mxEdgeHandler.prototype.handleImage.width/2),R=Q.absolutePoints,null!=R)if(null!=Q.text&&null!=Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,V.getGraphX(),V.getGraphY()))fa="move";else if(mxUtils.contains(I,R[0].x,R[0].y)||mxUtils.contains(I,R[R.length-1].x,R[R.length-1].y))fa="pointer";else if(null!=Q.visibleSourceState||
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
Graph.sanitizeHtml=function(b,e){return Graph.domPurify(b,!1)};Graph.sanitizeLink=function(b){var e=document.createElement("a");e.setAttribute("href",b);Graph.sanitizeNode(e);return e.getAttribute("href")};Graph.sanitizeNode=function(b){return Graph.domPurify(b,!0)};DOMPurify.addHook("afterSanitizeAttributes",function(b){"use"==b.nodeName&&b.hasAttribute("xlink:href")&&!b.getAttribute("xlink:href").match(/^#/)&&b.remove()});
Graph.clipSvgDataUri=function(b,e){if(!mxClient.IS_IE&&!mxClient.IS_IE11&&null!=b&&"data:image/svg+xml;base64,"==b.substring(0,26))try{var k=document.createElement("div");k.style.position="absolute";k.style.visibility="hidden";var n=decodeURIComponent(escape(atob(b.substring(26)))),D=n.indexOf("<svg");if(0<=D){k.innerHTML=Graph.sanitizeHtml(n.substring(D));var t=k.getElementsByTagName("svg");if(0<t.length){if(e||null!=t[0].getAttribute("preserveAspectRatio")){document.body.appendChild(k);try{n=e=
1;var E=t[0].getAttribute("width"),d=t[0].getAttribute("height");E=null!=E&&"%"!=E.charAt(E.length-1)?parseFloat(E):NaN;d=null!=d&&"%"!=d.charAt(d.length-1)?parseFloat(d):NaN;var f=t[0].getAttribute("viewBox");if(null!=f&&!isNaN(E)&&!isNaN(d)){var g=f.split(" ");4<=f.length&&(e=parseFloat(g[2])/E,n=parseFloat(g[3])/d)}var m=t[0].getBBox();0<m.width&&0<m.height&&(k.getElementsByTagName("svg")[0].setAttribute("viewBox",m.x+" "+m.y+" "+m.width+" "+m.height),k.getElementsByTagName("svg")[0].setAttribute("width",
m.width/e),k.getElementsByTagName("svg")[0].setAttribute("height",m.height/n))}catch(q){}finally{document.body.removeChild(k)}}b=Editor.createSvgDataUri(mxUtils.getXml(t[0]))}}}catch(q){}return b};Graph.stripQuotes=function(b){null!=b&&("'"==b.charAt(0)&&(b=b.substring(1)),"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)),'"'==b.charAt(0)&&(b=b.substring(1)),'"'==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1)));return b};
Graph.prototype.init=function(b){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(k,n){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var D=k.view.graph.tolerance,t=!0,E=null,d=mxUtils.bind(this,function(m){t=!0;E=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m))}),f=mxUtils.bind(this,function(m){t=t&&null!=E&&Math.abs(E.x-mxEvent.getClientX(m))<D&&Math.abs(E.y-mxEvent.getClientY(m))<D}),g=mxUtils.bind(this,function(m){if(t)for(var q=mxEvent.getSource(m);null!=
q&&q!=n.node;){if("a"==q.nodeName.toLowerCase()){k.view.graph.labelLinkClicked(k,q,m);break}q=q.parentNode}});mxEvent.addGestureListeners(n.node,d,f,g);mxEvent.addListener(n.node,"click",function(m){mxEvent.consume(m)})};if(null!=this.tooltipHandler){var e=this.tooltipHandler.init;this.tooltipHandler.init=function(){e.apply(this,arguments);null!=this.div&&mxEvent.addListener(this.div,"click",mxUtils.bind(this,function(k){var n=mxEvent.getSource(k);"A"==n.nodeName&&(n=n.getAttribute("href"),null!=
d,0==f)}return d};Graph.prototype.mergeStyle=function(E,d,f){if(null!=E){var g={},m;for(m in E){var q=E[m];null!=q&&(g[m]=!0,null==d[m]&&f?d[m]=q:d[m]!=q&&delete d[m])}for(m in d)g[m]||delete d[m]}};Graph.prototype.getStartEditingCell=function(E,d){d=this.getCellStyle(E);d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(E)&&(!this.isSwimlane(E)||0==d)&&""==this.getLabel(E)&&0<this.model.getChildCount(E)&&(E=this.model.getChildAt(E,0),d=this.getCellStyle(E),d=parseInt(mxUtils.getValue(d,
function(E,d){this.model.beginUpdate();try{for(var f=0;f<d.length;f++)if(this.model.isVertex(d[f])||this.model.isEdge(d[f])){var g=this.getCellStyle(d[f],!1),m;for(m in E){var q=E[m];g[m]!=q&&this.setCellStyles(m,q,[d[f]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==
mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(E,d,f,g,m,q){this.useCssTransforms&&(E=E/this.currentScale-this.currentTranslate.x,d=d/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(E,d,f,g,m,q){g=null!=g?g:!0;m=null!=m?m:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var y=this.model.getChildCount(f)-1;0<=
y;y--){var F=this.model.getChildAt(f,y),C=this.getScaledCellAt(E,d,F,g,m,q);if(null!=C)return C;if(this.isCellVisible(F)&&(m&&this.model.isEdge(F)||g&&this.model.isVertex(F))&&(C=this.view.getState(F),null!=C&&(null==q||!q(C,E,d))&&this.intersects(C,E,d)))return F}return null};Graph.prototype.isRecursiveVertexResize=function(E){return!this.isSwimlane(E.cell)&&0<this.model.getChildCount(E.cell)&&!this.isCellCollapsed(E.cell)&&"1"==mxUtils.getValue(E.style,"recursiveResize","1")&&null==mxUtils.getValue(E.style,
"childLayout",null)};Graph.prototype.getAbsoluteParent=function(E){for(var d=this.getCellGeometry(E);null!=d&&d.relative;)E=this.getModel().getParent(E),d=this.getCellGeometry(E);return E};Graph.prototype.isPart=function(E){return"1"==mxUtils.getValue(this.getCurrentCellStyle(E),"part","0")||this.isTableCell(E)||this.isTableRow(E)};Graph.prototype.getCompositeParents=function(E){for(var d=new mxDictionary,f=[],g=0;g<E.length;g++){var m=this.getCompositeParent(E[g]);this.isTableCell(m)&&(m=this.graph.model.getParent(m));
this.isTableRow(m)&&(m=this.graph.model.getParent(m));null==m||d.get(m)||(d.put(m,!0),f.push(m))}return f};Graph.prototype.getCompositeParent=function(E){for(;this.isPart(E);){var d=this.model.getParent(E);if(!this.model.isVertex(d))break;E=d}return E};Graph.prototype.filterSelectionCells=function(E){var d=this.getSelectionCells();if(null!=E){for(var f=[],g=0;g<d.length;g++)E(d[g])||f.push(d[g]);d=f}return d};var b=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(E){if(this.useCssTransforms){var d=
mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.useCssTransforms,m=this.view.scale,q=this.view.translate;g&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);t.apply(this,arguments);g&&(this.view.scale=m,this.view.translate=q,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1};
"parallelEdgeSpacing",mxHierarchicalLayout.prototype.parallelEdgeSpacing),e;if("circleLayout"==b.childLayout)return new mxCircleLayout(this.graph);if("organicLayout"==b.childLayout)return new mxFastOrganicLayout(this.graph);if("tableLayout"==b.childLayout)return new TableLayout(this.graph);if(null!=b.childLayout&&"["==b.childLayout.charAt(0))try{return new mxCompositeLayout(this.graph,this.graph.createLayouts(JSON.parse(b.childLayout)))}catch(n){null!=window.console&&console.error(n)}}return null}};
Graph.prototype.createLayouts=function(b){for(var e=[],k=0;k<b.length;k++)if(0<=mxUtils.indexOf(Graph.layoutNames,b[k].layout)){var n=new window[b[k].layout](this);if(null!=b[k].config)for(var D in b[k].config)n[D]=b[k].config[D];e.push(n)}else throw Error(mxResources.get("invalidCallFnNotFound",[b[k].layout]));return e};
Graph.prototype.createEdgeWipeAnimation=function(b,e){var k=b.absolutePoints.slice(),n=b.segments,D=b.length,t=k.length;return{execute:mxUtils.bind(this,function(E,d){if(null!=b.shape){var f=[k[0]];d=E/d;e||(d=1-d);for(var g=D*d,m=1;m<t;m++)if(g<=n[m-1]){f.push(new mxPoint(k[m-1].x+(k[m].x-k[m-1].x)*g/n[m-1],k[m-1].y+(k[m].y-k[m-1].y)*g/n[m-1]));break}else g-=n[m-1],f.push(k[m]);b.shape.points=f;b.shape.redraw();0==E&&Graph.setOpacityForNodes(this.getNodesForCells([b.cell]),1);null!=b.text&&null!=
/\d/.test(b)||(e=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");e=String(n.masks[e]||e||n.masks["default"]);"UTC:"==e.slice(0,4)&&(e=e.slice(4),k=!0);var d=k?"getUTC":"get",f=b[d+"Date"](),g=b[d+"Day"](),m=b[d+"Month"](),q=b[d+"FullYear"](),y=b[d+"Hours"](),F=b[d+"Minutes"](),C=b[d+"Seconds"]();d=b[d+"Milliseconds"]();var H=k?0:b.getTimezoneOffset(),G={d:f,dd:E(f),ddd:n.i18n.dayNames[g],dddd:n.i18n.dayNames[g+7],m:m+1,mm:E(m+1),mmm:n.i18n.monthNames[m],mmmm:n.i18n.monthNames[m+
Graph.prototype.createLayersDialog=function(b,e){var k=document.createElement("div");k.style.position="absolute";for(var n=this.getModel(),D=n.getChildCount(n.root),t=0;t<D;t++)mxUtils.bind(this,function(E){function d(){n.isVisible(E)?(m.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(m.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var f=this.convertValueToString(E)||mxResources.get("background")||"Background",g=document.createElement("div");g.style.overflow=
"hidden";g.style.textOverflow="ellipsis";g.style.padding="2px";g.style.whiteSpace="nowrap";g.style.cursor="pointer";g.setAttribute("title",mxResources.get(n.isVisible(E)?"hideIt":"show",[f]));var m=document.createElement("img");m.setAttribute("draggable","false");m.setAttribute("align","absmiddle");m.setAttribute("border","0");m.style.position="relative";m.style.width="16px";m.style.padding="0px 6px 0 4px";e&&(m.style.filter="invert(100%)",m.style.top="-2px");g.appendChild(m);mxUtils.write(g,f);k.appendChild(g);
Graph.prototype.connectVertex=function(b,e,k,n,D,t,E,d){t=t?t:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),g=f?b:this.getCompositeParent(b),m=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);e==mxConstants.DIRECTION_NORTH?(m.x+=g.geometry.width/2,m.y-=k):e==
mxConstants.DIRECTION_SOUTH?(m.x+=g.geometry.width/2,m.y+=g.geometry.height+k):(m.x=e==mxConstants.DIRECTION_WEST?m.x-k:m.x+(g.geometry.width+k),m.y+=g.geometry.height/2);var q=this.view.getState(this.model.getParent(b));k=this.view.scale;var y=this.view.translate;g=y.x*k;y=y.y*k;null!=q&&this.model.isVertex(q.cell)&&(g=q.x,y=q.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(m.x+=b.parent.geometry.x,m.y+=b.parent.geometry.y);t=t?null:(new mxRectangle(g+m.x*k,y+m.y*k)).grow(40*k);t=null!=t?
!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;aa&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?m.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=b.geometry.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-b.geometry.width/2:m.x+b.geometry.width/2);var da=[],ba=C;C=F;D=mxUtils.bind(this,function(Y){if(null==E||null!=Y||null==C&&f){this.model.beginUpdate();try{if(null==ba&&aa){var qa=this.getAbsoluteParent(null!=Y?Y:b);qa=f?b:this.getCompositeParent(qa);ba=null!=Y?Y:this.duplicateCells([qa],
!1)[0];null!=Y&&this.addCells([ba],this.model.getParent(b),null,null,null,!0);var O=this.getCellGeometry(ba);null!=O&&(null!=Y&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?m.y-=O.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=O.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-O.width/2:m.x+O.width/2),O.x=m.x-O.width/2,O.y=m.y-O.height/2);null!=F?(this.addCells([ba],F,null,null,null,!0),C=null):aa&&!f&&this.addCells([ba],this.getDefaultParent(),null,null,null,!0)}var X=mxEvent.isControlDown(n)&&
ba,ea));null!=X&&da.push(X);null==C&&null!=ba&&da.push(ba);null==ba&&null!=X&&X.geometry.setTerminalPoint(m,!1);null!=X&&this.fireEvent(new mxEventObject("cellsInserted","cells",[X]))}finally{this.model.endUpdate()}}if(null!=d)d(da);else return da});if(null==E||null!=ba||!aa||null==C&&f)return D(ba);E(g+m.x*k,y+m.y*k,D)};
Graph.prototype.foldCells=function(b,e,k,n,D){e=null!=e?e:!1;null==k&&(k=this.getFoldableCells(this.getSelectionCells(),b));if(null!=k){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var t=0;t<k.length;t++){var E=this.view.getState(k[t]),d=this.getCellGeometry(k[t]);if(null!=E&&null!=d){var f=Math.round(d.width-E.width/this.view.scale),g=Math.round(d.height-E.height/this.view.scale);if(0!=g||0!=f){var m=this.model.getParent(k[t]),q=this.layoutManager.getLayout(m);
null==q?null!=D&&this.isMoveCellsEvent(D,E)&&this.moveSiblings(E,m,f,g):null!=D&&mxEvent.isAltDown(D)||q.constructor!=mxStackLayout||q.resizeLast||this.resizeParentStacks(m,q,f,g)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(k)}};
(k=e.rotationShape.boundingBox));e=mxUtils.bind(this,function(d,f,g){if(null!=k){var m=new mxRectangle(f,g,d.clientWidth,d.clientHeight);mxUtils.intersects(m,k)&&(d==this.arrowUp?g-=m.y+m.height-k.y:d==this.arrowRight?f+=k.x+k.width-m.x:d==this.arrowDown?g+=k.y+k.height-m.y:d==this.arrowLeft&&(f-=m.x+m.width-k.x))}d.style.left=f+"px";d.style.top=g+"px";mxUtils.setOpacity(d,this.inactiveOpacity)});e(this.arrowUp,Math.round(this.currentState.getCenterX()-this.triangleUp.width/2-this.tolerance),Math.round(b.y-
Graph.prototype.visitTableCells=function(b,e){var k=null,n=this.model.getChildCells(b,!0);b=this.getActualStartSize(b,!0);for(var D=0;D<n.length;D++){for(var t=this.getActualStartSize(n[D],!0),E=this.model.getChildCells(n[D],!0),d=this.getCellStyle(n[D],!0),f=null,g=[],m=0;m<E.length;m++){var q=this.getCellGeometry(E[m]),y={cell:E[m],rospan:1,colspan:1,row:D,col:m,geo:q};q=null!=q.alternateBounds?q.alternateBounds:q;y.point=new mxPoint(q.width+(null!=f?f.point.x:b.x+t.x),q.height+(null!=k&&null!=
k[0]?k[0].point.y:b.y+t.y));y.actual=y;null!=k&&null!=k[m]&&1<k[m].rowspan?(y.rowspan=k[m].rowspan-1,y.colspan=k[m].colspan,y.actual=k[m].actual):null!=f&&1<f.colspan?(y.rowspan=f.rowspan,y.colspan=f.colspan-1,y.actual=f.actual):(f=this.getCurrentCellStyle(E[m],!0),null!=f&&(y.rowspan=parseInt(f.rowspan||1),y.colspan=parseInt(f.colspan||1)));f=1==mxUtils.getValue(d,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(d,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;e(y,E.length,
Graph.prototype.setTableRowHeight=function(b,e,k){k=null!=k?k:!0;var n=this.getModel();n.beginUpdate();try{var D=this.getCellGeometry(b);if(null!=D){D=D.clone();D.height+=e;n.setGeometry(b,D);var t=n.getParent(b),E=n.getChildCells(t,!0);if(!k){var d=mxUtils.indexOf(E,b);if(d<E.length-1){var f=E[d+1],g=this.getCellGeometry(f);null!=g&&(g=g.clone(),g.y+=e,g.height-=e,n.setGeometry(f,g))}}var m=this.getCellGeometry(t);null!=m&&(k||(k=b==E[E.length-1]),k&&(m=m.clone(),m.height+=e,n.setGeometry(t,m)))}}finally{n.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(b,e,k){k=null!=k?k:!1;var n=this.getModel(),D=n.getParent(b),t=n.getParent(D),E=n.getChildCells(D,!0);b=mxUtils.indexOf(E,b);var d=b==E.length-1;n.beginUpdate();try{for(var f=n.getChildCells(t,!0),g=0;g<f.length;g++){D=f[g];E=n.getChildCells(D,!0);var m=E[b],q=this.getCellGeometry(m);null!=q&&(q=q.clone(),q.width+=e,null!=q.alternateBounds&&(q.alternateBounds.width+=e),n.setGeometry(m,q));b<E.length-1&&(m=E[b+1],q=this.getCellGeometry(m),null!=q&&(q=q.clone(),
q.x+=e,k||(q.width-=e,null!=q.alternateBounds&&(q.alternateBounds.width-=e)),n.setGeometry(m,q)))}if(d||k){var y=this.getCellGeometry(t);null!=y&&(y=y.clone(),y.width+=e,n.setGeometry(t,y))}null!=this.layoutManager&&this.layoutManager.executeLayout(t)}finally{n.endUpdate()}};function TableLayout(b){mxGraphLayout.call(this,b)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.execute=function(b){if(null!=b){var e=this.graph.getActualStartSize(b,!0),k=this.graph.getCellGeometry(b),n=this.graph.getCellStyle(b),D="1"==mxUtils.getValue(n,"resizeLastRow","0"),t="1"==mxUtils.getValue(n,"resizeLast","0");n="1"==mxUtils.getValue(n,"fixedRows","0");var E=this.graph.getModel(),d=0;E.beginUpdate();try{for(var f=k.height-e.y-e.height,g=k.width-e.x-e.width,m=E.getChildCells(b,!0),q=0;q<m.length;q++)E.setVisible(m[q],!0);var y=this.getSize(m,!1);if(0<f&&0<g&&0<
m.length&&0<y){if(D){var F=this.graph.getCellGeometry(m[m.length-1]);null!=F&&(F=F.clone(),F.height=f-y+F.height,E.setGeometry(m[m.length-1],F))}var C=t?null:this.getRowLayout(m[0],g),H=[],G=e.y;for(q=0;q<m.length;q++)F=this.graph.getCellGeometry(m[q]),null!=F&&(F=F.clone(),F.x=e.x,F.width=g,F.y=Math.round(G),G=D||n?G+F.height:G+F.height/y*f,F.height=Math.round(G)-F.y,E.setGeometry(m[q],F)),d=Math.max(d,this.layoutRow(m[q],C,F.height,g,H));n&&f<y&&(k=k.clone(),k.height=G+e.height,E.setGeometry(b,
0;q<m.length;q++)E.setVisible(m[q],!1)}finally{E.endUpdate()}}};
(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var e=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(m,q){q=null!=q?q:!0;var y=this.getState(m);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&!y.invalid&&this.updateLineJumps(y)&&this.graph.cellRenderer.redraw(y,!1,this.isRendering());y=e.apply(this,
arguments);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(y);return y};var k=mxShape.prototype.paint;mxShape.prototype.paint=function(){k.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var m=this.node.getElementsByTagName("path");if(1<m.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&m[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var q=this.state.view.graph.getFlowAnimationStyle();null!=q&&m[1].setAttribute("class",q.getAttribute("id"))}}};var n=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(m,q){return n.apply(this,arguments)||null!=m.routedPoints&&null!=q.routedPoints&&!mxUtils.equalPoints(q.routedPoints,m.routedPoints)};var D=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(m){D.apply(this,arguments);this.graph.model.isEdge(m.cell)&&1!=m.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(m)};mxGraphView.prototype.updateLineJumps=function(m){var q=m.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=m.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(m.style,"jumpStyle","none")){var C=function(ja,U,I){var V=new mxPoint(U,I);V.type=ja;F.push(V);V=null!=m.routedPoints?m.routedPoints[F.length-1]:null;return null==V||V.type!=
ja||V.x!=U||V.y!=I},H=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var aa=q[G+1],da=q[G],ba=[],Y=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(da.x,da.y,Y.x,Y.y,aa.x,aa.y)<1*this.scale*this.scale;)aa=Y,G++,Y=q[G+2];y=C(0,da.x,da.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var O=this.validEdges[qa],X=O.absolutePoints;if(null!=X&&mxUtils.intersects(m,O)&&"1"!=O.style.noJump)for(O=0;O<X.length-1;O++){var ea=X[O+1],ka=X[O];for(Y=X[O+2];O<X.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Y.x,Y.y,
Y.x&&ba[ba.length-1].y===Y.y||ba.push(Y)}}}for(O=0;O<ba.length;O++)y=C(1,ba[O].x,ba[O].y)||y}Y=q[q.length-1];y=C(0,Y.x,Y.y)||y}m.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(m,q,y){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,H=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,aa=null,da=null,ba=[],Y=null;m.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var O=this.state.routedPoints[qa],X=new mxPoint(O.x/this.scale,O.y/this.scale);0==qa?X=q[0]:qa==this.state.routedPoints.length-1&&(X=q[q.length-1]);var ea=!1;if(null!=aa&&1==O.type){var ka=this.state.routedPoints[qa+1];O=ka.x/this.scale-
X.x;ka=ka.y/this.scale-X.y;O=O*O+ka*ka;null==Y&&(Y=new mxPoint(X.x-aa.x,X.y-aa.y),da=Math.sqrt(Y.x*Y.x+Y.y*Y.y),0<da?(Y.x=Y.x*C/da,Y.y=Y.y*C/da):Y=null);O>C*C&&0<da&&(O=aa.x-X.x,ka=aa.y-X.y,O=O*O+ka*ka,O>C*C&&(ea=new mxPoint(X.x-Y.x,X.y-Y.y),O=new mxPoint(X.x+Y.x,X.y+Y.y),ba.push(ea),this.addPoints(m,ba,y,F,!1,null,G),ba=0>Math.round(Y.x)||0==Math.round(Y.x)&&0>=Math.round(Y.y)?1:-1,G=!1,"sharp"==H?(m.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),m.lineTo(O.x-Y.y*ba,O.y+Y.x*ba),m.lineTo(O.x,O.y)):"line"==H?(m.moveTo(ea.x+
Y.y*ba,ea.y-Y.x*ba),m.lineTo(ea.x-Y.y*ba,ea.y+Y.x*ba),m.moveTo(O.x-Y.y*ba,O.y+Y.x*ba),m.lineTo(O.x+Y.y*ba,O.y-Y.x*ba),m.moveTo(O.x,O.y)):"arc"==H?(ba*=1.3,m.curveTo(ea.x-Y.y*ba,ea.y+Y.x*ba,O.x-Y.y*ba,O.y+Y.x*ba,O.x,O.y)):(m.moveTo(O.x,O.y),G=!0),ba=[O],ea=!0))}else Y=null;ea||(ba.push(X),aa=X)}this.addPoints(m,ba,y,F,!1,null,G);m.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(m,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(m,q,y,F){if(null==q||null==m||"1"!=q.style.snapToPoint&&"1"!=m.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(m,q,F);var C=this.getNextPoint(m,y,F),H=this.graph.isOrthogonal(m),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),aa=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
G){var da=Math.cos(-G),ba=Math.sin(-G);C=mxUtils.getRotatedPoint(C,da,ba,aa)}da=parseFloat(m.style[mxConstants.STYLE_PERIMETER_SPACING]||0);da+=parseFloat(m.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&H,da);0!=G&&(da=Math.cos(G),ba=Math.sin(G),C=mxUtils.getRotatedPoint(C,da,ba,aa));m.setAbsoluteTerminalPoint(this.snapToAnchorPoint(m,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(m,q,y,F,C){if(null!=
q&&null!=m){m=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=m)for(var H=0;H<m.length;H++){var G=this.graph.getConnectionPoint(q,m[H]);if(null!=G){var aa=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||aa<F)y=G,F=aa}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(m,q,y){var F=f.apply(this,arguments);"1"==m.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,
F));return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(m){if(null!=m.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(m.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
try{this.model.setGeometry(ca,L),this.model.setGeometry(z[0],T)}finally{this.model.endUpdate()}L=!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,T,ca,ia,ma){if(this.swapShapes(z,L,M,T,ca,ia,ma))return z;ma=null!=ma?ma:{};if(this.isTable(ca)){for(var pa=[],ua=0;ua<z.length;ua++)this.isTable(z[ua])?pa=pa.concat(this.model.getChildCells(z[ua],!0).reverse()):pa.push(z[ua]);z=pa}this.model.beginUpdate();try{pa=[];for(ua=0;ua<z.length;ua++)if(null!=ca&&this.isTableRow(z[ua])){var ya=
!0),Sa=this.model.getChildCells(Oa[0],!0),za=Sa.length-Pa.length;if(0<za)for(var wa=0;wa<za;wa++){var Da=this.cloneCell(Pa[Pa.length-1]);null!=Da&&(Da.value="",this.model.add(z[ua],Da))}else if(0>za)for(wa=0;wa>za;wa--)this.model.remove(Pa[Pa.length+wa-1]);Pa=this.model.getChildCells(z[ua],!0);for(wa=0;wa<Sa.length;wa++){var Ea=this.getCellGeometry(Sa[wa]),La=this.getCellGeometry(Pa[wa]);null!=Ea&&null!=La&&(La=La.clone(),La.width=Ea.width,this.model.setGeometry(Pa[wa],La))}}}}var Ta=m.apply(this,
null!=this.linkHint&&(this.linkHint.style.visibility="")};var $a=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){$a.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(c,l,x){mxShape.call(this);this.line=c;this.stroke=l;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function q(){mxShape.call(this)}
function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function H(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function da(){mxActor.call(this)}function ba(){mxActor.call(this)}function Y(){mxActor.call(this)}function qa(){mxActor.call(this)}function O(){mxActor.call(this)}function X(c,l){this.canvas=c;this.canvas.setLineJoin("round");
this.canvas.setLineCap("round");this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
function pa(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function ya(){mxRhombus.call(this)}function Fa(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function Pa(){mxEllipse.call(this)}function Sa(){mxActor.call(this)}function za(){mxActor.call(this)}function wa(){mxActor.call(this)}function Da(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
!0;this.indent=2;this.rectOutline="single"}function Ea(){mxConnector.call(this)}function La(c,l,x,p,v,A,B,ha,K,xa){B+=K;var na=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(na.x-v-B,na.y-A-B,2*B,2*B);xa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
p=0;p<this.line.length&&!l;p++){var v=this.line[p];null!=v&&null!=x&&(l=mxUtils.rectangleIntersectsSegment(c,x,v));x=v}return l};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,l,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):
!1,B=this.isHorizontal(),ha=this.getTitleSize();0==ha||this.outline?Oa.prototype.paintVertexShape.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-l,-x));A||this.outline||!(B&&ha<v||!B&&ha<p)||this.paintForeground(c,l,x,p,v)};e.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ha=A;A=B;B=ha}c.rotate(-this.getShapeRotation(),
A,B,l+p/2,x+v/2);s=this.scale;l=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/s;this.paintTableForeground(c,l,x,p,v)}};e.prototype.paintTableForeground=function(c,l,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],l,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?
c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,
parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ha=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),
n);var Ta=Math.tan(mxUtils.toRadians(30)),Wa=(.5-Ta)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,l,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(l+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=
20;t.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/Ta);c.translate((p-l)/2,(v-l)/2+l/4);c.moveTo(0,.25*l);c.lineTo(.5*l,l*Wa);c.lineTo(l,.25*l);c.lineTo(.5*l,(.5-Wa)*l);c.lineTo(0,.25*l);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(p,v/(.5+Ta));A?(c.moveTo(0,.25*l),c.lineTo(.5*l,(.5-Wa)*l),c.lineTo(l,.25*l),c.moveTo(.5*l,(.5-Wa)*l),c.lineTo(.5*l,(1-Wa)*l)):(c.translate((p-
l)/2,(v-l)/2),c.moveTo(0,.25*l),c.lineTo(.5*l,l*Wa),c.lineTo(l,.25*l),c.lineTo(l,.75*l),c.lineTo(.5*l,(1-Wa)*l),c.lineTo(0,.75*l),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),
c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,-l);A||(c.moveTo(0,l),c.curveTo(0,-l/3,p,-l/3,p,l),c.lineTo(p,v-l),c.curveTo(p,v+l/3,0,v+l/3,0,v-l),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=
function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-
A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=
function(c,l,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(l,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(q,mxShape);
q.prototype.size=15;q.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};
mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=15;y.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),
c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=
60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;C.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ha=mxUtils.getValue(this.style,"absoluteArcSize",!1),K=parseFloat(mxUtils.getValue(this.style,
"arcSize",this.arcSize));ha||(K*=Math.min(p,v));K=Math.min(K,.5*p,.5*(v-x));l=Math.max(l,K);l=Math.min(p-K,l);B||(K=0);c.begin();"left"==A?(c.moveTo(Math.max(K,0),x),c.lineTo(Math.max(K,0),0),c.lineTo(l,0),c.lineTo(l,x)):(c.moveTo(p-l,x),c.lineTo(p-l,0),c.lineTo(p-Math.max(K,0),0),c.lineTo(p-Math.max(K,0),x));B?(c.moveTo(0,K+x),c.arcTo(K,K,0,0,1,K,x),c.lineTo(p-K,x),c.arcTo(K,K,0,0,1,p,K+x),c.lineTo(p,v-K),c.arcTo(K,K,0,0,1,p-K,v),c.lineTo(K,v),c.arcTo(K,K,0,0,1,0,v-K)):(c.moveTo(0,x),c.lineTo(p,
x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,
"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,
c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};mxUtils.extend(H,mxCylinder);H.prototype.arcSize=.1;H.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(l*=Math.min(p,v));l=Math.min(l,.5*p,.5*v);A||(l=
0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,l);c.arcTo(l,l,0,0,1,A+l,0);c.lineTo(p-l,0);c.arcTo(l,l,0,0,1,p,l);c.lineTo(p,v-l);c.arcTo(l,l,0,0,1,p-l,v);c.lineTo(A+l,v);c.arcTo(l,l,0,0,1,A,v-l);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,
function(){return!0};G.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(aa,mxActor);aa.prototype.size=.4;aa.prototype.redrawPath=function(c,l,
x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,l/2);c.quadTo(p/4,1.4*l,p/2,l/2);c.quadTo(3*p/4,l*(1-1.4),p,l/2);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};aa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
this.direction==mxConstants.DIRECTION_WEST)return l*=p,new mxRectangle(c.x,c.y+l,x,p-2*l);l*=x;return new mxRectangle(c.x+l,c.y,x-2*l,p)}return c};mxCellRenderer.registerShape("tape",aa);mxUtils.extend(da,mxActor);da.prototype.size=.3;da.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};da.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));c.moveTo(0,0);c.lineTo(p,0);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};mxCellRenderer.registerShape("document",da);var fb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,l,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):fb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var l=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*l),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(l/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*l*this.scale),0,Math.max(0,.3*l*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==
mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};H.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=
function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,Math.max(0,l*this.scale))}return null};mxUtils.extend(ba,mxActor);ba.prototype.size=.2;ba.prototype.fixedSize=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p-l,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",ba);mxUtils.extend(Y,mxActor);Y.prototype.size=.2;Y.prototype.fixedSize=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(c,l,x,p,v){l="0"!=
mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Y);mxUtils.extend(qa,mxActor);qa.prototype.size=
.5;qa.prototype.redrawPath=function(c,l,x,p,v){c.setFillColor(null);l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(l,0),new mxPoint(l,v/2),new mxPoint(0,v/2),new mxPoint(l,v/2),new mxPoint(l,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(O,mxActor);O.prototype.redrawPath=
function(c,l,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);l=p/5;c.rect(0,0,l,v);c.fillAndStroke();c.rect(2*l,0,l,v);c.fillAndStroke();c.rect(4*l,0,l,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",O);X.prototype.moveTo=function(c,l){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;this.firstX=c;this.firstY=l};X.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,
arguments));this.originalClose.apply(this.canvas,arguments)};X.prototype.quadTo=function(c,l,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};X.prototype.curveTo=function(c,l,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};X.prototype.arcTo=function(c,l,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};X.prototype.lineTo=function(c,l){if(null!=this.lastX&&null!=this.lastY){var x=function(na){return"number"===
typeof na?na?0>na?-1:1:na===na?0:NaN:NaN},p=Math.abs(c-this.lastX),v=Math.abs(l-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;return}var B=Math.round(A/10),ha=this.defaultVariation;5>B&&(B=5,ha/=3);var K=x(c-this.lastX)*p/B;x=x(l-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var xa=(Math.random()-.5)*ha;this.originalLineTo.call(this.canvas,K*A+this.lastX-xa*v,x*A+this.lastY-xa*p)}this.originalLineTo.call(this.canvas,c,l)}else this.originalLineTo.apply(this.canvas,
arguments);this.lastX=c;this.lastY=l};X.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var gb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){gb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};
mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&tb.apply(this,arguments)};var qb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,l,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=X)qb.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
A,v*A)),c.moveTo(l+A,x),c.lineTo(l+p-A,x),c.quadTo(l+p,x,l+p,x+A),c.lineTo(l+p,x+v-A),c.quadTo(l+p,x+v,l+p-A,x+v),c.lineTo(l+A,x+v),c.quadTo(l,x+v,l,x+v-A),c.lineTo(l,x+A),c.quadTo(l,x,l+A,x)):(c.moveTo(l,x),c.lineTo(l+p,x),c.lineTo(l+p,x+v),c.lineTo(l,x+v),c.lineTo(l,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=.1;ea.prototype.fixedSize=!1;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var l=c.width,x=c.height;c=new mxRectangle(c.x,c.y,l,x);var p=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;p=Math.max(p,Math.min(l*v,x*v))}c.x+=Math.round(p);c.width-=Math.round(2*p);return c}return c};
ea.prototype.paintForeground=function(c,l,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.moveTo(l+p-B,x);c.lineTo(l+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("process",ea);mxCellRenderer.registerShape("process2",ea);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,l,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,l,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ja,mxHexagon);ja.prototype.size=30;ja.prototype.position=.5;ja.prototype.position2=.5;ja.prototype.base=20;ja.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(c,l,x,p,v){l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),ha=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ha),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,l,!0,[4])};mxCellRenderer.registerShape("callout",ja);mxUtils.extend(U,mxActor);U.prototype.size=.2;U.prototype.fixedSize=20;U.prototype.isRoundable=function(){return!0};U.prototype.redrawPath=function(c,l,x,p,
v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(0,v),new mxPoint(l,v/2)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("step",
U);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,
0),new mxPoint(p-l,0),new mxPoint(p,.5*v),new mxPoint(p-l,v),new mxPoint(l,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(V,mxRectangleShape);V.prototype.isHtmlAllowed=function(){return!1};V.prototype.paintForeground=function(c,l,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(l+p/2,x+A);c.lineTo(l+p/2,x+v-A);c.moveTo(l+A,x+v/2);c.lineTo(l+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
V);var cb=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};mxRhombus.prototype.paintVertexShape=function(c,l,x,p,v){cb.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),cb.apply(this,[c,l,x,p,v]))}};mxUtils.extend(Q,mxRectangleShape);Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};Q.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ha=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],xa=this.style["symbol"+A+"Width"],na=this.style["symbol"+A+"Height"],ab=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
ab,db=this.style["symbol"+A+"ArcSpacing"];null!=db&&(db*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),ab+=db,jb+=db);db=l;var Ga=x;db=ha==mxConstants.ALIGN_CENTER?db+(p-xa)/2:ha==mxConstants.ALIGN_RIGHT?db+(p-xa-ab):db+ab;Ga=K==mxConstants.ALIGN_MIDDLE?Ga+(v-na)/2:K==mxConstants.ALIGN_BOTTOM?Ga+(v-na-jb):Ga+jb;c.save();ha=new B;ha.style=this.style;B.prototype.paintVertexShape.call(ha,c,db,Ga,xa,na);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
mxCellRenderer.registerShape("ext",Q);mxUtils.extend(R,mxCylinder);R.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",R);mxUtils.extend(fa,mxShape);fa.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",fa);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
la);mxUtils.extend(ra,mxEllipse);ra.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ra);mxUtils.extend(u,mxShape);u.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",u);mxUtils.extend(J,mxShape);
J.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};J.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};J.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(N,mxRectangleShape);N.prototype.size=
40;N.prototype.isHtmlAllowed=function(){return!1};N.prototype.getLabelBounds=function(c){var l=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,l)};N.prototype.paintBackground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,l,
x,p,A):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=N&&(B=new B,B.apply(this.state),c.save(),B.paintVertexShape(c,l,x,p,A),c.restore()));A<v&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(l+p/2,x+A),c.lineTo(l+p/2,x+v),c.end(),c.stroke())};N.prototype.paintForeground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,l,x,p,Math.min(v,
A))};mxCellRenderer.registerShape("umlLifeline",N);mxUtils.extend(W,mxShape);W.prototype.width=60;W.prototype.height=30;W.prototype.corner=10;W.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};W.prototype.paintBackground=function(c,l,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),ha=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),K=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);K!=mxConstants.NONE&&(c.setFillColor(K),c.rect(l,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,l,x,p,v),c.setGradient(this.fill,this.gradient,l,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
c.moveTo(l,x);c.lineTo(l+B,x);c.lineTo(l+B,x+Math.max(0,ha-1.5*A));c.lineTo(l+Math.max(0,B-A),x+ha);c.lineTo(l,x+ha);c.close();c.fillAndStroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+p,x);c.lineTo(l+p,x+v);c.lineTo(l,x+v);c.lineTo(l,x+ha);c.stroke()};mxCellRenderer.registerShape("umlFrame",W);mxPerimeter.CenterPerimeter=function(c,l,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
l,x,p){p=N.prototype.size;null!=l&&(p=mxUtils.getValue(l.style,"size",p)*l.view.scale);l=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;x.x<c.getCenterX()&&(l=-1*(l+1));return new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y+p,x.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,l,x,p){p=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,l,x,p){p=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;null!=l.style.backboneSize&&(p+=parseFloat(l.style.backboneSize)*l.view.scale/2-1);if("south"==l.style[mxConstants.STYLE_DIRECTION]||"north"==l.style[mxConstants.STYLE_DIRECTION])return x.x<c.getCenterX()&&(p=-1*(p+1)),new mxPoint(c.getCenterX()+p,Math.min(c.y+c.height,Math.max(c.y,x.y)));x.y<c.getCenterY()&&(p=-1*(p+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,l,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(l.style,"size",ja.prototype.size))*l.view.scale))),l.style),l,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?ba.prototype.fixedSize:ba.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha+v),new mxPoint(B+
K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]):(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,l,x,p){var v="0"!=
mxUtils.getValue(l.style,"fixedSize","0"),A=v?Y.prototype.fixedSize:Y.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ha=c.y,K=c.width,xa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+
v,ha)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,ha)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+
K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha)]);xa=c.getCenterX();c=c.getCenterY();c=new mxPoint(xa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ha,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?U.prototype.fixedSize:U.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,
ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B,ha+xa),new mxPoint(B+v,c),new mxPoint(B,ha)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,
A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K,ha),new mxPoint(B+K-v,c),new mxPoint(B+K,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha+v),new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa),new mxPoint(na,ha+xa-v),new mxPoint(B,ha+xa),new mxPoint(B,ha+v)]):(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(B,ha),new mxPoint(na,ha+
v),new mxPoint(B+K,ha),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?I.prototype.fixedSize:I.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=
c.x,ha=c.y,K=c.width,xa=c.height,na=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(xa,A)):xa*Math.max(0,Math.min(1,A)),ha=[new mxPoint(na,ha),new mxPoint(B+K,ha+v),new mxPoint(B+K,ha+xa-v),new mxPoint(na,ha+xa),new mxPoint(B,ha+xa-v),new mxPoint(B,ha+v),new mxPoint(na,ha)]):(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,
Math.min(1,A)),ha=[new mxPoint(B+v,ha),new mxPoint(B+K-v,ha),new mxPoint(B+K,c),new mxPoint(B+K-v,ha+xa),new mxPoint(B+v,ha+xa),new mxPoint(B,c),new mxPoint(B+v,ha)]);na=new mxPoint(na,c);p&&(x.x<B||x.x>B+K?na.y=x.y:na.x=x.x);return mxUtils.getPerimeterPoint(ha,na,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(S,mxShape);S.prototype.size=10;S.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
c.translate(l,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",S);mxUtils.extend(P,mxShape);P.prototype.size=10;P.prototype.inset=2;P.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(l,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(Z,mxShape);Z.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Z);mxUtils.extend(oa,mxShape);oa.prototype.inset=2;oa.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
"inset",this.inset))+this.strokewidth;c.translate(l,x);c.ellipse(0,A,p-2*A,v-2*A);c.fillAndStroke();c.begin();c.moveTo(p/2,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",oa);mxUtils.extend(va,mxCylinder);va.prototype.jettyWidth=20;va.prototype.jettyHeight=10;va.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",
this.jettyHeight));x=B/2;B=x+B/2;var ha=Math.min(l,v-l),K=Math.min(ha+2*l,v-l);A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+l),c.lineTo(x,ha+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,K),c.lineTo(x,ha+l),c.lineTo(0,ha+l),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("module",va);mxUtils.extend(Aa,mxCylinder);Aa.prototype.jettyWidth=
32;Aa.prototype.jettyHeight=12;Aa.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ha=.3*v-l/2,K=.7*v-l/2;A?(c.moveTo(x,ha),c.lineTo(B,ha),c.lineTo(B,ha+l),c.lineTo(x,ha+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,
K),c.lineTo(x,ha+l),c.lineTo(0,ha+l),c.lineTo(0,ha),c.lineTo(x,ha),c.close());c.end()};mxCellRenderer.registerShape("component",Aa);mxUtils.extend(sa,mxRectangleShape);sa.prototype.paintForeground=function(c,l,x,p,v){var A=p/2,B=v/2,ha=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(l+A,x),new mxPoint(l+p,x+B),new mxPoint(l+A,x+v),new mxPoint(l,x+B)],this.isRounded,ha,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("associativeEntity",sa);mxUtils.extend(Ba,mxDoubleEllipse);Ba.prototype.outerStroke=!0;Ba.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.min(4,Math.min(p/5,v/5));0<p&&0<v&&(c.ellipse(l+A,x+A,p-2*A,v-2*A),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(l,x,p,v),c.stroke())};mxCellRenderer.registerShape("endState",Ba);mxUtils.extend(ta,Ba);ta.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",ta);mxUtils.extend(Na,mxArrowConnector);
"startWidth",this.defaultArrowWidth)};Ca.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Ca.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Ca);mxUtils.extend(Qa,mxActor);Qa.prototype.size=30;Qa.prototype.isRoundable=function(){return!0};Qa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,parseFloat(mxUtils.getValue(this.style,
"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,l),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Qa);mxUtils.extend(Ua,mxRectangleShape);Ua.prototype.dx=20;Ua.prototype.dy=20;Ua.prototype.isHtmlAllowed=function(){return!1};Ua.prototype.paintForeground=function(c,l,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(l,x+A);c.lineTo(l+p,x+A);c.end();c.stroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Ua);
mxUtils.extend(Ka,mxActor);Ka.prototype.dx=20;Ka.prototype.dy=20;Ka.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(l,x),
new mxPoint(l,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",Ka);mxUtils.extend(bb,mxActor);bb.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",bb);mxUtils.extend(Va,mxActor);Va.prototype.dx=20;Va.prototype.dy=20;Va.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint((p+l)/2,x),new mxPoint((p+l)/2,v),new mxPoint((p-l)/2,v),new mxPoint((p-l)/2,x),new mxPoint(0,x)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("tee",Va);mxUtils.extend($a,
mxActor);$a.prototype.arrowWidth=.3;$a.prototype.arrowSize=.2;$a.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-
l,v),new mxPoint(p-l,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("singleArrow",$a);mxUtils.extend(z,mxActor);z.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,
l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",T);mxUtils.extend(ca,mxActor);ca.prototype.size=20;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),
new mxPoint(p,.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",ca);mxUtils.extend(ia,mxActor);ia.prototype.size=.375;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,
0),new mxPoint(p,v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ia);mxUtils.extend(ma,mxEllipse);ma.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",ma);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(l+p/2,x);c.lineTo(l+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",pa);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l+.145*p,x+.145*v);c.lineTo(l+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(l+.855*p,x+.145*v);c.lineTo(l+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",ua);mxUtils.extend(ya,mxRhombus);ya.prototype.paintVertexShape=function(c,l,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ya);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(c,l,x,p,v){c.begin();c.moveTo(l,x);c.lineTo(l+p,x);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke();
c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Fa);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ha=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,ha);c.lineTo(l+A+B,ha-B/2);c.moveTo(l+A,ha);c.lineTo(l+A+B,ha+B/2);c.moveTo(l+A,ha);c.lineTo(l+p-A,ha);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,ha);c.lineTo(l+p-B-A,ha-B/2);c.moveTo(l+
p-A,ha);c.lineTo(l+p-B-A,ha+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(Oa,mxEllipse);Oa.prototype.drawHidden=!0;Oa.prototype.paintVertexShape=function(c,l,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ha="1"==mxUtils.getValue(this.style,"top","1"),K="1"==mxUtils.getValue(this.style,
"left","1"),xa="1"==mxUtils.getValue(this.style,"right","1"),na="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ha||xa||na||K?(c.rect(l,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(l,x),this.outline||ha?c.lineTo(l+p,x):c.moveTo(l+p,x),this.outline||xa?c.lineTo(l+p,x+v):c.moveTo(l+p,x+v),this.outline||na?c.lineTo(l,x+v):c.moveTo(l,x+v),(this.outline||K)&&c.lineTo(l,x),c.end(),c.stroke(),c.setLineCap("flat")):
c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Oa);mxUtils.extend(Pa,mxEllipse);Pa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(l+p/2,x),c.lineTo(l+p/2,x+v)):(c.moveTo(l,x+v/2),c.lineTo(l+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Pa);mxUtils.extend(Sa,mxActor);Sa.prototype.redrawPath=function(c,
l,x,p,v){l=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Sa);mxUtils.extend(za,mxActor);za.prototype.size=.2;za.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,p);var A=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(v-A)/2;x=l+A;var B=(p-A)/2;A=B+A;c.moveTo(0,l);c.lineTo(B,l);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,l);c.lineTo(p,l);c.lineTo(p,x);
c.lineTo(A,x);c.lineTo(A,v);c.lineTo(B,v);c.lineTo(B,x);c.lineTo(0,x);c.close();c.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(wa,mxActor);wa.prototype.size=.25;wa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/2);x=Math.min(p-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*p);c.moveTo(0,v/2);c.lineTo(x,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(x,v);c.close();c.end()};mxCellRenderer.registerShape("display",wa);mxUtils.extend(Da,
dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];Da.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,
x);this.strictDrawShape(c,0,0,p,v)};Da.prototype.strictDrawShape=function(c,l,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ha=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),K=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),xa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),na=A&&A.indent?
Ib=Math.max(0,Math.min(50,K));A=Da.prototype;c.setDashed(ab);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);K=Math.min(.5*v,.5*p,K);ha||(K=Ib*Math.min(p,v)/100);K=Math.min(K,.5*Math.min(p,v));ha||(na=Math.min(db*Math.min(p,v)/100));na=Math.min(na,.5*Math.min(p,v)-K);(Ga||Ja||Ia||Ha)&&"frame"!=xa&&(c.begin(),Ga?A.moveNW(c,l,x,p,v,B,Ra,K,Ha):c.moveTo(0,0),Ga&&A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),Ja&&A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),Ia&&
A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),Ha&&A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),ab=ha=Hb,"none"==Cb&&(ha=0),"none"==Db&&(ab=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ha,ab),c.begin(),Ga?A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha):c.moveTo(na,0),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),Ia&&Ja&&A.paintSEInner(c,
l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),Ja&&Ga&&A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),Ga&&Ha&&A.paintNWInner(c,l,x,p,v,B,Ra,K,na),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,l,x,p,v,B,Ra,Xa,Ya,Za,K,Ga,Ja,Ia,Ha),c.stroke()));Ga||Ja||Ia||!Ha?Ga||Ja||!Ia||Ha?!Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==
xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),
c.fillAndStroke()):Ga||!Ja||Ia||Ha?!Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,
K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,
l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga&&
Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):!Ga||Ja||Ia||Ha?
Ga&&!Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,
l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,
K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&!Ja&&Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,
K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,
x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,
l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,
l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):Ga&&Ja&&!Ia&&Ha?"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,
l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,
v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke()):Ga&&Ja&&Ia&&!Ha?"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,
l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):
Ga&&Ja&&Ia&&Ha&&("frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),c.close(),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,
B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.paintNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.paintSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.paintSW(c,l,x,p,v,B,Za,K,Ia),
A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),c.close(),A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintSWInner(c,l,x,p,v,B,Za,K,na,Ia),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),A.paintSEInner(c,l,x,p,v,B,Ya,K,na),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),A.paintNEInner(c,l,x,p,v,B,Xa,K,na),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),A.paintNWInner(c,l,x,p,v,B,Ra,K,na),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=xa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,
l,x,p,v,B,Xa,K,Ja),"double"==xa&&(A.moveNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,K,Ha),A.paintTop(c,l,x,p,v,B,Xa,K,Ja),A.lineNEInner(c,l,x,p,v,B,Xa,K,na,Ja),A.paintTopInner(c,l,x,p,v,B,Ra,K,na,Ha,Ga),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),"double"==xa&&(A.moveSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja)),c.stroke()):
(c.begin(),A.moveNE(c,l,x,p,v,B,Xa,K,Ga),A.paintRight(c,l,x,p,v,B,Ya,K,Ia),A.lineSEInner(c,l,x,p,v,B,Ya,K,na,Ia),A.paintRightInner(c,l,x,p,v,B,Xa,K,na,Ga,Ja),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),"double"==xa&&(A.moveSWInner(c,l,x,p,v,B,Za,K,na,Ha),A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Ya,K,Ja),A.paintBottom(c,l,x,p,v,B,Za,K,Ha),A.lineSWInner(c,l,x,p,v,B,Za,K,na,Ha),
A.paintBottomInner(c,l,x,p,v,B,Ya,K,na,Ja,Ia),c.close(),c.fillAndStroke()):"frame"!=xa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),"double"==xa&&(A.moveNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,K,Ia),A.paintLeft(c,l,x,p,v,B,Ra,K,Ga),A.lineNWInner(c,l,x,p,v,B,Ra,K,na,Ga,Ha),A.paintLeftInner(c,l,x,p,v,B,Za,K,na,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,l,x,p,v,B,Ra,Xa,
Ya,Za,K,Ga,Ja,Ia,Ha);c.stroke()};Da.prototype.moveNW=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,0):c.moveTo(0,ha)};Da.prototype.moveNE=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,0):c.moveTo(p-ha,0)};Da.prototype.moveSE=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,v):c.moveTo(p,v-ha)};Da.prototype.moveSW=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,
v):c.moveTo(ha,v)};Da.prototype.paintNW=function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,ha,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ha,0);else c.lineTo(0,0)};Da.prototype.paintTop=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,0):c.lineTo(p-ha,0)};Da.prototype.paintNE=
function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,p,ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ha);else c.lineTo(p,0)};Da.prototype.paintRight=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,v):c.lineTo(p,v-ha)};Da.prototype.paintLeft=function(c,l,x,p,v,A,B,ha,K){"square"==
B||"default"==B&&"square"==A||!K?c.lineTo(0,0):c.lineTo(0,ha)};Da.prototype.paintSE=function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,p-ha,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ha,v);else c.lineTo(p,v)};Da.prototype.paintBottom=function(c,l,x,p,v,A,B,ha,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(0,
v):c.lineTo(ha,v)};Da.prototype.paintSW=function(c,l,x,p,v,A,B,ha,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ha,ha,0,0,l,0,v-ha)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ha);else c.lineTo(0,v)};Da.prototype.paintNWInner=function(c,l,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,K,.5*K+ha);else if("invRound"==
B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,K,K+ha);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(K,.5*K+ha);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,K+ha),c.lineTo(K,K+ha)};Da.prototype.paintTopInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(0,K):xa&&!na?c.lineTo(K,0):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ha+.5*K,K):c.lineTo(ha+K,K):c.lineTo(0,
K):c.lineTo(0,0)};Da.prototype.paintNEInner=function(c,l,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-ha-.5*K,K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-ha-K,K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ha-.5*K,K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,ha+K),c.lineTo(p-ha-K,K)};Da.prototype.paintRightInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p-K,0):xa&&!na?c.lineTo(p,
K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):c.lineTo(p-K,ha+K):c.lineTo(p-K,0):c.lineTo(p,0)};Da.prototype.paintLeftInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,v):xa&&!na?c.lineTo(0,v-K):xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):c.lineTo(K,v-ha-K):
c.lineTo(K,v):c.lineTo(0,v)};Da.prototype.paintSEInner=function(c,l,x,p,v,A,B,ha,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,p-K,v-ha-.5*K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ha+K,ha+K,0,0,1,p-K,v-ha-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-K,v-ha-.5*K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ha-K,v-ha-K),c.lineTo(p-K,v-ha-K)};Da.prototype.paintBottomInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(p,
v-K):xa&&!na?c.lineTo(p-K,v):"square"==B||"default"==B&&"square"==A||!xa?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ha-.5*K,v-K):c.lineTo(p-ha-K,v-K):c.lineTo(p,v)};Da.prototype.paintSWInner=function(c,l,x,p,v,A,B,ha,K,xa){if(!xa)c.lineTo(K,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(K,v-K);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ha-.5*K,ha-.5*K,0,0,0,ha+.5*K,v-K);else if("invRound"==B||"default"==B&&"invRound"==
A)c.arcTo(ha+K,ha+K,0,0,1,ha+K,v-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ha+.5*K,v-K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ha,v-ha-K),c.lineTo(K+ha,v-K)};Da.prototype.moveSWInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(K,v-ha-K):
c.moveTo(0,v-K)};Da.prototype.lineSWInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,v-ha-K):c.lineTo(0,v-K)};Da.prototype.moveSEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,v-ha-K):c.moveTo(p-K,v)};Da.prototype.lineSEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,v-ha-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,v-ha-K):
c.lineTo(p-K,v)};Da.prototype.moveNEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.moveTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,ha+K):c.moveTo(p,K)};Da.prototype.lineNEInner=function(c,l,x,p,v,A,B,ha,K,xa){xa?"square"==B||"default"==B&&"square"==A||xa?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==
A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,ha+K):c.lineTo(p,K)};Da.prototype.moveNWInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.moveTo(K,0):xa&&!na?c.moveTo(0,K):"square"==B||"default"==B&&"square"==A?c.moveTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
B&&"fold"==A)&&c.moveTo(K,ha+K):c.moveTo(0,0)};Da.prototype.lineNWInner=function(c,l,x,p,v,A,B,ha,K,xa,na){xa||na?!xa&&na?c.lineTo(K,0):xa&&!na?c.lineTo(0,K):"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,ha+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,ha+K):c.lineTo(0,0)};Da.prototype.paintFolds=function(c,l,x,p,v,A,B,ha,K,xa,na,ab,jb,db,Ga){if("fold"==
Da.prototype.constraints=null;mxUtils.extend(Ea,mxConnector);Ea.prototype.origPaintEdgeShape=Ea.prototype.paintEdgeShape;Ea.prototype.paintEdgeShape=function(c,l,x){for(var p=[],v=0;v<l.length;v++)p.push(mxUtils.clone(l[v]));v=c.state.dashed;var A=c.state.fixDash;Ea.prototype.origPaintEdgeShape.apply(this,[c,p,x]);3<=c.state.strokeWidth&&(p=mxUtils.getValue(this.style,"fillColor",null),null!=p&&(c.setStrokeColor(p),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(v,A),Ea.prototype.origPaintEdgeShape.apply(this,
[c,l,x])))};mxCellRenderer.registerShape("filledEdge",Ea);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var l=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==l.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,l,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();
c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.stroke()}});mxMarker.addMarker("box",function(c,l,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.x+na/2,db=p.y+ab/2;p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb-na/2-ab/2,db-ab/2+na/2);c.lineTo(jb-na/2+ab/2,db-ab/2-na/2);c.lineTo(jb+ab/2-3*na/2,db-3*ab/2-na/2);c.lineTo(jb-ab/2-3*na/2,db-3*ab/2+na/2);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,l,x,p,v,A,B,ha,K,
xa){var na=v*(B+K+1),ab=A*(B+K+1);return function(){c.begin();c.moveTo(p.x-na/2-ab/2,p.y-ab/2+na/2);c.lineTo(p.x+ab/2-3*na/2,p.y-3*ab/2-na/2);c.moveTo(p.x-na/2+ab/2,p.y-ab/2-na/2);c.lineTo(p.x-ab/2-3*na/2,p.y-3*ab/2+na/2);c.stroke()}});mxMarker.addMarker("circle",La);mxMarker.addMarker("circlePlus",function(c,l,x,p,v,A,B,ha,K,xa){var na=p.clone(),ab=La.apply(this,arguments),jb=v*(B+2*K),db=A*(B+2*K);return function(){ab.apply(this,arguments);c.begin();c.moveTo(na.x-v*K,na.y-A*K);c.lineTo(na.x-2*jb+
v*K,na.y-2*db+A*K);c.moveTo(na.x-jb-db+A*K,na.y-db+jb-v*K);c.lineTo(na.x+db-jb-A*K,na.y-db-jb+v*K);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,l,x,p,v,A,B,ha,K,xa){var na=v*(B+K+1),ab=A*(B+K+1),jb=p.clone();p.x-=na;p.y-=ab;return function(){c.begin();c.moveTo(jb.x-ab,jb.y+na);c.quadTo(p.x-ab,p.y+na,p.x,p.y);c.quadTo(p.x+ab,p.y-na,jb.x+ab,jb.y-na);c.stroke()}});mxMarker.addMarker("async",function(c,l,x,p,v,A,B,ha,K,xa){l=v*K*1.118;x=A*K*1.118;v*=B+K;A*=B+K;var na=p.clone();na.x-=l;na.y-=
x;p.x+=-v-l;p.y+=-A-x;return function(){c.begin();c.moveTo(na.x,na.y);ha?c.lineTo(na.x-v-A/2,na.y-A+v/2):c.lineTo(na.x+A/2-v,na.y-A-v/2);c.lineTo(na.x-v,na.y-A);c.close();xa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(l,x,p,v,A,B,ha,K,xa,na){A*=ha+xa;B*=ha+xa;var ab=v.clone();return function(){l.begin();l.moveTo(ab.x,ab.y);K?l.lineTo(ab.x-A-B/c,ab.y-B+A/c):l.lineTo(ab.x+B/c-A,ab.y-B-A/c);l.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var hb=
function(c,l,x){return lb(c,["width"],l,function(p,v,A,B,ha){ha=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ha/2,B.y+A*p/4-v*ha/2)},function(p,v,A,B,ha,K){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ha.x,ha.y,K.x,K.y));c.style.width=Math.round(2*p)/c.view.scale-x})},lb=function(c,l,x,p,v){return eb(c,l,function(A){var B=c.absolutePoints,ha=B.length-1;A=c.view.translate;var K=c.view.scale,xa=x?B[0]:B[ha];B=x?B[1]:B[ha-1];ha=B.x-xa.x;var na=B.y-xa.y,ab=Math.sqrt(ha*ha+na*na);xa=
p.call(this,ab,ha/ab,na/ab,xa,B);return new mxPoint(xa.x/K-A.x,xa.y/K-A.y)},function(A,B,ha){var K=c.absolutePoints,xa=K.length-1;A=c.view.translate;var na=c.view.scale,ab=x?K[0]:K[xa];K=x?K[1]:K[xa-1];xa=K.x-ab.x;var jb=K.y-ab.y,db=Math.sqrt(xa*xa+jb*jb);B.x=(B.x+A.x)*na;B.y=(B.y+A.y)*na;v.call(this,db,xa/db,jb/db,ab,K,B,ha)})},rb=function(c){return function(l){return[eb(l,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",$a.prototype.arrowWidth))),
v=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",$a.prototype.arrowSize)));return new mxPoint(x.x+(1-v)*x.width,x.y+(1-p)*x.height/2)},function(x,p){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(x.y+x.height/2-p.y)/x.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(x.x+x.width-p.x)/x.width))})]}},vb=function(c){return function(l){return[eb(l,["size"],function(x){var p=Math.max(0,Math.min(.5*x.height,parseFloat(mxUtils.getValue(this.state.style,"size",
c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},ob=function(c,l,x){return function(p){var v=[eb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",l)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
!1)&&v.push(kb(p));return v}},Ab=function(c,l,x,p,v){x=null!=x?x:.5;return function(A){var B=[eb(A,["size"],function(ha){var K=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,xa=parseFloat(mxUtils.getValue(this.state.style,"size",K?v:c));return new mxPoint(ha.x+Math.max(0,Math.min(.5*ha.width,xa*(K?1:ha.width))),ha.getCenterY())},function(ha,K,xa){ha=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?K.x-ha.x:Math.max(0,Math.min(x,(K.x-ha.x)/ha.width));this.state.style.size=
ha},!1,p)];l&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(kb(A));return B}},Bb=function(c,l,x){c=null!=c?c:.5;return function(p){var v=[eb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ha=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:l)));return new mxPoint(A.x+Math.min(.75*A.width*c,ha*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(kb(p));return v}},ub=function(){return function(c){var l=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l}},kb=function(c,l){return eb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=l?l:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},eb=function(c,l,x,p,v,A,B){var ha=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ha.execute=function(xa){for(var na=0;na<l.length;na++)this.copyStyle(l[na]);B&&B(xa)};ha.getPosition=x;ha.setPosition=p;ha.ignoreGrid=null!=v?v:!0;if(A){var K=ha.positionChanged;ha.positionChanged=function(){K.apply(this,arguments);c.view.invalidate(this.state.cell);
c.view.validate()}}return ha},mb={link:function(c){return[hb(c,!0,10),hb(c,!1,10)]},flexArrow:function(c){var l=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(lb(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ha){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ha=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(xa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<l&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(lb(c,
c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(xa.getEvent())||mxEvent.isControlDown(xa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(xa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),
l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<l&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var l=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));l.push(kb(c,x/2))}l.push(eb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ha=0;ha<A.length;ha++)A[ha]!=c.cell&&v.isSwimlane(A[ha])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ha]))==p&&B.push(A[ha]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return l},label:ub(),ext:ub(),rectangle:ub(),
triangle:ub(),rhombus:ub(),umlLifeline:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",N.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},umlFrame:function(c){return[eb(c,["width","height"],function(l){var x=Math.max(W.prototype.corner,Math.min(l.width,mxUtils.getValue(this.state.style,"width",W.prototype.width))),
p=Math.max(1.5*W.prototype.corner,Math.min(l.height,mxUtils.getValue(this.state.style,"height",W.prototype.height)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.width=Math.round(Math.max(W.prototype.corner,Math.min(l.width,x.x-l.x)));this.state.style.height=Math.round(Math.max(1.5*W.prototype.corner,Math.min(l.height,x.y-l.y)))},!1)]},process:function(c){var l=[eb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
"size",ea.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},cross:function(c){return[eb(c,["size"],function(l){var x=Math.min(l.width,l.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"size",za.prototype.size)))*x/2;return new mxPoint(l.getCenterX()-x,l.getCenterY()-x)},function(l,x){var p=Math.min(l.width,l.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,l.getCenterY()-x.y)/p*2,Math.max(0,l.getCenterX()-x.x)/p*2)))})]},note:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},note2:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},manualInput:function(c){var l=[eb(c,["size"],function(x){var p=
Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Qa.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},dataStorage:function(c){return[eb(c,["size"],function(l){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?L.prototype.fixedSize:
L.prototype.size));return new mxPoint(l.x+l.width-p*(x?1:l.width),l.getCenterY())},function(l,x){l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(l.width,l.x+l.width-x.x)):Math.max(0,Math.min(1,(l.x+l.width-x.x)/l.width));this.state.style.size=l},!1)]},callout:function(c){var l=[eb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},internalStorage:function(c){var l=[eb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Ua.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
"dy",Ua.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(kb(c));return l},module:function(c){return[eb(c,["jettyWidth","jettyHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"jettyWidth",va.prototype.jettyWidth))),p=Math.max(0,Math.min(l.height,
mxUtils.getValue(this.state.style,"jettyHeight",va.prototype.jettyHeight)));return new mxPoint(l.x+x/2,l.y+2*p)},function(l,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y))/2)})]},corner:function(c){return[eb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",Ka.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,
"dy",Ka.prototype.dy)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.dx=Math.round(Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},tee:function(c){return[eb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",Va.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"dy",Va.prototype.dy)));return new mxPoint(l.x+(l.width+x)/2,l.y+p)},function(l,
x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:rb(1),doubleArrow:rb(.5),folder:function(c){return[eb(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=l.width-x);return new mxPoint(l.x+x,l.y+p)},function(l,x){var p=Math.max(0,Math.min(l.width,x.x-l.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=l.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},document:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
"size",da.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[eb(c,
["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[eb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size))));
return new mxPoint(l.getCenterX(),l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},"mxgraph.basic.rect":function(c){var l=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Ab(U.prototype.size,!0,null,!0,U.prototype.fixedSize),hexagon:Ab(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:Ab(qa.prototype.size,!1),display:Ab(wa.prototype.size,!1),cube:ob(1,
n.prototype.size,!1),card:ob(.5,G.prototype.size,!0),loopLimit:ob(.5,ca.prototype.size,!0),trapezoid:Bb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:Bb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=eb;Graph.handleFactory=mb;var wb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=wb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
null==mxStencilRegistry.getStencil(l)?l=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(l=mxConstants.SHAPE_SWIMLANE);l=mb[l];null==l&&null!=this.state.shape&&this.state.shape.isRoundable()&&(l=mb[mxConstants.SHAPE_RECTANGLE]);null!=l&&(l=l(this.state),null!=l&&(c=null==c?l:c.concat(l)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);
c=mb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var pb=new mxPoint(1,0),xb=new mxPoint(1,0),zb=mxUtils.toRadians(-30);pb=mxUtils.getRotatedPoint(pb,Math.cos(zb),Math.sin(zb));var yb=mxUtils.toRadians(-150);xb=mxUtils.getRotatedPoint(xb,Math.cos(yb),Math.sin(yb));mxEdgeStyle.IsometricConnector=function(c,l,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ha=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
null==ha&&null!=l&&(ha=new mxPoint(l.getCenterX(),l.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var K=pb.x,xa=pb.y,na=xb.x,ab=xb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ha){c=function(Ga,Ja,Ia){Ga-=db.x;var Ha=Ja-db.y;Ja=(ab*Ga-na*Ha)/(K*ab-xa*na);Ga=(xa*Ga-K*Ha)/(xa*na-K*ab);jb?(Ia&&(db=new mxPoint(db.x+K*Ja,db.y+xa*Ja),v.push(db)),db=new mxPoint(db.x+na*Ga,db.y+ab*Ga)):(Ia&&(db=new mxPoint(db.x+na*Ga,db.y+ab*Ga),v.push(db)),
db=new mxPoint(db.x+K*Ja,db.y+xa*Ja));v.push(db)};var db=ha;null==p&&(p=new mxPoint(ha.x+(B.x-ha.x)/2,ha.y+(B.y-ha.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var nb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,l){if(l==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return nb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.tan(mxUtils.toRadians(30)),v=(.5-p)/2;p=Math.min(l,x/(.5+p));l=(l-p)/2;x=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+p*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.75*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+(1-v)*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x+.75*p));return c};m.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;p=Math.min(l*Math.tan(p),.5*x);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ja.prototype.getConstraints=function(c,l,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=l*Math.max(0,
Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-p)));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;V.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};G.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};n.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l+p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));return c};y.prototype.getConstraints=function(c,l,x){c=[];l=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-l));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l+.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(1,
0),!1,null,0,l+.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,x-l-.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-l-.5*(.5*x-l)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*l));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*l));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-l));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-l));return c};C.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,
ua.prototype.constraints=mxEllipse.prototype.constraints;Pa.prototype.constraints=mxEllipse.prototype.constraints;Qa.prototype.constraints=mxRectangleShape.prototype.constraints;Sa.prototype.constraints=mxRectangleShape.prototype.constraints;wa.prototype.getConstraints=function(c,l,x){c=[];var p=Math.min(l,x/2),v=Math.min(l-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};va.prototype.getConstraints=function(c,l,x){l=parseFloat(mxUtils.getValue(c,
"jettyWidth",va.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",va.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,l));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};ca.prototype.constraints=mxRectangleShape.prototype.constraints;ia.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;Va.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*l+.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l+p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*l-.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};Ka.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
function(c,l,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-v),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-v),x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));return c};z.prototype.getConstraints=function(c,l,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",$a.prototype.arrowWidth)))),v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",$a.prototype.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};za.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.min(x,l),v=Math.max(0,Math.min(p,p*parseFloat(mxUtils.getValue(this.style,"size",this.size))));p=(x-v)/2;var A=p+v,B=(l-v)/2;v=B+v;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x-.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+v),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+v),A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,B,A));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*B,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
Actions.prototype.init=function(){function b(g){t.escape();g=t.deleteCells(t.getDeletableCells(t.getSelectionCells()),g);null!=g&&t.setSelectionCells(g)}function e(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{for(var g=t.getSelectionCells(),m=0;m<g.length;m++)t.cellLabelChanged(g[m],"")}finally{t.getModel().endUpdate()}}}function k(g,m,q,y,F){F.getModel().beginUpdate();try{var C=F.getCellGeometry(g);null!=C&&q&&y&&(q/=y,C=C.clone(),1<q?C.height=C.width/q:C.width=C.height*q,F.getModel().setGeometry(g,
C));F.setCellStyles(mxConstants.STYLE_CLIP_PATH,m,[g]);F.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[g])}finally{F.getModel().endUpdate()}}var n=this.editorUi,D=n.editor,t=D.graph,E=function(){return Action.prototype.isEnabled.apply(this,arguments)&&t.isEnabled()};this.addAction("new...",function(){t.openLink(n.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";n.openFile()});this.addAction("smartFit",function(){t.popupMenuHandler.hideMenu();var g=t.view.scale,
m=t.view.translate.x,q=t.view.translate.y;n.actions.get("resetView").funct();1E-5>Math.abs(g-t.view.scale)&&m==t.view.translate.x&&q==t.view.translate.y&&n.actions.get(t.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){t.isEnabled()&&(t.isSelectionEmpty()?n.actions.get("smartFit").funct():t.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){n.hideDialog()}));
window.openFile.setConsumer(mxUtils.bind(this,function(g,m){try{var q=mxUtils.parseXml(g);D.graph.setSelectionCells(D.graph.importGraphModel(q.documentElement))}catch(y){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+y.message)}}));n.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=E;this.addAction("save",function(){n.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=E;this.addAction("saveAs...",function(){n.saveFile(!0)},null,
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(t,null,10,10)});this.addAction("undo",function(){n.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){n.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var g=null;try{g=n.copyXml(),null!=g&&t.removeCells(g,!1)}catch(m){}null==g&&mxClipboard.cut(t)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{n.copyXml()}catch(g){}try{mxClipboard.copy(t)}catch(g){n.handleError(g)}},
null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(m){if(null!=m){t.getModel().beginUpdate();try{n.pasteXml(m,!0)}finally{t.getModel().endUpdate()}}else mxClipboard.paste(t)}),g=!0)}catch(m){}g||mxClipboard.paste(t)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(g){function m(y){if(null!=y){for(var F=!0,C=0;C<
y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var H=t.view.translate;C=t.view.scale;var G=H.x,aa=H.y;H=null;if(1==y.length&&F){var da=t.getCellGeometry(y[0]);null!=da&&(H=da.getTerminalPoint(!0))}H=null!=H?H:t.getBoundingBoxFromGeometry(y,F);null!=H&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-aa)),t.cellsMoved(y,F-H.x,C-H.y))}}function q(){t.getModel().beginUpdate();try{m(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
!t.isCellLocked(t.getDefaultParent())){g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(y){if(null!=y){t.getModel().beginUpdate();try{m(n.pasteXml(y,!0))}finally{t.getModel().endUpdate()}}else q()}),g=!0)}catch(y){}g||q()}});this.addAction("copySize",function(){var g=t.getSelectionCell();t.isEnabled()&&null!=g&&t.getModel().isVertex(g)&&(g=t.getCellGeometry(g),null!=g&&(n.copiedSize=new mxRectangle(g.x,g.y,g.width,g.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedSize){t.getModel().beginUpdate();try{for(var g=t.getResizableCells(t.getSelectionCells()),m=0;m<g.length;m++)if(t.getModel().isVertex(g[m])){var q=t.getCellGeometry(g[m]);null!=q&&(q=q.clone(),q.width=n.copiedSize.width,q.height=n.copiedSize.height,t.getModel().setGeometry(g[m],q))}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var g=t.getSelectionCell()||t.getModel().getRoot();t.isEnabled()&&
null!=g&&(g=g.cloneValue(),null==g||isNaN(g.nodeType)||(n.copiedValue=g))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(g,m){function q(C,H){var G=y.getValue(C);H=C.cloneValue(H);H.removeAttribute("placeholders");null==G||isNaN(G.nodeType)||H.setAttribute("placeholders",G.getAttribute("placeholders"));null!=g&&mxEvent.isShiftDown(g)||H.setAttribute("label",t.convertValueToString(C));y.setValue(C,H)}g=null!=m?m:g;var y=t.getModel();if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedValue){y.beginUpdate();
try{var F=t.getEditableCells(t.getSelectionCells());if(0==F.length)q(y.getRoot(),n.copiedValue);else for(m=0;m<F.length;m++)q(F[m],n.copiedValue)}finally{y.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(g,m){g=null!=m?m:g;null!=g&&mxEvent.isShiftDown(g)?e():b(null!=g&&(mxEvent.isControlDown(g)||mxEvent.isMetaDown(g)||mxEvent.isAltDown(g)))},null,null,"Delete");this.addAction("deleteAll",function(){b(!0)});this.addAction("deleteLabels",function(){e()},null,null,Editor.ctrlKey+
new Action(mxResources.get("unmerge"),function(){var g=n.getSelectionState();if(0<g.cells.length){t.getModel().beginUpdate();try{t.setCellStyles("rowspan",null,g.cells),t.setCellStyles("colspan",null,g.cells)}finally{t.getModel().endUpdate()}}}));this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(g,m){g=null!=m?m:g;t.turnShapes(t.getResizableCells(t.getSelectionCells()),null!=g?mxEvent.isShiftDown(g):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));
null,null,Editor.ctrlKey+"+Shift+A");this.addAction("lockUnlock",function(){if(!t.isSelectionEmpty()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),m=t.getCurrentCellStyle(t.getSelectionCell()),q=1==mxUtils.getValue(m,mxConstants.STYLE_EDITABLE,1)?0:1;t.setCellStyles(mxConstants.STYLE_MOVABLE,q,g);t.setCellStyles(mxConstants.STYLE_RESIZABLE,q,g);t.setCellStyles(mxConstants.STYLE_ROTATABLE,q,g);t.setCellStyles(mxConstants.STYLE_DELETABLE,q,g);t.setCellStyles(mxConstants.STYLE_EDITABLE,
(g=t.getCellsForGroup(g),1<g.length&&t.setSelectionCell(t.groupCells(null,0,g))):t.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(t.isEnabled()){var g=t.getEditableCells(t.getSelectionCells());t.model.beginUpdate();try{var m=t.ungroupCells();if(null!=g)for(var q=0;q<g.length;q++)t.model.contains(g[q])&&(0==t.model.getChildCount(g[q])&&t.model.isVertex(g[q])&&t.setCellStyles("container","0",[g[q]]),m.push(g[q]))}finally{t.model.endUpdate()}0<
m.length&&t.setSelectionCells(m)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(t.isEnabled()){var g=t.getSelectionCells();if(null!=g){for(var m=[],q=0;q<g.length;q++)t.isTableRow(g[q])||t.isTableCell(g[q])||m.push(g[q]);t.removeCellsFromParent(m)}}});this.addAction("edit",function(){t.isEnabled()&&t.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var g=t.getSelectionCell()||t.getModel().getRoot();n.showDataDialog(g)},null,
null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var m="";if(mxUtils.isNode(g.value)){var q=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&g.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(q=g.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==q&&(q=g.value.getAttribute("tooltip"));null!=q&&(m=q)}m=new TextareaDialog(n,mxResources.get("editTooltip")+":",m,function(y){t.setTooltipForCell(g,
y)});n.showDialog(m.container,320,200,!0,!0);m.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var g=t.getLinkForCell(t.getSelectionCell());null!=g&&t.openLink(g)});this.addAction("editLink...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&null!=g&&t.isCellEditable(g)){var m=t.getLinkForCell(g)||"";n.showLinkDialog(m,mxResources.get("apply"),function(q,y,F){q=mxUtils.trim(q);t.setLinkForCell(g,0<q.length?q:null);t.setAttributeForCell(g,"linkTarget",F)},!0,t.getLinkTargetForCell(g))}},
null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&(t.clearSelection(),n.actions.get("image").funct())})).isEnabled=E;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&n.showLinkDialog("",mxResources.get("insert"),function(g,m,q){g=mxUtils.trim(g);if(0<g.length){var y=null,F=t.getLinkTitle(g);null!=m&&0<m.length&&(y=m[0].iconUrl,
F=m[0].name||m[0].type,F=F.charAt(0).toUpperCase()+F.substring(1),30<F.length&&(F=F.substring(0,30)+"..."));m=new mxCell(F,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=y?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+y:"spacing=10;"));m.vertex=!0;y=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry([m],!0));m.geometry.x=y.x;m.geometry.y=y.y;t.setAttributeForCell(m,"linkTarget",q);t.setLinkForCell(m,g);t.cellSizeUpdated(m,
!0);t.getModel().beginUpdate();try{m=t.addCell(m),t.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{t.getModel().endUpdate()}t.setSelectionCell(m);t.scrollCellToVisible(t.getSelectionCell())}},!0)})).isEnabled=E;this.addAction("link...",mxUtils.bind(this,function(){if(t.isEnabled())if(t.cellEditor.isContentEditing()){var g=t.getSelectedElement(),m=t.getParentByName(g,"A",t.cellEditor.textarea),q="";if(null==m&&null!=g&&null!=g.getElementsByTagName)for(var y=g.getElementsByTagName("a"),
F=0;F<y.length&&null==m;F++)y[F].textContent==g.textContent&&(m=y[F]);null!=m&&"A"==m.nodeName&&(q=m.getAttribute("href")||"",t.selectNode(m));var C=t.cellEditor.saveSelection();n.showLinkDialog(q,mxResources.get("apply"),mxUtils.bind(this,function(H){t.cellEditor.restoreSelection(C);null!=H&&t.insertLink(H)}))}else t.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=E;this.addAction("autosize",function(){var g=t.getSelectionCells();if(null!=g){t.getModel().beginUpdate();
try{for(var m=0;m<g.length;m++){var q=g[m];0<t.getModel().getChildCount(q)?t.updateGroupBounds([q],0,!0):t.updateCellSize(q)}}finally{t.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+Y");this.addAction("snapToGrid",function(){t.snapCellsToGrid(t.getSelectionCells(),t.gridSize)});this.addAction("formattedText",function(){t.stopEditing();var g=t.getCommonStyle(t.getSelectionCells());g="1"==mxUtils.getValue(g,"html","0")?null:"1";t.getModel().beginUpdate();try{for(var m=t.getEditableCells(t.getSelectionCells()),
q=0;q<m.length;q++)if(state=t.getView().getState(m[q]),null!=state){var y=mxUtils.getValue(state.style,"html","0");if("1"==y&&null==g){var F=t.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var C=document.createElement("div");C.innerHTML=t.sanitizeHtml(F);F=mxUtils.extractTextWithWhitespace(C.childNodes);t.cellLabelChanged(state.cell,F);t.setCellStyles("html",g,[m[q]])}else"0"==y&&"1"==g&&(F=mxUtils.htmlEntities(t.convertValueToString(state.cell),
!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(F=F.replace(/\n/g,"<br/>")),t.cellLabelChanged(state.cell,t.sanitizeHtml(F)),t.setCellStyles("html",g,[m[q]]))}n.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=g?g:"0"],"cells",m))}finally{t.getModel().endUpdate()}});this.addAction("wordWrap",function(){var g=t.getView().getState(t.getSelectionCell()),m="wrap";t.stopEditing();null!=g&&"wrap"==g.style[mxConstants.STYLE_WHITE_SPACE]&&(m=null);t.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
m)});this.addAction("rotation",function(){var g="0",m=t.getView().getState(t.getSelectionCell());null!=m&&(g=m.style[mxConstants.STYLE_ROTATION]||g);g=new FilenameDialog(n,g,mxResources.get("apply"),function(q){null!=q&&0<q.length&&t.setCellStyles(mxConstants.STYLE_ROTATION,q)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");n.showDialog(g.container,375,80,!0,!0);g.init()});this.addAction("resetView",function(){t.zoomTo(1);n.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
function(g){t.isFastZoomEnabled()?t.lazyZoom(!0,!0,n.buttonZoomDelay):t.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(g){t.isFastZoomEnabled()?t.lazyZoom(!1,!0,n.buttonZoomDelay):t.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var g=t.isSelectionEmpty()?t.getGraphBounds():t.getBoundingBox(t.getSelectionCells()),m=t.view.translate,q=t.view.scale;g.x=g.x/q-m.x;g.y=g.y/q-m.y;g.width/=q;
g.height/=q;null!=t.backgroundImage&&(g=mxRectangle.fromRectangle(g),g.add(new mxRectangle(0,0,t.backgroundImage.width,t.backgroundImage.height)));0==g.width||0==g.height?(t.zoomTo(1),n.resetScrollbars()):(m=Editor.fitWindowBorders,null!=m&&(g.x-=m.x,g.y-=m.y,g.width+=m.width+m.x,g.height+=m.height+m.y),t.fitWindow(g))},null,null,Editor.ctrlKey+"+Shift+H");this.addAction("fitPage",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,m=t.pageScale;t.zoomTo(Math.floor(20*
Math.min((t.container.clientWidth-10)/g.width/m,(t.container.clientHeight-10)/g.height/m))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=g.y*t.view.scale-1,t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)-1)}),null,null,Editor.ctrlKey+"+J");this.addAction("fitTwoPages",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();var g=t.pageFormat,m=t.pageScale;t.zoomTo(Math.floor(20*Math.min((t.container.clientWidth-
10)/(2*g.width)/m,(t.container.clientHeight-10)/g.height/m))/20);mxUtils.hasScrollbars(t.container)&&(g=t.getPagePadding(),t.container.scrollTop=Math.min(g.y,(t.container.scrollHeight-t.container.clientHeight)/2),t.container.scrollLeft=Math.min(g.x,(t.container.scrollWidth-t.container.clientWidth)/2))}),null,null,Editor.ctrlKey+"+Shift+J");this.addAction("fitPageWidth",mxUtils.bind(this,function(){t.pageVisible||this.get("pageView").funct();t.zoomTo(Math.floor(20*(t.container.clientWidth-10)/t.pageFormat.width/
t.pageScale)/20);if(mxUtils.hasScrollbars(t.container)){var g=t.getPagePadding();t.container.scrollLeft=Math.min(g.x*t.view.scale,(t.container.scrollWidth-t.container.clientWidth)/2)}}));this.put("customZoom",new Action(mxResources.get("custom")+"...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.getView().getScale()),mxResources.get("apply"),mxUtils.bind(this,function(m){m=parseInt(m);!isNaN(m)&&0<m&&t.zoomTo(m/100)}),mxResources.get("zoom")+" (%)");this.editorUi.showDialog(g.container,
300,80,!0,!0);g.init()}),null,null,Editor.ctrlKey+"+0"));this.addAction("pageScale...",mxUtils.bind(this,function(){var g=new FilenameDialog(this.editorUi,parseInt(100*t.pageScale),mxResources.get("apply"),mxUtils.bind(this,function(m){m=parseInt(m);!isNaN(m)&&0<m&&(m=new ChangePageSetup(n,null,null,null,m/100),m.ignoreColor=!0,m.ignoreImage=!0,t.model.execute(m))}),mxResources.get("pageScale")+" (%)");this.editorUi.showDialog(g.container,300,80,!0,!0);g.init()}));var d=null;d=this.addAction("grid",
"/help"+g+".html")});var f=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){f||(n.showDialog((new AboutDialog(n)).container,320,280,!0,!0,function(){f=!1}),f=!0)}));d=mxUtils.bind(this,function(g,m,q,y){return this.addAction(g,function(){if(null!=q&&t.cellEditor.isContentEditing())q();else{t.stopEditing(!1);t.getModel().beginUpdate();try{var F=t.getEditableCells(t.getSelectionCells());t.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,m,F);(m&mxConstants.FONT_BOLD)==
mxConstants.FONT_BOLD?t.updateLabelElements(F,function(H){H.style.fontWeight=null;"B"==H.nodeName&&t.replaceElement(H)}):(m&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?t.updateLabelElements(F,function(H){H.style.fontStyle=null;"I"==H.nodeName&&t.replaceElement(H)}):(m&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&t.updateLabelElements(F,function(H){H.style.textDecoration=null;"U"==H.nodeName&&t.replaceElement(H)});for(var C=0;C<F.length;C++)0==t.model.getChildCount(F[C])&&t.autoSizeCell(F[C],
this.addAction("rounded",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"1"),t.setCellStyles(mxConstants.STYLE_CURVED,"0"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["1","0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("toggleRounded",function(){if(!t.isSelectionEmpty()&&t.isEnabled()){t.getModel().beginUpdate();try{var g=t.getSelectionCells(),m=t.getCurrentCellStyle(g[0]),
q="1"==mxUtils.getValue(m,mxConstants.STYLE_ROUNDED,"0")?"0":"1";t.setCellStyles(mxConstants.STYLE_ROUNDED,q);t.setCellStyles(mxConstants.STYLE_CURVED,null);n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[q,"0"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}});this.addAction("curved",function(){t.getModel().beginUpdate();try{t.setCellStyles(mxConstants.STYLE_ROUNDED,"0"),t.setCellStyles(mxConstants.STYLE_CURVED,
"1"),n.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",["0","1"],"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}});this.addAction("collapsible",function(){var g=t.view.getState(t.getSelectionCell()),m="1";null!=g&&null!=t.getFoldingImage(g)&&(m="0");t.setCellStyles("collapsible",m);n.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[m],"cells",t.getSelectionCells()))});this.addAction("editStyle...",
mxUtils.bind(this,function(){var g=t.getEditableCells(t.getSelectionCells());if(null!=g&&0<g.length){var m=t.getModel();m=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",m.getStyle(g[0])||"",function(q){null!=q&&t.setCellStyle(mxUtils.trim(q),g)},null,null,400,220);this.editorUi.showDialog(m.container,420,300,!0,!0);m.init()}}),null,null,Editor.ctrlKey+"+E");this.addAction("setAsDefaultStyle",function(){t.isEnabled()&&!t.isSelectionEmpty()&&n.setDefaultStyle(t.getSelectionCell())},
null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function(){t.isEnabled()&&n.clearDefaultStyle()},null,null,Editor.ctrlKey+"+Shift+R");this.addAction("addWaypoint",function(){var g=t.getSelectionCell();if(null!=g&&t.getModel().isEdge(g)){var m=D.graph.selectionCellsHandler.getHandler(g);if(m instanceof mxEdgeHandler){var q=t.view.translate,y=t.view.scale,F=q.x;q=q.y;g=t.getModel().getParent(g);for(var C=t.getCellGeometry(g);t.getModel().isVertex(g)&&null!=C;)F+=C.x,q+=C.y,g=
t.getModel().getParent(g),C=t.getCellGeometry(g);F=Math.round(t.snap(t.popupMenuHandler.triggerX/y-F));y=Math.round(t.snap(t.popupMenuHandler.triggerY/y-q));m.addPointAt(m.state,F,y)}}});this.addAction("removeWaypoint",function(){var g=n.actions.get("removeWaypoint");null!=g.handler&&g.handler.removePoint(g.handler.state,g.index)});this.addAction("clearWaypoints",function(g,m){g=null!=m?m:g;var q=t.getSelectionCells();if(null!=q){q=t.getEditableCells(t.addAllEdges(q));t.getModel().beginUpdate();try{for(var y=
0;y<q.length;y++){var F=q[y];if(t.getModel().isEdge(F)){var C=t.getCellGeometry(F);null!=m&&mxEvent.isShiftDown(g)?(t.setCellStyles(mxConstants.STYLE_EXIT_X,null,[F]),t.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[F])):null!=C&&(C=C.clone(),C.points=null,C.x=0,C.y=0,C.offset=null,t.getModel().setGeometry(F,C))}}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",
mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=mxResources.get("image")+" ("+mxResources.get("url")+"):",m=t.getView().getState(t.getSelectionCell()),
q="",y=null;null!=m&&(q=m.style[mxConstants.STYLE_IMAGE]||q,y=m.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,H,G,aa,da,ba){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,H,G);else{var Y=t.getSelectionCells();if(null!=C&&(0<C.length||0<Y.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Y.length){Y=[t.insertVertex(t.getDefaultParent(),null,"",0,0,H,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
null!=g){var m=t.getCurrentCellStyle(g),q=m[mxConstants.STYLE_IMAGE],y=m[mxConstants.STYLE_SHAPE];q&&"image"==y&&(m=new CropImageDialog(n,q,m[mxConstants.STYLE_CLIP_PATH],function(F,C,H){k(g,F,C,H,t)}),n.showDialog(m.container,300,390,!0,!0))}}).isEnabled=E;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(n,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("layers"))})),
this.outlineWindow.window.setVisible(!0),n.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&null!=g){var m=new ConnectionPointsDialog(n,
g);n.showDialog(m.container,350,450,!0,!1,function(){m.destroy()});m.init()}}).isEnabled=E};Actions.prototype.addAction=function(b,e,k,n,D){if("..."==b.substring(b.length-3)){b=b.substring(0,b.length-3);var t=mxResources.get(b)+"..."}else t=mxResources.get(b);return this.put(b,new Action(t,e,k,n,D))};Actions.prototype.put=function(b,e){return this.actions[b]=e};Actions.prototype.get=function(b){return this.actions[b]};
DrawioFile.prototype.mergeFile=function(b,e,k,n){var D=!0;try{this.stats.fileMerged++;var t=this.getShadowPages(),E=b.getShadowPages();if(null!=E&&0<E.length){var d=[this.ui.diffPages(null!=n?n:t,E)],f=this.ignorePatches(d);this.setShadowPages(E);if(f)EditorUi.debug("File.mergeFile",[this],"file",[b],"ignored",f);else{null!=this.sync&&this.sync.sendLocalChanges();this.backupPatch=this.isModified()?this.ui.diffPages(t,this.ui.pages):null;n={};f={};var g=this.ui.patchPages(t,d[0]),m=this.ui.getHashValueForPages(g,
n),q=this.ui.getHashValueForPages(E,f);EditorUi.debug("File.mergeFile",[this],"file",[b],"shadow",t,"pages",this.ui.pages,"patches",d,"backup",this.backupPatch,"checksum",m,"current",q,"valid",m==q,"from",this.getCurrentRevisionId(),"to",b.getCurrentRevisionId(),"modified",this.isModified());if(null!=m&&m!=q){var y=this.compressReportData(this.getAnonymizedXmlForPages(E)),F=this.compressReportData(this.getAnonymizedXmlForPages(g)),C=this.ui.hashValue(b.getCurrentEtag()),H=this.ui.hashValue(this.getCurrentEtag());
this.checksumError(k,d,"Shadow Details: "+JSON.stringify(n)+"\nChecksum: "+m+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+C+"\nTo: "+H+"\n\nFile Data:\n"+y+"\nPatched Shadow:\n"+F,null,"mergeFile");return}if(null!=this.sync){var G=this.sync.patchRealtime(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null);null==G||mxUtils.isEmptyObject(G)||d.push(G)}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw D=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=
DrawioFile.prototype.sendErrorReport=function(b,e,k,n){try{var D=this.compressReportData(this.getAnonymizedXmlForPages(this.getShadowPages()),25E3),t=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),E=this.getCurrentUser(),d=null!=E?this.ui.hashValue(E.id):"unknown",f=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",g=this.getTitle(),m=g.lastIndexOf(".");E="xml";0<m&&(E=g.substring(m));var q=null!=k?k.stack:Error().stack;EditorUi.sendReport(b+" "+(new Date).toISOString()+
DrawioFile.prototype.patch=function(b,e,k){if(null!=b){var n=this.ui.editor.undoManager,D=n.history.slice(),t=n.indexOfNextAdd,E=this.ui.editor.graph;E.container.style.visibility="hidden";var d=this.changeListenerEnabled;this.changeListenerEnabled=k;var f=E.foldingEnabled,g=E.mathEnabled,m=E.cellRenderer.redraw;E.cellRenderer.redraw=function(q){q.view.graph.isEditing(q.cell)&&(q.view.graph.scrollCellToVisible(q.cell),q.view.graph.cellEditor.resize());m.apply(this,arguments)};E.model.beginUpdate();
try{this.ui.pages=this.ui.applyPatches(this.ui.pages,b,!0,e,this.isModified()),0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage()),0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{E.container.style.visibility="";E.model.endUpdate();E.cellRenderer.redraw=m;this.changeListenerEnabled=d;k||(n.history=D,n.indexOfNextAdd=t,n.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)g!=E.mathEnabled?
LocalFile.prototype.saveFile=function(b,e,k,n,D){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;D||this.updateFileData();var t=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var E=this.getData(),d=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=k&&k()}),f=mxUtils.bind(this,function(g){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var m=mxUtils.bind(this,
function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(C){try{var H=this.desc;this.savingFile=!1;this.desc=C;this.fileSaved(E,H,d,m);this.removeDraft()}catch(G){m(G)}}),m)}),m)}),m):(this.inConflictState=!0,m())}),mxUtils.bind(this,function(F){this.invalidFileHandle=!0;m(F)}))}),m)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(g,b,t?"image/png":"text/xml",t);else if(g.length<MAX_REQUEST_SIZE){var q=b.lastIndexOf(".");q=0<q?b.substring(q+1):"xml";
N=J.getId():null!=u.currentPage&&(N=u.currentPage.getId());return N});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=
mxClient.IS_SF)nb.writeln('<style type="text/css">'),nb.writeln(Editor.mathJaxWebkitCss),nb.writeln("</style>");mxClient.IS_GC&&(nb.writeln('<style type="text/css">'),nb.writeln("@media print {"),nb.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),nb.writeln("}"),nb.writeln("</style>"));null!=u.editor.fontCss&&(nb.writeln('<style type="text/css">'),nb.writeln(u.editor.fontCss),nb.writeln("</style>"));for(var c=cb.getCustomFonts(),l=0;l<c.length;l++){var x=c[l].name,p=c[l].url;Graph.isCssFontUrl(p)?
nb.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(p)+'" charset="UTF-8" type="text/css">'):(nb.writeln('<style type="text/css">'),nb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(x)+'";\nsrc: url("'+mxUtils.htmlEntities(p)+'");\n}'),nb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var yb=hb.renderPage;hb.renderPage=function(nb,c,l,x,p,v){var A=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!u.editor.useForeignObjectForMath?!0:u.editor.originalNoForeignObject;
(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="18.1.3";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,m,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
"1"!=urlParams.dev)try{if(d!=EditorUi.lastErrorMessage&&(null==d||null==f||-1==d.indexOf("Script error")&&-1==d.indexOf("extension"))&&null!=d&&0>d.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=d;var C=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";q=null!=q?q:Error(d);(new Image).src=C+"/log?severity="+y+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(d)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(g)+(null!=m?":colno:"+
encodeURIComponent(m):"")+(null!=q&&null!=q.stack?"&stack="+encodeURIComponent(q.stack):"")}}catch(H){}try{F||null==window.console||console.error(y,d,f,g,m,q)}catch(H){}};EditorUi.logEvent=function(d){if("1"==urlParams.dev)EditorUi.debug("logEvent",d);else if(EditorUi.enableLogging)try{var f=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=f+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=d?"&data="+encodeURIComponent(JSON.stringify(d)):"")}catch(g){}};EditorUi.sendReport=
f.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=q&&6<q.length}catch(y){}};g.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(q){}try{f=document.createElement("canvas");f.width=f.height=1;var m=f.toDataURL("image/jpeg");
EditorUi.prototype.jpgSupported=null!==m.match("image/jpeg")}catch(q){}})();EditorUi.prototype.openLink=function(d,f,g){return this.editor.graph.openLink(d,f,g)};EditorUi.prototype.showSplash=function(d){};EditorUi.prototype.getLocalData=function(d,f){f(localStorage.getItem(d))};EditorUi.prototype.setLocalData=function(d,f,g){localStorage.setItem(d,f);null!=g&&g()};EditorUi.prototype.removeLocalData=function(d,f){localStorage.removeItem(d);f()};EditorUi.prototype.setShareCursorPosition=function(d){this.shareCursorPosition=
EditorUi.prototype.createSpinner=function(d,f,g){var m=null==d||null==f;g=null!=g?g:24;var q=new Spinner({lines:12,length:g,width:Math.round(g/3),radius:Math.round(g/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),y=q.spin;q.spin=function(C,H){var G=!1;this.active||(y.call(this,C),this.active=!0,null!=H&&(m&&(f=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,d=document.body.clientWidth/2-2),G=document.createElement("div"),
return q};EditorUi.prototype.isCompatibleString=function(d){try{var f=mxUtils.parseXml(d),g=this.editor.extractGraphModel(f.documentElement,!0);return null!=g&&0==g.getElementsByTagName("parsererror").length}catch(m){}return!1};EditorUi.prototype.isVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&
EditorUi.prototype.createKeyHandler=function(d){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var g=f.getFunction,m=this.editor.graph,q=this;f.getFunction=function(y){if(m.isSelectionEmpty()&&null!=q.pages&&0<q.pages.length){var F=q.getSelectedPageIndex();if(mxEvent.isShiftDown(y)){if(37==y.keyCode)return function(){0<F&&q.movePage(F,F-1)};if(38==y.keyCode)return function(){0<F&&q.movePage(F,0)};if(39==y.keyCode)return function(){F<q.pages.length-1&&q.movePage(F,
var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGraphModelFromHtml=function(d){var f=e.apply(this,arguments);if(null==f)try{var g=d.indexOf("&lt;mxfile ");if(0<=g){var m=d.lastIndexOf("&lt;/mxfile&gt;");m>g&&(f=d.substring(g,m+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else{var q=mxUtils.parseXml(d),y=this.editor.extractGraphModel(q.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility);f=null!=
f.model.beginUpdate();try{var g=null!=this.pages?this.pages.slice():null,m=d.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<m.length||1==m.length&&m[0].hasAttribute("name")){this.fileNode=d;this.pages=null!=this.pages?this.pages:[];for(var q=m.length-1;0<=q;q--){var y=this.updatePageRoot(new DiagramPage(m[q]));null==y.getName()&&y.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,y,0==q?y:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
function(d,f,g,m,q,y,F,C,H,G,aa){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;H=null!=H?H:!0;var da=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var ba="_blank";else da=ba=m;if(null==d)return"";var Y=d;if("mxfile"!=Y.nodeName.toLowerCase()){if(aa){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Y=Graph.compress(qa);if(Graph.decompress(Y)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
aa=aa?mxUtils.getPrettyXml(Y):mxUtils.getXml(Y);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))aa=this.getHtml2(mxUtils.getXml(Y),f,null!=g?g.getTitle():null,ba,da);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(m=null),aa=this.getEmbeddedSvg(aa,f,m,null,C,H,da);return aa};EditorUi.prototype.getXmlFileData=function(d,f,g,m){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
m);if(d&&null!=this.fileNode&&null!=this.currentPage)if(d=function(H){var G=H.getElementsByTagName("mxGraphModel");G=0<G.length?G[0]:null;null==G&&g?(G=mxUtils.trim(mxUtils.getTextContent(H)),H=H.cloneNode(!1),0<G.length&&(G=Graph.decompress(G),null!=G&&0<G.length&&H.appendChild(mxUtils.parseXml(G).documentElement))):null==G||g?H=H.cloneNode(!0):(H=H.cloneNode(!1),mxUtils.setTextContent(H,Graph.compressNode(G)));q.appendChild(H)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(q)),q=this.fileNode.cloneNode(!1),f)d(this.currentPage.node);else for(f=0;f<this.pages.length;f++){var y=this.pages[f],F=y.node;if(y!=this.currentPage)if(y.needsUpdate){var C=new mxCodec(mxUtils.createXmlDocument());C=C.encode(new mxGraphModel(y.root));this.editor.graph.saveViewState(y.viewState,C,null,m);EditorUi.removeChildNodes(F);mxUtils.setTextContent(F,Graph.compressNode(C));delete y.needsUpdate}else m&&(this.updatePageRoot(y),null!=y.viewState.backgroundImage&&(null!=y.viewState.backgroundImage.originalSrc?
y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.originalSrc,y):Graph.isPageLink(y.viewState.backgroundImage.src)&&(y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.src,y))),null!=y.viewState.backgroundImage&&null!=y.viewState.backgroundImage.originalSrc&&(C=new mxCodec(mxUtils.createXmlDocument()),C=C.encode(new mxGraphModel(y.root)),this.editor.graph.saveViewState(y.viewState,C,null,m),F=F.cloneNode(!1),mxUtils.setTextContent(F,
Graph.compressNode(C))));d(F)}return q};EditorUi.prototype.anonymizeString=function(d,f){for(var g=[],m=0;m<d.length;m++){var q=d.charAt(m);0<=EditorUi.ignoredAnonymizedChars.indexOf(q)?g.push(q):isNaN(parseInt(q))?q.toLowerCase()!=q?g.push(String.fromCharCode(65+Math.round(25*Math.random()))):q.toUpperCase()!=q?g.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(q)?g.push(" "):g.push("?"):g.push(f?"0":Math.round(9*Math.random()))}return g.join("")};EditorUi.prototype.anonymizePatch=
function(d){if(null!=d[EditorUi.DIFF_INSERT])for(var f=0;f<d[EditorUi.DIFF_INSERT].length;f++)try{var g=mxUtils.parseXml(d[EditorUi.DIFF_INSERT][f].data).documentElement.cloneNode(!1);null!=g.getAttribute("name")&&g.setAttribute("name",this.anonymizeString(g.getAttribute("name")));d[EditorUi.DIFF_INSERT][f].data=mxUtils.getXml(g)}catch(y){d[EditorUi.DIFF_INSERT][f].data=y.message}if(null!=d[EditorUi.DIFF_UPDATE]){for(var m in d[EditorUi.DIFF_UPDATE]){var q=d[EditorUi.DIFF_UPDATE][m];null!=q.name&&
delete d[EditorUi.DIFF_UPDATE][m]}mxUtils.isEmptyObject(d[EditorUi.DIFF_UPDATE])&&delete d[EditorUi.DIFF_UPDATE]}return d};EditorUi.prototype.anonymizeAttributes=function(d,f){if(null!=d.attributes)for(var g=0;g<d.attributes.length;g++)"as"!=d.attributes[g].name&&d.setAttribute(d.attributes[g].name,this.anonymizeString(d.attributes[g].value,f));if(null!=d.childNodes)for(g=0;g<d.childNodes.length;g++)this.anonymizeAttributes(d.childNodes[g],f)};EditorUi.prototype.anonymizeNode=function(d,f){f=d.getElementsByTagName("mxCell");
function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,m,q,y,F,C,H,G,aa){q=null!=q?q:!0;y=null!=y?y:!1;var da=this.editor.graph;if(f||!d&&null!=H&&/(\.svg)$/i.test(H.getTitle())){var ba=null!=da.themes&&"darkTheme"==da.defaultThemeName;G=!1;if(ba||null!=this.pages&&this.currentPage!=this.pages[0]){var Y=da.getGlobalVariable;da=this.createTemporaryGraph(ba?da.getDefaultStylesheet():da.getStylesheet());
G,aa);H=null!=H?H:this.getCurrentFile();d=this.createFileData(F,da,H,window.location.href,d,f,g,m,q,C,G);da!=this.editor.graph&&da.container.parentNode.removeChild(da.container);return d};EditorUi.prototype.getHtml=function(d,f,g,m,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var H=f.view.scale;y=Math.floor(F.x/H-f.view.translate.x);H=Math.floor(F.y/H-f.view.translate.y);F=f.background;null==
q&&(f=this.getBasenames().join(";"),0<f.length&&(C=EditorUi.drawHost+"/embed.js?s="+f));d.setAttribute("x0",y);d.setAttribute("y0",H)}null!=d&&(d.setAttribute("pan","1"),d.setAttribute("zoom","1"),d.setAttribute("resize","0"),d.setAttribute("fit","0"),d.setAttribute("border","20"),d.setAttribute("links","1"),null!=m&&d.setAttribute("edit",m));null!=q&&(q=q.replace(/&/g,"&amp;"));d=null!=d?Graph.zapGremlins(mxUtils.getXml(d)):"";m=Graph.compress(d);Graph.decompress(m)!=d&&(m=encodeURIComponent(d));
m+"</div>\n</div>\n"+(null==q?'<script type="text/javascript" src="'+C+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+q+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(d,f,g,m,q){f=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=q&&(q=q.replace(/&/g,"&amp;"));d={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){g=null;this.fileNode=f;this.pages=[];for(var m=0;m<d.length;m++)null==d[m].getAttribute("id")&&d[m].setAttribute("id",m),f=new DiagramPage(d[m]),null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[m+1])),this.pages.push(f),null!=urlParams["page-id"]&&f.getId()==urlParams["page-id"]&&(g=f);this.currentPage=null!=g?g:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];f=this.currentPage.node}"0"!=
urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(f.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(f);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var q=urlParams["layer-ids"].split(" ");f={};for(m=0;m<q.length;m++)f[q[m]]=!0;var y=this.editor.graph.getModel(),
F=y.getChildren(y.root);for(m=0;m<F.length;m++){var C=F[m];y.setVisible(C,f[C.id]||!1)}}catch(H){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,H,G,aa,da){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Y,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
fa){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var ra=this.createDownloadRequest(R,d,m,fa,F,q,C,H,G,aa,da,ka,ja);this.editor.graph.pageVisible=la;return ra}catch(u){this.handleError(u)}}))}else{var U=null,I=mxUtils.bind(this,function(R){R.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(U)}))});if("svg"==d){var V=this.editor.graph.background;
if(F||V==mxConstants.NONE)V=null;var Q=this.editor.graph.getSvg(V,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(Q);this.editor.convertImages(Q,mxUtils.bind(this,mxUtils.bind(this,function(R){this.spinner.stop();I(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(R))})))}else Y=ba+".svg",U=this.getFileData(!1,!0,null,mxUtils.bind(this,function(R){this.spinner.stop();I(R)}),m)}}catch(R){this.handleError(R)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,C,H,
this.currentPage){O="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};H&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+O+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(da&&isFinite(da)?"&w="+da:"")+(ba&&isFinite(ba)?"&h="+ba:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var m=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
decodeURIComponent(urlParams.title):this.defaultFilename,!0);y.getHash=function(){return m};this.fileLoaded(y);"csv"==d.format&&this.importCsv(F,mxUtils.bind(this,function(da){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=d.update){var C=null!=d.interval?parseInt(d.interval):6E4,H=null,G=mxUtils.bind(this,function(){var da=this.currentPage;mxUtils.post(d.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ja){var U=new mxCellOverlay(ja.image||q.warningImage,ja.tooltip,ja.align,ja.valign,ja.offset);U.addListener(mxEvent.CLICK,function(I,V){m.alert(ja.tooltip)});return U}var g=null,m=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
d.hasAttribute("dy"))q.view.translate=new mxPoint(parseFloat(d.getAttribute("dx")||0),parseFloat(d.getAttribute("dy")||0))}else"fit"==d.nodeName&&(F=d.hasAttribute("max-scale")?parseFloat(d.getAttribute("max-scale")):1);d=d.nextSibling}}finally{y.endUpdate()}null!=F&&this.chromelessResize&&this.chromelessResize(!0,F)}return g};EditorUi.prototype.getCopyFilename=function(d,f){var g=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;d="";var m=g.lastIndexOf(".");0<=m&&(d=g.substring(m),g=
g.substring(0,m));if(f){f=g;var q=new Date;g=q.getFullYear();m=q.getMonth()+1;var y=q.getDate(),F=q.getHours(),C=q.getMinutes();q=q.getSeconds();g=f+(" "+(g+"-"+m+"-"+y+"-"+F+"-"+C+"-"+q))}return g=mxResources.get("copyOf",[g])+d};EditorUi.prototype.fileLoaded=function(d,f){var g=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var m=!1;this.hideDialog();null!=g&&(EditorUi.debug("File.closed",[g]),g.removeListener(this.descriptorChangedListener),g.close());
this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));m=!0;if(!this.isOffline()&&null!=d.getMode()){var y="1"==urlParams.sketch?"sketch":uiTheme;if(null==y)y="default";else if("sketch"==y||"min"==y)y+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:d.getMode().toUpperCase()+"-OPEN-FILE-"+d.getHash(),action:"size_"+d.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+y})}EditorUi.debug("File.opened",[d]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));
F.stack})}catch(C){}d=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=g?this.fileLoaded(g)||q():q()});f?d():this.handleError(F,mxResources.get("errorLoadingFile"),d,!0,null,null,!0)}else q();return m};EditorUi.prototype.getHashValueForPages=function(d,f){var g=0,m=new mxGraphModel,q=new mxCodec;null!=f&&(f.byteCount=0,f.attrCount=0,f.eltCount=0,f.nodeCount=0);for(var y=0;y<d.length;y++){this.updatePageRoot(d[y]);
var F=d[y].node.cloneNode(!1);F.removeAttribute("name");m.root=d[y].root;var C=q.encode(m);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(H,G,aa,da){return!da||"mxGeometry"!=H.nodeName&&"mxPoint"!=H.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?da&&"mxCell"==H.nodeName&&
"previous"==G?null:aa:Math.round(aa)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var m=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(m^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(m^=this.hashValue(y,
f,g)+this.hashValue(F,f,g))}}if(null!=d.childNodes)for(q=0;q<d.childNodes.length;q++)m=(m<<5)-m+this.hashValue(d.childNodes[q],f,g)<<0}else if(null!=d&&"function"!==typeof d){d=String(d);f=0;null!=g&&(g.byteCount+=d.length);for(q=0;q<d.length;q++)f=(f<<5)-f+d.charCodeAt(q)<<0;m^=f}return m};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(d,f,g,m,q,y,F){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||
if(null==d){var g=this.sidebar.palettes["L.scratchpad"];null==g&&(g=this.sidebar.palettes.search);null!=g&&(d=g[g.length-1].nextSibling)}d=null!=d?d:f.firstChild.nextSibling.nextSibling;g=f.lastChild;var m=g.previousSibling;f.insertBefore(g,d);f.insertBefore(m,g)};EditorUi.prototype.loadLibrary=function(d,f){var g=mxUtils.parseXml(d.getData());if("mxlibrary"==g.documentElement.nodeName){var m=JSON.parse(mxUtils.getTextContent(g.documentElement));this.libraryLoaded(d,m,g.documentElement.getAttribute("title"),
f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,m){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ja){0==ka.length&&d.isEditable()?
(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ja.appendChild(y)):this.addLibraryEntries(ka,ja)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=m?m:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var H=C.parentNode.previousSibling;m=H.getAttribute("title");
null!=m&&0<m.length&&".scratchpad"!=d.title&&H.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+m);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";H.style.position="relative";var aa=document.createElement("img");aa.setAttribute("src",Editor.crossImage);aa.setAttribute("title",mxResources.get("close"));aa.setAttribute("valign","absmiddle");aa.setAttribute("border","0");aa.style.position=
mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});m=aa.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,
G.firstChild);mxEvent.addListener(m,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}H.appendChild(G);H.style.paddingRight=
18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
m.w,m.h,m.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=d?d[mxLanguage]||d.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground=
Graph.prototype.defaultPageVisible="1"==urlParams.pv,Graph.prototype.defaultEdgeLength=120,Editor.fitWindowBorders=new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImageDialog=function(d,f,g,m,q,y,F){d=new ImageDialog(this,d,f,g,m,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,m){m||(g=new ChangePageSetup(this,null,g),
g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,m,q){d=new LibraryDialog(this,d,f,g,m,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);
f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(m){m.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(m){this.actions.get("shapes").funct();mxEvent.consume(m)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,m,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?
m,q)}),aa,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Y(){ea.innerHTML="";for(var ka=0;ka<qa.length;ka++){var ja=document.createElement("option");mxUtils.write(ja,qa[ka].displayName);ja.value=ka;ea.appendChild(ja);ja=document.createElement("option");ja.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ja,"<"+qa[ka].email+">");ja.setAttribute("disabled","disabled");ea.appendChild(ja)}ja=document.createElement("option");mxUtils.write(ja,mxResources.get("addAccount"));ja.value=qa.length;
")"),ba=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(H.ownerEmail))}));this.showError(f,F,G,g,aa,null,null,y,ba,null,null,null,m?g:null)}else null!=g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,m,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/
50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},m,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};EditorUi.prototype.showBanner=function(d,f,g,m){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+
q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(m?"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");
F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";if(!m){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var H=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||m)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=
function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,m){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,
"tEXt","mxfile",encodeURIComponent(f))),0<m&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",m));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,m,q){var y="jpeg"==g?"jpg":g;m=this.getBaseFilename(m)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(m,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&&
"undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(d,f){d=new TextareaDialog(this,d,f,null,null,mxResources.get("close"));this.showDialog(d.container,620,460,!0,!0,null,null,null,null,!0);d.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(d,f,g,m,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||
/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)d=m?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,
g,m);else{var F=document.createElement("a");y=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(m?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},
2E4),F.click(),F.parentNode.removeChild(F)}catch(H){}}else this.createEchoRequest(d,f,g,m,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,m,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(m?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,m=Math.ceil(g/1024),q=Array(m),
y=0;y<m;++y){for(var F=1024*y,C=Math.min(F+1024,g),H=Array(C-F),G=0;F<C;++G,++F)H[G]=d[F].charCodeAt(0);q[y]=new Uint8Array(H)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,m,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var H=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,aa){try{if("_blank"==aa)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,
g,m);else if(null!=g&&"text/html"==g.substring(0,9)){var da=new EmbedDialog(this,d);this.showDialog(da.container,450,240,!0,!0);da.init()}else{var ba=window.open("about:blank");null==ba?mxUtils.popup(d,!0):(ba.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),ba.document.close())}else aa==App.MODE_DEVICE||"download"==aa?this.doSaveLocalFile(d,G,g,m,null,C):null!=G&&0<G.length&&this.pickFolder(aa,mxUtils.bind(this,function(Y){try{this.exportFile(d,G,g,m,aa,Y)}catch(qa){this.handleError(qa)}}))}catch(Y){this.handleError(Y)}}),
mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,y,F,null,1<q,H,d,g,m);y=this.isServices(q)?q>H?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var m=window.open("about:blank");null==m||null==m.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"==f?m.document.write("<html>"+d+"</html>"):(d=g?d:btoa(unescape(encodeURIComponent(d))),m.document.write('<html><img style="max-width:100%;" src="data:'+
f+";base64,"+d+'"/></html>')):m.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),m.document.close())};var n=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(d){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;
var f=d(mxUtils.bind(this,function(m){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding=
4+"px";q=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=q.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(m)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var m=this.editor.graph.getAllTags();f.style.display=0<m.length?"":"none"}))}n.apply(this,arguments);this.editor.addListener("tagsDialogShown",
function(m){var q=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",q);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)q.apply(this);else{this.exportDialog=document.createElement("div");var y=g.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";
Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",q);document.body.appendChild(this.exportDialog)}mxEvent.consume(m)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(d,f,g,m,q){this.isLocalFileSave()?this.saveLocalFile(g,d,m,q,f):this.saveRequest(d,f,mxUtils.bind(this,function(y,F){return this.createEchoRequest(g,y,m,q,f,F)}),g,q,m)};EditorUi.prototype.saveRequest=function(d,f,g,m,q,y,F){F=null!=F?F:!mxClient.IS_IOS||!navigator.standalone;
var C=this.getServiceCount(!1);isLocalStorage&&C++;var H=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,aa){if("_blank"==aa||null!=G&&0<G.length){var da=g("_blank"==aa?null:G,aa==App.MODE_DEVICE||"download"==aa||null==aa||"_blank"==aa?"0":"1");null!=da&&(aa==App.MODE_DEVICE||"download"==aa||"_blank"==aa?da.simulate(document,"_blank"):this.pickFolder(aa,mxUtils.bind(this,function(ba){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=m)try{this.exportFile(m,G,y,!0,aa,
!1,!1,F,null,1<C,H,m,y,q);C=this.isServices(C)?4<C?390:280:160;this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,m,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba,Y){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();
g=null!=g?g:qa;var O=f?null:this.editor.graph.background;O==mxConstants.NONE&&(O=null);null==O&&0==f&&(O=aa?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var X=this.editor.graph.getSvg(O,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!ba,aa,da);m&&this.editor.graph.addSvgShadow(X);var ea=this.getBaseFilename()+(q?".drawio":"")+".svg";Y=null!=Y?Y:mxUtils.bind(this,function(U){this.isLocalFileSave()||U.length<=MAX_REQUEST_SIZE?this.saveData(ea,"svg",U,"image/svg+xml"):
(this.thumbImageCache={}),this.editor.convertImages(U,ka,this.thumbImageCache)):ka(U)});ba?this.embedFonts(X,ja):(this.editor.addFontCss(X),ja(X))}catch(U){this.handleError(U)}};EditorUi.prototype.addRadiobox=function(d,f,g,m,q,y,F){return this.addCheckbox(d,g,m,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;var H=document.createElement("input");H.style.marginRight="8px";H.style.marginTop="16px";H.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();
H.id=F;null!=C&&H.setAttribute("name",C);g&&(H.setAttribute("checked","checked"),H.defaultChecked=!0);m&&H.setAttribute("disabled","disabled");y&&(d.appendChild(H),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return H};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var m=this.getCurrentFile(),q="";null!=m&&m.getMode()!=App.MODE_DEVICE&&m.getMode()!=
App.MODE_BROWSER&&(q=window.location.href);var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";m=document.createElement("option");m.setAttribute("value","blank");mxUtils.write(m,mxResources.get("makeCopy"));y.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom")+"...");y.appendChild(m);d.appendChild(y);mxEvent.addListener(y,
"')");F.innerHTML="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+":");var m=document.createElement("select");m.style.width="100px";m.style.padding="0px";m.style.marginLeft="8px";m.style.marginRight="10px";m.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));m.appendChild(q);
q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,mxResources.get("openInThisWindow"));m.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),m.appendChild(f));d.appendChild(m);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(H){y=H;g()});
mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return m.value},focus:function(){m.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,m,q,y,F){F=null!=F?F:[];m&&("https://viewer.diagrams.net"==
EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,m,q,y,F,C,
H,G){H=this.createUrlParameters(d,f,g,m,q,y,H);d=this.getCurrentFile();f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&H.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(H.push("open="+
g.substring(1)),g="");return(m&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<H.length?"?"+H.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,m,q,y,F,C,H,G,aa,da){this.getBasenames();var ba={};""!=q&&q!=mxConstants.NONE&&(ba.highlight=q);"auto"!==m&&(ba.target=m);G||(ba.lightbox=!1);ba.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||
mxUtils.htmlEntities(JSON.stringify(ba))+'"></div>';d=null!=d?"&fetch="+encodeURIComponent(d):"";da(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(d,f,g,m){var q=document.createElement("div");
ja.style.marginBottom="16px";F+=50;mxEvent.addListener(ea,"change",function(){ea.checked?ja.removeAttribute("disabled"):ja.setAttribute("disabled","disabled");ja.checked&&ea.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){m(C.checked?g:null,da.checked,ba.value,aa.getTarget(),aa.getColor(),Y.checked,qa.checked,O.checked,X.checked,ea.checked,null!=ka?ka.getLink():null)}),null,d,f);
this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=function(d,f,g,m,q,y,F,C){var H=document.createElement("div");H.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";H.appendChild(G);var aa=this.getCurrentFile();d=0;if(null==aa||aa.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";
null,mxResources.get(null!=I?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(I.container,300,80,!0,!1);I.init()}))}))}var ba=null,Y=null;if(null!=g||null!=m)d+=30,mxUtils.write(H,mxResources.get("width")+":"),ba=document.createElement("input"),ba.setAttribute("type","text"),ba.style.marginRight="16px",ba.style.width="50px",ba.style.marginLeft="6px",ba.style.marginRight="16px",ba.style.marginBottom="10px",ba.value="100%",H.appendChild(ba),mxUtils.write(H,mxResources.get("height")+
":"),Y=document.createElement("input"),Y.setAttribute("type","text"),Y.style.width="50px",Y.style.marginLeft="6px",Y.style.marginBottom="10px",Y.value=m+"px",H.appendChild(Y),mxUtils.br(H);var qa=this.addLinkSection(H,y);g=null!=this.pages&&1<this.pages.length;var O=null;if(null==aa||aa.constructor!=window.DriveFile||f)O=this.addCheckbox(H,mxResources.get("allPages"),g,!g);var X=this.addCheckbox(H,mxResources.get("lightbox"),!0,null,null,!y),ea=this.addEditButton(H,X),ka=ea.getEditInput();y&&(ka.style.marginLeft=
!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";
C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var H=document.createElement("input");H.setAttribute("type","text");H.style.marginRight="16px";H.style.width="60px";H.style.marginLeft="4px";H.value=this.lastExportBorder||"0";y.appendChild(H);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),aa=m?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),
Editor.defaultIncludeDiagram);F=this.editor.graph;var da=m?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=da&&(da.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var ba=parseInt(C.value)/100||1,Y=parseInt(H.value)||0;g(!G.checked,null!=aa?aa.checked:!1,null!=da?da.checked:!1,ba,Y)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(m?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
function(d,f,g,m,q,y,F,C,H){F=null!=F?F:Editor.defaultIncludeDiagram;var G=document.createElement("div");G.style.whiteSpace="nowrap";var aa=this.editor.graph,da="jpeg"==C?220:300,ba=document.createElement("h3");mxUtils.write(ba,d);ba.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(ba);mxUtils.write(G,mxResources.get("zoom")+":");var Y=document.createElement("input");Y.setAttribute("type","text");Y.style.marginRight="16px";Y.style.width="60px";Y.style.marginLeft=
V.checked,R.checked,fa.checked,qa.value,X.checked,!1,ra.value,null!=Q?Q.checked:null,null!=I?I.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,da,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;
if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var H=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),aa=this.addCheckbox(y,g),da=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,da),Y=ba.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),O=this.addCheckbox(y,mxResources.get("layers"),
da.checked,ba.getLink(),O.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,m,q,y,F,C){function H(Y){var qa=" ",O="";m&&(qa=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=aa?"&page="+aa:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",O+="cursor:pointer;");d&&(O+="max-width:100%;");var X="";g&&(X=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Y+'"'+X+(""!=O?' style="'+O+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),aa=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Y){var qa=m?this.getFileData(!0):null;
Y=this.createImageDataUri(Y,qa,"png");H(Y)}),null,null,null,mxUtils.bind(this,function(Y){C({message:mxResources.get("unknownError")})}),null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var da="";g&&(da="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var ba=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(m?"1":"0")+da+"&xml="+encodeURIComponent(f));ba.send(mxUtils.bind(this,function(){200<=
ba.getStatus()&&299>=ba.getStatus()?H("data:image/png;base64,"+ba.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,f,g,m,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),H=C.getElementsByTagName("a");if(null!=H)for(var G=0;G<H.length;G++){var aa=H[G].getAttribute("href");null!=aa&&"#"==aa.charAt(0)&&"_blank"==H[G].getAttribute("target")&&H[G].removeAttribute("target")}m&&
C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var da=" ",ba="";m&&(da="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(q?"&edit=_blank":"")+(y?"&layers=1":
"")+"');}})(this);\"",ba+="cursor:pointer;");d&&(ba+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Y){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Y))+'"'+(""!=ba?' style="'+ba+'"':"")+da+"/>")}))}else ba="",m&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
d.nodeName)g=d;else if("mxfile"==d.nodeName){var m=d.getElementsByTagName("diagram");if(0<m.length){g=m[0];var q=f.getGlobalVariable;f.getGlobalVariable=function(y){return"page"==y?g.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==y?1:q.apply(this,arguments)}}}null!=g&&(d=Editor.parseDiagramNode(g))}m=this.editor.graph;try{this.editor.graph=f,this.editor.setGraphXml(d)}catch(y){}finally{this.editor.graph=m}return d};EditorUi.prototype.getPngFileProperties=function(d){var f=
1,g=0;if(null!=d){if(d.hasAttribute("scale")){var m=parseFloat(d.getAttribute("scale"));!isNaN(m)&&0<m&&(f=m)}d.hasAttribute("border")&&(m=parseInt(d.getAttribute("border")),!isNaN(m)&&0<m&&(g=m))}return{scale:f,border:g}};EditorUi.prototype.getEmbeddedPng=function(d,f,g,m,q){try{var y=this.editor.graph,F=null!=y.themes&&"darkTheme"==y.defaultThemeName,C=null;if(null!=g&&0<g.length)y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet()),document.body.appendChild(y.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,
f&&f(aa)}),null,null,m,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(aa){null!=f&&f(aa)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){C=null!=C?C:!0;aa=null!=aa?aa:0;F=null!=H?H:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,aa,null,null,y,null,null,null,f.shadowVisible||da,null,ba,"diagram");(f.shadowVisible||da)&&f.addSvgShadow(y,null,null,0==aa);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Y=mxUtils.bind(this,
function(qa){qa=(m?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(O){Y(O)})):Y(qa)}));else return Y(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(m){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){H=null!=H?H:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Y=this.editor.graph.isSelectionEmpty();g=null!=g?g:Y;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
q?this.getFileData(!0,null,null,null,g,C):null,H,null==this.pages||0==this.pages.length,aa)}catch(O){this.handleError(O)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,m,null,null,y,F,G,da,ba)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,m,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
this.currentPage,ba))}}else if(0<da.length){y=[];var Y=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[da[0].getAttribute("id")]=this.pages[0].getId(),aa=Editor.parseDiagramNode(da[0]),m=!1,Y=1);for(;Y<da.length;Y++){var qa=da[Y].getAttribute("id");da[Y].removeAttribute("id");var O=this.updatePageRoot(new DiagramPage(da[Y]));d[qa]=da[Y].getAttribute("id");var X=this.pages.length;null==O.getName()&&O.setName(mxResources.get("pageWithNumber",[X+1]));H.model.execute(new ChangePage(this,
O,O,X,!0));y.push(O)}this.updatePageLinks(d,y)}}if(null!=aa&&"mxGraphModel"===aa.nodeName){C=H.importGraphModel(aa,f,g,m);if(null!=C)for(Y=0;Y<C.length;Y++)this.updatePageLinksForCell(d,C[Y]);var ea=H.parseBackgroundImage(aa.getAttribute("backgroundImage"));if(null!=ea&&null!=ea.originalSrc){this.updateBackgroundPageLink(d,ea);var ka=new ChangePageSetup(this,null,ea);ka.ignoreColor=!0;H.model.execute(ka)}}F&&this.insertHandler(C,null,null,H.defaultVertexStyle,H.defaultEdgeStyle,!1,!0)}finally{H.model.endUpdate()}}}catch(ja){if(q)throw ja;
this.handleError(ja)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(m){}};EditorUi.prototype.updatePageLinksForCell=
function(d,f){var g=document.createElement("div"),m=this.editor.graph,q=m.getLinkForCell(f);null!=q&&m.setLinkForCell(f,this.updatePageLink(d,q));if(m.isHtmlLabel(f)){g.innerHTML=m.sanitizeHtml(m.getLabel(f));for(var y=g.getElementsByTagName("a"),F=!1,C=0;C<y.length;C++)q=y[C].getAttribute("href"),null!=q&&(y[C].setAttribute("href",this.updatePageLink(d,q)),F=!0);F&&m.labelChanged(f,g.innerHTML)}for(C=0;C<m.model.getChildCount(f);C++)this.updatePageLinksForCell(d,m.model.getChildAt(f,C))};EditorUi.prototype.updatePageLink=
function(d,f){if(Graph.isPageLink(f)){var g=d[f.substring(f.indexOf(",")+1)];f=null!=g?"data:page/id,"+g:null}else if("data:action/json,"==f.substring(0,17))try{var m=JSON.parse(f.substring(17));if(null!=m.actions){for(var q=0;q<m.actions.length;q++){var y=m.actions[q];if(null!=y.open&&Graph.isPageLink(y.open)){var F=y.open.substring(y.open.indexOf(",")+1);g=d[F];null!=g?y.open="data:page/id,"+g:null==this.getPageById(F)&&delete y.open}}f="data:action/json,"+JSON.stringify(m)}}catch(C){}return f};
EditorUi.prototype.isRemoteVisioFormat=function(d){return/(\.v(sd|dx))($|\?)/i.test(d)||/(\.vs(s|x))($|\?)/i.test(d)};EditorUi.prototype.importVisio=function(d,f,g,m,q){m=null!=m?m:d.name;g=null!=g?g:mxUtils.bind(this,function(F){this.handleError(F)});var y=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var F=this.isRemoteVisioFormat(m);try{var C="UNKNOWN-VISIO",H=m.lastIndexOf(".");if(0<=H&&H<m.length)C=m.substring(H+1).toUpperCase();else{var G=m.lastIndexOf("/");0<=
G&&G<m.length&&(m=m.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+m,label:F?"remote":"local"})}catch(da){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,m);var aa=new XMLHttpRequest;aa.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(m)?"?stencil=1":""));aa.responseType="blob";this.addRemoteServiceSecurityCheck(aa);
null!=q&&aa.setRequestHeader("x-convert-custom",q);aa.onreadystatechange=mxUtils.bind(this,function(){if(4==aa.readyState)if(200<=aa.status&&299>=aa.status)try{var da=aa.response;if("text/xml"==da.type){var ba=new FileReader;ba.onload=mxUtils.bind(this,function(Y){try{f(Y.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});ba.readAsText(da)}else this.doImportVisio(da,f,g,m)}catch(Y){g(Y)}else try{""==aa.responseType||"text"==aa.responseType?g({message:aa.responseText}):(ba=
new FileReader,ba.onload=function(){g({message:JSON.parse(ba.result).Message})},ba.readAsText(aa.response))}catch(Y){g({})}});aa.send(F)}else try{this.doImportVisio(d,f,g,m)}catch(da){g(da)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,
function(q){this.handleError(q)});var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?m():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",m))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=
!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var m=mxUtils.bind(this,
console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(m,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",
function(){mxscript("js/orgchart/mxOrgChartLayout.js",m)})})})}):mxscript("js/extensions.min.js",m))};EditorUi.prototype.generateMermaidImage=function(d,f,g,m){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=
F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");if(0<C.length){var H=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(H)||isNaN(G))try{var aa=C[0].getAttribute("viewBox").split(/\s+/);H=parseFloat(aa[2]);G=parseFloat(aa[3])}catch(da){H=H||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),H,G)}else m({message:mxResources.get("invalidInput")})}catch(da){m(da)}})}catch(F){m(F)}};
"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,m){function q(C,H,G){c1=C>>2;c2=(C&3)<<4|H>>4;c3=(H&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+
f)g(this.response);else{var H=new FileReader;H.readAsDataURL(this.response);H.onloadend=function(G){var aa=new Image;aa.onload=function(){try{var da=aa.width,ba=aa.height;if(0==da&&0==ba){var Y=H.result,qa=Y.indexOf(","),O=decodeURIComponent(escape(atob(Y.substring(qa+1)))),X=mxUtils.parseXml(O).getElementsByTagName("svg");0<X.length&&(da=parseFloat(X[0].getAttribute("width")),ba=parseFloat(X[0].getAttribute("height")))}g(H.result,da,ba)}catch(ea){m(ea)}};aa.src=H.result};H.onerror=function(G){m(G)}}else m(C)};
F.onerror=function(C){m(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var m=this.editor.graph,q=null;m.getModel().beginUpdate();try{q=m.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),m.updateCellSize(q,!0)}finally{m.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?
Y);H.setSelectionCell(H.insertVertex(null,null,"",H.snap(f),H.snap(g),qa,ba,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";"))}}),mxUtils.bind(this,function(){var ba=null;H.getModel().beginUpdate();try{ba=H.insertVertex(H.getDefaultParent(),null,d,H.snap(f),H.snap(g),1,1,"text;"+(m?"html=1;":"")),H.updateCellSize(ba),H.fireEvent(new mxEventObject("textInserted","cells",[ba]))}finally{H.getModel().endUpdate()}H.setSelectionCell(ba)}))}else{d=
Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,function(ba){this.editor.graph.setSelectionCells(this.importXml(ba,f,g,y,null,C))}),mxUtils.bind(this,function(ba){this.handleError(ba)}));else{H=this.editor.graph;q=null;H.getModel().beginUpdate();try{q=H.insertVertex(H.getDefaultParent(),null,"",H.snap(f),H.snap(g),1,1,"text;whiteSpace=wrap;"+(m?"html=1;":""));
"none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.getFileContent(this,F,C,H)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,H){StorageFile.deleteFile(this,F,C,H)});if(!f){var m=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=
function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=m;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(d,f,g){var m=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,H=!1;y.forEach(function(G,aa){G=
aa.name.toLowerCase();"diagram/diagram.xml"==G?(H=!0,aa.async("string").then(function(da){0==da.indexOf("<mxfile ")?f(da):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=aa))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&m.isRemoteFileFormat(G,d.name)?m.isOffline()?m.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):m.parseFileData(G,mxUtils.bind(this,function(aa){4==aa.readyState&&(200<=aa.status&&299>=aa.status?f(aa.responseText):
g())}),d.name):g()}):H||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,m,q,y,F,C,H,G,aa,da){G=null!=G?G:!0;var ba=!1,Y=null,qa=mxUtils.bind(this,function(O){var X=null;null!=O&&"<mxlibrary"==O.substring(0,10)?this.loadLibrary(new LocalLibrary(this,O,F)):X=this.importXml(O,g,m,G,null,null!=da?mxEvent.isControlDown(da):null);null!=C&&
C(X)});"image"==f.substring(0,5)?(H=!1,"image/png"==f.substring(0,9)&&(f=aa?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Y=this.importXml(f,g,m,G,null,null!=da?mxEvent.isControlDown(da):null),H=!0)),H||(f=this.editor.graph,H=d.indexOf(";"),0<H&&(d=d.substring(0,H)+d.substring(d.indexOf(",",H+1))),G&&f.isGridEnabled()&&(g=f.snap(g),m=f.snap(m)),Y=[f.insertVertex(null,null,"",g,m,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
q,F)):0==d.indexOf("PK")&&null!=H?(ba=!0,this.importZipFile(H,qa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G,null,null!=da?mxEvent.isControlDown(da):null));ba||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=
if(null==ta||0==ta.length)Aa.setAttribute("viewBox","0 0 "+sa+" "+Ba);else if(isNaN(sa)||isNaN(Ba)){var Na=ta.split(" ");3<Na.length&&(sa=parseFloat(Na[2]),Ba=parseFloat(Na[3]))}N=Editor.createSvgDataUri(mxUtils.getXml(Aa));var Ca=Math.min(1,Math.min(m/Math.max(1,sa)),m/Math.max(1,Ba)),Qa=q(N,ra.type,f+la*U,g+la*U,Math.max(1,Math.round(sa*Ca)),Math.max(1,Math.round(Ba*Ca)),ra.name);if(isNaN(sa)||isNaN(Ba)){var Ua=new Image;Ua.onload=mxUtils.bind(this,function(){sa=Math.max(1,Ua.width);Ba=Math.max(1,
this.loadImage(J.target.result,mxUtils.bind(this,function(va){this.resizeImage(va,J.target.result,mxUtils.bind(this,function(Aa,sa,Ba){R(la,mxUtils.bind(this,function(){if(null!=Aa&&Aa.length<G){var ta=qa&&this.isResampleImageSize(ra.size,aa)?Math.min(1,Math.min(m/sa,m/Ba)):1;return q(Aa,ra.type,f+la*U,g+la*U,Math.round(sa*ta),Math.round(Ba*ta),ra.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),qa,m,aa,ra.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else N=
function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,
mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,
f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
f};EditorUi.prototype.resizeImage=function(d,f,g,m,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),H=Math.max(1,d.height);if(m&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,H/q);if(1<G){var aa=Math.round(C/G),da=Math.round(H/G),ba=document.createElement("canvas");ba.width=aa;ba.height=da;ba.getContext("2d").drawImage(d,0,0,aa,da);var Y=ba.toDataURL();if(Y.length<f.length){var qa=document.createElement("canvas");qa.width=aa;qa.height=da;var O=qa.toDataURL();
Y!==O&&(f=Y,C=aa,H=da)}}}catch(X){}g(f,C,H)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var m=new Image;m.onload=function(){m.width=0<m.width?m.width:120;m.height=0<m.height?m.height:120;f(m)};null!=g&&(m.onerror=g);m.src=d}catch(q){if(null!=g)g(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?
"mermaidData"),null!=ka)this.editMermaidData(X,ea,ka);else{var ja=f.getCellStyle(X);"1"==mxUtils.getValue(ja,"metaEdit","0")?d.showDataDialog(X):g.apply(this,arguments)}}catch(U){d.handleError(U)}};f.getLinkTitle=function(X){return d.getLinkTitle(X)};f.customLinkClicked=function(X){var ea=!1;try{d.handleCustomLink(X),ea=!0}catch(ka){d.handleError(ka)}return ea};var m=f.parseBackgroundImage;f.parseBackgroundImage=function(X){var ea=m.apply(this,arguments);null!=ea&&null!=ea.src&&Graph.isPageLink(ea.src)&&
mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(H,G,aa,da,ba,Y){d.insertImage(H,ba,Y)},function(){},function(H){return"image/"==H.type.substring(0,6)},function(H){for(var G=0;G<H.length;G++)H[G]()});
"false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var m=!1;this.keyHandler.bindControlKey(88,
null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||m||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",
f.container.appendChild(g),m=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!m||224!=F&&17!=F&&91!=F&&93!=F||(m=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),
d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(m,q,y){null==m[q]&&(m[q]=y)},g=this.editor.graph;
this.editor.exportToCanvas(mxUtils.bind(this,function(m,q){try{this.spinner.stop();var y=this.createImageDataUri(m,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,F,C,mxUtils.bind(this,function(H){this.handleError(H)}))}catch(H){this.handleError(H)}}),null,null,null,mxUtils.bind(this,function(m){this.spinner.stop();this.handleError(m)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,
null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(m){this.handleError(m)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,m){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](m)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerHTML="";else{var m=
mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(m));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(m,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),
f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,m){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),m);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,
function(d,f,g,m){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var H=decodeURIComponent(F);this.isCompatibleString(H)&&(C=!0,F=H)}catch(da){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,
y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(da){console.log("Miro import error:",da)}this.pasteXml(y,m,C,d);try{mxEvent.consume(d)}catch(da){}}else if(!g){var aa=this.editor.graph;aa.lastPasteXml=null;aa.pasteCounter=0}}catch(da){this.handleError(da)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=
0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(m){null!=f&&(f.parentNode.removeChild(f),f=null);m.stopPropagation();m.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(m){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());m.stopPropagation();m.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(m){null!=f&&(f.parentNode.removeChild(f),
f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<m.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(m.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(m)&&!mxEvent.isShiftDown(m)):this.openFiles(m.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(m);if(null==q){var y=null!=m.dataTransfer?m.dataTransfer:m.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):
(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?m.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,
"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}m.stopPropagation();m.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var m=document.body;var q=document.documentElement;var y=(m.clientWidth||q.clientWidth)-3;m=Math.max(m.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,m=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border=
"3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,m-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),
m=new mxGraphModel;g.decode(f,m);f=m.getChildAt(m.getRoot(),0);for(g=0;g<m.getChildCount(f);g++)d.push(m.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,m,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,
10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(H){this.handleError(H,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,m)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();
(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,m)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==
d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,m)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,m=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,m,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=
0;g<d.length;g++)mxUtils.bind(this,function(m){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,m.name,m,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();this.handleError(y);window.openFile=null});"image"!==m.type.substring(0,5)&&"application/pdf"!==m.type||"image/svg"===m.type.substring(0,9)?q.readAsText(m):q.readAsDataURL(m)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,m,q){var y=this.getCurrentFile(),
F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,d,f||this.defaultFilename,g,m,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),
0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var m=this.editor.graph,q=m.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));m.model.isEdge(d)&&
(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=m.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(m.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=
this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,m,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=m?m:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var m=f.background;if(null==m||m==mxConstants.NONE)m=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,m,1,this.embedExportBorder)}else d||
g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,m=!1,q=null,y=mxUtils.bind(this,function(H,G){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&
G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayouts(this.editor.graph.createLayouts(G.layouts));return}if("prompt"==G.action){this.spinner.stop();var Y=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(P){null!=P?F.postMessage(JSON.stringify({event:"prompt",value:P,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",message:G}),
"*")},null!=G.titleKey?mxResources.get(G.titleKey):G.title);this.showDialog(Y.container,300,80,!0,!1);Y.init();return}if("draft"==G.action){var qa=da(G.xml);this.spinner.stop();Y=new DraftDialog(this,mxResources.get("draftFound",[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",message:G}),
"*")}),G.editKey?mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),"*")}):null);this.showDialog(Y.container,640,480,!0,!1,mxUtils.bind(this,function(P){P&&this.actions.get("exit").funct()}));try{Y.init()}catch(P){F.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();
var O=1==G.enableRecent,X=1==G.enableSearch,ea=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ja=new TemplatesDialog(this,function(P,Z,oa){P=P||this.emptyDiagramXml;F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa.url,libs:oa.libs,builtIn:null!=oa.info&&null!=oa.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=
ka?ka.id:null,O?mxUtils.bind(this,function(P,Z,oa){this.remoteInvoke("getRecentDiagrams",[oa],null,P,Z)}):null,X?mxUtils.bind(this,function(P,Z,oa,va){this.remoteInvoke("searchDiagrams",[P,va],null,Z,oa)}):null,mxUtils.bind(this,function(P,Z,oa){this.remoteInvoke("getFileContent",[P.url],null,Z,oa)}),null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,!1,!1,!0,!0);this.showDialog(ja.container,window.innerWidth,window.innerHeight,!0,
!1,null,!1,!0);return}Y=new NewDialog(this,!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(P,Z,oa,va){P=P||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:Z,tempUrl:oa,libs:va,builtIn:!0,message:G}),"*"):(d(P,H,P!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,O?mxUtils.bind(this,function(P){this.remoteInvoke("getRecentDiagrams",[null],
null,P,function(){P(null,"Network Error!")})}):null,X?mxUtils.bind(this,function(P,Z){this.remoteInvoke("searchDiagrams",[P,null],null,Z,function(){Z(null,"Network Error!")})}):null,mxUtils.bind(this,function(P,Z,oa){F.postMessage(JSON.stringify({event:"template",docUrl:P,info:Z,name:oa}),"*")}),null,null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(P){this.sidebar.hideTooltip();
P&&this.actions.get("exit").funct()}));Y.init();return}if("textContent"==G.action){var U=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:U,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var I=null!=G.messageKey?mxResources.get(G.messageKey):
G.message;null==G.show||G.show?this.spinner.spin(document.body,I):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var V=null!=G.xml?G.xml:
this.getFileData(!0);this.editor.graph.setEnabled(!1);var Q=this.editor.graph,R=mxUtils.bind(this,function(P){this.editor.graph.setEnabled(!0);this.spinner.stop();var Z=this.createLoadMessage("export");Z.format=G.format;Z.message=G;Z.data=P;Z.xml=V;F.postMessage(JSON.stringify(Z),"*")}),fa=mxUtils.bind(this,function(P){null==P&&(P=Editor.blankImage);"xmlpng"==G.format&&(P=Editor.writeGraphModelToPng(P,"tEXt","mxfile",encodeURIComponent(V)));Q!=this.editor.graph&&Q.container.parentNode.removeChild(Q.container);
R(P)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var ra=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var P=Q.getGlobalVariable;Q=this.createTemporaryGraph(Q.getStylesheet());for(var Z,oa=0;oa<this.pages.length;oa++)if(this.pages[oa].getId()==la){Z=this.updatePageRoot(this.pages[oa]);break}null==Z&&(Z=this.currentPage);Q.getGlobalVariable=function(Ba){return"page"==Ba?Z.getName():
"pagenumber"==Ba?1:P.apply(this,arguments)};document.body.appendChild(Q.container);Q.model.setRoot(Z.root)}if(null!=G.layerIds){var va=Q.model,Aa=va.getChildCells(va.getRoot()),sa={};for(oa=0;oa<G.layerIds.length;oa++)sa[G.layerIds[oa]]=!0;for(oa=0;oa<Aa.length;oa++)va.setVisible(Aa[oa],sa[Aa[oa].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ba){fa(Ba.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){fa(null)}),null,null,G.scale,G.transparent,G.shadow,
null,Q,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(V),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(ra)},0):ra()):ra()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,
G.action){ba=G.toSketch;m=1==G.autosave;this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var u=Editor.sketchMode;this.doSetSketchMode(G.rough);u!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(u=Editor.darkMode,this.doSetDarkMode(G.dark),
function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),S=mxUtils.bind(this,function(P,Z){g=!0;try{d(P,Z,null,ba)}catch(oa){this.handleError(oa)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=W();m&&null==f&&(f=mxUtils.bind(this,function(oa,va){oa=W();oa==q||g||(va=this.createLoadMessage("autosave"),va.xml=oa,(window.opener||window.parent).postMessage(JSON.stringify(va),"*"));q=oa}),this.editor.graph.model.addListener(mxEvent.CHANGE,
href:H,target:G,allowOpener:aa}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var m="1"==
urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,m);f.setAttribute("title",m);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),d.appendChild(f),"1"==urlParams.saveAndExit&&
":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.importCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},H=this.editor.graph,G=null,aa=null,da=null,ba=null,Y=null,qa=null,O=
null,X="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",U="auto",I="auto",V=null,Q=null,R=40,fa=40,la=100,ra=0,u=function(){null!=f?f(ma):(H.setSelectionCells(ma),H.scrollCellToVisible(H.getSelectionCell()))},J=H.getFreeInsertPoint(),N=J.x,W=J.y;J=W;var S=null,P="auto";ka=null;for(var Z=[],oa=null,va=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),
Aa++;if("#"!=d.charAt(1)){var sa=d.indexOf(":");if(0<sa){var Ba=mxUtils.trim(d.substring(1,sa)),ta=mxUtils.trim(d.substring(sa+1));"label"==Ba?S=H.sanitizeHtml(ta):"labelname"==Ba&&0<ta.length&&"-"!=ta?Y=ta:"labels"==Ba&&0<ta.length&&"-"!=ta?O=JSON.parse(ta):"style"==Ba?aa=ta:"parentstyle"==Ba?X=ta:"unknownStyle"==Ba&&"-"!=ta?qa=ta:"stylename"==Ba&&0<ta.length&&"-"!=ta?ba=ta:"styles"==Ba&&0<ta.length&&"-"!=ta?da=JSON.parse(ta):"vars"==Ba&&0<ta.length&&"-"!=ta?G=JSON.parse(ta):"identity"==Ba&&0<ta.length&&
"-"!=ta?ea=ta:"parent"==Ba&&0<ta.length&&"-"!=ta?ka=ta:"namespace"==Ba&&0<ta.length&&"-"!=ta?ja=ta:"width"==Ba?U=ta:"height"==Ba?I=ta:"left"==Ba&&0<ta.length?V=ta:"top"==Ba&&0<ta.length?Q=ta:"ignore"==Ba?va=ta.split(","):"connect"==Ba?Z.push(JSON.parse(ta)):"link"==Ba?oa=ta:"padding"==Ba?ra=parseFloat(ta):"edgespacing"==Ba?R=parseFloat(ta):"nodespacing"==Ba?fa=parseFloat(ta):"levelspacing"==Ba?la=parseFloat(ta):"layout"==Ba&&(P=ta)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));
var Na=this.editor.csvToArray(g[Aa].replace(/\r$/,""));sa=d=null;Ba=[];for(ta=0;ta<Na.length;ta++)ea==Na[ta]&&(d=ta),ka==Na[ta]&&(sa=ta),Ba.push(mxUtils.trim(Na[ta]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==S&&(S="%"+Ba[0]+"%");if(null!=Z)for(var Ca=0;Ca<Z.length;Ca++)null==C[Z[Ca].to]&&(C[Z[Ca].to]={});ea=[];for(ta=Aa+1;ta<g.length;ta++){var Qa=this.editor.csvToArray(g[ta].replace(/\r$/,""));if(null==Qa){var Ua=40<g[ta].length?g[ta].substring(0,40)+"...":g[ta];throw Error(Ua+
" ("+ta+"):\n"+mxResources.get("containsValidationErrors"));}0<Qa.length&&ea.push(Qa)}H.model.beginUpdate();try{for(ta=0;ta<ea.length;ta++){Qa=ea[ta];var Ka=null,bb=null!=d?ja+Qa[d]:null;null!=bb&&(Ka=H.model.getCell(bb));g=null!=Ka;var Va=new mxCell(S,new mxGeometry(N,J,0,0),aa||"whiteSpace=wrap;html=1;");Va.vertex=!0;Va.id=bb;Ua=null!=Ka?Ka:Va;for(var $a=0;$a<Qa.length;$a++)H.setAttributeForCell(Ua,Ba[$a],Qa[$a]);if(null!=Y&&null!=O){var z=O[Ua.getAttribute(Y)];null!=z&&H.labelChanged(Ua,z)}if(null!=
ba&&null!=da){var L=da[Ua.getAttribute(ba)];null!=L&&(Ua.style=L)}H.setAttributeForCell(Ua,"placeholders","1");Ua.style=H.replacePlaceholders(Ua,Ua.style,G);g?(0>mxUtils.indexOf(y,Ka)&&y.push(Ka),H.fireEvent(new mxEventObject("cellsInserted","cells",[Ka]))):H.fireEvent(new mxEventObject("cellsInserted","cells",[Va]));Ka=Va;if(!g)for(Ca=0;Ca<Z.length;Ca++)C[Z[Ca].to][Ka.getAttribute(Z[Ca].to)]=Ka;null!=oa&&"link"!=oa&&(H.setLinkForCell(Ka,Ka.getAttribute(oa)),H.setAttributeForCell(Ka,oa,null));var M=
this.editor.graph.getPreferredSizeForCell(Ka);ka=null!=sa?H.model.getCell(ja+Qa[sa]):null;if(Ka.vertex){Ua=null!=ka?0:N;Aa=null!=ka?0:W;null!=V&&null!=Ka.getAttribute(V)&&(Ka.geometry.x=Ua+parseFloat(Ka.getAttribute(V)));null!=Q&&null!=Ka.getAttribute(Q)&&(Ka.geometry.y=Aa+parseFloat(Ka.getAttribute(Q)));var T="@"==U.charAt(0)?Ka.getAttribute(U.substring(1)):null;Ka.geometry.width=null!=T&&"auto"!=T?parseFloat(Ka.getAttribute(U.substring(1))):"auto"==U||"auto"==T?M.width+ra:parseFloat(U);var ca="@"==
I.charAt(0)?Ka.getAttribute(I.substring(1)):null;Ka.geometry.height=null!=ca&&"auto"!=ca?parseFloat(ca):"auto"==I||"auto"==ca?M.height+ra:parseFloat(I);J+=Ka.geometry.height+fa}g?(null==F[bb]&&(F[bb]=[]),F[bb].push(Ka)):(m.push(Ka),null!=ka?(ka.style=H.replacePlaceholders(ka,X,G),H.addCell(Ka,ka),q.push(ka)):y.push(H.addCell(Ka)))}for(ta=0;ta<q.length;ta++)T="@"==U.charAt(0)?q[ta].getAttribute(U.substring(1)):null,ca="@"==I.charAt(0)?q[ta].getAttribute(I.substring(1)):null,"auto"!=U&&"auto"!=T||"auto"!=
I&&"auto"!=ca||H.updateGroupBounds([q[ta]],ra,!0);var ia=y.slice(),ma=y.slice();for(Ca=0;Ca<Z.length;Ca++){var pa=Z[Ca];for(ta=0;ta<m.length;ta++){Ka=m[ta];var ua=mxUtils.bind(this,function(Ea,La,Ta){var Wa=La.getAttribute(Ta.from);if(null!=Wa&&""!=Wa){Wa=Wa.split(",");for(var fb=0;fb<Wa.length;fb++){var gb=C[Ta.to][Wa[fb]];if(null==gb&&null!=qa){gb=new mxCell(Wa[fb],new mxGeometry(N,W,0,0),qa);gb.style=H.replacePlaceholders(La,gb.style,G);var ib=this.editor.graph.getPreferredSizeForCell(gb);gb.geometry.width=
ib.width+ra;gb.geometry.height=ib.height+ra;C[Ta.to][Wa[fb]]=gb;gb.vertex=!0;gb.id=Wa[fb];y.push(H.addCell(gb))}if(null!=gb){ib=Ta.label;null!=Ta.fromlabel&&(ib=(La.getAttribute(Ta.fromlabel)||"")+(ib||""));null!=Ta.sourcelabel&&(ib=H.replacePlaceholders(La,Ta.sourcelabel,G)+(ib||""));null!=Ta.tolabel&&(ib=(ib||"")+(gb.getAttribute(Ta.tolabel)||""));null!=Ta.targetlabel&&(ib=(ib||"")+H.replacePlaceholders(gb,Ta.targetlabel,G));var tb="target"==Ta.placeholders==!Ta.invert?gb:Ea;tb=null!=Ta.style?H.replacePlaceholders(tb,
Ta.style,G):H.createCurrentEdgeStyle();ib=H.insertEdge(null,null,ib||"",Ta.invert?gb:Ea,Ta.invert?Ea:gb,tb);if(null!=Ta.labels)for(tb=0;tb<Ta.labels.length;tb++){var qb=Ta.labels[tb],cb=new mxCell(qb.label||tb,new mxGeometry(null!=qb.x?qb.x:0,null!=qb.y?qb.y:0,0,0),"resizable=0;html=1;");cb.vertex=!0;cb.connectable=!1;cb.geometry.relative=!0;null!=qb.placeholders&&(cb.value=H.replacePlaceholders("target"==qb.placeholders==!Ta.invert?gb:Ea,cb.value,G));if(null!=qb.dx||null!=qb.dy)cb.geometry.offset=
new mxPoint(null!=qb.dx?qb.dx:0,null!=qb.dy?qb.dy:0);ib.insert(cb)}ma.push(ib);mxUtils.remove(Ta.invert?Ea:gb,ia)}}}});ua(Ka,Ka,pa);if(null!=F[Ka.id])for($a=0;$a<F[Ka.id].length;$a++)ua(Ka,F[Ka.id][$a],pa)}}if(null!=va)for(ta=0;ta<m.length;ta++)for(Ka=m[ta],$a=0;$a<va.length;$a++)H.setAttributeForCell(Ka,mxUtils.trim(va[$a]),null);if(0<y.length){var ya=new mxParallelEdgeLayout(H);ya.spacing=R;ya.checkOverlap=!0;var Fa=function(){0<ya.spacing&&ya.execute(H.getDefaultParent());for(var Ea=0;Ea<y.length;Ea++){var La=
H.getCellGeometry(y[Ea]);La.x=Math.round(H.snap(La.x));La.y=Math.round(H.snap(La.y));"auto"==U&&(La.width=Math.round(H.snap(La.width)));"auto"==I&&(La.height=Math.round(H.snap(La.height)))}};if("["==P.charAt(0)){var Ma=u;H.view.validate();this.executeLayouts(H.createLayouts(JSON.parse(P)),function(){Fa();Ma()});u=null}else if("circle"==P){var Oa=new mxCircleLayout(H);Oa.disableEdgeStyle=!1;Oa.resetEdges=!1;var Pa=Oa.isVertexIgnored;Oa.isVertexIgnored=function(Ea){return Pa.apply(this,arguments)||
0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){Oa.execute(H.getDefaultParent());Fa()},!0,u);u=null}else if("horizontaltree"==P||"verticaltree"==P||"auto"==P&&ma.length==2*y.length-1&&1==ia.length){H.view.validate();var Sa=new mxCompactTreeLayout(H,"horizontaltree"==P);Sa.levelDistance=fa;Sa.edgeRouting=!1;Sa.resetEdges=!1;this.executeLayout(function(){Sa.execute(H.getDefaultParent(),0<ia.length?ia[0]:null)},!0,u);u=null}else if("horizontalflow"==P||"verticalflow"==P||"auto"==P&&1==ia.length){H.view.validate();
var za=new mxHierarchicalLayout(H,"horizontalflow"==P?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);za.intraCellSpacing=fa;za.parallelEdgeSpacing=R;za.interRankCellSpacing=la;za.disableEdgeStyle=!1;this.executeLayout(function(){za.execute(H.getDefaultParent(),ma);H.moveCells(ma,N,W)},!0,u);u=null}else if("organic"==P||"auto"==P&&ma.length>y.length){H.view.validate();var wa=new mxFastOrganicLayout(H);wa.forceConstant=3*fa;wa.disableEdgeStyle=!1;wa.resetEdges=!1;var Da=wa.isVertexIgnored;
wa.isVertexIgnored=function(Ea){return Da.apply(this,arguments)||0>mxUtils.indexOf(y,Ea)};this.executeLayout(function(){wa.execute(H.getDefaultParent());Fa()},!0,u);u=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=u&&u()}}catch(Ea){this.handleError(Ea)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],
g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,
d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();
var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);
Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);
this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=
function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,f=this.getCurrentFile(),g=this.getSelectionState(),m=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(m);this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());
this.actions.get("guides").setEnabled(m);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(m);this.actions.get("connectionArrows").setEnabled(m);this.actions.get("connectionPoints").setEnabled(m);this.actions.get("copyStyle").setEnabled(m&&!d.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(m&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(m);this.actions.get("createRevision").setEnabled(m);
this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(m&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);
this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(m&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};
var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(d,f,g,m,q,y,F,C){var H=d.editor.graph;if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,
"svg",mxUtils.getXml(H.getSvg(m,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),aa=H.getGraphBounds(),da=Math.floor(aa.width*q/H.view.scale),ba=Math.floor(aa.height*q/H.view.scale);if(G.length<=MAX_REQUEST_SIZE&&da*ba<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=g&&"jpeg"!=g||!d.isExportToCanvas()){var Y={globalVars:H.getExportVariables()};C&&(Y.grid={size:H.gridSize,steps:H.view.gridSteps,color:H.view.gridColor});d.saveRequest(f,g,function(qa,O){return new mxXmlRequest(EXPORT_URL,
"format="+g+"&base64="+(O||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Y))+(0<F?"&dpi="+F:"")+"&bg="+(null!=m?m:"none")+"&w="+da+"&h="+ba+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==m||"none"==m,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);
var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var m=d;this.currentPage!=this.pages[g]&&(m=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),m.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+m.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var m=
document.createElement("h3");mxUtils.write(m,mxUtils.htmlEntities(d));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(m);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var H=JSON.parse(decodeURIComponent(C.substring(1)));
y[H[0]]={id:H[0],title:H[1],downloadUrl:H[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerHTML="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var aa=0;aa<G.length;aa++){var da=G[aa];y[da.id]&&(f[da.id]=da);var ba=this.addCheckbox(q,da.title,y[da.id]);(function(Y,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Y.id]=Y:delete f[Y.id]})})(da,
ba)}},mxUtils.bind(this,function(G){q.innerHTML="";var aa=document.createElement("div");aa.style.padding="8px";aa.style.textAlign="center";mxUtils.write(aa,mxResources.get("error")+": ");mxUtils.write(aa,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));q.appendChild(aa)}));g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,aa;for(aa in f)null==y[aa]&&(G++,mxUtils.bind(this,function(da){this.remoteInvoke("getFileContent",
[da.downloadUrl],null,mxUtils.bind(this,function(ba){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,ba,da))}catch(Y){this.handleError(Y,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(f[aa]));for(aa in y)f[aa]||this.closeLibrary(new RemoteLibrary(this,null,y[aa]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");
this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=
d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==g)throw Error("No callback for "+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,m,q){var y=
!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&m.apply(this,arguments)}),H=mxUtils.bind(this,function(){window.clearTimeout(F);y&&q.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:C,error:H});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?
this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,aa){var da={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=aa?da.error={errResp:aa}:null!=G&&(da.resp=G);this.remoteWin.postMessage(JSON.stringify(da),"*")});try{var m=d.funtionName,q=this.remoteInvokableFns[m];if(null!=q&&"function"===typeof this[m]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+
q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+m+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),this[m].apply(this,C);else{var H=this[m].apply(this,C);g([H])}}else g(null,"Invalid Call: "+m+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=
window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var m=g.open("database",2);m.onupgradeneeded=function(q){try{var y=m.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",{keyPath:"title"}),y.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(F){null!=f&&f(F)}};m.onsuccess=mxUtils.bind(this,function(q){var y=m.result;this.database=y;EditorUi.migrateStorageFiles&&
(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=document.createElement("iframe");C.style.display="none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(C);var H=!0,G=!1,aa,da=0,ba=mxUtils.bind(this,function(){G=
!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Y=mxUtils.bind(this,function(){da++;qa()}),qa=mxUtils.bind(this,function(){try{if(da>=aa.length)ba();else{var X=aa[da];StorageFile.getFileContent(this,X,mxUtils.bind(this,function(ea){null==ea||".scratchpad"==X&&ea==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[X]}),
"*"):Y()}),Y)}}catch(ea){console.log(ea)}}),O=mxUtils.bind(this,function(X){try{this.setDatabaseItem(null,[{title:X.title,size:X.data.length,lastModified:Date.now(),type:X.isLib?"L":"F"},{title:X.title,data:X.data}],Y,Y,["filesInfo","files"])}catch(ea){console.log(ea)}});F=mxUtils.bind(this,function(X){try{if(X.source==C.contentWindow){var ea={};try{ea=JSON.parse(X.data)}catch(ka){}"init"==ea.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=ea.event||G||(H?null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?(aa=ea.resp[0],H=!1,qa()):ba():null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?O(ea.resp[0]):Y())}}catch(ka){console.log(ka)}});window.addEventListener("message",F)}})));d(y);y.onversionchange=function(){y.close()}});m.onerror=f;m.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,
f,g,m,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=m;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=m&&m(C)}}),m)};EditorUi.prototype.removeDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){m=m||"objects";Array.isArray(m)||(m=[m],d=[d]);q=q.transaction(m,"readwrite");q.oncomplete=f;q.onerror=
g;for(var y=0;y<m.length;y++)q.objectStore(m[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){try{m=m||"objects";var y=q.transaction([m],"readonly").objectStore(m).get(d);y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),
y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=
d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=function(d,f,g){var m=this.getCurrentFile();null!=m?m.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=
function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,f){var g=this.getCurrentFile();return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=
function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=
function(d,f,g,m,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,m,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,
f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,f,g,m,q,y,F,C,H,G,aa,da,ba,Y,qa,O){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,m,q,y,F,C,H,G,aa,da,ba,Y,qa,O)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};
EditorUi.prototype.convertImages=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,m)};EditorUi.prototype.convertImageToDataUri=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");
return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=
localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===m.substring(0,8)||"<?xml"===m.substring(0,5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===
f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
mxUtils.write(U,mxResources.get("timeAgo",[I],"{1} ago"));U.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var U=document.createElement("img");U.className="geCommentBusyImg";U.src=IMAGE_PATH+"/spin.gif";ja.appendChild(U);ja.busyImg=U}function m(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,U,I,V,Q){function R(S,P,Z){var oa=document.createElement("li");oa.className=
function(Ca){ta.id=Ca;ja.replies.push(ta);q(Na);Z&&Z()},function(Ca){sa();m(Na);b.handleError(Ca,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},oa,va)}function sa(){d(ta,Na,function(Ca){Aa()},!0)}var Ba=fa().pdiv,ta=b.newComment(S,b.getCurrentUser());ta.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var Na=y(ta,ja.replies,Ba,V+1);P?sa():Aa()}if(Q||!ja.isResolved){ba.style.display="none";var ra=document.createElement("div");ra.className="geCommentContainer";ra.setAttribute("data-commentId",
!0)},ja.isResolved);J=b.getCurrentUser();null==J||J.id!=ja.user.id||F||ja.isLocked||(R(mxResources.get("edit"),function(){function S(){d(ja,ra,function(){g(ra);ja.editComment(ja.content,function(){q(ra)},function(P){m(ra);S();b.handleError(P,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}S()},ja.isResolved),R(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(ra);ja.deleteComment(function(S){if(!0===S){S=ra.querySelector(".geCommentTxt");
S.innerHTML="";mxUtils.write(S,mxResources.get("msgDeleted"));var P=ra.querySelectorAll(".geCommentAction");for(S=0;S<P.length;S++)P[S].parentNode.removeChild(P[S]);q(ra);ra.style.opacity="0.5"}else{P=fa(ja).replies;for(S=0;S<P.length;S++)da.removeChild(P[S]);for(S=0;S<U.length;S++)if(U[S]==ja){U.splice(S,1);break}ba.style.display=0==da.getElementsByTagName("div").length?"block":"none"}},function(S){m(ra);b.handleError(S,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
aa.className="geButton";if(!F){var qa=aa.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ja){function U(){d(I,V,function(Q){g(V);b.addComment(Q,function(R){Q.id=R;X.push(Q);q(V)},function(R){m(V);U();b.handleError(R,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var I=b.newComment("",b.getCurrentUser()),V=y(I,X,null,0);
this.window.getX(),U=this.window.getY();this.window.setLocation(ja,U)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
1),D=null,t=0;t<this.pages.length;t++)mxUtils.bind(this,function(g,m){this.pages[g]==this.currentPage?(m.className="geActivePage",m.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:"#fff"):m.className="geInactivePage";m.setAttribute("draggable","true");mxEvent.addListener(m,"dragstart",mxUtils.bind(this,function(q){b.isEnabled()?(mxClient.IS_FF&&q.dataTransfer.setData("Text","<diagram/>"),D=g):mxEvent.consume(q)}));mxEvent.addListener(m,"dragend",mxUtils.bind(this,function(q){D=null;q.stopPropagation();
q.preventDefault()}));mxEvent.addListener(m,"dragover",mxUtils.bind(this,function(q){null!=D&&(q.dataTransfer.dropEffect="move");q.stopPropagation();q.preventDefault()}));mxEvent.addListener(m,"drop",mxUtils.bind(this,function(q){null!=D&&g!=D&&this.movePage(D,g);q.stopPropagation();q.preventDefault()}));e.appendChild(m)})(t,this.createTabForPage(this.pages[t],n,this.pages[t]!=this.currentPage,t+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(e);n=this.createPageMenuTab();this.tabContainer.appendChild(n);
var D=new mxPopupMenu(mxUtils.bind(this,function(d,f){var g=mxUtils.bind(this,function(){for(var F=0;F<this.pages.length;F++)mxUtils.bind(this,function(C){var H=d.addItem(this.pages[C].getName(),null,mxUtils.bind(this,function(){this.selectPage(this.pages[C])}),f),G=this.pages[C].getId();H.setAttribute("title",this.pages[C].getName()+" ("+(C+1)+"/"+this.pages.length+")"+(null!=G?" ["+G+"]":""));this.pages[C]==this.currentPage&&d.addCheckmark(H,Editor.checkmarkImage)})(F)}),m=mxUtils.bind(this,function(){d.addItem(mxResources.get("insertPage"),
null,mxUtils.bind(this,function(){this.insertPage()}),f)});e||g();if(this.editor.graph.isEnabled()){e||(d.addSeparator(f),m());var q=this.currentPage;if(null!=q){d.addSeparator(f);var y=q.getName();d.addItem(mxResources.get("removeIt",[y]),null,mxUtils.bind(this,function(){this.removePage(q)}),f);d.addItem(mxResources.get("renameIt",[y]),null,mxUtils.bind(this,function(){this.renamePage(q,q.getName())}),f);e||d.addSeparator(f);d.addItem(mxResources.get("duplicateIt",[y]),null,mxUtils.bind(this,function(){this.duplicatePage(q,
mxResources.get("copyOf",[q.getName()]))}),f)}}e&&(d.addSeparator(f),m(),d.addSeparator(f),g())}));D.div.className+=" geMenubarMenu";D.smartSeparators=!0;D.showDisabled=!0;D.autoExpand=!0;D.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(D,arguments);D.destroy()});var t=mxEvent.getClientX(n),E=mxEvent.getClientY(n);D.popup(t,E,null,n);this.setCurrentMenu(D);mxEvent.consume(n)}));return b};
null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(t,E,d,f,g,m){t=this.createUrlParameters(t,E,d,f,g,m);d||t.push("hide-pages=1");D.isSelectionEmpty()||(d=D.getBoundingBox(D.getSelectionCells()),E=D.view.translate,g=D.view.scale,d.width/=g,d.height/=g,d.x=d.x/g-E.x,d.y=d.y/g-E.y,t.push("viewbox="+encodeURIComponent(JSON.stringify({x:Math.round(d.x),y:Math.round(d.y),width:Math.round(d.width),height:Math.round(d.height),border:100}))));
u=0:V==mxConstants.DIRECTION_NORTH?(u=0,J=-J):V==mxConstants.DIRECTION_WEST?(u=-u,J=0):V==mxConstants.DIRECTION_EAST&&(J=0);C.moveCells(ra,u,J);return C.addCells(R,fa)}finally{C.model.endUpdate()}}function m(I,V){C.model.beginUpdate();try{var Q=C.model.getParent(I),R=C.getIncomingTreeEdges(I),fa=d(I);0==R.length&&(R=[C.createEdge(Q,null,"",null,null,C.createCurrentEdgeStyle())],fa=V);var la=C.cloneCells([R[0],I]);C.model.setTerminal(la[0],I,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],
{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},O=F.onKeyDown;F.onKeyDown=function(I){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var V=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==I.which?V=mxEvent.isShiftDown(I)?g(C.getSelectionCell()):m(C.getSelectionCell()):13==I.which&&(V=f(C.getSelectionCell(),!mxEvent.isShiftDown(I))));if(null!=V&&0<V.length)1==
return J==V||0==u.length?m(I,V):N==W?g(I):f(I,V!=mxConstants.DIRECTION_NORTH&&V!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(I){var V=[I];!D(I)&&!n(I)||E(I)||C.traverse(I,!0,function(Q,R){var fa=null!=R&&C.isTreeEdge(R);fa&&0>mxUtils.indexOf(V,R)&&V.push(R);(null==R||fa)&&0>mxUtils.indexOf(V,Q)&&V.push(Q);return null==R||fa});return V};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');q.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");C.geometry.relative=!0;C.edge=!0;E.insertEdge(C,!0);F.insertEdge(C,!1);t.insert(f);t.insert(m);t.insert(y);t.insert(C);t.insert(E);t.insert(d);t.insert(g);t.insert(q);t.insert(F);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var t=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Division",new mxGeometry(160,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);t.insert(f);t.insert(m);t.insert(E);t.insert(d);t.insert(g);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree root",function(){var t=new mxCell("Organization",new mxGeometry(0,0,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');D.setAttributeForCell(t,"treeRoot",
EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(O,
X){null!=X.shortcut&&900>n&&!mxClient.IS_IOS?O.firstChild.nextSibling.setAttribute("title",X.shortcut):m.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var O=this.userElement;O.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+O.style.display;O.className="geToolbarButton";O.innerHTML="";O.style.backgroundImage="url("+Editor.userImage+")";O.style.backgroundPosition="center center";
fa)})));mxUtils.bind(this,function(){var R=this.get("insert"),fa=R.funct;R.funct=function(la,ra){"1"==urlParams.sketch?(O.insertTemplateEnabled&&!O.isOffline()&&O.menus.addMenuItems(la,["insertTemplate"],ra),O.menus.addMenuItems(la,["insertImage","insertLink","-"],ra),O.menus.addSubmenu("insertAdvanced",la,ra,mxResources.get("advanced")),O.menus.addSubmenu("layout",la,ra)):(fa.apply(this,arguments),O.menus.addSubmenu("table",la,ra))}})();var V="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var m=this.graph.getGlobalVariable;d=this;this.graph.getGlobalVariable=function(H){var G=f[d.currentPage];return"page"==H?G.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==H?d.currentPage+1:"pagecount"==H?f.length:m.apply(this,arguments)}}}this.diagrams=[];var q=null;this.selectPage=function(H){this.handlingResize||(this.currentPage=mxUtils.mod(H,this.diagrams.length),this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};
"mouseleave",function(){I.style.backgroundColor="#eee"}),mxUtils.setOpacity(ea,60),I.style.cursor="pointer"):mxUtils.setOpacity(I,30);I.appendChild(ea);k.appendChild(I);m++;return I}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(ea,ka){},mouseUp:function(ea,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,m=0,q=null,y=null,F=null,C=null,H=0;H<g.length;H++){var G=
(G=this.graphConfig["toolbar-buttons"][G],null!=G&&(G.elem=b(null==G.enabled||G.enabled?G.handler:function(){},G.image,G.title,G.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*m);null!=this.graphConfig.title&&(g=e.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),
mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*m;var O=e.style.border,X=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var ea=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
n.refresh=function(){};var D=mxUtils.bind(this,function(m){27==m.keyCode&&n.destroy()}),t=n.destroy;n.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",D);document.body.removeChild(b);document.body.removeChild(e);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled=!0;t.apply(this,arguments)};var E=n.editor.graph,d=E.container;d.style.overflow="hidden";this.lightboxChrome?(d.style.border="1px solid #c0c0c0",d.style.margin="40px",mxEvent.addListener(document.documentElement,
"keydown",D)):(b.style.display="none",e.style.display="none");var f=this;E.getImageFromBundles=function(m){return f.getImageUrl(m)};var g=n.createTemporaryGraph;n.createTemporaryGraph=function(){var m=g.apply(this,arguments);m.getImageFromBundles=function(q){return f.getImageUrl(q)};return m};this.graphConfig.move&&(E.isMoveCellsEvent=function(m){return!0});mxUtils.setPrefixedStyle(d.style,"border-radius","4px");d.style.position="fixed";GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow=
function(ea,ka,ja){ea.attachEvent?ea.attachEvent("on"+ka,ja):ea.addEventListener(ka,ja)};X(F,"scroll",y);X(H,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var m=k.length;f<m;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<
var mxClient={VERSION:"18.1.3",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-fa8c4ce5"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"de7e2ebbf6510fef384c84056345ad54"},{url:"js/extensions.min.js",revision:"b2a9feb52ee2b2eaf0228f5d19f4c3b2"},{url:"js/stencils.min.js",revision:"98924b5296c015cef20b904ef861eeea"},{url:"js/shapes-14-6-5.min.js",revision:"f0e1d4c09054df2f3ea3793491e9fe08"},{url:"js/math-print.js",revision:"0611491c663261a732ff18224906184d"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"4f2c07c4585347249c95cd9158872fb2"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"a9663bf33027689e3cfa51cd0003fc22"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"c96db1790184cb35781f791e8d1dafd9"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6d5a85e70c7b82ba685782ca6df2b9d5"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"e00ad51fc16b87c362d6eaf930ab1fa5"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"c6552981ba1add209fe3e12ffcf79c9a"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"fab9a95f19a57bb836e42f67a1c0078b"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"d089f12446d443ca01752a5115456fcc"},{url:"connect/confluence/viewer-init.js",revision:"2bd677096ebffd3aa5cab0c347851e3f"},{url:"connect/confluence/viewer.js",revision:"a9d84488d17425d28e5d85d464e0a8f8"},{url:"connect/confluence/viewer-1-4-42.html",revision:"4c58f3a1a4c99b1c4264593b6e05100b"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"352d2782274de07617d117926b68c205"},{url:"connect/confluence/includeDiagram.html",revision:"5cefef0227d058cf716d1f51f2cf202f"},{url:"connect/confluence/macro-editor.js",revision:"412bc4b87e630b697a40f247c579d398"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"ecd1272c2f82949798a04cb8f66ff3ee"},{url:"resources/dia_am.txt",revision:"c6e8d4d3c87ac58bc27910395478d53a"},{url:"resources/dia_ar.txt",revision:"ab53b54466bb6d8fffdda985a98904fa"},{url:"resources/dia_bg.txt",revision:"277860dcd73984aacb184807b8d62c1a"},{url:"resources/dia_bn.txt",revision:"15c2219c6df0fd0435dd20e540f660b3"},{url:"resources/dia_bs.txt",revision:"9ae286629a23096d8f9762856f766d10"},{url:"resources/dia_ca.txt",revision:"1a8dadcc44bcb01edcfc963abbde6b7e"},{url:"resources/dia_cs.txt",revision:"92e03c81f1e504dca34e6684f8b6a5db"},{url:"resources/dia_da.txt",revision:"57571c1ffdcb1f38b88536a2e4458f9c"},{url:"resources/dia_de.txt",revision:"4ec5758340635d39267a2d2f4a44733c"},{url:"resources/dia_el.txt",revision:"9e443a6f508e6a56d53b424b5d339459"},{url:"resources/dia_eo.txt",revision:"2e2907adc02b8e5bcf01f427d7819386"},{url:"resources/dia_es.txt",revision:"998b9d2f3baf9feb51f27b991c418f2b"},{url:"resources/dia_et.txt",revision:"213e2532fcb5246935186e4125cbc02f"},{url:"resources/dia_eu.txt",revision:"a58e60cd45cfd326d724e868ef914946"},{url:"resources/dia_fa.txt",revision:"9120574954a1b9e585fceebd91e41b2a"},{url:"resources/dia_fi.txt",revision:"c3d2afb2f671914c507a5e76be743dd5"},{url:"resources/dia_fil.txt",revision:"5267fbfd3de10a73ce5f02abf284440d"},{url:"resources/dia_fr.txt",revision:"15ec3d98bcf1f5c6706bd8148abe924b"},{url:"resources/dia_gl.txt",revision:"6bb32f99a71eca6c085fa9e9e0c668f1"},{url:"resources/dia_gu.txt",revision:"51e1f57f871a1bb461f4aa23433863be"},{url:"resources/dia_he.txt",revision:"82f44b58e13d35b65073de4592905b5f"},{url:"resources/dia_hi.txt",revision:"66727087d16f3d7a896ac96c0ed4bb12"},{url:"resources/dia_hr.txt",revision:"09cae77fd2b68f8aa72024668a620d02"},{url:"resources/dia_hu.txt",revision:"4aabd810c5eff7066bf7aa60791baa89"},{url:"resources/dia_id.txt",revision:"68c9ad519cc43d9a489ede9664090d82"},{url:"resources/dia_it.txt",revision:"b95b119986f220bf7ff83588a312fd39"},{url:"resources/dia_ja.txt",revision:"45663f3802a3413c570ddde795d558a5"},{url:"resources/dia_kn.txt",revision:"5afb57332ab236a738c3e4b726610fd6"},{url:"resources/dia_ko.txt",revision:"2d21536ebc634b5733a4bb76d3a8463b"},{url:"resources/dia_lt.txt",revision:"759a18f3980636d68960c589c369685f"},{url:"resources/dia_lv.txt",revision:"a60a93d03224b0b45424dc82d414d4e7"},{url:"resources/dia_ml.txt",revision:"6a612de626f2a97bde4dc7324f39d1bb"},{url:"resources/dia_mr.txt",revision:"3ad007afaf6d9ea9d62e0fceacd444ba"},{url:"resources/dia_ms.txt",revision:"4d656b8d5941af0210047bd0a4a8b220"},{url:"resources/dia_my.txt",revision:"ecd1272c2f82949798a04cb8f66ff3ee"},{url:"resources/dia_nl.txt",revision:"b7bdb116504c66e5fcf5a7b04caea637"},{url:"resources/dia_no.txt",revision:"c7305c4f9d931ac0998cbeaf4ad18001"},{url:"resources/dia_pl.txt",revision:"d27c3f414da4d10b6f6f2855b9a39bbf"},{url:"resources/dia_pt-br.txt",revision:"71fb61fc0e4071311448f35a1b609e4d"},{url:"resources/dia_pt.txt",revision:"14760b220857a06ff21d92a645c534df"},{url:"resources/dia_ro.txt",revision:"35fd67bfefa319adeee13881768f28de"},{url:"resources/dia_ru.txt",revision:"a314f456b1dd8f1e1c1b098a1097fcb3"},{url:"resources/dia_si.txt",revision:"ecd1272c2f82949798a04cb8f66ff3ee"},{url:"resources/dia_sk.txt",revision:"0eabe3919053707b3d048ac2aa1401e2"},{url:"resources/dia_sl.txt",revision:"a09b6ffcb3f14723bae58725764580e0"},{url:"resources/dia_sr.txt",revision:"d9c78f7d9fab3321e1319b8598217cad"},{url:"resources/dia_sv.txt",revision:"f6c6cb1e29d30bc8f73bcb01f00cc211"},{url:"resources/dia_sw.txt",revision:"dac7a32667a57b89753495e0e2c3a816"},{url:"resources/dia_ta.txt",revision:"0cd6675983bc4c9a8ef55428673ecb1d"},{url:"resources/dia_te.txt",revision:"0761babe2bca09ac6f7149595209e66e"},{url:"resources/dia_th.txt",revision:"a9231170c124a621417de04786cf790a"},{url:"resources/dia_tr.txt",revision:"d2930cbea7421f94be60d67a6eb27d42"},{url:"resources/dia_uk.txt",revision:"546d91953769b655a6409d03bf8dd5b6"},{url:"resources/dia_vi.txt",revision:"c149d086ec329f2c088c7d914119597e"},{url:"resources/dia_zh-tw.txt",revision:"c5ce2fbc85a9955ecf43f2b4550c09e2"},{url:"resources/dia_zh.txt",revision:"1038621ef1951547208eb39d49344a09"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/df76f32b6f79f3ca89dcf550eb1c7568/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.19.2/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n  if (event.data && event.data.type === 'SKIP_WAITING') {\n    self.skipWaiting();\n  }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n  {\n    \"url\": \"js/app.min.js\",\n    \"revision\": \"de7e2ebbf6510fef384c84056345ad54\"\n  },\n  {\n    \"url\": \"js/extensions.min.js\",\n    \"revision\": \"b2a9feb52ee2b2eaf0228f5d19f4c3b2\"\n  },\n  {\n    \"url\": \"js/stencils.min.js\",\n    \"revision\": \"98924b5296c015cef20b904ef861eeea\"\n  },\n  {\n    \"url\": \"js/shapes-14-6-5.min.js\",\n    \"revision\": \"f0e1d4c09054df2f3ea3793491e9fe08\"\n  },\n  {\n    \"url\": \"js/math-print.js\",\n    \"revision\": \"0611491c663261a732ff18224906184d\"\n  },\n  {\n    \"url\": \"index.html\",\n    \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n  },\n  {\n    \"url\": \"open.html\",\n    \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n  },\n  {\n    \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n    \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n  },\n  {\n    \"url\": \"styles/grapheditor.css\",\n    \"revision\": \"4f2c07c4585347249c95cd9158872fb2\"\n  },\n  {\n    \"url\": \"styles/atlas.css\",\n    \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n  },\n  {\n    \"url\": \"styles/dark.css\",\n    \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n  },\n  {\n    \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n    \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n  },\n  {\n    \"url\": \"js/onedrive/OneDrive.js\",\n    \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n  },\n  {\n    \"url\": \"js/viewer-static.min.js\",\n    \"revision\": \"a9663bf33027689e3cfa51cd0003fc22\"\n  },\n  {\n    \"url\": \"connect/jira/editor-1-3-3.html\",\n    \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n  },\n  {\n    \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n    \"revision\": \"c96db1790184cb35781f791e8d1dafd9\"\n  },\n  {\n    \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n    \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n  },\n  {\n    \"url\": \"connect/jira/viewerPanel.js\",\n    \"revision\": \"6d5a85e70c7b82ba685782ca6df2b9d5\"\n  },\n  {\n    \"url\": \"connect/jira/spinner.gif\",\n    \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n  },\n  {\n    \"url\": \"connect/jira/editor.js\",\n    \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n  },\n  {\n    \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n    \"revision\": \"e00ad51fc16b87c362d6eaf930ab1fa5\"\n  },\n  {\n    \"url\": \"connect/jira/fullscreen-viewer.js\",\n    \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n  },\n  {\n    \"url\": \"plugins/connectJira.js\",\n    \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n  },\n  {\n    \"url\": \"plugins/cConf-comments.js\",\n    \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n  },\n  {\n    \"url\": \"plugins/cConf-1-4-8.js\",\n    \"revision\": \"c6552981ba1add209fe3e12ffcf79c9a\"\n  },\n  {\n    \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n    \"revision\": \"fab9a95f19a57bb836e42f67a1c0078b\"\n  },\n  {\n    \"url\": \"connect/new_common/cac.js\",\n    \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n  },\n  {\n    \"url\": \"connect/gdrive_common/gac.js\",\n    \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n  },\n  {\n    \"url\": \"connect/onedrive_common/ac.js\",\n    \"revision\": \"d089f12446d443ca01752a5115456fcc\"\n  },\n  {\n    \"url\": \"connect/confluence/viewer-init.js\",\n    \"revision\": \"2bd677096ebffd3aa5cab0c347851e3f\"\n  },\n  {\n    \"url\": \"connect/confluence/viewer.js\",\n    \"revision\": \"a9d84488d17425d28e5d85d464e0a8f8\"\n  },\n  {\n    \"url\": \"connect/confluence/viewer-1-4-42.html\",\n    \"revision\": \"4c58f3a1a4c99b1c4264593b6e05100b\"\n  },\n  {\n    \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n    \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n  },\n  {\n    \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n    \"revision\": \"352d2782274de07617d117926b68c205\"\n  },\n  {\n    \"url\": \"connect/confluence/includeDiagram.html\",\n    \"revision\": \"5cefef0227d058cf716d1f51f2cf202f\"\n  },\n  {\n    \"url\": \"connect/confluence/macro-editor.js\",\n    \"revision\": \"412bc4b87e630b697a40f247c579d398\"\n  },\n  {\n    \"url\": \"math/MathJax.js\",\n    \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n  },\n  {\n    \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n    \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n    \"revision\": \"495e5a410955d1b6178870e605890ede\"\n  },\n  {\n    \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n    \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n    \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n    \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n  },\n  {\n    \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n    \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n  },\n  {\n    \"url\": \"resources/dia.txt\",\n    \"revision\": \"ecd1272c2f82949798a04cb8f66ff3ee\"\n  },\n  {\n    \"url\": \"resources/dia_am.txt\",\n    \"revision\": \"c6e8d4d3c87ac58bc27910395478d53a\"\n  },\n  {\n    \"url\": \"resources/dia_ar.txt\",\n    \"revision\": \"ab53b54466bb6d8fffdda985a98904fa\"\n  },\n  {\n    \"url\": \"resources/dia_bg.txt\",\n    \"revision\": \"277860dcd73984aacb184807b8d62c1a\"\n  },\n  {\n    \"url\": \"resources/dia_bn.txt\",\n    \"revision\": \"15c2219c6df0fd0435dd20e540f660b3\"\n  },\n  {\n    \"url\": \"resources/dia_bs.txt\",\n    \"revision\": \"9ae286629a23096d8f9762856f766d10\"\n  },\n  {\n    \"url\": \"resources/dia_ca.txt\",\n    \"revision\": \"1a8dadcc44bcb01edcfc963abbde6b7e\"\n  },\n  {\n    \"url\": \"resources/dia_cs.txt\",\n    \"revision\": \"92e03c81f1e504dca34e6684f8b6a5db\"\n  },\n  {\n    \"url\": \"resources/dia_da.txt\",\n    \"revision\": \"57571c1ffdcb1f38b88536a2e4458f9c\"\n  },\n  {\n    \"url\": \"resources/dia_de.txt\",\n    \"revision\": \"4ec5758340635d39267a2d2f4a44733c\"\n  },\n  {\n    \"url\": \"resources/dia_el.txt\",\n    \"revision\": \"9e443a6f508e6a56d53b424b5d339459\"\n  },\n  {\n    \"url\": \"resources/dia_eo.txt\",\n    \"revision\": \"2e2907adc02b8e5bcf01f427d7819386\"\n  },\n  {\n    \"url\": \"resources/dia_es.txt\",\n    \"revision\": \"998b9d2f3baf9feb51f27b991c418f2b\"\n  },\n  {\n    \"url\": \"resources/dia_et.txt\",\n    \"revision\": \"213e2532fcb5246935186e4125cbc02f\"\n  },\n  {\n    \"url\": \"resources/dia_eu.txt\",\n    \"revision\": \"a58e60cd45cfd326d724e868ef914946\"\n  },\n  {\n    \"url\": \"resources/dia_fa.txt\",\n    \"revision\": \"9120574954a1b9e585fceebd91e41b2a\"\n  },\n  {\n    \"url\": \"resources/dia_fi.txt\",\n    \"revision\": \"c3d2afb2f671914c507a5e76be743dd5\"\n  },\n  {\n    \"url\": \"resources/dia_fil.txt\",\n    \"revision\": \"5267fbfd3de10a73ce5f02abf284440d\"\n  },\n  {\n    \"url\": \"resources/dia_fr.txt\",\n    \"revision\": \"15ec3d98bcf1f5c6706bd8148abe924b\"\n  },\n  {\n    \"url\": \"resources/dia_gl.txt\",\n    \"revision\": \"6bb32f99a71eca6c085fa9e9e0c668f1\"\n  },\n  {\n    \"url\": \"resources/dia_gu.txt\",\n    \"revision\": \"51e1f57f871a1bb461f4aa23433863be\"\n  },\n  {\n    \"url\": \"resources/dia_he.txt\",\n    \"revision\": \"82f44b58e13d35b65073de4592905b5f\"\n  },\n  {\n    \"url\": \"resources/dia_hi.txt\",\n    \"revision\": \"66727087d16f3d7a896ac96c0ed4bb12\"\n  },\n  {\n    \"url\": \"resources/dia_hr.txt\",\n    \"revision\": \"09cae77fd2b68f8aa72024668a620d02\"\n  },\n  {\n    \"url\": \"resources/dia_hu.txt\",\n    \"revision\": \"4aabd810c5eff7066bf7aa60791baa89\"\n  },\n  {\n    \"url\": \"resources/dia_id.txt\",\n    \"revision\": \"68c9ad519cc43d9a489ede9664090d82\"\n  },\n  {\n    \"url\": \"resources/dia_it.txt\",\n    \"revision\": \"b95b119986f220bf7ff83588a312fd39\"\n  },\n  {\n    \"url\": \"resources/dia_ja.txt\",\n    \"revision\": \"45663f3802a3413c570ddde795d558a5\"\n  },\n  {\n    \"url\": \"resources/dia_kn.txt\",\n    \"revision\": \"5afb57332ab236a738c3e4b726610fd6\"\n  },\n  {\n    \"url\": \"resources/dia_ko.txt\",\n    \"revision\": \"2d21536ebc634b5733a4bb76d3a8463b\"\n  },\n  {\n    \"url\": \"resources/dia_lt.txt\",\n    \"revision\": \"759a18f3980636d68960c589c369685f\"\n  },\n  {\n    \"url\": \"resources/dia_lv.txt\",\n    \"revision\": \"a60a93d03224b0b45424dc82d414d4e7\"\n  },\n  {\n    \"url\": \"resources/dia_ml.txt\",\n    \"revision\": \"6a612de626f2a97bde4dc7324f39d1bb\"\n  },\n  {\n    \"url\": \"resources/dia_mr.txt\",\n    \"revision\": \"3ad007afaf6d9ea9d62e0fceacd444ba\"\n  },\n  {\n    \"url\": \"resources/dia_ms.txt\",\n    \"revision\": \"4d656b8d5941af0210047bd0a4a8b220\"\n  },\n  {\n    \"url\": \"resources/dia_my.txt\",\n    \"revision\": \"ecd1272c2f82949798a04cb8f66ff3ee\"\n  },\n  {\n    \"url\": \"resources/dia_nl.txt\",\n    \"revision\": \"b7bdb116504c66e5fcf5a7b04caea637\"\n  },\n  {\n    \"url\": \"resources/dia_no.txt\",\n    \"revision\": \"c7305c4f9d931ac0998cbeaf4ad18001\"\n  },\n  {\n    \"url\": \"resources/dia_pl.txt\",\n    \"revision\": \"d27c3f414da4d10b6f6f2855b9a39bbf\"\n  },\n  {\n    \"url\": \"resources/dia_pt-br.txt\",\n    \"revision\": \"71fb61fc0e4071311448f35a1b609e4d\"\n  },\n  {\n    \"url\": \"resources/dia_pt.txt\",\n    \"revision\": \"14760b220857a06ff21d92a645c534df\"\n  },\n  {\n    \"url\": \"resources/dia_ro.txt\",\n    \"revision\": \"35fd67bfefa319adeee13881768f28de\"\n  },\n  {\n    \"url\": \"resources/dia_ru.txt\",\n    \"revision\": \"a314f456b1dd8f1e1c1b098a1097fcb3\"\n  },\n  {\n    \"url\": \"resources/dia_si.txt\",\n    \"revision\": \"ecd1272c2f82949798a04cb8f66ff3ee\"\n  },\n  {\n    \"url\": \"resources/dia_sk.txt\",\n    \"revision\": \"0eabe3919053707b3d048ac2aa1401e2\"\n  },\n  {\n    \"url\": \"resources/dia_sl.txt\",\n    \"revision\": \"a09b6ffcb3f14723bae58725764580e0\"\n  },\n  {\n    \"url\": \"resources/dia_sr.txt\",\n    \"revision\": \"d9c78f7d9fab3321e1319b8598217cad\"\n  },\n  {\n    \"url\": \"resources/dia_sv.txt\",\n    \"revision\": \"f6c6cb1e29d30bc8f73bcb01f00cc211\"\n  },\n  {\n    \"url\": \"resources/dia_sw.txt\",\n    \"revision\": \"dac7a32667a57b89753495e0e2c3a816\"\n  },\n  {\n    \"url\": \"resources/dia_ta.txt\",\n    \"revision\": \"0cd6675983bc4c9a8ef55428673ecb1d\"\n  },\n  {\n    \"url\": \"resources/dia_te.txt\",\n    \"revision\": \"0761babe2bca09ac6f7149595209e66e\"\n  },\n  {\n    \"url\": \"resources/dia_th.txt\",\n    \"revision\": \"a9231170c124a621417de04786cf790a\"\n  },\n  {\n    \"url\": \"resources/dia_tr.txt\",\n    \"revision\": \"d2930cbea7421f94be60d67a6eb27d42\"\n  },\n  {\n    \"url\": \"resources/dia_uk.txt\",\n    \"revision\": \"546d91953769b655a6409d03bf8dd5b6\"\n  },\n  {\n    \"url\": \"resources/dia_vi.txt\",\n    \"revision\": \"c149d086ec329f2c088c7d914119597e\"\n  },\n  {\n    \"url\": \"resources/dia_zh-tw.txt\",\n    \"revision\": \"c5ce2fbc85a9955ecf43f2b4550c09e2\"\n  },\n  {\n    \"url\": \"resources/dia_zh.txt\",\n    \"revision\": \"1038621ef1951547208eb39d49344a09\"\n  },\n  {\n    \"url\": \"favicon.ico\",\n    \"revision\": \"fab2d88b37c72d83607527573de45281\"\n  },\n  {\n    \"url\": \"images/manifest.json\",\n    \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n  },\n  {\n    \"url\": \"images/logo.png\",\n    \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n  },\n  {\n    \"url\": \"images/drawlogo.svg\",\n    \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n  },\n  {\n    \"url\": \"images/drawlogo48.png\",\n    \"revision\": \"8b13428373aca67b895364d025f42417\"\n  },\n  {\n    \"url\": \"images/drawlogo-gray.svg\",\n    \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n  },\n  {\n    \"url\": \"images/drawlogo-text-bottom.svg\",\n    \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n  },\n  {\n    \"url\": \"images/default-user.jpg\",\n    \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n  },\n  {\n    \"url\": \"images/logo-flat-small.png\",\n    \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n  },\n  {\n    \"url\": \"images/apple-touch-icon.png\",\n    \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n  },\n  {\n    \"url\": \"images/favicon-16x16.png\",\n    \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n  },\n  {\n    \"url\": \"images/favicon-32x32.png\",\n    \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n  },\n  {\n    \"url\": \"images/android-chrome-196x196.png\",\n    \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n  },\n  {\n    \"url\": \"images/android-chrome-512x512.png\",\n    \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n  },\n  {\n    \"url\": \"images/delete.png\",\n    \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n  },\n  {\n    \"url\": \"images/droptarget.png\",\n    \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n  },\n  {\n    \"url\": \"images/help.png\",\n    \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n  },\n  {\n    \"url\": \"images/download.png\",\n    \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n  },\n  {\n    \"url\": \"images/logo-flat.png\",\n    \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n  },\n  {\n    \"url\": \"images/google-drive-logo.svg\",\n    \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n  },\n  {\n    \"url\": \"images/onedrive-logo.svg\",\n    \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n  },\n  {\n    \"url\": \"images/dropbox-logo.svg\",\n    \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n  },\n  {\n    \"url\": \"images/github-logo.svg\",\n    \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n  },\n  {\n    \"url\": \"images/gitlab-logo.svg\",\n    \"revision\": \"0faea8c818899e58533e153c44b10517\"\n  },\n  {\n    \"url\": \"images/trello-logo.svg\",\n    \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n  },\n  {\n    \"url\": \"images/osa_drive-harddisk.png\",\n    \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n  },\n  {\n    \"url\": \"images/osa_database.png\",\n    \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n  },\n  {\n    \"url\": \"images/google-drive-logo-white.svg\",\n    \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n  },\n  {\n    \"url\": \"images/dropbox-logo-white.svg\",\n    \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n  },\n  {\n    \"url\": \"images/onedrive-logo-white.svg\",\n    \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n  },\n  {\n    \"url\": \"images/github-logo-white.svg\",\n    \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n  },\n  {\n    \"url\": \"images/gitlab-logo-white.svg\",\n    \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n  },\n  {\n    \"url\": \"images/trello-logo-white-orange.svg\",\n    \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n  },\n  {\n    \"url\": \"images/logo-confluence.png\",\n    \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n  },\n  {\n    \"url\": \"images/logo-jira.png\",\n    \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n  },\n  {\n    \"url\": \"images/clear.gif\",\n    \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n  },\n  {\n    \"url\": \"images/spin.gif\",\n    \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n  },\n  {\n    \"url\": \"images/checkmark.gif\",\n    \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n  },\n  {\n    \"url\": \"images/hs.png\",\n    \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n  },\n  {\n    \"url\": \"images/aui-wait.gif\",\n    \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n  },\n  {\n    \"url\": \"mxgraph/css/common.css\",\n    \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n  },\n  {\n    \"url\": \"mxgraph/images/expanded.gif\",\n    \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n  },\n  {\n    \"url\": \"mxgraph/images/collapsed.gif\",\n    \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n  },\n  {\n    \"url\": \"mxgraph/images/maximize.gif\",\n    \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n  },\n  {\n    \"url\": \"mxgraph/images/minimize.gif\",\n    \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n  },\n  {\n    \"url\": \"mxgraph/images/close.gif\",\n    \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n  },\n  {\n    \"url\": \"mxgraph/images/resize.gif\",\n    \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n  },\n  {\n    \"url\": \"mxgraph/images/separator.gif\",\n    \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n  },\n  {\n    \"url\": \"mxgraph/images/window.gif\",\n    \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n  },\n  {\n    \"url\": \"mxgraph/images/window-title.gif\",\n    \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n  },\n  {\n    \"url\": \"mxgraph/images/button.gif\",\n    \"revision\": \"00759bdc3ad218fa739f584369541809\"\n  },\n  {\n    \"url\": \"mxgraph/images/point.gif\",\n    \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n  }\n], {\n  \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,YACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC"}